Ruby每 过15年左右,一门语言就会被更好的代替。C被C++代替,至少对大应用开发而又需要性能和数据类型的人们来说。C++被Java代替,而Java无疑在 7年后又会被更好的东西代替—好吧,我说的是完全代替C++的7年后,这到目前为止还没有发生,主要是因为微软能在Java霸占桌面系统之前狙击它。但是 在服务器上的应用而言,C++的阵地已经慢慢让给Java了。 Perl有一天也会消逝。那是因为一门新的语言Ruby刚刚终于被翻译成英 语了。没错,它是在日本发明的,这么多地儿,没想到日本人搞出来了,还以为他们只是硬件和制造上占有名气,而不是他们的软件业,所以大家都跟你一样惊奇。 为什么呢,大家可能都在想。但是我认为这都是跟打字有关。我根本不能想象他们以前能打字打得足够快,英文字母只有26个,他们却有上万个字。但是 Emacs几年前支持多字节字符了,所以我猜他们现在打字速度他妈的快多了。(所以能搞出Ruby来了,译者猜作者是这个意思) (是的,他们也用Emacs—事实上日本人负责了Emacs多字节支持的大部工作,而且搞得坚不可摧。) 不管怎么样,Ruby从Perl那里偷师了所有的好东西; 实际上,Matz,Ruby的作者(Yukihiro Matsumoto,如果我没记错的话,但是他外号“Matz”),觉得他从Perl那里偷的有点太多了,他的鞋上也粘了些鲸鱼肠子。但是只是一丢丢。 最重要的是,Ruby拿来了Perl的串处理和Unix集成,一点没改,就是说语法都是一样的,于是乎啥也不说了,你就拥有了Perl最好的那部分。这是个不错的开局,特别是如果你不把Perl剩下的东西也拿进来的话。 但是之后Matz还从Lisp那里拿来的最好的列表处理,Smalltalk和其他语言那里拿来了最好的面向对象,CLU那里拿来了最好的迭代器,以及基本上是每个人每个事的最好的东西。 而 他让这些东西全部都跑起来,跑得那么顺,你都不会注意到这些东西在那儿。我比其他任何语言都快就学会了Ruby,我总共会三十到四十门语言; 而我花了大概三天时间就能用Ruby比Perl还流畅地工作了,当了八年的Perl黑客后。这些东西是这么的和谐你都能自己猜它们是怎么工作的,而且大多 数时候你都能猜对。漂亮。有趣。靠谱。 如果把语言比成自行车,那么AWK就是一辆粉系的儿童自行车,前面有个白色小框,还插块小 旗,Perl就是沙滩车(还记得那有多酷吧? 唉。),而Ruby则是一辆七千五美金的钛合金山地自行车。从Perl飞跃到Ruby意义不下于从C++到Java的飞跃。却没有任何缺陷,因为Ruby 几乎是Perl功能的一个超集,而Java却拿掉了一些人们想要的东西,且没有真正的提供一个替代品。 下次我会写更多关于Ruby的东 西。我先需要灵感。去读读Lucky Stiff的(poignant) guide to Ruby吧。那本书是一本有灵感的书。真的,读一下。超赞。我不理解产生它的那种头脑,但它很有趣,很犀利,且全是关于Ruby的。好像。你会看到的。 Python啊,Python怎么说呢,一个不错的语言,这么多年来一直旁边在等待它的机会? Python社区很长时间以来是那些勇敢地吞下红药片从Perl骇客帝国中醒来的人的避难营。 啊,有点像Smalltalk的人们,他们永远在等待替代C++,没想到半路杀出Java一下把它们操翻了,漂亮地,永久地。哎哟。Ruby正在对Python做着同样的事,现在,今天。可能会在一夜之间吧。 Python本来可以统治世界,可惜它有两个致命缺陷:空格,和冷淡。 空 格很简单,就是说Python是用缩进来表达代码块之间的嵌套。它强制你必须按一定格式把所有的东西缩进,他们这样做是为了让所有人写的代码看上去一样。 不料蛮多程序员讨厌这点,因为他们觉得自己的自由被拿走了; 感觉就像Python侵犯了宪法赋予他们的可以随便缩进格式和全写在一行上的权利。 Python 的作者,Guido Van Rossum,也在早期犯过一些很傻地技术错误—没有像Larry的失误那么严重,但是还是有几个。比如,最早Python没有字面变量范围,但它同时也 没有动态变量范围,而动态变量范围可能会有它一些问题,但它还是有用的。Python却没有这些,只有全局的和本地(函数)的两种范围。所以即使它是一个 真正的OO系统,类甚至不能访问它们自己的动态成员变量。你必须给成员函数传“self”参数,一大堆self参数很快就会把你搞疯掉,即使你不在意空格 问题。 等等之类。 但在我看来,Python不行其实是因为冷淡。这阻止了它成为首选脚本语言,或者首选一切语言。靠,人们现在还在用Tcl作嵌入解释执行器,虽然Python比Tcl好得不要太多—除了,我说,这个冷淡问题。 此处开始我不知所云。呵呵,这样吧,把原文贴在最后面。 注1,Eric告诉我当时几乎全是Jamie Zawinski,当他们在Lucid工作的时候。 注2,我写了这个之后很多人告诉我Paul Graham是用VI的,想不到。 注3,为了有据可查,我个人根本不介意空格问题。我认为因为这个而不喜欢Python是很傻的。我只是说有一堆比例让人惊奇的其他工程师讨厌空格问题。 What's the frost thing, you ask? Well, I used to have a lot of exceptionally mean stuff written here, but since Python's actually quite pleasant to work with (if you can overlook its warts), I no longer think it's such a great idea to bash on Pythonistas。The "frost thing" is just that they used to have a tendency to be a bit, well, frosty。Why? Because they were so tired of hearing about the whitespace thing! I think that's why Python never reached Perl's level of popularity, but maybe I'm just imagining things。 Coda That was the ADJ article I really wanted to write。Or at least something like it。For some reason, though, my true feelings only seem to come out during insomniac attacks between 3am and 6am。Time for bed!2 hours 'til my next meeting。 这才是我真正想给亚马逊开发者杂志写的文章。或者至少是这样的。出于某些原因,我的真感情好像只有在我凌晨三点到六点失眠的时候都会流露。该睡觉了!我下个会议再过两小时就开始了。 (发布于2004年9月,小小的更新在3/28/2006) 本文转载自:http://code.google.com/p/windows-config/wiki/TourDeBabel |