{讨论} 面对很多新的编程语言, 哪些值得关注一下

66 views
Skip to first unread message

Eric

unread,
Oct 11, 2008, 10:39:48 AM10/11/08
to TopLanguage
各位:

我常常在 reddit/programming 上看到各种各样的新语言。 我是挺好奇这些新的语言的,但是往往只看wikipedia并不能完全得
明白这个语言的使用体验,看待世界的模型,以及解决的问题等等。 因此,借此贴问问各位有使用体验的人,这些新的(我认为新的)语言中你认为最核心的或
者说最值得学习的特性有哪些? 对于一般的程序员(像我这样 C/Java/Python/LISP 路线上的程序员是大多数吧)值得看一下或者研究一
下的语言又有哪些?有句话叫做如果一个语言不能给你一种全新的思维方式,这个语言就不值得学。 我倒没那么严格,可是时间的确有限,想学新的,却不像从
A到Z一个一个学,因此问问大家意见

以下是我看到的新的(我没碰过的)语言的一个不完全的列表:

D.
Scala
Erlang
Haskell
Ocaml
...

何熙

unread,
Oct 11, 2008, 11:09:44 AM10/11/08
to pon...@googlegroups.com
 我也是这样的发展路径,c/c++/Java/Python。。。

2008/10/11 Eric <xu.ma...@gmail.com>



--


   此致
           敬礼
                                                      何熙

tim he

unread,
Oct 11, 2008, 11:13:53 AM10/11/08
to pon...@googlegroups.com
 
感觉语言就像车子
QQ适合在家开,经济。BENZ适合商务场合,豪华有面子。
都是4个轮子1个引擎,都能跑。
 
 
最傻就是最近什么红看什么,绝大部分人还是为了讨生活看一门语言。
Javaeye成天喊Ruby大家就ROR,这对学生特别有误导性。
 
回过头来再说车子,那么多车要看你玩的起吗?语言也一样,要是你东家有项目让你玩,陪你烧。那倒不错,可这年头傻X老板不多啊
 
语言的基本元素都是差不多的,分类只是凸显某一点特性而已
大家都是车子,有的是SUV,有的是跑车,家里就修了条机耕路搞台拖拉机开得最爽了。都是为了拉活,搞辆F车那得多久回本啊^-^
 
这儿再扯一下Linux现在Ubantu最火,那是他老板有Money,满世界的寄CD。就连SUN也不得不把界面风格做的和他一样。
 
所以语言也差不多,后面都有个利益集团再推。
 
但有一点可以肯定,java不会倒,cpp不会倒!
 
至于其他 nothing is impossible !
 


 
2008/10/11 Eric <xu.ma...@gmail.com>

Bruce Wang

unread,
Oct 11, 2008, 11:18:51 AM10/11/08
to pon...@googlegroups.com


2008/10/11 Eric <xu.ma...@gmail.com>


目前我非常感兴趣的新语言 Clojure  http://clojure.org
Clojure 是基于JVM的类LISP语言,和Java整合得非常好,也有很多好玩的类似Erlang的特性



--
simple is good
http://brucewang.net
http://twitter.com/number5

Jay True

unread,
Oct 11, 2008, 11:22:52 AM10/11/08
to pon...@googlegroups.com
努力学习 Haskell 的路人甲飘过 ...

2008/10/11 Bruce Wang <num...@gmail.com>

xxmplus

unread,
Oct 11, 2008, 11:27:48 AM10/11/08
to pon...@googlegroups.com
2008/10/12 Jay True <gla...@gmail.com>:
> 努力学习 Haskell 的路人甲飘过 ...

玩过一个星期haskell,帮人做作业,小赚了一笔,然后就忘记鸟-_-///

--
Any complex technology which doesn't come with documentation must be the best
available.

skycool

unread,
Oct 11, 2008, 11:28:19 AM10/11/08
to pon...@googlegroups.com
C++/Ruby 飘过...
找个时间学习Python...


 
2008/10/11 Jay True <gla...@gmail.com>



--
just for fun

Kenny Yuan

unread,
Oct 11, 2008, 11:35:07 AM10/11/08
to pon...@googlegroups.com
我的线路有点不一样:Basic/LISP/C++/Python/LISP

D语言接触过一些,但是不敢评论。当时看D语言是想用它作为一个alternative C++/better C++,但因为意外原因的影响,没有能够深入下去

2008/10/11 何熙 <xws...@gmail.com>



--
Kenny Yuan
C++, UI, LISP, MMA, Psychology and Automobile.
BLOG: CS巴别塔(Computer Science Babel)
URL: http://blog.csdn.net/yuankaining/


Jay True

unread,
Oct 11, 2008, 11:44:24 AM10/11/08
to pon...@googlegroups.com
LOGO -> BASIC -> QBASIC -> Pascal -> C -> C++ -> Java -> Python -> Haskell ,嗯嗯,还是很壮观的。

2008/10/11 Kenny Yuan <yuank...@gmail.com>

dreamhead

unread,
Oct 11, 2008, 12:11:10 PM10/11/08
to pon...@googlegroups.com
个人在实际项目中用过的语言:
C/C++、Java、Matlab、C#、Action Script(Flash)、PHP、Ruby,Groovy。

由于个人对语言有一些偏好,我也是希望能够学习更多的程序设计语言。但是,我选择语言,还会加入一个实用性的考虑。在我看来,没有经历过实际项目的锤炼,只能停留在"想"的层面上。

可以想这样一个问题,如果一个语言这么好,那么好,为什么大多数不能够接受它。一方面,大多数人接受新鲜事物,需要一定时间,另一方面,它是不是真的那么好。以Lisp为例,我在自己的一篇blog(http://dreamhead.blogbus.com/logs/29974721.html)中,提到一个观点,程序设计语言的发展,是Lisp的回归。Lisp有很多很好的特性,比如GC,但在当时的时代背景下,人们是无法接受的,因为代价太大,特别是机器性能方面。随着时代的进步,人们开始逐渐接受它。但在另一面上,Lisp那一堆堆的括号着实让人抓狂。这个世界上的多数程序员走的是传统路线,也就是说,类C的语法是他们最熟悉的东西。新语言可以加入一些新东西,比如C++加入类,Ruby加入闭包,但是,完全差异的东西只能让它们敬而远之。实际上,语法的差异背后是思想的差异。程序员的整体会不断进步,但步幅不能太大了。

Eric提到的几种语言中,Erlang、Haskell和Ocaml与类C语法差异太大,使得它们面临着巨大的接受度考验,其中Erlang略微好一些,毕竟,它打的旗号是与并发挂钩的,而且,Programming
Erlang给了大家一个更好了解Erlang的机会。D,很C,但是,它的前途很难让人看好,毕竟,它要挑战的是C/C++,而大佬在擅长的领域积淀太深,仅仅是语言上的发展是远远不够的。相对来说,Scala倒是一个很有趣的东西,它尝试结合OO和FP,而且寄生在JVM上,所以,让它有了一个非常好的切入点。正如我前面提到的,加入一些新东西,又不是全新。对于有Java经验的人来说,是一个探索FP的机会。

其实,对于个人学习而言,完全可以不必顾虑这些,随心所欲,介绍到处都是。如果真的是为了学一些思想,放下实用的包袱,也是一个不错的思路。

2008/10/11 Eric <xu.ma...@gmail.com>:

--
Everything is simple!

dennis

unread,
Oct 11, 2008, 12:17:23 PM10/11/08
to TopLanguage
我把学习新语言当成乐趣,很赞成dreamhead老大提的放下实用的包袱,其实每年学习一门新语言的要求很高吗?我看不见得。

Xie Hanjian

unread,
Oct 11, 2008, 1:26:30 PM10/11/08
to pon...@googlegroups.com
关于GC,我总觉的有点儿事后诸葛亮的味道。lisp老早就有了GC这个概念并不假,但是GC对于lisp来说是一个无奈的决定,要在von
Neumann体系上实现一个基于lambda
calculus的语言,没有GC是办不到的。GC由Java推广开来的原因,则是彻底将c/c++程序员从malloc/free中解放了出来,很显然lisp不是因为这个原因才加入了GC.

话虽如此,学习的时候lisp/scheme依然是最好的选择,核心简洁,囊括了几乎所有现代编程语言的各种特性,所以我觉得楼主看看sicp就足够了。

* dreamhead <dreamh...@gmail.com> [2008-10-12 00:11:10 +0800]:

--
jan=callcc{|jan|jan};jan.call(jan)

pongba

unread,
Oct 11, 2008, 2:03:43 PM10/11/08
to pon...@googlegroups.com
提醒同学们注意,Eric 问的是,如果你熟悉哪些语言,请把这门语言独特的地方,最本质的那个独特的特性以及背后隐藏的思想,说出来。减少其他人学习的成本。并不是要大家秀一下自己的学习路径即可的,那有啥子信息量呢?

2008/10/11 Eric <xu.ma...@gmail.com>

windstorm

unread,
Oct 11, 2008, 3:18:33 PM10/11/08
to pon...@googlegroups.com
Pong是四川人?还是说南京这边也说"啥子"?

----------------------------------------------------------------------------------
Yours Sincerely
Kun

blog: www.forwind.cn

2008/10/11 pongba <pon...@gmail.com>:

Wei Hu

unread,
Oct 11, 2008, 3:31:49 PM10/11/08
to TopLanguage
我来抛砖引玉一把。比较常规的语言就不列了。

学过的语言:
Scheme. 语法极其简单,但蕴含的思想极为丰富。属于Lisp family,而Lisp是所有函数式语言的鼻祖,是Lambda
calculus的具体化表示。一本SICP堪称震古烁今。如果你看不懂SICP,或者看了觉得没什么意思,那还是远离functional
programming吧。
Emacs Lisp. 学的不深,用来配置Emacs用的。如果你既想学习lisp,又想学习emacs,从elisp入手也可。
OCaml. 具备现代FP的特性,可以定义非常丰富的类型。允许副作用,对习惯命令式的程序员来说比较友好。可以认为是学习Haskell的敲门
砖。
Haskell. 纯函数式语言。比较酷的特性包括no side effects, lazy evaluation, type class,
monad等。还不断有各种扩展添加进来,几乎所有基于FP的研究都在Haskell上展开。与ML系相比,有一些syntactic sugar非常
贴心。"All the cool kids are using Haskell these days."
Coq. 严格来说,它是一个定理证明器。拥有比Haskell还要高阶的类型系统,当然比Haskell更难学。尚不具备广泛的实用性,属于自娱自
乐,谋杀脑细胞的好材料。

没学过也不想学的:
D. 听说比C++强,但是看到我上面列的语言,还有必要学C系的语言吗?
Erlang. 看了一点点,觉得语法太丑陋。基于消息传递的并发,别的语言也能实现。对并行计算感兴趣的还可以看看ML和Haskell中的不少项
目。

没学过,想学的:
Common Lisp. 拥有极其强大的macro,和meta-programming功能。
Prolog. 与上述语言均不同,属于declarative programming。

On Oct 11, 2:03 pm, pongba <pon...@gmail.com> wrote:
> 提醒同学们注意,Eric
> 问的是,如果你熟悉哪些语言,请把这门语言独特的地方,最本质的那个独特的特性以及背后隐藏的思想,说出来。减少其他人学习的成本。并不是要大家秀一下自己的学 习路径即可的,那有啥子信息量呢?
>
> 2008/10/11 Eric <xu.math...@gmail.com>

Wei Hu

unread,
Oct 11, 2008, 3:38:30 PM10/11/08
to TopLanguage
补充一下。

Scheme还有个continuation的东西,是个谋杀脑细胞的好材料。
OCaml有OO。
Clean也是一个纯函数语言,走的路线和Haskell不同,似乎很不流行,有点可惜。

莫华枫

unread,
Oct 11, 2008, 9:15:10 PM10/11/08
to pon...@googlegroups.com
Ada,尽管现在用的人很少,但可以作为范本好好研究一下。ada的oop形式完全不同于c++系,更像是sp转向oop的过度物种。对这方面的考察有助于了解oop的本质。(同一事物的不同表达形式有助于了解事物的本质)。
另一方面,ada的泛型非常超前,甚至多少带着点concept的味道。

2008/10/11 Eric <xu.ma...@gmail.com>

redsea

unread,
Oct 11, 2008, 10:36:02 PM10/11/08
to TopLanguage
D 语言我有些经验.

如果你想从里面学理论思想就不必了, 没有什么新理论.

我看中的是它的改进, 多数是从工程的角度出发的.

unread,
Oct 12, 2008, 1:35:12 AM10/12/08
to TopLanguage
“哪些值得关注”这个问题的关键在于你关注什么...

比如某个正在敲字的人编程只是为了好玩,他觉得BF还蛮好玩——你也想试试?

wangl...@gmail.com

unread,
Oct 12, 2008, 1:41:41 AM10/12/08
to TopLanguage
俺是彻底毁了,目前只会C++。关注Python和D中,相对来说,Python投入手头实际工作的可能性更大一些。

其实JAVA的项目以前做过不少,逐渐脱离了。

Zoom.Quiet

unread,
Oct 12, 2008, 2:11:46 AM10/12/08
to pon...@googlegroups.com
2008/10/12 pongba <pon...@gmail.com>:

> 提醒同学们注意,Eric
> 问的是,如果你熟悉哪些语言,请把这门语言独特的地方,最本质的那个独特的特性以及背后隐藏的思想,说出来。减少其他人学习的成本。并不是要大家秀一下自己的学习路径即可的,那有啥子信息量呢?
>
先建议个说法: 这些大多数,都不是新的语言,都是存在10年以上的了!
只是中国封闭的知识交流渠道,以致所有学生从来不知道有 C/VB/JAVA/PHP 以外的语言,,,

就俺知道的一丝丝:
Erlang 是为解决大规模信息分布式处理问题而从实践中发明的语言,天然支持对象的分布式处理,对大型并发式数据处理有独到的解决思路;
OTP 是Erlang 在爱立信应用十多年以来积累而成的,恐怕也是人类最大的一个单体模块仓库,可以高效的解决几乎所有网络应用问题;
Haskell 是纯FP编译型脚本语言,以其极简单和高效的数字计算表述能力著称,执行效率和C是一个量级的;
Perl 6 的新编译器,就是用Haskell 来写的,,,
O'Caml 是编译型对象脚本语言,适用领域,不明,,,俺不知道,,
另外 Mozart OZ 也是个有一定积累的脚本语言,是有魔力的多范式语言:
感谢耶和华给我编程语言Mozart oz,想要的优点都有了
http://www.flashempire.net/showthread.php?t=219015

对于应用语言的综合介绍,推荐一个早已消失的网页(幸好俺收集到ScrapBook 中了)
程序设计语言介绍
http://floss.zoomquiet.org/data/20050206100400/index.html

> 2008/10/11 Eric <xu.ma...@gmail.com>
>>
>> 各位:
>>
>> 我常常在 reddit/programming 上看到各种各样的新语言。 我是挺好奇这些新的语言的,但是往往只看wikipedia并不能完全得
>> 明白这个语言的使用体验,看待世界的模型,以及解决的问题等等。 因此,借此贴问问各位有使用体验的人,这些新的(我认为新的)语言中你认为最核心的或
>> 者说最值得学习的特性有哪些? 对于一般的程序员(像我这样 C/Java/Python/LISP 路线上的程序员是大多数吧)值得看一下或者研究一
>> 下的语言又有哪些?有句话叫做如果一个语言不能给你一种全新的思维方式,这个语言就不值得学。 我倒没那么严格,可是时间的确有限,想学新的,却不像从
>> A到Z一个一个学,因此问问大家意见
>>
>> 以下是我看到的新的(我没碰过的)语言的一个不完全的列表:
>>
>> D.
>> Scala
>> Erlang
>> Haskell
>> Ocaml
>> ...

--
http://zoomquiet.org'''
过程改进乃是催生可促生靠谱的人的组织!
PE keeps evolving organizations which promoting people be good!'''
[HR]金山软件常年招聘大量Py/C++人才!
https://groups.google.com/group/python-cn/web/ot-py-c
简历直投俺就好;-)

Zoom.Quiet

unread,
Oct 12, 2008, 2:13:38 AM10/12/08
to pon...@googlegroups.com
2008/10/12 莫华枫 <longsh...@gmail.com>:

> Ada,尽管现在用的人很少,但可以作为范本好好研究一下。ada的oop形式完全不同于c++系,更像是sp转向oop的过度物种。对这方面的考察有助于了解oop的本质。(同一事物的不同表达形式有助于了解事物的本质)。
> 另一方面,ada的泛型非常超前,甚至多少带着点concept的味道。
>
是也乎,是也乎,以人类第一位程序员姓名命名的语言!
而且是USA 军方开发的,,,

武汉公交系统的交通灯控制好象有人用Ada 开发过支持系统,,

但是,资料真的不多哪,,,

> 2008/10/11 Eric <xu.ma...@gmail.com>
>>
>> 各位:
>>
>> 我常常在 reddit/programming 上看到各种各样的新语言。 我是挺好奇这些新的语言的,但是往往只看wikipedia并不能完全得
>> 明白这个语言的使用体验,看待世界的模型,以及解决的问题等等。 因此,借此贴问问各位有使用体验的人,这些新的(我认为新的)语言中你认为最核心的或
>> 者说最值得学习的特性有哪些? 对于一般的程序员(像我这样 C/Java/Python/LISP 路线上的程序员是大多数吧)值得看一下或者研究一
>> 下的语言又有哪些?有句话叫做如果一个语言不能给你一种全新的思维方式,这个语言就不值得学。 我倒没那么严格,可是时间的确有限,想学新的,却不像从
>> A到Z一个一个学,因此问问大家意见
>>
>> 以下是我看到的新的(我没碰过的)语言的一个不完全的列表:
>>
>> D.
>> Scala
>> Erlang
>> Haskell
>> Ocaml
>> ...
>>

--

Wei Hu

unread,
Oct 12, 2008, 3:25:20 AM10/12/08
to TopLanguage
Haskell的执行效率绝对达不到C的量级。OCaml,什么叫编译型对象脚本语言?

On Oct 12, 2:11 am, Zoom.Quiet <zoom.qu...@gmail.com> wrote:
> 2008/10/12 pongba <pon...@gmail.com>:> 提醒同学们注意,Eric
> > 问的是,如果你熟悉哪些语言,请把这门语言独特的地方,最本质的那个独特的特性以及背后隐藏的思想,说出来。减少其他人学习的成本。并不是要大家秀一下自己的学 习路径即可的,那有啥子信息量呢?
>
> 先建议个说法: 这些大多数,都不是新的语言,都是存在10年以上的了!
> 只是中国封闭的知识交流渠道,以致所有学生从来不知道有 C/VB/JAVA/PHP 以外的语言,,,
>
> 就俺知道的一丝丝:
> Erlang 是为解决大规模信息分布式处理问题而从实践中发明的语言,天然支持对象的分布式处理,对大型并发式数据处理有独到的解决思路;
> OTP 是Erlang 在爱立信应用十多年以来积累而成的,恐怕也是人类最大的一个单体模块仓库,可以高效的解决几乎所有网络应用问题;
> Haskell 是纯FP编译型脚本语言,以其极简单和高效的数字计算表述能力著称,执行效率和C是一个量级的;
> Perl 6 的新编译器,就是用Haskell 来写的,,,
> O'Caml 是编译型对象脚本语言,适用领域,不明,,,俺不知道,,
> 另外 Mozart OZ 也是个有一定积累的脚本语言,是有魔力的多范式语言:
> 感谢耶和华给我编程语言Mozart oz,想要的优点都有了http://www.flashempire.net/showthread.php?t=219015
>
> 对于应用语言的综合介绍,推荐一个早已消失的网页(幸好俺收集到ScrapBook 中了)
> 程序设计语言介绍http://floss.zoomquiet.org/data/20050206100400/index.html
>
>
>
>
>
> > 2008/10/11 Eric <xu.math...@gmail.com>
>
> >> 各位:
>
> >> 我常常在 reddit/programming 上看到各种各样的新语言。 我是挺好奇这些新的语言的,但是往往只看wikipedia并不能完全得
> >> 明白这个语言的使用体验,看待世界的模型,以及解决的问题等等。 因此,借此贴问问各位有使用体验的人,这些新的(我认为新的)语言中你认为最核心的或
> >> 者说最值得学习的特性有哪些? 对于一般的程序员(像我这样 C/Java/Python/LISP 路线上的程序员是大多数吧)值得看一下或者研究一
> >> 下的语言又有哪些?有句话叫做如果一个语言不能给你一种全新的思维方式,这个语言就不值得学。 我倒没那么严格,可是时间的确有限,想学新的,却不像从
> >> A到Z一个一个学,因此问问大家意见
>
> >> 以下是我看到的新的(我没碰过的)语言的一个不完全的列表:
>
> >> D.
> >> Scala
> >> Erlang
> >> Haskell
> >> Ocaml
> >> ...
>
> --http://zoomquiet.org'''

Xie Hanjian

unread,
Oct 12, 2008, 5:25:06 AM10/12/08
to pon...@googlegroups.com
* Zoom.Quiet <zoom....@gmail.com> [2008-10-12 14:11:46 +0800]:

> 2008/10/12 pongba <pon...@gmail.com>:
> > 提醒同学们注意,Eric
> > 问的是,如果你熟悉哪些语言,请把这门语言独特的地方,最本质的那个独特的特性以及背后隐藏的思想,说出来。减少其他人学习的成本。并不是要大家秀一下自己的学习路径即可的,那有啥子信息量呢?
> >
> 先建议个说法: 这些大多数,都不是新的语言,都是存在10年以上的了!
> 只是中国封闭的知识交流渠道,以致所有学生从来不知道有 C/VB/JAVA/PHP 以外的语言,,,
>
> 就俺知道的一丝丝:
> Erlang 是为解决大规模信息分布式处理问题而从实践中发明的语言,天然支持对象的分布式处理,对大型并发式数据处理有独到的解决思路;
> OTP 是Erlang 在爱立信应用十多年以来积累而成的,恐怕也是人类最大的一个单体模块仓库,可以高效的解决几乎所有网络应用问题;
> Haskell 是纯FP编译型脚本语言,以其极简单和高效的数字计算表述能力著称,执行效率和C是一个量级的;
> Perl 6 的新编译器,就是用Haskell 来写的,,,

http://en.wikipedia.org/wiki/Perl_6

"There are currently two implementation projects of Perl 6 underway,
Rakudo Perl and Pugs. Rakudo Perl is based on Parrot and PGE, and Pugs
is written in Haskell."

--
jan=callcc{|jan|jan};jan.call(jan)

樊帆

unread,
Oct 12, 2008, 8:24:57 AM10/12/08
to pon...@googlegroups.com
怎么没人提pike,我觉得应是一门有趣的语言

其实学语言只是形式,编程语言的两极公认的是C和lisp,先把两极啃掉,然后随意选择学习,主要是纵向挖掘,毕竟所有的语言都只是用来"告诉"机器怎么动作的"剧本"而已

up duan

unread,
Oct 12, 2008, 8:56:48 AM10/12/08
to pon...@googlegroups.com

Eiffel:DbC

Spec#:编译期的契约,数学基础是定理证明。

Lisp:continuation,macro以及由此带出的一系列构造

Oz:并行、内建逻辑推理

2008/10/12 樊帆 <fanfan1...@gmail.com>

Eric

unread,
Oct 12, 2008, 9:29:20 AM10/12/08
to TopLanguage
> 话虽如此,学习的时候lisp/scheme依然是最好的选择,核心简洁,囊括了几乎所有现代编程语言的各种特性,所以我觉得楼主看看sicp就足够了。

SICP 我从高中开始看,英文版 中文版 英文版都看过,SICP 写的好,却不见得是因为“LISP几乎囊括了所有现代编程语言的各种特性” 我更
加倾向于: “几乎囊括了人用编程语言处理问题时的各种思考方式” 如数据抽象,层次抽象, 对象编程,消息传递,闭包等等 。 我想指出的是,
LISP/Scheme 是很牛,但其它语言也是值得一学的。(当然不同的人理解不一样了,可能你觉得LISP是四海一家的解决之道,我还没融会贯通到
那个地步 :)

顺带总结一下现有的一些评论,
1. dreamhead 兄言之甚好,的确要放下实用的包袱。我大一学习 sed/awk 的时候就是因为是特价书,买了放书架上,几年之后正式作科
研的时候天天搞文本处理的时候发现当年学的那些东西很有用。不过时间是很宝贵的东西,所以我想看看哪些语言值得关注。就算是主观标准吧,也希望各位发
言,让别人得到启示 :)
2. 看来 Haskell 是属于研究前沿的东西,应该值得一看(不知道离 LISP 多远 ?)
3. Erlang 其实我一直在关注了,只是我连环境都没有,所以没有投入去学,各位有在具体环境中用 Erlang 的么? 我现在在我的小
cluster上只跑hadoop, 而且我以前搞过在 solaris/sparc 上面装 erlang, 貌似有问题,所以一直没有认真学
4. 看来大多数C轨迹上的程序员都准备或者已经有一两门通用脚本语言在身了,脚本的魔力的确大
5. SICP 是好书
6. 大多数人的学习轨迹上都有 FP 看来 FP 介入实际应用的趋势不可挡(当年unix 风靡工业界,原因之一就是当年大学生都用 unix 然
后毕业找工作就带着 unix 文化到工业界)

Eric

unread,
Oct 12, 2008, 10:55:57 AM10/12/08
to TopLanguage
对了 顺带说一下现在广泛流传的关于语言的应用领域的几个错误的认识:

1. prolog 是适合人工智能的语言

错。正确而谨慎的说法:prolog 是适用于需要表达逻辑和逻辑推理的人工智能领域的语言。
原因:人工智能领域繁杂,而prolog 是用逻辑去表达世界的,只能在人工智能的逻辑模型中发挥作用。泛观现在 AAAI IJACI 等人工智能牛
会议中使用 Prolog 的比例,或者 AIJ 这些期刊中发表文章里使用 Prolog 的比例,就知道, Prolog 其实在 AI 领域只有
一小部分子领域适用。况且,这几年在 CSP, SAT 等逻辑满足问题上的进展,人工智能逻辑学派的衰落和统计学习的兴起, 以及专家系统研究的衰
落,使得 Prolog 的优点已经不明显了。

2. 高级语言如Python 和 Matlab 做数值计算以及其它耗CPU的运算没有 Fortran 这些相对底层的快

错。 正确的说法: 使用合适库的 Python 和 Matlab 等程序作数值计算以及其它耗CPU的运算和目前最快的 Fortran 模块一
样快.
原因: 现代编程语言都支持面向其它语言的接口, 因此 Python, Matlab 包括Java的数值计算包都是直接调用 FORTRAN 模
块. 因此, 不管是开发怎样的数值计算程序, 没有必要为了速度选择 Fortran 和C, 因为高级语言开发速度快, 运行速度和
FORTRAN 开发出来的一样.

3. Java 等虚拟机语言一定比编译成本地目标代码执行的程序慢

错。正确的说法: 无法比较。与具体程序相关
虚拟机语言可以进行运行时优化,这个是静态代码不能比的。同时也取决于具体的程序,对于cache 和内存访问的策略正好和机器特性符合就快,否则就
慢。

Xie Hanjian

unread,
Oct 12, 2008, 12:23:07 PM10/12/08
to pon...@googlegroups.com
* Eric <xu.ma...@gmail.com> [2008-10-12 06:29:20 -0700]:

> > 话虽如此,学习的时候lisp/scheme依然是最好的选择,核心简洁,囊括了几乎所有现代编程语言的各种特性,所以我觉得楼主看看sicp就足够了。
>
> SICP 我从高中开始看,英文版 中文版 英文版都看过,SICP 写的好,却不见得是因为“LISP几乎囊括了所有现代编程语言的各种特性” 我更
> 加倾向于: “几乎囊括了人用编程语言处理问题时的各种思考方式” 如数据抽象,层次抽象, 对象编程,消息传递,闭包等等 。 我想指出的是,
> LISP/Scheme 是很牛,但其它语言也是值得一学的。(当然不同的人理解不一样了,可能你觉得LISP是四海一家的解决之道,我还没融会贯通到
> 那个地步 :)

说的不错,我并没有说SICP好是因为lisp牛阿 :) 我也不是lisp的fans
我是觉得楼主有点儿面对层出不穷的语言无所适从的意思才这么说的 与其追新
不如抓住一些根本的东西 对于没看过的同学来说 先看一下大有帮助

>
> 顺带总结一下现有的一些评论,
> 1. dreamhead 兄言之甚好,的确要放下实用的包袱。我大一学习 sed/awk 的时候就是因为是特价书,买了放书架上,几年之后正式作科
> 研的时候天天搞文本处理的时候发现当年学的那些东西很有用。不过时间是很宝贵的东西,所以我想看看哪些语言值得关注。就算是主观标准吧,也希望各位发
> 言,让别人得到启示 :)
> 2. 看来 Haskell 是属于研究前沿的东西,应该值得一看(不知道离 LISP 多远 ?)
> 3. Erlang 其实我一直在关注了,只是我连环境都没有,所以没有投入去学,各位有在具体环境中用 Erlang 的么? 我现在在我的小
> cluster上只跑hadoop, 而且我以前搞过在 solaris/sparc 上面装 erlang, 貌似有问题,所以一直没有认真学

对Haskell非常感兴趣,正玩着呢
对Erlang则兴趣不大,因为我觉得
1. FP理论上都能很好的进行并行编程,
不知道Erlang比其他FP“更”适合的地方在哪里?
2. Erlang的语法很perl...

Thanks,
Jan

> 4. 看来大多数C轨迹上的程序员都准备或者已经有一两门通用脚本语言在身了,脚本的魔力的确大
> 5. SICP 是好书
> 6. 大多数人的学习轨迹上都有 FP 看来 FP 介入实际应用的趋势不可挡(当年unix 风靡工业界,原因之一就是当年大学生都用 unix 然
> 后毕业找工作就带着 unix 文化到工业界)

--
jan=callcc{|jan|jan};jan.call(jan)

Wei Hu

unread,
Oct 12, 2008, 12:52:12 PM10/12/08
to TopLanguage
Haskell离Lisp太远了。只有一些基本概念是相通的,包括list、recursion等。如果说Lisp对你的大脑是一次
rewire,Haskell就是另一次rewire。

hong

unread,
Oct 15, 2008, 8:42:52 PM10/15/08
to TopLanguage
难道就没有关注一下factor吗? 这个也很新颖的

On Oct 11, 10:39 pm, Eric <xu.math...@gmail.com> wrote:

Yufei Chen

unread,
Oct 16, 2008, 2:26:16 AM10/16/08
to pon...@googlegroups.com
我推荐 Haskell,因为它逼你开始使用函数式风格编程,真正的改变你编程的思考方式。

不过确实很难学,是我到目前为止觉得最难学的。Haskell 背后的理论基础很漂亮,无论是 lambda
calculus,还是它的类型系统后面的 category
theory。特定情况下写出来的代码可以非常漂亮,最开始常举的一个例子就是一行就能搞定的快排算法,还有用 lazy evaluation
写出的无限长度的 Fibonacci 数列。

我的路线跟你差不多,C/C++/Java/Scheme/Ruby/Python/Common Lisp/Haskell,但是学
Haskell 之前的那些语言后感觉并没有跳出命令式语言和 OO 的框架。Common Lisp 支持的编程范式太多了,我用的时候忍不住用
OO 的想法,不停用 CLOS 这个被很多 Lisp 黑客诟病的东西,自己也觉得不爽,而 CL 提供的 loop/iterate
工具使我还是把 map 等操作和高阶函数扔在一边,反倒是 setf 一堆一堆的,写的代码还不如 C++ 的漂亮。

自从上次用 Haskell 做了模式识别里的两个简单的聚类算法以后情况就变了,刚开始不能用赋值和循环有些痛苦(事实上我暑假尝试过基于 CL
的语言 Qi,它也没有循环,所以当时就尝试使用底层 CL 提供的循环机制。但用 Haskell
的时候就没有这样的机会。),一个简单的算法需要多想想才能用函数式的风格写出来,不过一旦写完编译通过程序就一切正常的跑起来了,根本就没调试。
当然这个也要归结于静态类型的好处。事实上我现在开始倾向于静态类型的语言了,动态类型语言写的程序没有完全的测试实在是很悬,而我又不喜欢写很多测试。

之后再用 Python 的时候很自觉的开始用 map, filter, foldl, partial, compose 等操作。遇到有些
Haskell 提供了而 Python 没有提供的操作觉得不方便,另外没有原生的 partial application
支持也使得代码不够简洁。原来很讨厌 Python 的 self,现在开始觉得 Python 有更多的地方不爽了。

有一篇 06 的博客文章,Why learning Haskell/Python makes you a worse programmer,

http://lukeplant.me.uk/blog.php?id=1107301645

我觉得讲得很有道理,学过 Ruby/Python 之后我就很烦 Java,学过 Haskell 之后对 Python
不满的地方更多了一些。而且写程序变慢了,因为总想着用函数式的风格,但或许调试的时间变少了。文章作者不得不在工作时使用
C#,他越来越觉得沮丧,而用 C# 高级特性采用函数式风格写出来的代码让给他的同事带来了麻烦,最终给他自己带来了麻烦。

2008/10/11 Eric <xu.ma...@gmail.com>:


> 各位:
>
> 我常常在 reddit/programming 上看到各种各样的新语言。 我是挺好奇这些新的语言的,但是往往只看wikipedia并不能完全得
> 明白这个语言的使用体验,看待世界的模型,以及解决的问题等等。 因此,借此贴问问各位有使用体验的人,这些新的(我认为新的)语言中你认为最核心的或
> 者说最值得学习的特性有哪些? 对于一般的程序员(像我这样 C/Java/Python/LISP 路线上的程序员是大多数吧)值得看一下或者研究一
> 下的语言又有哪些?有句话叫做如果一个语言不能给你一种全新的思维方式,这个语言就不值得学。 我倒没那么严格,可是时间的确有限,想学新的,却不像从
> A到Z一个一个学,因此问问大家意见
>
> 以下是我看到的新的(我没碰过的)语言的一个不完全的列表:
>
> D.
> Scala
> Erlang
> Haskell
> Ocaml
> ...
>
>

--
Best regards,
Chen Yufei

Yufei Chen

unread,
Oct 16, 2008, 2:29:05 AM10/16/08
to pon...@googlegroups.com
你不是还有 JavaScript, Erlang 吗,即使不精通么也算接触过的呀。学语言是赶不上你了。

2008/10/11 Jay True <gla...@gmail.com>:

--
Best regards,
Chen Yufei

Yufei Chen

unread,
Oct 16, 2008, 2:29:54 AM10/16/08
to pon...@googlegroups.com
哪儿有可以靠 Haskell 赚钱的机会?

2008/10/11 xxmplus <xxm...@gmail.com>:
> 2008/10/12 Jay True <gla...@gmail.com>:
>> 努力学习 Haskell 的路人甲飘过 ...
>
> 玩过一个星期haskell,帮人做作业,小赚了一笔,然后就忘记鸟-_-///
>
> --
> Any complex technology which doesn't come with documentation must be the best
> available.

Yufei Chen

unread,
Oct 16, 2008, 2:34:05 AM10/16/08
to pon...@googlegroups.com
其实 Erlang 更大的优势还应该在分布式和高容错的系统上吧,它本身的性能又不高。Haskell 的 Software
Transactional Memory 在多核单机器的并发上或许比较有前途。

F# 中采用了不少 Haskell 的特性的,听 Simon Peyton Jones 的采访的时候他说 F# 中其实就有
Monad,不过换了个不那么吓人的名字。

我也怀疑 Haskell 被大多数程序员接受的能力。但可以肯定的是接受 Haskell 的人肯定是对编程有热情的人。

2008/10/11 dreamhead <dreamh...@gmail.com>:

--
Best regards,
Chen Yufei

Yufei Chen

unread,
Oct 16, 2008, 2:35:28 AM10/16/08
to pon...@googlegroups.com
每年暑假寒假无聊的时候就学语言,Linux 下没有游戏玩,结果学语言成瘾了。

2008/10/11 dennis <killm...@gmail.com>:
> 我把学习新语言当成乐趣,很赞成dreamhead老大提的放下实用的包袱,其实每年学习一门新语言的要求很高吗?我看不见得。

Fenix

unread,
Oct 16, 2008, 2:36:28 AM10/16/08
to pon...@googlegroups.com
学太多了,会不会走火入魔啊

2008/10/16 Yufei Chen <cyfd...@gmail.com>

Yufei Chen

unread,
Oct 16, 2008, 3:07:33 AM10/16/08
to pon...@googlegroups.com
很多都没有学精,玩玩的。

忘了说了,Haskell 里面的 lazy evaluation 我觉得是很有必要注意的,其实也就是 SICP 里的 normal
order evaluation,用这个特性来构建 stream 是非常方便的,而有了 stream
的话再用函数式编程就非常方便了。有些问题可以通过 stream 优雅的得到解决。

就算不用 stream,函数式编程常用的
generate data -> filter -> map -> result
这个过程如果用 eager evaluation 的话整个 list 始终需要在内存中,list 大的话开销大。

而 lazy evaluation 可以使内存开销跟命令式语言中的循环操作差不多大(有些地方当然还是需要 eager evaluation
的,Haskell 也提供这样的机制)。就像是用函数式的风格写出了跟命令式代码中的循环一样的代码(Common Lisp 的 streams
宏的目的就在于此,可惜没有被标准接受。)

Python 的 generator 也可以避免 list 占用大量内存开销的问题。

就像你应该用 generator 写成

for i in xrange(100000) / map(func, xrange(1000000)

而不是

for i in range(100000) / map(func, range(1000000)

思想上是一样的,只到需要的时候再求值而不是先全部算好。Haskell 默认使用 lazy evaluation
使得编写函数式代码的时候不用担心 list 吃掉太多内存,当然更重要的还是支持 stream。而 normal order
evaluation 可能带来的重复求值的问题在 Haskell 里面也有不错的解决。(不过不是通过 memoization。)

很遗憾的是采用 lazy evaluation 的函数式语言不多,学过 Haskell 之后个人认为函数式语言都应该支持这个特性,否则我写
map 之类的操作时总会觉得浪费内存了。

实用的话还是 Python,跟大部分别人合作项目还是 Java,因为别人不会 Python。自己写东西现在还是尝试
Haskell,花了很久感觉脑子还是没有转过来,但是就是要去尝试。

2008/10/16 Fenix <feni...@gmail.com>:

Yufei Chen

unread,
Oct 16, 2008, 3:20:08 AM10/16/08
to pon...@googlegroups.com
贴两个 software engineer radio 上的访谈吧。听听语言开发者创建者怎么说的

一个是 Simon Peyton Jones 关于 Haskell 的访谈

http://www.se-radio.net/podcast/2008-08/episode-108-simon-peyton-jones-functional-programming-and-haskell

g9 老大以前推荐过 Joe Armstrong 关于 Erlang 的访谈。提下 Erlang 的语法是从 Prolog 学来的。

http://www.se-radio.net/podcast/2008-03/episode-89-joe-armstrong-erlang

每个都在 50 分钟不到点,不会浪费太多时间,又可以练听力。

2008/10/16 Yufei Chen <cyfd...@gmail.com>:

图灵刘江

unread,
Oct 16, 2008, 12:54:06 PM10/16/08
to TopLanguage
三句不离本行。从图书出版的角度透露一些信息。

连续捧红了Ruby和Erlang的Pragmatic即将出版Programming Scala和
Programming Clojure。印象中Clojure是最近reddit/programming 上出
镜最高的语言之一。

O'Reilly要出一本Real World Haskell。另外,也要出一本Erlang。

Apress出过一本Common Lisp卖得还可以。F#好像也还行。

Manning要出Concurrent Programming with Erlang/OTP,Real World
Functional Programming With examples in F# and C#。

另外,超级成功的机会主义者Bruce Eckel要写新书了,是关于Python模
式的。数数已经出和将要出的Python书,Python已经是当仁不让的主流
语言了,比Java和C/C++的出书活跃程度都大得多。

问大家一句,如果要出一本Prolog的书的话,推荐哪一本?





Rockins Chen

unread,
Oct 16, 2008, 9:24:01 PM10/16/08
to pon...@googlegroups.com
这个,你是人邮的编辑么,能不能对贵社出的书提点意见啊,主要是针对影印版的。
1、字体能不能弄大点啊,字号太小实在是太伤眼睛了;
2、纸张能不能稍微厚一点呐,至少不要看到页背面的印刷痕迹吧;

两点小意见。

2008/10/17 图灵刘江 <liuj....@gmail.com>



--
BRs,
Rockins Chen
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
UESTC, Chengdu, Sichuan, China
http://rockins.cn/
http://rockins.cublog.cn
ybc...@gmail.com

feverzsj

unread,
Oct 16, 2008, 10:23:14 PM10/16/08
to TopLanguage
编程语言的关键要素只有2个:机器抽象和思维模式抽象,前者倾向于机器模型,后者倾向于人的思维模式,一门好的编程语言应该对这2者进行妥善的设计,而
思维模式抽象又是及其麻烦的,每个人可能有自己的倾向,这方面c++采取了兼容并包的策略,而其他语言则相对强调某一方面

图灵刘江

unread,
Nov 7, 2008, 12:58:38 PM11/7/08
to TopLanguage
影印版如果没有特殊原因(原书的开本很大),都是原样重现的,字号小
不能怪我们的。

纸张问题我们正在解决。

对了,你买了我们的什么书?

Rockins Chen

unread,
Nov 8, 2008, 1:27:55 PM11/8/08
to pon...@googlegroups.com
C语言参考手册(第五版),这本还勉强过得去
编译原理,技术与工具,这本就不够好了
4.4BSD操作系统设计与实现,也还马马虎虎
都是买的英文版。

2008/11/8 图灵刘江 <liuj....@gmail.com>

图灵刘江

unread,
Nov 10, 2008, 10:02:56 AM11/10/08
to TopLanguage
这些不是图灵的书,都是邮电社其他部门出的。也许缩小了字号?

On 11月9日, 上午2时27分, "Rockins Chen" <ybc2...@gmail.com> wrote:
> C语言参考手册(第五版),这本还勉强过得去编译原理,技术与工具,这本就不够好了
> 4.4BSD操作系统设计与实现,也还马马虎虎
> 都是买的英文版。
>
> 2008/11/8 图灵刘江 <liuj.tur...@gmail.com>
>
> > 影印版如果没有特殊原因(原书的开本很大),都是原样重现的,字号小
> > 不能怪我们的。
>
> > 纸张问题我们正在解决。
>
> > 对了,你买了我们的什么书?
>
> --
> BRs,
> Rockins Chen
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> UESTC, Chengdu, Sichuan, Chinahttp://rockins.cn/http://rockins.cublog.cn
> ybc2...@gmail.com

dennis

unread,
Nov 23, 2008, 8:27:08 PM11/23/08
to TopLanguage
prolog,我读过《logic programming with prolog》,这本书是入门书,主要介绍prolog的语法、回溯和
unify机制等,对应用涉及比较少。如果考虑引入prolog的入门读物的话,我觉的还可以。

李大微

unread,
Nov 24, 2008, 12:58:37 AM11/24/08
to pon...@googlegroups.com
借题发挥一下: O'Reilly的《Real World Haskell》,大家觉得怎么样:

http://www.amazon.com/Real-World-Haskell-Bryan-OSullivan/dp/0596514980/ref=sr_11_1?ie=UTF8&qid=1226994977&sr=11-1




2008/11/24 dennis <killm...@gmail.com>

coolspeed

unread,
Nov 24, 2008, 9:36:35 AM11/24/08
to TopLanguage
C类语言是吃饭的。不吃软件这饭像我这样瞎掺和的就算了。
脚本,,恩,一样,命令式语言熟了后脚本也就是对某一项具体工作能简称表达了,而且被IO这样的瓶颈护着,暴露不了性能损失。
这些都老生常谈,本不用说的。
剩下FP那些就是从图灵机那层就不是这块儿了,n-calculus和PI演算之间的关系我至今没弄懂。
我喜欢Erlang,它的FP是次要,主要是因为审美。其实作为演算系统的研究的话学术标准(如工业标准有java和c++一样)就是Haskell,
而且毕竟是综合了当时众多同类语言产生的学术界标准,也渐渐成了研究和试验加入特性的主要耙子,选它没错吧,若是跟着学术界走一走的话?
Ruby我觉得主要建树在DSL。而DSL又是个越来越受关注的方向。
Eric兄一直未回复,看来是没听到对上口的回复了。
另外bytecode在JIT后单在特定领域上能和C++可比。赶上?这我真一个都没听说!Gosling说Java和C++一样快甚至更快让
Bruce Eckel郁闷了好几年。
掺和到这儿吧。
这老帖怎么被翻出来的?

yaoer

unread,
Nov 25, 2008, 6:51:21 AM11/25/08
to TopLanguage
哈哈 碰到一个同学过LOGO的!
LOGO-> BASIC -> C++ -> JAVA

小马xioama

unread,
Nov 25, 2008, 8:45:14 AM11/25/08
to pon...@googlegroups.com
LOGO(初中) -> BASIC(高中) -> Fortran(大二)-> Pascal (大三) ->  C (大三) ->  SQL(大四)  -> Ada(大四) -> Lisp(大四)  -> Prolog(大四)  ->  C++(毕业后) -> Java (毕业后)

2008/11/25 yaoer <pia...@gmail.com>

coolspeed

unread,
Nov 25, 2008, 9:57:24 AM11/25/08
to TopLanguage
LOGO(小学)QBASIC(初中)VB(初中、高中)C(高中毕业)C++(大一)Java(大一)C#(大一)LISP/scheme(大一)
Python(大一)Ruby(大一)Erlang(大二)Haskell(打算)
哪个语言上都是绝对小菜,因为此楼气氛,有感而发。

On 11月25日, 下午9时45分, "小马xioama" <cnxia...@gmail.com> wrote:
> LOGO(初中) -> BASIC(高中) -> Fortran(大二)-> Pascal (大三) -> C (大三) ->
> SQL(大四) -> Ada(大四) -> Lisp(大四) -> Prolog(大四) -> C++(毕业后) -> Java (毕业后)
>

> 2008/11/25 yaoer <pian...@gmail.com>


>
>
>
> > 哈哈 碰到一个同学过LOGO的!
> > LOGO-> BASIC -> C++ -> JAVA
>
> > On 10月11日, 下午11时44分, "Jay True" <glac...@gmail.com> wrote:
> > > LOGO -> BASIC -> QBASIC -> Pascal -> C -> C++ -> Java -> Python ->
> > Haskell

> > > ,嗯嗯,还是很壮观的。- 隐藏被引用文字 -
>
> - 显示引用的文字 -

Linker

unread,
Nov 25, 2008, 1:00:38 PM11/25/08
to pon...@googlegroups.com
学太多语言没用的。
学好C/C++/Python/Lua/Erlang,熟悉大型软件的架构取舍。
多看优秀的开源的大型的项目。


Regards,
Linker Lin
linker...@gmail.com


2008/11/25 coolspeed <jinxio...@gmail.com>
Reply all
Reply to author
Forward
0 new messages