孟岩ID:myan
[修改头像]
1557546次访问,排名6好友1人,关注者32
总是在思考存在的问题
myan的文章
原创 146 篇
翻译 0 篇
转载 3 篇
评论 5200 篇
最近评论
YuLimin:我当时也在成都,大家都来尽一份力量吧!!!
sxbluebird:我老家后山有棵老苹果树很时尚,谁能看见?我公司桌面上有台PC很时尚,公交车上哪个mm会暗送给我秋天的菠菜?


这个话,说的太经典了。 人人都能懂, 这才是哲理。
Terry001:成都地震发生的时候,我正在午睡,我一般睡的会很死,房子把我摇晃醒了,太恐怖了,结果没穿衣服就冲下了楼,搞的甚是狼狈,从来没想到此生也有裸奔的时候。
直到现在,心情都没稳定下来,不过比512好多了,但是还是很担心余震,现在做在家里上网心都是虚的。成都今天不知道从那里报出的消息要缺水了,结果超市的饮用水一强而空。
目前感觉头脑是昏的,时不时会感觉在晃。目前待在成都似乎是一种折……
yeka:没想到成都这么严重!
lschou520:怎么会忘记印度、日本和欧洲呢?
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
    相册
    测试
    友情链接
    老赵的博客
    存档

    原创 终于有人说出来了——Java不适合于作为主要编程教学语言

    新一篇: “生命游戏”的多线程算法思考

    CSDN首页推荐了一篇文章,说两位退休的美国大学教授上书反对将Java作为编程教学语言,对此我表示高度认同。对于Java,我并不反感,而且相信它在工业应用中的地位不可取代,但是,我一直反对将Java作为主要的编程教学语言,因为教学语言承担着与生产语言不同的任务,它必须能够帮助学生奠定坚实的技术基础,塑造核心技术能力。在这方面,Java不能够胜任。

    1990年代中期以前,美国的计算机编程入门教育以Pascal为主。我的一位美国程序员朋友至今还怀念他与Pascal为伴的高中年代。到了1990年代中后期,由于ANSI C语言“纠正”了早期C语言的一些不适合编程教学的问题,因此成为很多美国高中和大学编程入门课的教学语言。1998年,美国指导编程教学的一个协会推荐将C++作为入门教学语言,在当时引起很大的反响,认为是编程教育方面的一个重要进步。但遗憾的是,C++非常复杂,而当时C++语言的教育体系又非常不成熟,因此很多地方的教学方法不得当,把学生迅速拖入无边无际的语言细节当中,引起了学生痛苦的抱怨。大约经过两三年不成功的实践之后,在本世纪初,美国计算机教育界普遍接受Java作为编程入门语言。此后在很短的时间里,Java迅速成为美国高中和大学里的首选编程教学语言,老师教得轻松,学生学得甜蜜,所以这个局面一直持续到现在。

    而在中国,BASIC语言及其变体一直到1990年代中期都还是“算法语言”课程的主要教学内容,充分折射出当时中国计算机教学与工业应用之间的脱节。只是到了1990年代后期,C语言才确立了在中国工科计算机编程入门教育中的主流地位。到现在为止,大部分工科学生都“必修”“C程序设计语言”这门课程。不过事实上,根据我的了解,这门课程的总体教学质量相当糟糕,大部分学生可以说是满怀希望而来,两手空空而去。在这种情况下,中国高校计算机编程入门教育已经开始悄悄向Java过渡了。据我所知,有一些名校已经开始将Java设为编程入门课程,并且认为这是与国际接轨进步标志。

    在我的朋友圈子里,大多数真正的一线开发者和技术领导者,对于将Java作为入门教学语言的“发展方向”都持质疑态度。他们中很多人目前主要的工作都集中在Java上,因此这种态度并非来自所谓语言宗教情绪,而是来自他们招聘和实际工作中的感受。他们发现,只学习Java、C#、VB等“现代”编程语言的学生,精于拿来主义,长于整合和快速开发,思维活跃,生产效率高,让他们来做直截了当的、有章可循的、非研究性和非创新性的工作比较合适,但是基础不扎实,对计算机系统的理解薄弱,处理细节和矛盾的能力不足,一旦他们熟悉的套路用不上,则缺少自主分析问题、解决问题的知识、能力和经验。

    今天看到两位教授的“上书”,才知道原来他们也有同感。只不过这两位教授说的更直白,直接反对将Java作为入门编程语言,而是冒天下之大不韪,公然号召开历史倒车,要求退回到C、C++、Lisp和Ada去。

    我是支持两位教授的。我认为,Java、C#、VB和其它虚拟机之上的语言都不适合作为专业程序员的入门教学语言。在中国还非常缺乏具有创新和独立解决问题的高水平程序员的局面下,我们应该认真做好的事情是努力提高C/C++的教学质量,而不是图快活转向Java。

    教学语言的选择是至关重要的事情。作为大多数学生第一种需要认真学习理解的编程语言,教学语言将会成为他们中间很多人的“编程母语”,深深地烙印在学生的思维方式中。这个编程母语要帮助学生破除计算机和软件的神秘感,建立对于程序的基本认识和对计算机模型的最初理解。在后续专业基础课和专业课程的学习中,这门编程语言应该作为主要工具贯穿始终,帮助学生认识计算机系统,掌握算法与数据结构技能,熟悉操作系统概念,理解编译原理知识,理解软件抽象及软件设计的基本思想,完成一定量的课程及课外项目实践,建立正确的软件开发实践习惯。不但如此,这种教学语言必须是工业界的主流语言,否则学生学非所用,学习动力无法保证。

    按照这个标准来衡量,Java适合于作为主要的编程教学语言吗?我不这么认为。首先,我承认Java在教学上有一些优势,比如其开发环境和工具支持非常成熟,有助于培养学生正确的编程习惯;Java是当今第一工业主流语言,标准类库非常全面,可以迅速地开发具有实际用途的程序,有助于激发和保持学生的兴趣;而在数据结构、算法、编译原理的教学方面,Java也毫不落于下风,在软件抽象设计(面向对象)方面,Java还有着明显的优势;特别是在并行编程的教学方面,Java 1.5 concurrency包提供的优势是压倒性的。尽管有如上这些优势,但Java作为教学语言存在着一个致命的缺陷,即它是一个虚拟机语言,这一点就足以把它从教学语言的名单上去掉。作为一个虚拟机语言,Java对开发者隔绝了下层的真实系统,从而构造了一个近乎完美的环境,在这个环境里,世界上只有一种机器,一个操作系统,内存是无限的,所有的机器都具有相同的字节顺序和一致的类型约定,为了设计的优美而牺牲速度永远是正义行为,从反射到运行时自动加载,从完备的容器类到统一字符编码,一大堆漂亮的功能都可以不费吹灰之力唾手而得。要是这个世界上每台计算机都是一个Java机器,每项编程任务都可以在这样一个近乎完美的环境中开发,那毫无以为,Java是最合适的编程教学语言。但是事实上呢?这样一个完美的环境是Java力量的源泉,但这却不是真实的世界。在真实世界里,我们可能面对非常原始的环境,苛刻的运行时限制,复杂多变的系统环境,令人窒息的细节魔鬼,要对付这些东西,需要开发者具有在应对复杂性,自己构造环境,在诸多限制条件下寻找解决方案的能力。而这种能力,被无数人无数次地证明是软件开发、特别是软件创新的核心能力。把Java作为教学语言,恰恰会导致这种核心能力的缺失。除此之外,如果耐心观察的话,不难发现,几乎在任何软件领域里的创新性成果都首先是由C/C++语言实现的,原因很简单,Java是站在C/C++基础之上的,只有C/C++先把大路趟开,Java才能够顺势而上。

    相反,尽管C/C++语言作为教学语言有很多的不足,比如不同环境下开发模式差异大,细节繁多,开发效率低,容易犯错,测试和调试困难,学习者难以保持动力,等等,但是这些问题都可以解决。而C/C++的关键优点,是能够让学习者在真实的计算机抽象上、在大量的细节和矛盾中学会思考,学会解决问题,学会了解真实的系统,知轻重,明生死,从而建立核心能力。掌握了C/C++语言,再去学习和理解Java、C#、Python、Ruby和其它语言,就比较容易达到更高的境界。反之,如果习惯了舒舒服服躺在完美世界里当阔少,那就很难有勇气面对真实的世界。当然,很多开发者认为,现在更重要的能力是理解业务、整合现有资源的能力,而不是处理底层细节的技术。这种说法放在个人身上没有问题,但是不能成为整个编程教育的指导思想。我们需要各个层面上的人才,精通业务和设计的架构师固然很重要,但能够在底层作出创新成果的编程高手实际上更为稀缺和珍贵,很多时候也能够创造更大的价值。而且,更重要的是,一个精通系统知识的开发者在往上走的时候不会遇到大的障碍,而一个只知道拼装组合的“高级设计师”,往往连往下看的勇气都没有。

    Java的另外一个问题,是其所倡导的繁琐设计风格,一个对象套一个对象,一个对象叠一个对象,概念之间彼此横七竖八地互相依赖,人为制造出一大堆貌似精美、实则累赘的所谓设计。这个问题我已经批评过多次,并且相信这股歪风一定会最终被人们抛弃,Java最终会归于质朴。但是在这一天到来之前,Java对于初学者来说,很可能蒙住他们的双眼,使他们看不到软件设计中最可贵的简单性和优美的统一,体会不到数据和程序的统一。在这一点上,C表现的非常好,而C++如果教学得体,可以做的更好。

    当然,这并不是为现在的C/C++教学辩护。恰恰相反,从我了解的情况来看,目前普通高校的C/C++教学质量非常令人担忧。学生学不会,而且越学越没有兴趣,老师则感到教起来很棘手,迫于现实情况往往选择敷衍了事。反而是教Java,无论如何学生还能学到一点东西,对就业也有直接的帮助。至于学生的核心能力确实,发展后劲不足等问题,就让他们在现实工作中自己解决吧。坦率地说,这种想法也很有道理。不过,从教学角度来说,我认为老师们还是应该积极考虑如何提高C/C++的教学质量。毕竟学生阶段是十分宝贵的,基础不在这个时期夯实,将来想弥补,就算不是完全不可能,也将付出十倍的代价。本着对学生职业生涯的负责态度,还是应该帮助学生达到这个阶段应该达到的目标。在两位教授的公开信里,也充分表达出这个意思。

    我赞成的编程教育过程,应当是以C/C++(基本上是C)为主线,贯穿起算法、数据结构、系统原理、编译和数据处理、软件设计和组件技术等关键知识领域,让学生能够从根本上理解现代软件系统的原理和构造,并通过有效的练习建立正确的软件设计观念和良好的工程实践习惯。在这个基础上,无论将来是深入学习C++,还是进入Java的繁荣世界,或者拥抱Python、Ruby,甚至于走向Web开发,都会心领神会,势如破竹。

     

    发表于 @ 2008年01月10日 11:30:00|评论(loading...)|编辑

    旧一篇: Ruby 1.9不会杀死Python

    评论

    #cber 发表于2008-01-10 11:55:32  IP: 57.73.18.*
    这都老调重弹了N次了
    对于此类话题,我都没有兴趣参与了,爱谁谁去
    #gl1981cn 发表于2008-01-10 13:16:45  IP: 218.206.99.*
    如果说,我们的大学计算机专业就是培养软件工人的。
    那学java就可以了
    #danjiewu 发表于2008-01-10 13:21:43  IP: 221.224.33.*
    顶一个
    现在有这个感觉了,国内做软件的大多是拖拖控件之类的,对软件开发的理解和创新能力真的很浅薄。
    #Solstice 发表于2008-01-10 13:27:59  IP: 202.77.190.*
    《黑客帝国(一)》里,孟菲斯问尼奥要吃红色药丸还是蓝色药丸,尼奥选择了红色,回到荒蛮的真实世界。同样的问题,高司令的回答是——蓝色药丸,一辈子在虚拟世界中生存下去。
    #wishfly 发表于2008-01-10 13:40:11  IP: 61.149.144.*
    说得非常正确!
    但是,现实是--c/c++的真正用武之地--通用产品开发,没有任何发展机会--在中国!

    只能java,c#了!!
    #littlehedgehog 发表于2008-01-10 14:11:39  IP: 218.75.123.*
    选择语言也就是选择道路,一个做表层快速开发的有必要去把底层搞的那么透彻么?看看现在的IT教育,大部分学生这四年都是混过去的,与其苦口婆心告诉他们底层多么重要,还不如让他们做做快速开发,至少保一碗饭吃。
    语言的选择其实就是一个在学校究竟是学好基础打好地基重要还是去做快速开发积累经验重要。我们学校是以C做入门,java/c#作为选修,真正想要学的学生自己知道自己究竟喜欢什么。不过也像孟老师所说,现在的C/c++教育很令人担忧,其实哪只c/c++,看看数据结构、操作系统,哪一个不是相当糟糕,我们就要考数据结构了,这才知道原来考数据结构是背出来的,而不是写程序写出来的。这样的基础打下又如何?还不如一个培训班出来的。
    经常听人感慨中国一年几十万的IT本科毕业生,咋就不能像linus写一个操作系统出来,这样的应试教育方式,别说写一个操作系统,就是毕业混口饭吃都成问题。
    #fenglingcompany 发表于2008-01-10 14:25:49  IP: 221.8.35.*
    说的对,我同意上面的观点,拖拖控件之类的软件开发,虽然简单但对我们来真的开发来说真的太浅薄了!
    #fenglingcompany 发表于2008-01-10 14:29:08  IP: 221.8.35.*
    对于littlehedgehog我不同意你的看法,人是要吃饭,但一定要吃的稳,那表面就不太行了吧
    #lovec 发表于2008-01-10 14:30:12  IP: 61.152.127.*
    返璞才能归真,要打好基础,还是要C,C++我觉得也不适合
    但如果讲OOP,我觉得Java,C++,C#等都可以,当然Java和C#更简单
    #kevinncut 发表于2008-01-10 14:45:17  IP: 123.112.18.*
    一点都不实际,上大学是为了什么!?当科学家吗?为了就业!学什么容易就业就该学什么,我大学学的大部分都一点用都没有。什么操作系统,编译原理,你说说有几个人用得上!!!?!?
    #ronaldoliubing 发表于2008-01-10 14:55:11  IP: 124.42.70.*
    非常赞同孟老师说法,我也是做互联网的,个人感觉互联网越做越没有意思(当然可能自己知识太少了,没有认清互联网行业!),感觉自己对计算机系统知道的少之又少!感觉远离了底层知识,我记的一次面试,
    面试官对我说底层是最值钱的,前几天突然对C语言感兴趣,索性看了些C语言书,还真没有想到C语言竟然有四本经典书籍:C陷阱和缺陷
    C语言接口与实现,C和指针,C程序设计语言(第2版·新版),在这里并不是说C有多好,大家都去学,感觉现在的大学讲的C知识太肤浅了!所以学生感觉学了没有意思!还有就是环境问题!感觉从事开发人员应该抽时间看看底层知识!!!
    #farce 发表于2008-01-10 15:18:22  IP: 123.8.19.*
    为什么不说说Pascal了?现在说C还是有问题,为什么不做Pascal?Pascal落后还是技术不行?那Delphi呢?
    #yyquick 发表于2008-01-10 15:18:26  IP: 124.42.17.*
    事实上我觉得C/C++都有很多缺陷。
    比如说,在大型程序中,头文件、宏这种概念并没有简化了编程,反而使得编程变得复杂了。而且c/c++的多线程模型还存在很多问题。
    在这些方面,Java提供了一些很好的解决方案,但是,Java作为一种依靠虚拟机来运行的语言,相比直接的编译型语言来讲,性能不够高是一方面,另一方面还有不能直接操作硬件底层的问题。
    我觉得如果Java能够同时提供一个直接编译成本地代码的编译器会更受欢迎。
    D语言我觉得就是跟Java非常类似的语言,可以看作是Java的编译版本。
    #mcs51a 发表于2008-01-10 16:58:36  IP: 58.32.189.*

    "多研究些问题,少谈些主义"
    #oDon 发表于2008-01-10 17:33:20  IP: 221.0.97.*
    人不能一概而论,个人能力不同,人的路不能让教育部的几个老头定乾坤,路上人自己摸索出来的,没有任何谈论的必要,谁都会写Linux也是个灾难。
    所以lz也没必要
    #hotstong 发表于2008-01-10 17:38:56  IP: 192.168.100.*
    孟岩大哥又开始攒口水了。
    学以致用,要怎么学得看你怎么用,IT做久了自然明白软件的复杂性在哪里,算法,架构而矣,其它的都是唯手熟尔的东西。
    就像以前的一位做汇编的师兄,老把C当垃圾看,现在你又跳出来做救世主了。
    #nevergone 发表于2008-01-10 18:03:38  IP: 210.34.129.*
    中国高校教C语言都还用古董软件Turbo c
    严重与现在的工业界脱节
    TURBO C会让学生写出古怪的代码.
    #liskolnikov 发表于2008-01-10 18:36:15  IP: 116.76.7.*
    现在的大学主要编程教学语言本来就不是JAVA,是C。你这篇文章针对的是哪所大学?国外的?
    #zeuux 发表于2008-01-10 18:49:20  IP: 61.135.152.*
    一语中的。

    计算机科学的教育应该关注计算的本质,应该回到C/Lisp。
    #zjh222 发表于2008-01-10 20:32:42  IP: 222.212.157.*
    C#,Java,C++是外国的给中国的雅片,吸了的人个个执迷不悟
    #guokw 发表于2008-01-10 20:43:24  IP: 222.222.124.*
    我买了好多的C++(几乎全是候捷译的),DELPHI,JAVA的书都送人了

    最后找来找去,用mingw在windows下编程,那个TC不好

    还是学C有兴趣,我付出了好大的代价呀,要是学生,估计没钱买这么多书吧,我是学编程玩的
    #guokw 发表于2008-01-10 20:45:34  IP: 222.222.124.*
    那些说找不到好的编程工具的,你找过没有??

    我就在windows下开个dos窗口,用mingw编写C
    用vim当编辑器

    装mingw的时候要设置一下path
    #guokw 发表于2008-01-10 20:47:47  IP: 222.222.124.*
    看看中国的等级考试,好似现在用vc6.0了,好进步呀

    进步的都帮着微软当婊子啦

    那一帮拿着纳税人的钱混白食的管计算机的人
    #chen77716 发表于2008-01-10 20:56:02  IP: 202.96.19.*
    我不同意老孟的意见,因为
    1.老孟自己喜欢c/c++所以心理上排斥Java
    2.在学校学习什么语言都无所谓,重要的是学习思想
    #sunnyawake 发表于2008-01-10 21:01:19  IP: 58.215.40.*
    根本问题不在教什么语言,而是教解决问题的思路和独立解决问题的能力。软件应用范围非常广阔,解决不同的问题需要不同的工具。不同的兴趣爱好,不同的研究方向,不同的学习阶段,侧重点不一样,要分别对待,不能一刀切。
    #guokw 发表于2008-01-10 21:05:33  IP: 222.222.124.*
    那些读金庸读成傻B的人,就不读读古代人的书???

    工欲善其事必先利其器。

    你真正会武术吗??让学武术的揍你顿你就不会这样说了
    #guokw 发表于2008-01-10 21:08:50  IP: 222.222.124.*
    我不信你要从根本不去了解计算机,学java不学C 汇编你就了解了

    看看perl之父是不是也是lisp高手

    还有Gosling........


    中国就是出了这么多读金庸书的傻B才成这样的。

    #down0011 发表于2008-01-10 21:13:27  IP: 117.8.169.*
    对于还没做过应用的学生而言,操作系统,数据结构太枯燥了。只有当他们对目前的语言实现不满意时,或者高级语言水平到了一定程度时,才会有兴趣学这些。我就现在才对操作系统,汇编有兴趣。我都毕业3年了。
    #guokw 发表于2008-01-10 21:24:18  IP: 222.222.124.*
    兴趣是培养出来的,不过学生时代的兴趣都让老师扼杀了
    #flushtime 发表于2008-01-10 21:28:07  IP: 221.238.245.*
    还是学汇编好啊,机器语言更好.
    #guokw 发表于2008-01-10 21:30:19  IP: 222.222.124.*
    不用,你去学核物理去吧,按照你的推理最后你应该什么也不学,等死算了

    凡事都有个最好的折中方案

    老子曰,大成若缺

    用简体字用的,读点古书好不好,

    #lilawrence 发表于2008-01-10 21:36:41  IP: 116.28.119.*
    唉!说来说去有何用呢?世界上没有对与错,只有自己觉得对就对!对于我自己来说,我才不管学什么技术,有点子,赚到钱,50岁退休,喜欢搞什么就搞什么,有空就做的实际的东西吧,搞舆论是有钱人的业余活动!
    #chengg0769 发表于2008-01-10 21:50:28  IP: 121.13.12.*
    我认为:
    人在上大学前应该学会用一门可视语言编程,积累一些认识。这是最好。
    我前阵就是用pb,vb,delphi,c#也摆弄过一下。现在还是回到c/c++上来。因为用java入门的话,真就不晓得内存是啥玩意了,内存是不是线性的可能都不晓得了。java的程序员永远也无法写一个独立于java的稍微底层的东西。
    编程中,变量,循环,判断语句,结构,函数,类,重载,派生都是c++有的。语言差异我想不是太大。孙鑫老师讲课时边讲边看帮助也一样编程。学好c++再学其他应该非常容易。
    myan说,c/c++让我们破除了对计算机硬件和软件的神秘感,的确是这样。java不够底层。而c/c++我们能联系到机器本身。java这样的语言只适合自学或者社会机构来教。
    #guokw 发表于2008-01-10 22:00:05  IP: 222.222.124.*
    孟岩这次说了句人话,不过也是照着别人话的,


    以前当托的时候多
    #guokw 发表于2008-01-10 22:05:00  IP: 222.222.124.*
    根基不牢,地动山摇
    #codeloveforever 发表于2008-01-10 22:05:28  IP: 124.229.40.*
    現在大三,開始學習時還是C語言,可是慢慢地,雖然學校沒有教JAVA,但不怎麽什麽時候自己又開始自己學JAVA了

    瘋啊!~~~~~
    #lihuisk 发表于2008-01-10 22:22:14  IP: 218.58.59.*
    我还是学语言的初级阶段..
    那我就想问问 发帖的牛人..
    什么叫真实?
    什么是真正的编程?
    什么是真实的硬件什么是虚拟的硬件?
    说白了全部是都是函数调用而已 !
    全部都是端口和字节位而已 !
    前辈..您学过硬件嵌入式单片机之类的编程吗 ?
    他们和C# 以及JAva根本区别在哪里?
    不要老是拿一个虚拟机说事!
    要明白程序根本不知道什么是虚拟和真实的分别 !
    难道你用C 操作端口就是真正硬件了?
    和你用java封装一个类库调用函数由什么区别?
    恕我无礼...........
    你还是回去好好看看形式语言与自动机!
    看看风诺依曼体系再回来说事!
    #lihuisk 发表于2008-01-10 22:25:11  IP: 218.58.59.*
    话又说回来了.......
    国内 学C C++
    在牛逼..
    我们没看国产操作系统占领市场呢?
    我们从来没见过红旗linux 在周围电脑使用呢 ?
    吹牛逼有用吗?
    中科院 搞龙芯的也就是那近百人而已 !
    大多数人还是要解决吃饭问题的!
    你的 观点我暂时不反对..
    但是你的理由我反对..........
    希望你能明白这两者的区别........
    #wishfly 发表于2008-01-10 22:45:28  IP: 61.149.144.*
    难道你用C 操作端口就是真正硬件了?
    和你用java封装一个类库调用函数由什么区别?
    #djsl6071 发表于2008-01-10 22:48:51  IP: 220.161.16.*
    从首页的两个教授的文章,到myan的文章,吸引我的都是“主要编程语言”这个词,我想学计算机科学,知识的体系结构是复杂的层次化的,单靠一门语言并无法始终带领我们。汇编或者c语言是基础,它们涵盖了内存管理,机器内部对问题的处理、对性能的把握,让每个学生都真真切切地了解基础的原理,掌握细节的实现,这对今后学习任何语言都是有益的,是一定要知根知底的东西,其他包括数据结构,算法,操作系统,网络等等这些基础课程都很重要,也都要精通。

    但是,除此之外,计算机学科为面向将来的就业,为面向将来的科研课题,需要好的通用的编程观,毕竟绝大多数走上社会的毕业生,面临的,是一份真正对提高自己,对提升自身职业追求有益的事业。当我第一天来到大学,第一天接触计算机科学导论的课程时,和其他大多数同学一样,我对这个专业没有丝毫兴趣,对将来没有丝毫憧憬,造成这一点的原因大家心里都清楚,就不多说了,只是,我心里问自己的第一个问题,第一个希望真正去面对的问题,是我的一生,是不是要因为学习计算机,从事计算机,而变得枯燥,乏味,毫无生机,我的一生,难道要绕着计算机而活吗?现在,有多少的朋友能够扪心自问,你的生活,是否是这样的呢?我从来都不担心钱,也不害怕刻苦,更相信自己绝对的聪明;兴趣和欲望,才是我从现在到将来无时无刻不反复敲打自己内心的问题。

    所以,尽管第一段说了那么多需要学习的,需要了解的,但什么才是最暗合你性格,暗合大多数普通人(更加是那些谙熟如何作一个聪明人)的思维习惯,适合在不仅仅当我们面对计算机,更是面对社会,面对人生,面对需要制定战略,作出决策的时候都可以始终思考、运算在头脑中的语言呢?——高级语言,没错,是相当高层次的语言,是抛开具体细节而注重全局观的语言,是处理信息计算方略的语言,在语言思潮早已彭湃的今天,我相信绝大多数人和我的选择都一样,那就是面向对象,主流而且成熟,我也听说过其他函数式,当然还有其他一些不知名的,但无论如何,它们好也罢,不好也罢,不是主流,欠缺成熟。

    面向对象很简单啊,就是继承和封装,就是抽象和泛化,就是尽量忽略底层的实现细节而追求宏观布局和协调,效率的把握更合理,更有的放矢,它能获得的优化是符合2/8原则的,它关心的是2的那部分需要优化的地方,因为那能让我们获得8的效果。我相信无论项目是大是小,编程工作量是多是少,专注于业务逻辑的合理实现,而不是细枝末节的过多过早修饰,甚至为它们花费过多的时间。这确实是暗合我们做人的道理,处事的道理,管理的道理,而简单纯粹的好的面向对象语言,是Java。

    myan在第二段谈到了美国主要编程语言教学的历史,从Pascal到C,再到Java,美国计算机教育界关注的并不是语言本身的强大,而是一门语言是否能够给学生一个最清晰的,处理计算机问题最直观的感觉和印象,它直接决定的学生能否马上获得对编程的兴趣并深入钻研下去,直接决定了学生在今后的学习中能否不偏离轨道,专注到最核心的问题的解决之中。它不要求学生在毕业走上工作岗位的时候,能够牢牢记住编程过程中需要注意的每一个细节,每一个机器或平台相关的特点,无论是汇编语言的硬件专有性,还是C/C++的类库封闭性,那些很局限地把编程者牵制在固有的平台上的固有特性,那是没有必要的,也是记不住的,更是在今后的工作和科研中不一定会用到的。确实,Java不需要作为编程教学的第一门语言来掌握,那是教授指针和内存的汇编或c的事情,但Java绝对有必要作为面向对象和高级编程语言的入门语言来掌握,作为设计模式乃至软件体
    #djsl6071 发表于2008-01-10 22:49:28  IP: 220.161.16.*
    myan在第二段谈到了美国主要编程语言教学的历史,从Pascal到C,再到Java,美国计算机教育界关注的并不是语言本身的强大,而是一门语言是否能够给学生一个最清晰的,处理计算机问题最直观的感觉和印象,它直接决定的学生能否马上获得对编程的兴趣并深入钻研下去,直接决定了学生在今后的学习中能否不偏离轨道,专注到最核心的问题的解决之中。它不要求学生在毕业走上工作岗位的时候,能够牢牢记住编程过程中需要注意的每一个细节,每一个机器或平台相关的特点,无论是汇编语言的硬件专有性,还是C/C++的类库封闭性,那些很局限地把编程者牵制在固有的平台上的固有特性,那是没有必要的,也是记不住的,更是在今后的工作和科研中不一定会用到的。确实,Java不需要作为编程教学的第一门语言来掌握,那是教授指针和内存的汇编或c的事情,但Java绝对有必要作为面向对象和高级编程语言的入门语言来掌握,作为设计模式乃至软件体系结构课程的基础语言来掌握,这些难道不是大学教学的目的吗?

    c语言或汇编,它们任一种可以带我们进入充斥指针跳转调用的过程式的世界里,但凭什么认为只有那里才能有所谓的“创新和独立解决问题的能力”,凭什么认为只有那里才能打破计算机和软件的神秘,计算机是什么样的在每个人的心中都有自己的答案。指针和内存管理,机器指令乃至平台特性的运用,在大学里不可能,也没有必要作相当具体的深入研究,那是依赖于软硬件平台差异性的,而且就像上面说到的,在今后的工作中,完全会更深刻更专注地认识到。真的很奇怪为什么那么多人把Java和C#、VB等联系起来,认为托拽和搭积木是属于Java做的事情,在我使用Java开发了这么久,无论桌面编程还是web,从来都知道依赖现成的只能束手束脚,Sun JFC实现的类库从来都不是最高效的,最合适于我们的项目的,又有多少人只知道使用现成的类,而不去想想那其实是一些示范,而Java编写自己的类效率又能提升多少又是如何的容易。Java的面向对象接口编程思想很灵活,很好,Java的引用即固定指针,创建即占用内存,继承即默认一致,很清楚,很直接,相比c++包罗万象,变化万千,风格炯异的编程手段,竟然有人会发出“一个对象套一个对象,一个对象叠一个对象”或者“为什么老是要new”这种门外汉的抱怨,我真不知道他们是怎么学面向对象的,是否是在C++中写对象的时候习惯了把对象放在对象里就以为Java中对象里会还存在对象。

    很奇怪为什么只把苛刻的环境看成软件开发中通常面临的问题,而把在面向对象语言中同样优雅地解决了的多变的系统环境和细节上的复杂当作专属于基础语言的能力范围,明知道细节中的bug难以察觉又难以兼顾,为什么让开发者一次又一次地面对这些毫无意义的细节上的修改和反复调试,并美其名曰这才是独特的创新能力,难道良好的复用,以不变应万变,懂得踩着巨人的肩膀,就不是创新的核心能力了吗?

    Java是一个虚拟机语言,.Net里面的语言也是,但正因为如此,它们才比其他语言有更好的可扩展性和灵活性,当其它语言还躺在上个世纪的旧语法之上的时候,.Net Framework已经出到3.5并且向下兼容了,Java程序员也已习惯泛型和新的for循环并叫嚣Swing可以多少接近SWT,JIT的发展使曾经本就比编译型语言拥有绝对优势的调试和开发效率的解释型语言跑的更欢快。当一门语言属于昨天和今天却有着不可预知的明天,而另一门语言属于今天和确定灿烂的明天的时候,你会作何选择?
    #Zhang_yalin 发表于2008-01-10 23:17:50  IP: 222.90.133.*
    把计算机编程看做终身的兴趣的人,是肯定要去了解低层东西的
    而如果想把钱来的快,来的及时的话,就去搞搞流行语言吧,但后劲不足。没什么发展。
    #photoplan 发表于2008-01-10 23:55:07  IP: 122.142.173.*
    挖哈哈,俺,灌水王,来灌水了
    #lyazure 发表于2008-01-11 00:09:16  IP: 121.32.187.*
    哎,想不到孟岩果然没什么真才实学,只会做个吸引口水和眼球的小丑。从头到尾都没领会原作者说的java不适合作教学语言的原意,单纯以自己的兴趣为中心去看待别的语言,歪曲地以美为丑,以丑为美,以错为对。甚至为了达到目的进行无中生有的恶意中伤。
    #lihuisk 发表于2008-01-11 07:57:28  IP: 218.58.59.*
    =====================
    把计算机编程看做终身的兴趣的人,是肯定要去了解低层东西的
    而如果想把钱来的快,来的及时的话,就去搞搞流行语言吧,但后劲不足。没什么发展。Zhang_yalin
    --------------------------------------
    这位牛人 我到想请问了..
    中国搞计算机教育最终有多少人进入了绝对的国家科研 ?
    如果你说所谓的汉语编程叫做国内科研的 话我无语加鄙视!
    又有多少人最终进入了实际的工程开发 ?
    龙芯最真是底层了..研发团队才多少人 ?
    和Intel.和AMD相比什么水平?还好意思标榜自己所谓的终身性趣?
    如果说兴趣.那更是个人自由问题!
    他人无权干涉和将自己的价值观强加!
    如果真正了解计算机硬件..我想帖主以及您应该去学机器语言..
    那个才是真实的 !

    恕我直言.........你们一帮人对计算机理解的水平还没我这个学生来的深入.........

    你们以为操作一大堆的链表和指针和内存就是真正计算机编程了?

    #lihuisk 发表于2008-01-11 08:04:52  IP: 218.58.59.*
    =================
    顶一个
    现在有这个感觉了,国内做软件的大多是拖拖控件之类的,对软件开发的理解和创新能力真的很浅薄。
    ======================
    我就鄙视的问一下了 你写了多少行代码?
    你拖了多少个控件了 ?
    要不你拿出你的代码来大家学习一下?

    你已经肤浅到认为写程序就是托代码.......
    我感觉没必要和你浪费口舌 !
    PS: 希望你有自知之明....
    #lihuisk 发表于2008-01-11 08:08:10  IP: 218.58.59.*
    ============= zjh222 发表于2008-01-10 20:32:42 IP: 222.212.157.*
    C#,Java,C++是外国的给中国的雅片,吸了的人个个执迷不悟
    ==================
    这位同学说的更TMD混蛋了!
    ==============
    现在IT什么不是国外的 !
    C中国原创的 ?
    CPU 中国原厂的 ?
    操作系统 OS Linux Unix 中国原创的 ?
    和你这种人根本没话说!
    回去学你的计算机文化基础去吧 !
    #open_sky 发表于2008-01-11 08:46:27  IP: 192.168.117.*
    回帖这都是什么人?中国人!
    #sukyboor 发表于2008-01-11 08:54:09  IP: 61.144.176.*
    lihuisk


    : : :
    | | |
    [______]


    拜一下
    #hbjzdsy 发表于2008-01-11 09:00:20  IP: 124.42.18.*
    ........................................
    孟老师说的对。但楼上的好多人不知道干什么吵?
    想学什么,想干什么还是看自己
    但是C做为教学还是比JAVA好点
    #skys712 发表于2008-01-11 09:40:36  IP: 219.131.196.*
    其实这也是中国大部分程序员说35岁以后做不动的根本原因。

    学java吃的是青春饭。时间过的越久发觉东西越难学。
    #zhujian888 发表于2008-01-11 10:04:53  IP: 124.147.157.*
    我非常赞成孟大哥的观点。
    现在市场需求确实让java c#火起来了,企业级开发需要大量的代码工人。做为企业要开发周期短成本低,肯定就需要java .c# 加上大量的人,需要的这些人不一定要高手,只要能增 删 查 改就可以,不需要他们了解底层。甚至如果公司把代码封装成组件后,所有都自动生成,只要他们填空,只要会打字就可以。这写人只能是吃青春饭而已。学一辈子程序可能不懂知道pe格式,elf格式是什么,不会写makefile,连 系统调用(system call机制)什么什么都不知道,天天在说调用API。
    " 中国高校教C语言都还用古董软件Turbo c",我不古董很经典。我觉得该用gcc + VI 来写。然后,自己写makefile来组织程序。最近在写一个小小的操作系统,主要目的是学习。是在linux环境做为开发环境,汇编和c混合编程,c语言调用汇编的函数的时候,真的需要你对链接器以及coff格式很了解,在脑子里真的需要知道代码和数据在内存中的位置 。基础很重要,虽然市场大量初级写代码的应用级程序员,不可能所有个人都成为宗师基人物.但大学期间学学还是有必要的。
    #zhujian888 发表于2008-01-11 10:06:34  IP: 124.147.157.*
    打得太快写错很多字,请谅解!
    #horn2005 发表于2008-01-11 10:18:40  IP: 222.35.87.*
    我觉得还是中国的计算机教育的一个定位的问题。我大学读的系叫“计算机科学与技术”也就表明教学中有两个目标,一个是计算机科学,还有就是计算机技术。记得在学微机原理的时候老师用二极管和三级管利用数字电子的知识给我们建立了一个cpu的逻辑模型,我当时非常的震撼,我明白了为什么1946年就可以生产出实用的电子计算机了,一个科学理论不一定要依赖技术而存在,但技术要依赖科学而存在,我们明白了cpu和计算机系统的原理,我们既可以使用数字电子的D触发器来搭建cpu,也可以用初中物理的电子继电器来实现时序.所以我觉得理论是基础。技术是人创造出来的工具.我还记得我学微机原理的时候用中断向总线上输出数据,当我看到总线上的数据的时候,我感觉我能控制一切了。但后来学的C语言就做不到这一点了。高级语言会封装一些东西,但也会丢掉一些东西。C语言就不能设置FLAG标志.但C语言也不用自己管理堆栈来实现递归程序.我在学汇编的时候写过一个双递归的程序,当时就体会到什么叫扁平的内存模型,每进入一个递归层次,你都要自己保存寄存器和标志位,然后好要想办法返回值。但在C语言里一个递归语句就结了。但我觉得要是递归太深应该会内存溢出。用汇编就不会,因为那是你自己在管理内存。高级语言就是一个封装,有简化的功能,有屏蔽的效果。技术应该建立在坚实的理论基础上,在做任何事情的时候都要回望数学逻辑,那样我们才不至于迷失自己的技术方向。任何图灵机可计算的都是计算机可计算的,反之则否。
    #sss_free 发表于2008-01-11 10:43:03  IP: 10.128.45.*
    C语言一样可以教授面向对象的精髓部分,我在工作中主要使用C语言,但是设计上采用面向对象的方法,有其实动态绑定,屡试不爽
    java把面向对象搞得太神秘了,这是愚民政策
    #user2008 发表于2008-01-11 10:47:15  IP: 222.66.166.*
    连弱智都知道,学习武功要从马步开始,没有上来就学七十二绝技的。编程也一样,开始要以Basic,C等语言打基础,上来就接触高级概念不好。
    #user2008 发表于2008-01-11 10:49:01  IP: 222.66.166.*
    不过看起来也搞笑,对计算机一点贡献都没有国家,竟然争论人家那个好,难道你们都不自卑吗?
    #sss_free 发表于2008-01-11 10:50:27  IP: 10.128.45.*
    hor2005,“任何图灵机可计算得都是计算机可计算得,反之则否”,不是这样的吧,所有严肃意义上的可计算模型的计算能力都是相同的,这就是著名的图灵-丘奇假说。图灵机可以模拟计算机,并且计算步骤是计算机的某个多项式系数倍。你可以看看计算导论这本书
    #CAYU 发表于2008-01-11 11:51:36  IP: 58.16.7.*
    我认为java语言教学是很好的。能深能浅,关键是老师如何教的问题。很多老师是毕业后就当老师的更本没什么项目经历。
    自然教的东西比较书本化了。算法这些用这几个语言都一样可以实现。
    java也有很深层次的东西,为什么不教这些呢?
    在软件工程上java的表现也不错能让学生把握一个软件的设计和层次。

    c也不错,但基本的string类型都没有,c++的类型又太多,自己随便就可以定义一个,随便找一个开源的c++构架,里边一大堆自定义的类型。对于学生在将来的应用上并不好。因为不标准。
    #rainv 发表于2008-01-11 12:37:25  IP: 121.35.128.*
    Java有很多东西学的。比如要用JNI就需要会c/c++.
    最好列一个
    语言/职位的列表清单,让学生自己选。

    学校学的c学的又不深,做应用又小,学c的应该看看Java的语言功能,或许就是你一直想找到东西。
    #rainv 发表于2008-01-11 12:41:56  IP: 121.35.128.*
    要是我选语言,也会选Java,它和操作系统无关的,不会有分支版本。Java还开源,自己改JVM实现特定的功能也可以的。
    #luozhuang 发表于2008-01-11 12:44:05  IP: 222.221.213.*
    http://blog.csdn.net/luozhuang/archive/2008/01/11/2037127.aspx
    这是我对各位网友评论 的看法
    发表过评论的网友去看看我对你们评论的看法
    #liboqun 发表于2008-01-11 13:13:24  IP: 219.239.44.*
    我今年大四
    专业不是计算机
    但我很喜欢编程
    入门是应该学C/C++,相比JAVA,VB
    C/C++,更能让人理解计算机
    #taroplum 发表于2008-01-11 13:42:21  IP: 119.4.23.*
    wishfly 说的有道理呀。现状,中国基础研究过不了关。哈哈,自然做产品的外围的东西就多了。反倒是基础研究的专业软件、通用软件就做的少了,做出来也卖不出去。^_^。人、钱、物、组织。哈哈。
    #lf426 发表于2008-01-11 15:37:52  IP: 221.10.89.*
    我支持两位美国教授和孟老师的观点。
    我发现很多人没有把计算机教育的本质搞清楚。
    CS包含的东西很多,但是,我觉得有些问题虽然是紧密联系,但是也是相对独立的:了解计算机、语言语法、思想、算法(与数据结构)。
    正方观点一个最重要的强调重点,就是类似Java这样的语言无法让学生真正了解计算机。只知其然,不知其所以然。语言本身考虑到的问题,你不用去考虑了;语言本身没考虑到的问题,你也没办法去考虑。所以,WoW不可能用Java写出来,因为在同等的硬件下,你永远无法解决Java比C/C++慢的问题。
    语言语法,在实践中被证明是相对次要的问题,因为程序员实际上对于不同语法的适应力都很强。
    思想和算法本身是可以脱离特定的计算机语言而存在的。从学术角度来说,只具备OO特性的Java显然在目前来说,包含的思想是不全面的。面向过程和基于对象,C已经很成熟了;面向对象,不可否认Java很强;但是泛编程GP呢?Java没有。纵贯所有思想,只有C++在目前来说是最全面的,这也正是C++总带有试验性和不成熟性的原因,但这也正是学院派认为最有价值研究的对象。
    事实证明,数年前被看好的OOP在今天并没有出现一统江山的局面,简洁的C被众多牛人推崇,除了Linus大大,Carmack写的QuakeIII也依然是简洁清晰的C。在另外一个领域,GP更是受到极大的关注。这说明,任何一种思想都不比另外一种思想很先进,优劣仅仅在于领域或者程序员自身的差异。所以,在这个时代,强调OOP的Java多么不得了就真显得坐井观天了。
    综上,具有连续性的,保持多风格的语言体系,目前只有C/C++系列,即使也许还有其他语言更好,但无论怎么样也轮不到目前的Java。
    #hanzhuang639 发表于2008-01-11 15:55:02  IP: 218.13.77.*
    说的好!我支持C和C++作为一个想成为programmer的基础,这个基础很重要。
    #1073X 发表于2008-01-11 15:57:18  IP: 222.209.223.*
    Java的另外一个问题,是其所倡导的繁琐设计风格,一个对象套一个对象,一个对象叠一个对象,概念之间彼此横七竖八地互相依赖,人为制造出一大堆貌似精美、实则累赘的所谓设计。这个问题我已经批评过多次,并且相信这股歪风一定会最终被人们抛弃,Java最终会归于质朴。
    --------------------------------------------------------
    孟老大写着写着就跑题了,开始的时候是支持两个老教授,后面就开发自己乱发感想,数落起JAVA了,晕死。一个原本就复杂的功能,其实现自然是相对复杂的,即使用C也不会比JAVA好多少,倒是有可能更复杂。
    horn2005的评论才是一个热爱计算机的人该说的话,sss_free的话"图灵机可以模拟计算机,并且计算步骤是计算机的某个多项式系数倍。"貌似计算机是图灵机理论的应用吧,我不晓得哦,胡说的,我也在看《计算方法导引》。
    乱文加乱评,一塌糊涂,鉴定完毕。
    #sss_free 发表于2008-01-11 16:18:14  IP: 10.128.45.*
    1073X
    不是计算方法,是计算导论。
    我不知道冯诺依曼和图灵是什么关系,图灵确实参与了计算机的制造,图灵说过所有可计算模型正能接受递归可枚举语言,所有计算模型的能力也是相同的,这是因为一阶整数的谓词演算的不可判定性证实了形式本身既不能证明也不能证伪,这就是计算机的能力
    #1073X 发表于2008-01-11 16:25:31  IP: 222.209.223.*
    sss_free
    我看得是《计算理论导引》(Introduction to the theory of Computation),不是《计算方法导引》,刚才写错了,呵呵。你后面的话我一句都看不懂了,等我修炼修炼再与你交流^_^。
    #brightnessyan 发表于2008-01-11 17:34:46  IP: 10.122.44.*
    不论你说的对错,骗贴也骗的够多了,值了
    #fxsjy 发表于2008-01-11 20:05:37  IP: 159.226.43.*
    楼主根本不懂Java
    #akilee 发表于2008-01-11 20:36:52  IP: 222.69.212.*
    国外有个教授出来发牢骚
    lz也跟着出来发牢骚
    有点新意好不好
    java跟c/c++各有优势,别盲目的跟着瞎掰了
    真是的
    #yuyinghan 发表于2008-01-11 20:43:44  IP: 60.21.184.*
    同意笔者的意见,编程教学首要任务是消除“软件指挥硬件工作的神秘感”,建立学生可以用一种语言完成开发工作的信心,然后介绍函数库,类库,OO,模式、框架,协议,数据库.....,其实我认为最好的编程引入应该从单片机编程开始。而这项教学应该从中学物理课就应该引入,而不是大学。
    #Motoste 发表于2008-01-11 21:06:32  IP: 222.91.160.*
    我们学校大一时上c语言竟然让用tc,dos环境,垃圾。弄得我们都没兴趣了
    #tirone010 发表于2008-01-11 22:23:59  IP: 116.207.137.*
    你就一忽悠的祖宗,跟风狂.
    #phoenixsh 发表于2008-01-11 23:33:44  IP: 218.80.60.*
    lihuisk说得好,赞一个!

    CSDN的“新闻”是断章取义的蹩脚翻译。原文我已经转帖于此:
    http://blog.csdn.net/phoenixsh/archive/2008/01/11/2038328.aspx

    本人的观点在此:
    http://blog.csdn.net/phoenixsh/archive/2008/01/11/2038558.aspx
    #zwljava 发表于2008-01-12 00:43:07  IP: 218.88.216.*
    都是牛人,我无语!
    #jsxxxly 发表于2008-01-12 08:11:00  IP: 202.107.78.*
    老孟,我是教C++的,哪本书适合做C++教材,你给推荐一本啊
    #yzdai 发表于2008-01-12 09:59:57  IP: 206.171.6.*
    中国的老师们在教课方面还是有些人才的, 我的导师的理论修养我是很钦佩的.
    Java应当作为入门语言.C/C++可以做为第二级.
    美国是最讲实用的国家. Internet的相关应用还是目前的主要产业. 甚至很大一部分高级软件人才也不需要懂太多底层和硬件的东西, 用Java就够了. Java的潜力是远超出一般教书先生的理解,应为他们一辈子写的代码可能还没有程序员一个月写的多,也没机会做大项目.
    Java改进了C/C++的许多不足,对初学者更适合.
    C#局限于与WIndows,只应做选修.
    有两个大块: Internet(Java)和Embedded(Linux/C/C++).
    Linux-C/C++的重视怎么说都不为过.
    中国的问题之一,是纸上谈兵的太多. 出书的大多白扯. 扯别的,不如写代码,对企业国家自己都有实效.
    #yzdai 发表于2008-01-12 10:14:04  IP: 206.171.6.*
    理解计算机, 有全面的知识, 等都还不是最重要的, 中国的教书先生们的知识面恐怕比美国的教授们强很多; 实际能力就没法比了. 伤其十指不如断其一指. 你很多东西都不懂没关系, 关键是你有没有一项能力出类拔萃. 我太太试问过一些北京的应征者, 没有一个能够打到4分, 包括有多年经验的. 中国目前的风气, 脚踏实地还吃不开.
    #yayayou103 发表于2008-01-12 13:23:32  IP: 121.0.31.*
    任何语言都很容易学!~!关键是算法!~!呵呵!~!某高手说的!~!领悟当中!~

    飘过!~!
    #fiba66 发表于2008-01-12 14:18:22  IP: 218.88.221.*
    外国人说,你就说,呵呵
    说到底,你对这些个问题的掌握还是没信心
    #zhujf2000 发表于2008-01-12 17:10:27  IP: 211.93.37.*
    恩,支持孟先生的看法。
    反对者似乎是异常激烈啊,如 lihuisk 朋友。
    其实老孟是从大的方向来说明问题的,如果把这个针对个人对语言学习的讨论是无意义的。
    大部分计算机学生读的都是计算机科学与技术专业吧,为啥不叫计算机编程专业呢?冷静想象是有其中道理的。这就是老孟发文的所讨论的原因。
    对于像lihuisk说的
    “难道你用C 操作端口就是真正硬件了?和你用java封装一个类库调用函数由什么区别?”
    的想法个我持保留态度,每个人都有不同的理解,俺不能强加于人。至于有没有区别等你学多了可能回知道的。

    比如用C/C++操作文件和用c#,java操作文件。你觉得有区别吗。

    语言的不同导致了学习方向的细微差异,java 更关注应用,设计,模式,库。C/C++更关注于系统的底层实现。

    就如操作文件那块,对C/C++来说更容易接触到它的具体实现,
    kerne32.dll - >ntdll.dll -> int 2e - > ntoskrnl.exe
    再由SSDT分发->hal.dll ,只要你感兴趣,你可以一直追寻下去。但对应JAVA就显然不容易,因为关注的显然不在于此。所以说,
    同样是文件操作,你说是有区别呢,还是没区别呢。

    对于国家计算机教育是,更希望是培养出计算机方面的科学家,还是工程师,我想是不用我们操心的。但明白怎么制造发明东西还是比只会用东西要好些。

    以上言论不针对任何人,只谈看法,包容不同任何不同意见。








    #damagegod 发表于2008-01-12 20:52:06  IP: 220.175.73.*
    呵呵。谁底层谁就更优秀?
    这年头真是奇怪,不带着人类往更高的抽象走,倒越走越底层了。有本事你就从底层一句一句编个人工智能出来啊。
    说到底你用C不也是调用了C封装好的函数。比Java底层就是硬件了?五十步笑百步。可笑。
    虚拟机屏蔽了底层细节倒也成了攻击对象。为什么你不批评世界上的计算机不遵循同一个制造标准呢,那虚拟机还有必要吗?本末倒置。
    学Java就不用学数据结构了?就不学算法了?拖拖控件就能混饭吃。你来试试。
    #sTeVes 发表于2008-01-12 21:41:26  IP: 121.229.77.*
    lihuisk
    你还真的不懂啊。
    哎可悲。
    #lihuisk 发表于2008-01-12 21:42:23  IP: 218.58.59.*
    关于计算机........
    首先肯定一点...
    中国能够在计算机软件和硬件方面做出接触贡献和突破的人物
    绝对不是普通高校的教书匠能够教出来的~~
    毁人不倦...
    有必要为了那一个天才而扼杀9999个普通人吗?况且天才的成功真的是老师的功劳?你应该明白概率的问题吧?
    希望你能明白这一点..
    所以计算机教育要务实..........
    其次..计算机本来是什么....
    最深的理论个人认为是
    一:形式语言与自动机
    二:风诺依曼体系.
    一是 计算机的数学理论基础.
    二是计算机现实实现的工程基础..
    而所谓 C 操作指针 操作硬件等等...
    仅仅是为了解决问题而采用的手段而已..
    不是目的本身..
    我想你写程序应该明白 软件.
    第一要务是定义问题是什么
    不是怎么解决问题..
    只有正确的定义问题才可能解决问题..
    而C C++ 操作底层仅仅是解决问题的一种方法而已..
    不是问题本身..
    #lihuisk 发表于2008-01-12 21:56:20  IP: 218.58.59.*
    楼主讨论的C /C++比java更适合教学的原因是
    C/C++贴近底层...云云..
    那么我就请问 什么叫底层?什么叫机器?
    什么叫硬件?什么叫计算机呢 ?不知道楼上那些支持楼主的
    人们真正考虑过这个问题没有?
    看看上面很多同意楼主的人 计算机思想水平
    让人感觉很不爽...一群不懂计算机的外行人在哪里
    叽叽喳喳 的说什么计算机.内行话............
    建议大家都好好的考虑一下和学习一下 形式语言与自动机...
    我们学校的吴哲辉老师 在这方面是有所研究....
    指针也罢Kenal OS 也罢..
    仅仅是为了解决科学计算而采用的一种技术和方法载体而已!
    不是计算本身!对于一个Client 程序来说..
    你用Java C# 还是C等等..你调用一个API和调用一个系统中断...
    没有本质区别.....是本质...
    程序自己不知道什么是硬件... 也不知道什么是底层........
    所谓的底层.仅仅是我们个人的成见而已......
    我们要明白计算机出现的原因以及被称为计算机..
    是因为要进行科学计算解决问题而已!.
    机器指令也好..
    汇编也好
    C也好
    OS也好..
    虚拟机
    C#托管语言等等..都是为了帮助解决问题而在技术上采用的手段而已!
    而我们所讨论的所谓底层和真正的计算机 模型说白了就是风诺依曼体系而已!如果连这个都不明白..
    讨论让学生明白计算机本身..有意思吗 ?

    #zzuyongp 发表于2008-01-12 22:20:17  IP: 221.14.253.*
    楼上的人都比我牛!!!!不过大家是否真正理解了计算机呢?--反正我不了解.
    #W_W_Q 发表于2008-01-12 22:41:30  IP: 124.173.165.*
    仿佛在论证农民工该用电锯还是手锯
    #WallesCai 发表于2008-01-13 00:01:32  IP: 220.205.17.*
    个人观点还是比较接近楼主的。大学计算机教育的目的并非是为了教会学生一门语言,如果只是这个目的的话,不啻于自动降级为计算机职业培训了(没有看不起职业培训的意思,只是为了说明两者根本目的不同)
    学好了C,你才有机会知道内存要如何去操作,才有机会了解如何“赤手空拳”地解决问题,这是基本功没错。扎实的基础知识可以帮助学生将来非常快速地掌握其它高级开发工具。
    #transfan 发表于2008-01-13 09:54:43  IP: 61.171.152.*
    楼主的文章说得很有道理,但国内的大学编程教学本身存在很多问题,更值得讨论。研究、创新能力的水平未必看你入门学哪个语言,大学教师如何引导更值得关注。
    #wuhuafu 发表于2008-01-13 12:57:33  IP: 116.21.160.*
    严重支持 lihuisk 言论。
    bs楼主自认为深刻,高明的言论
    #ilzzy 发表于2008-01-13 14:55:11  IP: 125.33.198.*
    那首先大学入门时操作系统改成unix,不要用桌面的吧。
    将算法用java是没问题的,但是就入门的编程语言来说,还是c合适一些,c++都有些多余。
    #dming4 发表于2008-01-13 15:45:23  IP: 61.141.141.*
    没有好与坏。个人出发点与取向。
    #czf1943 发表于2008-01-13 16:06:57  IP: 222.190.112.*
    从哪儿入门无所谓,最终还是要回到根本,不要执著于形式了...

    这个争论意义不大!
    #liuhaoran 发表于2008-01-13 19:08:56  IP: 58.62.228.*
    ........... lihuisk 啊,你应该要多看看系统的实现等相干书,你才会明白你刚才说的那些问题的不同之处..........你也应该仔细看看LZ文章的内容你才会清楚......你以为C语言的一个调用就跟JAVA的一个调用一样啊?......真这样认为的话,那你再先认真学习下C语言把...
    #zhangpeng_54 发表于2008-01-13 19:44:45  IP: 222.210.48.*
    支持lihuisk:

    计算机最底层是什么?是高电平或低电平的电脉冲而已。
    最早的程序是用机器码编的,记录在纸带上;
    然后有了汇编语言;
    然后有了C;
    然后有了C#,Java等。

    每一次都是一次巨大的飞跃和跃进,代表了不同时期的发展轨迹,如果楼主想要底层的话,建议把机箱打开,直接给主板加电脉冲。。。
    #1073X 发表于2008-01-13 22:27:34  IP: 124.161.17.*
    从哪儿入门无所谓,最终还是要回到根本,不要执著于形式了...

    这个争论意义不大!
    ------------------------------------------------
    不同意,用C编程和用JAVA编程在思考方式上都是不一样的。作为初学者应该从C起步,晚点接触JAVA。不过不是因为孟老大说的那些个歪理,尤其是有关JAVA的坏话。
    用JAVA很难对计算机怎么运行代码有深刻的体会,也许对理解虚拟机的行为有帮助,但是虚拟机和计算机还是有很大距离的,而且貌似虚拟机更复杂,并不适合初学者。
    #liujiansxcd 发表于2008-01-13 22:54:10  IP: 124.203.242.*
    看看有几个系统软件是java写出来的:apache mysql microsoft linux GNU库等等,包括我们用的IE和firefox,还有语言Python Ruby都是用C写出来的,底层软件也可以有优美的结构,而不只是java这样的语言才可以有。
    Java也可以写出很好的软件比如Tomcat Groovy等等开源软件或脚本语言,但是我们在座的能有几个了解这类软件的开发呢?
    因为我们做Java开发的70%-80%都是在做web开发,每天都在action里填空,数据库里增删查改,有几个做到过写java的应用程序,像tomcat这样的服务器软件?有几个真正用到了java的多线程,不说C/C++了,在Java里我们也不能深入下去啊,都是在每天追逐着框架给框架里添代码,框架是好的,可是你会做这个框架吗?
    #yxf 发表于2008-01-14 01:29:49  IP: 59.40.41.*
    入门,还是lisp系的LOGO最好了~
    语法十分简单接近汇编,函数式编程命令式编程互相结合,解释性执行(即輸即执行),伟大的龟图,强大的功能……
    #wuloveleiforever 发表于2008-01-14 08:22:05  IP: 59.37.211.*
    从学C开始,那不知道要学到什么时候去了?
    #zhujf2000 发表于2008-01-14 10:48:12  IP: 211.93.37.*
    TO damagegod
    "呵呵。谁底层谁就更优秀?
    这年头真是奇怪,不带着人类往更高的抽象走,倒越走越底层了。有本事你就从底层一句一句编个人工智能出来啊。"

    你还真说对了,对于AI,不研究好知识表示这一最基本的东西,肯定做不好上层的AI。神经网络用于anti virus方面有年头了吧,可还是没有真正商业应用,具体啥原因就不用俺说了吧。
    至于“有本事你就从底层一句一句编个人工智能出来啊”,怎么感觉逻辑有混乱呢。java ,c++都可以写AI啊,只要你有时间ASM一样可以写啊。这和有本事没本事有啥关系啊。

    对于lihuisk兄弟,总是提到形式语言与自动机,俺学习写编译器时也粗略地研究了一下,这东西和具体的编程语言无关系,拿他举例子不太恰当。或许您是想说明编程语言都是外在表现形式,本质上是一样的,所以不应该贬低java鼓吹c++。
    可老孟说的是cs教育啊,咱别弄得跟信仰似的,或者很空泛,弄的好像很深刻,觉得一讨论语言就是菜鸟,唯有什么这思想,那个理论才是XXX....

    其实像windows的DEP保护,内存优化管理的预读取列表等高级技术,都是用好很简单有效方法搞定的。所以咱实际一点好,国内大部分高校都喜欢搞理论,但就是真正搞出有用的很少,除了银河巨型机,这么多年还搞出啥子了?

    所以教学语言还是和OS联系紧密一些的好,可以有机会多接触一些我们不懂的东西。别拿什么C操作硬件,和JAVA调用说事,两档事吗。如果还是不明白,那就算了。










    #dunzimu 发表于2008-01-14 11:20:16  IP: 123.253.125.*
    # W_W_Q 发表于2008-01-12 22:41:30 IP: 124.173.165.*
    仿佛在论证农民工该用电锯还是手锯

    这个说到点子上面了。
    #ttlyfast 发表于2008-01-14 12:57:50  IP: 10.0.7.*
    学校要培养什么样的人才9用什么样的语言
    #lucyqixi 发表于2008-01-14 13:13:59  IP: 60.167.163.*
    楼主只是根据新闻发点自己感慨而已.没必要在人家的地盘上这样奚落人家的吧.
    现今大学教C,的确太死板.非要搞自己的标准,其实语言都有标准了,何必非要自己搞个体系标准呢?再者我从高一下学期开始接触计算机,高二想学编程,就学VB,看了一天就把书丢了.那书就是教我怎么在VB6这个软件上用控件,怎么设置每个控件的属性.郁闷致死^^^后来学习C语言,用的是本很古老的书,那书把我当天才看,偶对计算机程序一点概念都没有的哪儿能突然接受的了那些代码.读高三一半的时候在EMULE上看到发布的资源<C PRIMER PLUS>,下载下来看了一个多月后寒假自己买了两本,一本C一本C++,在当年的9月份开学前全部看完.到大学后就开始觉得大学教的计算机好死板,一点儿灵活性都没有,一大群权威,搞的好象那玩意是他自个儿家的一样,现在给你用,你得全部按照我的来^^^还是自学来的快,根据自己知识一步一步来码吧.虽然我不是专业的计算机,但是理工科有计算机来做工具真的是质的飞跃.所以现在若有人问我该从什么语言学,我会告诉他,首先你要非常的喜欢计算机,因为你马上会面对枯燥与乏味,接着你就学习C,再学数据,计算机原理,编译原理,同时别忘了一刻不停的学好数学和你的专业课,汇编是C后的首选,同时把物理也学好了.这时你会发觉计算机其实是很诱惑人的,现在开始不用问人怎么学计算机了,好好的与人多讨论讨论专业课程吧.
    哈哈大学就是引导人进入更深层次的,如果你想当个技术工人,建议你学专业学校去,工作好找,而且技术绝对对口.
    #1073X 发表于2008-01-14 18:02:21  IP: 222.209.223.*
    楼上说的不错,其实你可以发现计算机本科的课程也就是这样。
    #wqf363 发表于2008-01-14 18:22:24  IP: 203.134.244.*
    对lihuisk 的观点颇有所感,没想到开发语言还是那么多人喜欢争论,语言并不重要,就像开发中实现并不是最重要,重要的是设计思想,实现可以用很多方法来作....,当然如果基本的实现也做不到,那就是还没能提升到设计的角度来思考问题了,那水平还有待增长....这样来说吧,如果是编程实现的话,只需要考虑编程语言,实现中涉及到的一些东西; 但设计要思考的范围则大多了,包括使用的框架,语言,机器等.

    编程实现只要一本编程语言书就应该够了,而要做得更专业,你就还要考虑到更多方面,........
    #phoenixsh 发表于2008-01-14 19:34:10  IP: 218.80.67.*
    >zhujf2000:
    >神经网络用于anti virus方面有年头了吧,可还是没有真正商业应用,具体啥原因就不用俺说了吧。

    哼哼,谅你也说不出来。你不知道的东西多了去了。别的难听的话我就不说了,给你个链接,自己去看:http://www.aaai.org/AITopics/html/fraud.html
    #limpo 发表于2008-01-14 20:45:56  IP: 211.92.88.*
    无所谓教什么,主要看兴趣,不是每个人都想了解底层,也不是每个人都想当架构师,让学生自己做出选择吧。
    而且,如果说到要对整个软件产业的复杂性有所了解,通常有两种方法,一种是从上往下,一种是从下往上,就像学习tcp/ip协议,你可以从应用层学起,也可以从物理层学起,每种方式都很精彩。
    因此,不要执著于教材了,顺其自然就好。
    #limpo 发表于2008-01-14 20:51:32  IP: 211.92.88.*
    无所谓教什么,主要看兴趣,不是每个人都想了解底层,也不是每个人都想当架构师,让学生自己做出选择吧。
    而且,如果说到要对整个软件产业的复杂性有所了解,通常有两种方法,一种是从上往下,一种是从下往上,就像学习tcp/ip协议,你可以从应用层学起,也可以从物理层学起,每种方式都很精彩。
    因此,不要执著于教材了,顺其自然就好。
    #zhujf2000 发表于2008-01-15 10:33:08  IP: 211.93.37.*
    phoenixsh 你是真不明白还是装不明白,那个问题不说是不想把话题扯远了,谈的是cs教学,那个仅是举的例子。想交流anti virus 咱俩可以另找地方聊。哎,对那个问题简单说两句吧。

    1 对与anti virus 的检测,ANN 只能用于文件静态信息检测,加壳这一关就过不了,05年曾在实验室测试,只能报壳,不能查毒。随便加个FSG,SoftDe什么的ANN就迷惑了。你要能解决对壳的问题,并且有道理,我将登门拜访。

    2 误报率问题:对程序指令相关性曾做过统计,system32下的文件和木马程序在指令相关方面无太大差异,编译器的优化及打磨已经使恶意程序失去太多特性(针对ASM写的那种)。向QQ这中类似TROJAN的程序太多了,都加白名单里? 直接导致的就是特征选取上的困难。

    3 效率问题,即便很优化的ANN,也会使扫描器的检测效率降低5%-10% ,甚至更多。用户要的是产品,不是实验室里的供人欣赏的玩物。

    4 即便ANN能成功检测出zhengxi这样复杂的EOP类病毒,但代价是缺乏通用性,无法对未知程序做预警。

    5 PE文件的特性总体上说是多维向量,好的降维方法十分重要,记住,不是能降到一维向量就是成功。

    6 symantec 在98年曾宣布他们的ANN能检测引导型病毒,10年过去了,你见到过他们还拿ANN说事吗,其实看下NOD 就是知道怎么回事了,别告所我你没用过。国内的用ANN的有安铁诺,不用加壳,一般的的downloader 就查不出。

    ANN用于检测virus基本的出发点就有问题,都是学院派的理想产物,如果真想搞个启发式检测,用ANN远不如API调用序列识别的效率及准确率,虽然这个方法也不咋地。

    以上如果错误和不准确的地方烦劳指正。
    最后墨迹一句,别动不动的就搞个链接上来装世外高人,忽悠谁呢。
    #zhujf2000 发表于2008-01-15 10:38:16  IP: 211.93.37.*
    phoenixsh 你是真不明白还是装不明白,那个问题不说是不想把话题扯远了,谈的是cs教学,那个仅是举的例子。想交流anti virus 咱俩可以另找地方聊。哎,对那个问题简单说两句吧。

    1 对与anti virus 的检测,ANN 只能用于文件静态信息检测,加壳这一关就过不了,05年曾在实验室测试,只能报壳,不能查毒。随便加个FSG,SoftDe什么的ANN就迷惑了。你要能解决对壳的问题,并且有道理,我将登门拜访。

    2 误报率问题:对程序指令相关性曾做过统计,system32下的文件和木马程序在指令相关方面无太大差异,编译器的优化及打磨已经使恶意程序失去太多特性(针对ASM写的那种)。向QQ这中类似TROJAN的程序太多了,都加白名单里? 直接导致的就是特征选取上的困难。

    3 效率问题,即便很优化的ANN,也会使扫描器的检测效率降低5%-10% ,甚至更多。用户要的是产品,不是实验室里的供人欣赏的玩物。

    4 即便ANN能成功检测出zhengxi这样复杂的EOP类病毒,但代价是缺乏通用性,无法对未知程序做预警。

    5 PE文件的特性总体上说是多维向量,好的降维方法十分重要,记住,不是能降到一维向量就是成功。

    6 symantec 在98年曾宣布他们的ANN能检测引导型病毒,10年过去了,你见到过他们还拿ANN说事吗,其实看下NOD KA8 就是知道怎么回事了。国内的用ANN的有安铁诺,不用加壳,一般的的downloader 就查不出。

    ANN用于检测virus基本的出发点就有问题,都是学院派的理想产物,如果真像搞个启发式,用ANN远不如API调用序列识别的效率及准确率。
    以上如果错误和不准确的地方烦劳指正。
    最后墨迹一句,别动不动的就搞个链接上来装世外高人,忽悠谁呢。
    #zhujf2000 发表于2008-01-15 10:50:26  IP: 211.93.37.*
    不好意思笔误,EOP PE文件入口点, EPO 入口点模糊
    更正,symantec ANN能检测复杂的EPO类病毒。
    #SuperMiner 发表于2008-01-15 11:54:01  IP: 202.108.130.*
    求求你们了,这样的语言之间的口水战到底有什么意义?为什么CSDN总是给这种毫无意义的语言争吵推波助澜?每种语言都有其适合与不适合的场合,存在就有他的理由。人家美国教授说这个话没有错,但是感觉CSDN又在故意借机挑拨,引发争吵,以此来吸引网站的人气,这种炒作我看得太多了,看看你们的文章吧,有多少是这种毫无意义的语言之争的。CSDN,你作为中国技术界的一个主流媒体,何时才能多一些务实精神,何时才能不让我失望?
    #1073X 发表于2008-01-15 13:05:47  IP: 221.10.81.*
    求求你们了,这样的语言之间的口水战到底有什么意义?为什么CSDN总是给这种毫无意义的语言争吵推波助澜?每种语言都有其适合与不适合的场合,存在就有他的理由。人家美国教授说这个话没有错,但是感觉CSDN又在故意借机挑拨,引发争吵,以此来吸引网站的人气,这种炒作我看得太多了,看看你们的文章吧,有多少是这种毫无意义的语言之争的。CSDN,你作为中国技术界的一个主流媒体,何时才能多一些务实精神,何时才能不让我失望?
    --------------------------------------------------------------------呵呵,兄台不要不平,CSDN是商业网站,当然要以吸引眼球为己任啊,这没什么不对。而且首页上关于两个教授的原文还是很好的,至少CSDN没有表达俩教授说JAVA不是好语言的意思,只是说学生因该从底层一些的语言学起,这个观点是对是错暂且不说,很多人没有细读文章就认为这又是语言之争,才会有这么多莫名其妙的评论。孟老大这篇文章又煽风点火,支持教授之余又发表一下自己对JAVA的不满,惹得一些人愤愤不平。唉,实在不想说这样的话,这里是孟老大的地盘,公开指责他实在不礼貌,可是他老人家的一些文字与其说是发表“自己的感想”,不如说是口水仗的导火索。希望只是我“小人之心”了,孟老大只是无心之失又或的确是真心诚意。
    #feng5hao 发表于2008-01-15 13:14:18  IP: 121.0.31.*
    学的好照样OK
    学不好
    让你走再多捷径
    那也是白搭
    #lw549 发表于2008-01-15 13:32:03  IP: 207.46.55.*
    晕,如果这个帖子是我的学生写的,我非抽它个耳光。
    谁说老师有义务培养出人才的?

    师傅领进门,修行在个人。难道拿诺贝尔奖的那些家伙都是老师教出来的?大学4年,老师能给你的太少了,关键还是靠自己。当一个人发现自己遇到瓶颈的时候,自然就会充电提高自己。你凭什么说那些只学过java的人就不可能自学你所谓的底层语言(C,汇编)。你凭什么说汇编就是底层了?那么多中断你能实现几个?

    退一万步说,就算你精通任何你所谓的底层知识,又怎样呢?你能保证你解决问题的能力就比别人高了?你的创造力就比别人高了?
    #phoenixsh 发表于2008-01-15 20:22:04  IP: 218.80.152.*
    zhujf2000请看,我是这样理解你的文字的:
    >神经网络用于anti virus方面有年头了吧, #anti virus行业应用ANN很成功
    >可还是没有真正商业应用 #但是其它行业用ANN就没有什么成果

    所以给了个链接,里面列举了一些AI(包括ANN)的商业应用,不是要忽悠谁。

    原来你不是那个意思,就算我没说吧。反病毒不是我的长项,不过既然你这么认真,我也就发表一点浅见。

    在我看来,病毒检测包含模式识别的具体应用。模式识别的方法很多,用于反病毒的话我想主要是基于规则的方法。规则方法容易理解,如果发生误报,你知道应该去修改哪些规则。但是缺点是只能针对已知的模式进行检测,所以需要频繁更新规则集。作为病毒制造者,完全可以写好病毒之后拿反病毒软件查杀一下,如果被查出来就做些改动,直到能够躲过查杀为止。这样,规则集会越来越庞大。

    另一方面,ANN经过训练之后,可以检测具有相似特征的模式。然而ANN本质上是一种概率方法,误报是无法避免的,只是一个概率大小而已。同时,ANN的判定模式是不透明的,你不知道它为什么会对,也不知道它为什么会误报;如果发生误报,你无法确信能够修改ANN的参数来修正这个错误。这就是ANN无法在AV方面大有作为的原因。

    你是anti virus的高手,如果你做的是国产软件,请允许我向你提个要求:提高国产反病毒软件的运行效率。我猜想国产反病毒软件效率低的原因在于其规则引擎不够高效。

    请行家指正。
    #zhujf2000 发表于2008-01-16 17:23:35  IP: 211.93.37.*
    phoenixsh兄弟是个认真的人。其实我也误会你的意思了,言语粗鲁,这里给你道歉了。

    那就不占孟老大的地儿了,有空去你地盘做客。
    #1073X 发表于2008-01-16 17:48:56  IP: 222.209.223.*
    退一万步说,就算你精通任何你所谓的底层知识,又怎样呢?你能保证你解决问题的能力就比别人高了?你的创造力就比别人高了?

    ----------------------------------------------

    1.计算机是解决问题的工具;
    2.任何工具对其细节了解的越多,就越容易发挥出它的全部功效;
    3.工具使用的越顺手,解决问题的能力就越强;

    计算机这个工具的细节自然就是它的“底层知识”了,所以了解更多的“底层知识”对解决问题的能力自然是有提高的。

    创造力与解决问题的能力不能完全划等号,创造力也不会因为学习了太多“底层知识”就被扼杀。
    #1073X 发表于2008-01-16 17:52:31  IP: 222.209.223.*
    晕,如果这个帖子是我的学生写的,我非抽它个耳光。
    谁说老师有义务培养出人才的?

    师傅领进门,修行在个人。难道拿诺贝尔奖的那些家伙都是老师教出来的?大学4年,老师能给你的太少了,关键还是靠自己。当一个人发现自己遇到瓶颈的时候,自然就会充电提高自己。

    ------------------------------------------------------------

    不过哥们前面的话还是很对的,那些个自己不好好学,又天天骂学校不教“有用”知识的学生的确应该拖出去打。
    #1073X 发表于2008-01-16 17:53:44  IP: 222.209.223.*
    晕,如果这个帖子是我的学生写的,我非抽它个耳光。
    谁说老师有义务培养出人才的?

    师傅领进门,修行在个人。难道拿诺贝尔奖的那些家伙都是老师教出来的?大学4年,老师能给你的太少了,关键还是靠自己。当一个人发现自己遇到瓶颈的时候,自然就会充电提高自己。

    ------------------------------------------------------------

    不过哥们前面的话还是很对的,那些个自己不好好学,又天天骂学校不教“有用”知识的学生的确应该拖出去打。

    ????????/
    #patriot074 发表于2008-01-17 15:11:02  IP: 59.56.26.*
    梦大哥出发点和平常人想的不一样,站的高度更高,可以说是从中国计算机未来出发的。而更多人考虑的是残酷的现实,仅仅把这当成一种职业,混口饭吃。那当然C#和java就可以了,至于底层的开发留给强人吧。本来C#就不是为此设计的。
    #wuzeng2002 发表于2008-01-17 22:19:08  IP: 58.49.249.*
    高手太多 漂过好了
    #wangchengsi 发表于2008-01-19 14:22:58  IP: 220.194.58.*
    能激起这么多争议,可见此帖也是揭露了中国计算机领域的一大矛盾啊
    拿c作为入门语言我是赞成的,因为大一时上的课我还算听的懂,但不是每个计算机专业的学生都对底层、都对计算机这个专业感兴趣。我想教育的重点在于因势利导,而不在于把学生绑在某种思路下,这样不管学Java还是c都会被学生骂的
    所以我的看法是:一开始先学基本的c,然后让学生自由选择朝哪个方向继续发展,当然前提是老师有义务客观的向学生展示不同方向的优缺点。相信学生自己选择的方向会是他感兴趣的方向,即使将来觉得不适合,他也不会因此过多埋怨老师埋怨大学,导致如此多激进的言论
    不过,这只是理想,中国的大学,难。不是大学的问题,而是整个民族的问题
    #mdsp25xhm 发表于2008-01-21 03:39:05  IP: 219.159.78.*
    孟哥!说的话并不无道理,但是话中明显是C的拥护者。打了C的招牌,没错我是学Java,当然走在Java的这边。其实并不能因为把C当作主要编程教学编程语言就能改变对计算机编程有深入的了解。毕竟学编程的大部份都是混饭的,中国的形式很明显....
    #mdsp25xhm 发表于2008-01-21 03:45:26  IP: 219.159.78.*
    孟哥!说的话并不无道理,但是话中明显是C的拥护者。打了C的招牌,没错我是学Java,当然走在Java的这边。其实并不能因为把C当作主要编程教学编程语言就能改变对计算机编程有深入的了解。毕竟学编程的大部份都是混饭的,中国的形式很明显....
    #mdsp25xhm 发表于2008-01-21 03:50:39  IP: 219.159.78.*
    与其报怨不如多做事……
    #javadiablo 发表于2008-01-22 10:07:20  IP: 218.93.20.*
    支持一下 wangchengsi 朋友
    #sky911911 发表于2008-01-22 12:50:45  IP: 192.168.10.*
    正在学习JAVA 还是没有深入 感觉很多东西人家都是给你封装好了的 你只要用就可以了。。确实缺少对系统的深入了解。。
    但是我认为 学习这个东西靠自觉。虽然他给你封装了。但是你可以潜心去研究它。。。大家说呢。、。。个人一点小小看法。。。

    在说说老外 ,他们啊 。。是吃不着葡萄说葡萄酸。吃着葡萄闲葡萄太甜