今天CSDN大大露了一把脸。 先是炮制了非常吸引人眼球的文章标题:“美国两位计算机系教授:Java对学生有害”,然后把原文断章取义翻译过来,极大地达到了制造点击率的效果。追求点击率没有什么不好,但是靠歪曲别人观点制造点击率就很不好。同时由于原文位于美国空军的网站上,普通网友不易访问,许多评论也是基于已经被严重扭曲的(部分)译文作出,在程序员社群中造成很坏的影响。
我认为大家有权利在发表评论之前了解原文。为此我已经把原文转帖于此。下面我要发表一些个人的看法。
首先,两位教授并没有全盘否定Java,只是说Java不适合作为计算机科学专业的第一门教学语言。关于这点,学术界是有争议的。我们不能认为自己比很多大学的计算机系教授都要高明,他们选择Java作为第一门语言,当然有他们的理由。比如,性急的可以看这里。不性急的话,不妨去google一下“Java as first language”,相信会有收获的。
其次,尽管他们认为Java不适合作为第一门教学语言,两位教授仍然对Java在计算机科学教育中的地位给予很高的评价:
Despite our comments on Java as a first or only language, we think that Java has an important role to play in CS instruction. We will mention only two aspects of the language that must be part of the real programmer’s skill set:
1. An understanding of concurrent programming (for which threads provide a basic low-level model).
2. Reflection, namely the understanding that a program can be instrumented to examine its own state and to determine its own behavior in a dynamically changing environment.
有意思的是,这里提到的并发和反射都是某些伪C/C++粉丝所不屑的。他们认为调用操作系统API函数比使用类库高级,使用CSemaphore也比自己用synchronized实现一个信号量类要高级。
关于Java跟底层硬件的关系,一直是争论的焦点。从工程的角度讲,能够将这种非本质复杂性屏蔽掉,是好事。当然,底层的东西也要了解。关于这点我相信从体系结构课程能够学到更多的知识。当然,一个好的程序员应该学习C和C++,就像一个好程序员也应该学习Java和LISP一样。Ada?估计是美国军方才是大用户吧。至于第一门课程教其中的哪一样,我认为并不重要。
我认为,两位教授对Java主要的不满在于,有些教学鼓励或者默许学生使用现成的类库和框架去完成作业,没有达到本来的教学目的:“cookbook approaches using large libraries and special-purpose packages”。这个现象,我想是使用任何一个语言进行入门课程教学都会碰到的,关键应该还在于教师。当然,可能这种现象在Java中更加普遍。这当然是不好的;严格说来,有作弊的嫌疑。
最后,两位教授还对形式化方法(formal methods,国内的课程名称一般叫做软件形式化)未得到充分重视表达了不满。关于这点我完全同意。但是迄今为止我在CSDN上面看到的文章和评论都对此只字不提。这也难怪,研究、开发关键任务系统的人和公司本来在全世界也不多。对着某些认为应该用C/C++编写F14的火控系统或者地铁信号系统的人讲解形式化方法,其实跟对牛弹琴是一样的。有心人请自己去google。华东师大的何积丰院士是这个领域的世界级专家。
PS:致某些准备拍板砖的:本人的入门语言是C,第二门是C++,Java是工作中学的。我玩过嵌入式编程,玩过IC设计,设计过能把局域网带宽耗尽的网游服务器;我同时是Java的忠实拥趸。发表于 @ 2008年01月11日 23:13:00|评论(loading...)