美国两位计算机系教授:Java对学生有害

美国纽约大学的两位计算机科学系退休教授发表一篇公开文章,标题是"计算机科学教育:明日的软件工程师在何处?"。在文中,他们强烈地批评了纽约大学和其他大学,没有向学生传授纯粹的语言如C、C++、Lisp和ADA。

"学生从当前教育实践课程中获取的技能不足以应付今日软件行业的发展(尤其是安全和安全目的方面)。更不幸的是,与外部行业需要过于匹配了,我们训练了许多容易被取代的软件工程师。"

尤为注意的是,文中以"Java作为第一编程语言的诸多缺陷"为小标题对Java进行了批判:

由于Java在Web应用领域的流行,以及初学者容易生成图形化编程,Java成为入门课程中使用最普遍的语言。从此后学生发现很难在一个没有图像界面的语言上编写程序,不清楚源程序和硬件如何执行之间的关系,更具有危险性的是他们一点也不了解指示器的语义,这使得使用C语言编程也成为挑战。"

编程的真正的美妙之处在于,将复杂的过程缩减成非常小的一个简单操作。Java并没有体现这种美妙,它鼓励采用"问题解决(problem-solving)"的方式,使程序员就像五金店的水管工人:到处翻腾抽屉、阁子最后找出需要的零件。最终的结果使得学生知道如何将一些简单的程序组到一起,而对编程却一无所知。而且过早地使用Java库和框架有一个更大的缺陷:它使得学生很难对编写的东西形成运行时间成本(run-time cost)的概念,因为他们很难知道究竟哪种方法的调用是有效的。

我们为此亦找到了一些证据。Bjarne Stroustrup(被誉为C++之父)在德州农工大学(Texas A&M University )的报告中,指出了工业对于这种方式越来越多的不满,而且Bjarne这样说,"从工业那里我看到了许多许多对此(Java作为第一编程语言来使用)的抱怨,尤其是AT&T, IBM, Intel, Bloomberg, NI, Microsoft, Lockheed-Martin等等。"

另外在文中,这两位教授们认为真正的程序员能够使用任何语言(C,Java,Lisp,Ada)。