- 论坛徽章:
- 0
|
本帖最后由 donotblock 于 2011-02-21 13:03 编辑
看到很久前joel on software的一篇文章《对计算机科学专业毕业生的忠告》,觉得挺有意思,胡乱翻译其中一段关于C语言的:
原文:
Learn C before graduating
Part two: C. Notice I didn't say C++. Although C is becoming increasingly rare, it is still the lingua franca of working programmers. It is the language they use to communicate with one another, and, more importantly, it is much closer to the machine than "modern" languages that you'll be taught in college like ML, Java, Python, whatever trendy junk they teach these days. You need to spend at least a semester getting close to the machine or you'll never be able to create efficient code in higher level languages. You'll never be able to work on compilers and operating systems, which are some of the best programming jobs around. You'll never be trusted to create architectures for large scale projects. I don't care how much you know about continuations and closures and exception handling: if you can't explain why while (*s++ = *t++); copies a string, or if that isn't the most natural thing in the world to you, well, you're programming based on superstition, as far as I'm concerned: a medical doctor who doesn't know basic anatomy, passing out prescriptions based on what the pharma sales babe said would work.
翻译:
注意我说的是C而不是C++。 尽管C已经越来越少的被使用,但它仍然是程序员之间进行交流的主要“外语”(意思是尽管他们可能也不用C工作)。 C是程序员与其他程序员共同的语言。 更重要的是它更贴近计算机,比你们在大学里被教授的高级语言如ML,Java,Python,或者其他他们正在教的时髦的垃圾更加贴近。 你需要花至少一学期的时间来更好的理解计算机,否则你永远无法使用抽象层次高的语言写出高效率的代码, 而且你永远不能参与编译器和操作系统方面的工作,而很多最好的编程工作恰恰是这两个领域的。 你将永远得不到信任去为大规模项目做架构。 我不管你对continuations(不知怎么翻译,谁帮忙补上),闭包还有异常处理知道多少: 如果你不能解释为什么while (*s++ = *t++); 复制了一个字符串,或者这种方式对你不是很自然的事情, 那么,你就是凭直觉在编程,就像我担心的那样:一个医生不懂基本的解剖学,仅仅根据医药公司的销售人员所描述的药品功能来开处方。
原文在这里 http://www.joelonsoftware.com/articles/CollegeAdvice.html
这是个很好的博客,相信很多人已经知道了吧,不知道的可以看下 |
|