关于学编程语言的一些观点

讨论 Ubuntu 课堂教学和培训相关经验或资料
回复
头像
paul
帖子: 510
注册时间: 2005-09-01 20:48
送出感谢: 0
接收感谢: 0

关于学编程语言的一些观点

#1

帖子 paul » 2007-08-30 8:58

最近看里几篇文章,很受影响。给学及有志于学Computer Science(计算机)的朋友。假设你不想将来只做一个没有什么特殊技能的大路程序员--重所周知:这个工作没什么不好的,除了可能不太稳定,工资有限,竞争比较大,总有新技术新潮流追赶,算是项体力活,年纪大了干不了。。。

首先要声明早些看了另一篇文章,强调了Computer Science绝不只是编程而已,让我有番感触。确实,转学CS到了高年级的课才发现:你用什么编程语言,老师真的不关心了,课上已经不教了,假设你已经知道怎么编程了;决定你分数的还是你懂不懂课上教的算法和原理,用什么编程语言,怎么用,都是你自己的事了,而且也没太大关系了。之前学的C 还有 Java,只是让你掌握一门工具。之前我选课老是在考虑:恩!学了java,很有用;dot Net,一定要学!结果选的这个课,老师实际上课一点不教C#,给了你例子自己去研究。

言归正传,本来想搜Ruby的一个问题,搜出了这个 Blog
作者是IBM 的Java 虚拟机的开发者。 最后还连出来一个有意思的链接"Execution in the Kingdom of Nouns",很遗憾这篇我还没有看,不过可以假设是批判Java语言的。

那个Blog链接了几篇很有意思的文章,总之就是说现在教计算机的都一股脑的教Java实在是一个不太好的趋势,Java本身没有错,关键是它太简单了,又没有足够的功能,用它也许能够教出称职的Coder,不过很难训练出优秀的程序员,更别说计算机领域的专家了。大学里教编程语言,主要是教学生掌握编程语言的能力,更重要的是使用现有语言(们)来解决现有问题的能力,只学一门Java,或或类似的语言是远远不够的。说到这里,推荐看看关于这个Blub programmer Blub programmer的观点。

你要是看完第一篇文章里的链接,估计我看过的你也都看了,说实话量不少,花了我小半天的时间。很对不起鸟文不好的朋友,我最近没时间翻译,不然我希望自己能翻译一部分出来。不过这也是现实:我们发明了算盘,不过计算机起源于鸟国,而且说实话算盘很难说的上是真正的计算机的始祖。我在干什么,拾人牙慧而已。

顺便把里面有用的链接再列一遍:
Pure programming joy
http://duimovich.blogspot.com/2006/08/p ... g-joy.html

High School Computing: The Inside Story
http://www.trollope.org/scheme.html

Beating The Averages
http://www.paulgraham.com/avg.html

Can Your Programming Language Do This?
http://www.joelonsoftware.com/items/2006/08/01.html

The Perils of JavaSchools
http://www.joelonsoftware.com/articles/ ... hools.html

Kids these days
http://inside-swt.blogspot.com/2006/07/ ... -days.html

Execution in the Kingdom of Nouns
http://steve-yegge.blogspot.com/2006/03 ... nouns.html

差点忘了,我们在校学生或者新入行者换迎前辈们指点!
头像
zhuqin_83
帖子: 10606
注册时间: 2006-05-13 4:02
送出感谢: 0
接收感谢: 7 次
联系:

#2

帖子 zhuqin_83 » 2007-08-30 10:08

很好
HP Pavilion DV6-2064CA: AMD Turion II Ultra Dual-Core Mobile M640, HD4650, 2GBx2 DDR2-800, Seagate 500GB 7200RPM SATA, BD-ROM
DELL UltraSharp 2209WA
Arch64, Testing repo
头像
paul
帖子: 510
注册时间: 2005-09-01 20:48
送出感谢: 0
接收感谢: 0

#3

帖子 paul » 2007-09-02 7:11

昨天看一个同学的Blog,才知道我链接的bloger之一 Paul Graham 是个IT界很有名的人物,他不光和文章里说过的一样用基本没人用的AI语言Clips,写了第一个web-application创业成功,后来他开始作作类似于风险投资的Y_Combinator专门提供资金给小的IT研究项目,这点我觉得很有眼光!他的Blog本身就很值得一看,既有程序员的眼光,更兼有企业家的见地。

话又说回来,这些天一直在想我发的这一组链接的文章到底说明了什么观点。现在自己再总结一下就是:如果你要学一门新的编程语言的话,如果不是为了一个具体的项目,而只是为了学习而学习,或者说是想提高自己。不要选不能改变你编程思维方式的语言。照我的理解就是如果你学了Java,就要考虑学C\C++,或者Ruby,python等等等。。我想很多人的想法和我之前一样,觉得最关键是学好一种语言,Java的库说实话干什么都差不多了,而且往上往下都能走。可是编程语言影响一个人编程的方式,用的越久,越熟,思维越容易被限制。很容易就变成程序员的大众,没有任何优势,更不用说学术上做研究或者是自己创业了。学好什么工具都是本事,是好事,不过要是从头到尾只练一把锤子,结果看到什么都只想用锤子去砸,万一锤子不流行了呢,万一你要改行搬鸡蛋了呢 :) 举了一个可能不恰当的比方,不过中国文化里有不少东西也有他的哲学在里面:程咬金的三板斧能当开国英雄,但是十八般武艺样样精通的人物很少提及,给我的感觉是中国文化里面鼓励人成为专家而不是博学。不过放在编程语言的学习我很同意那些文章里面的说法,尤其是对在校生和年轻人,不要只限于Java之类很流行的语言用的好,多发掘发掘一些没什么人用的的有代表性语言,开阔自己的眼界,锻炼自己编程的思维方式。就像文章里面的一个作者说的,同样优秀的人才,类似的语言(我记不清了,随便说了,见谅)学过了C++掌握Java可能也就是几天的时间,没有任何问题;不过只学过Java再去学C++,很多概念他可能就一直弄不清楚了。
halve
帖子: 45
注册时间: 2005-09-09 11:32
送出感谢: 0
接收感谢: 0

#4

帖子 halve » 2007-09-24 18:16

语言是工具,确实重要
不过也没有这么高深吧,有兴趣,时间的话挑一些流派的代表性语言学下不就好了 ;)

工作1年,我现在觉得欠缺的是
对于一个问题,如何划分模块,定义接口,这方面的经验,能力不够
还有就是算法方面,之前基本是一片空白,得从头开始
至于其他的
就是计算机内的一些特定领域,方法,知识,比如网络编程,多线程,UNICODE之类的经验积累了

当然,分析,解决问题的能力,从经验中学习进步的能力,以及相应的数学背景就不用多说了
头像
boydd
帖子: 255
注册时间: 2007-05-10 19:42
来自: 南京, Deutschland, Karlsruhe
送出感谢: 0
接收感谢: 0
联系:

#5

帖子 boydd » 2007-09-25 5:48

基本上一门语言三天就可以上手了,最花时间的是对庞大库的熟练运用
当然设计模式是最关键的.
peyao
帖子: 11
注册时间: 2007-09-15 10:55
送出感谢: 0
接收感谢: 0
联系:

#6

帖子 peyao » 2007-09-27 20:12

编程的理念和思路,语言只是一种工具,练就内功是否更重要!
me
帖子: 972
注册时间: 2007-09-14 19:51
送出感谢: 0
接收感谢: 0

#7

帖子 me » 2007-09-27 21:18

那也要先把一门语言学好吧?
头像
paul
帖子: 510
注册时间: 2005-09-01 20:48
送出感谢: 0
接收感谢: 0

#8

帖子 paul » 2007-09-28 6:13

halve 写了:语言是工具,确实重要
不过也没有这么高深吧,有兴趣,时间的话挑一些流派的代表性语言学下不就好了 ;)

工作1年,我现在觉得欠缺的是
对于一个问题,如何划分模块,定义接口,这方面的经验,能力不够
还有就是算法方面,之前基本是一片空白,得从头开始
至于其他的
就是计算机内的一些特定领域,方法,知识,比如网络编程,多线程,UNICODE之类的经验积累了

当然,分析,解决问题的能力,从经验中学习进步的能力,以及相应的数学背景就不用多说了
这就是我的观点,当然什么是代表性的语言就不是那么简单的问题了.不过至少我觉得C要学的比较明白.
头像
maninred
帖子: 164
注册时间: 2007-08-24 20:16
来自: Hangzhou, China
送出感谢: 0
接收感谢: 0
联系:

#9

帖子 maninred » 2007-09-28 7:44

貌似楼主在批判Java太简单。4GL一般都是以开发效率为基础的OO语言拉,不简单不易用的话哪里能有很高的开发效率。而且Java由于其平台的强大,现在成为主要的中间件平台,用Java来做中间件也不是简单的事情。如果单单只是做应用的话,Java就快淘汰了,因为一般的应用肯定是用当时最流行的语言来开发。

楼主的第一句话似乎有点过了。其实国外很多强人都是coder,而且都是上了年纪的coder,可以说很多新技术就是他们发明和推广的,比如tw的Martin Fowler,Kent Back,Bjarne Stroustrup等等。只是国内之前的氛围还不够,所以导致coder的都是年轻的,像国内现在的coder牛人大部分都没有过40,以后会慢慢改变的。

每一门语言都代表着一种不同的文化,不同的思想。
回复

回到 “课堂教学和培训”