原文如下:
"You used to start out in college with a course in data structures, with linked lists and hash tables and whatnot, with extensive use of pointers. Those courses were often used as weedout courses: they were so hard that anyone that couldn't handle the mental challenge of a CS degree would give up, which was a good thing, because if you thought pointers are hard, wait until you try to prove things about fixed point theory."
Now, though, most Computer Science schools start with Java. But "Java is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers," Spolsky contends.
The argument advanced by Joel Spolsky yesterday in his "Joel on Software" blog gets slightly tenuous from this point on. "A large number of otherwise perfectly good schools have gone 100% Java," he writes (rants?). "It's hip, the recruiters who use 'grep' to evaluate resumes seem to like it, and, best of all, there's nothing hard enough about Java to really weed out the programmers without the part of the brain that does pointers or recursion, so the drop-out rates are lower, and the computer science departments have more students, and bigger budgets, and all is well."
He then recovers his composure a little, lest he leave himself open to the charge of simply being a curmudgeon longing for the good old, difficult days:
"Now, I freely admit that programming with pointers is not needed in 90% of the code written today, and in fact, it's downright dangerous in production code. OK. That's fine. And functional programming is just not used much in practice. Agreed. But it's still important for some of the most exciting programming jobs. Without pointers, for example, you'd never be able to work on the Linux kernel. You can't understand a line of code in Linux, or, indeed, any operating system, without really understanding pointers."
"As an employer," he continues, "I've seen that the 100% Java schools have started churning out quite a few CS graduates who are simply not smart enough to work as programmers on anything more sophisticated than Yet Another Java Accounting Application, although they did manage to squeak through the newly-dumbed-down coursework."
"These students would never survive 6.001 at MIT, or CS 323 at Yale, and frankly, that is one reason why, as an employer, a CS degree from MIT or Yale carries more weight than a CS degree from Duke, which recently went All-Java, or U. Penn, which replaced Scheme and ML with Java..."
He ends his rant as follows:
"The most sympathetic interpretation of why CS departments are so enthusiastic to dumb down their classes is that it leaves them more time to teach actual CS concepts, if they don't need to spend two whole lectures unconfusing students about the difference between, say, a Java int and an Integer. Well, if that's the case, 6.001 has the perfect answer for you: Scheme, a teaching language so simple that the entire language can be taught to bright students in about ten minutes; then you can spend the rest of the semester on fixed points."
What do JDJ readers think? Is Spolsky spot-on? Or is he wide of the mark? Please leave your feedback below.
当年在大学的时候学了C, C++,没有大项目的支持,自己的Programming Skills一直没有得到太大的进展。当年自己也在学MFC,VC等,没有坚持下来,没有一个明确的学习目的,学东西的效果实在是太差了。这也间接造成研究生阶段专心于简单的JAVA语言,而不愿去理C,C++的原因。
如果有相关项目的支持,我希望能够做一些系统底层的编程。将自己的数据结构,算法,C, C++好好磨炼一下
总之,如果仅仅满足于简单的东西的话,竞争力是不会强的。JAVA,长处在于企业级应用软件的研发,网络程序的研发,如果是学JAVA的话,也应该是朝着那个方向发展。满足于会做个Struts应用,做个WEB 应用程序就沾沾自喜的话,那未来忧的日子就不远了。
呵呵,认真做事情是没有错。如果浪费时间做对自己没有益处的事情,那不划算的。
三思而后行,专注,提高!