我应该知道哪些计算机科学概念? [英] What Computer Science concepts should I know?
问题描述
您认为计算机科学中的哪些概念使您成为了更好的程序员?
What concepts in Computer Science do you think have made you a better programmer?
我的学位是机械工程专业,所以最终成为一名程序员,我是有点缺乏基础知识。我最近学到了一些标准的CS概念,这些概念使我对自己正在做的事情有了更深入的了解,尤其是:
My degree was in Mechanical Engineering so having ended up as a programmer, I'm a bit lacking in the basics. There are a few standard CS concepts which I've learnt recently that have given me a much deeper understanding of what I'm doing, specifically:
语言功能
- 指针和递归(感谢Joel!)
数据结构
- 链接列表
- 哈希表
算法
- 气泡排序
很明显,目前清单很短,所以我希望就以下方面提出建议:
Obviously, the list is a little short at the moment so I was hoping for suggestions as to:
- 我应该理解哪些概念,
- 任何正确理解它们的好资源(因为Wikipedia有时可能有点密集和学术性。)
推荐答案
看看Steve Yegge(以前是Amazon,现在是Google)的这篇博客文章:
Take a look at this blog post by Steve Yegge (formerly of Amazon, now at Google):
- The Five Essential Phone Screen Questions
它详细介绍了开发人员应该掌握的五个最重要的概念必须知道:
It goes into some detail about the the five most important concepts that developers should be required to know:
- 基本编程(包括递归,文件I / O,格式化输出,循环等)
- 面向对象的设计(包括设计模式等)。您应该能够做出明智的OO设计并理解这些概念。
- 脚本和正则表达式。
- 数据结构-列表,集合,哈希表,树,图等-以及Big O表示法和算法复杂性。
- 位,字节和二进制数-计算机中数字的表示方式以及如何表示来操纵它们。
- Basic programming (including recursion, file I/O, formatted output, loops etc)
- Object oriented design (including design patterns etc). You should be able to produce sensible OO designs as well as understanding the concepts.
- Scripting and regexes.
- Data structures -- lists, sets, hashtables, trees, graphs, and so on -- as well as Big O notation and algorithmic complexity.
- Bits, bytes and binary numbers -- how numbers are represented within the computer, and how to manipulate them.
这篇关于我应该知道哪些计算机科学概念?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!