Revenge of the Nerds(书呆子的复仇......)

原文http://www.paulgraham.com/icad.html

 只翻译了开头,剩下的看这里

http://www.ruanyifeng.com/blog/2010/10/why_lisp_is_superior.html

(翻译完不说把整篇发出来,只发个节选......我咆哮了)

In the software business there is an ongoing struggle between the pointy-headed academics, and another equally formidable force, the pointy-haired bosses. Everyone knows who the pointy-haired boss is, right? I think most people in the technology world not only recognize this cartoon character, but know the actual person in their company that he is modelled upon.
在软件商业中总存在一个斗争在秃头的专家和同样强大的秃头老板。每个人都知道秃头老板是谁,对吧?我想很多搞技术的人不但能认出这个卡通人物,而且知道在他们的公司里这个真实存在的人是谁。

The pointy-haired boss miraculously combines two qualities that are common by themselves, but rarely seen together: (a) he knows nothing whatsoever about technology, and (b) he has very strong opinions about it.
秃头老板身上神奇的综合了2种完全不该存在的特质:他一点也不懂技术,他对技术有很强的看法。

Suppose, for example, you need to write a piece of software. The pointy-haired boss has no idea how this software has to work, and can't tell one programming language from another, and yet he knows what language you should write it in. Exactly. He thinks you should write it in Java.
比方说,你需要开发一个软件。秃头老板完全不知道这个软件如何工作,而且完全不知道语言之间的区别,而且现在他知道你该用什么去开发。没错。他觉得你应该用java。

Why does he think this? Let's take a look inside the brain of the pointy-haired boss. What he's thinking is something like this. Java is a standard. I know it must be, because I read about it in the press all the time. Since it is a standard, I won't get in trouble for using it. And that also means there will always be lots of Java programmers, so if the programmers working for me now quit, as programmers working for me mysteriously always do, I can easily replace them.
他为什么这么想?让我们看看他脑子里的想法。他是这样想的:java是标准。这点我十分确认,因为我总是在新闻中看到他。既然它是标准,我使用它就不会有问题。而且这也意味着有很多的java程序员,所以如果一个我的程序员跑路了,就像那些为我干活的程序员经常偷偷做的那样,我总是能很容易的找到另一个。

Well, this doesn't sound that unreasonable. But it's all based on one unspoken assumption, and that assumption turns out to be false. The pointy-haired boss believes that all programming languages are pretty much equivalent. If that were true, he would be right on target. If languages are all equivalent, sure, use whatever language everyone else is using.
这听起来不是没有道理。但是这都是基于一个无法说的猜测,而且这个猜测总是错误。秃头老板相信所有的语言都一样。如果真是这样,他就切中要害。如果语言都一样,好吧,随便找个大家都用的语言好了。

But all languages are not equivalent, and I think I can prove this to you without even getting into the differences between them. If you asked the pointy-haired boss in 1992 what language software should be written in, he would have answered with as little hesitation as he does today. Software should be written in C++. But if languages are all equivalent, why should the pointy-haired boss's opinion ever change? In fact, why should the developers of Java have even bothered to create a new language?
但是语言是不同的,而且我想我可以不用找出它们直接的差别就证明这一点。如果你在1992年问秃头老板软件是用什么语言写的,他会像今天一样略带犹豫的回答。应该用C++吧。但是如果语言都一样的话,为什么他的观点会变呢?事实上,为什么java程序员也费心的去创造一个新语言?

Presumably, if you create a new language, it's because you think it's better in some way than what people already had. And in fact, Gosling makes it clear in the first Java white paper that Java was designed to fix some problems with C++. So there you have it: languages are not all equivalent. If you follow the trail through the pointy-haired boss's brain to Java and then back through Java's history to its origins, you end up holding an idea that contradicts the assumption you started with.
可以假定,如果你创造一个新语言,是因为你认为它在某一方面一定要比人们正在使用的语言有优势。实际上gosling在第一版java白皮书中就说的很清楚了,设计java是为了修改C++中的一些问题。所以你知道了,语言并不是都一样的。如果你比较下光头老板脑子中对于java的想法,还有java的起源,你就不会支持你最初矛盾的假设。

So, who's right? James Gosling, or the pointy-haired boss? Not surprisingly, Gosling is right. Some languages are better, for certain problems, than others. And you know, that raises some interesting questions. Java was designed to be better, for certain problems, than C++. What problems? When is Java better and when is C++? Are there situations where other languages are better than either of them?
所以,谁是对的?James Gosling,还是光头老板?毫无疑问,gosling是对的。对于具体问题,一些语言要比另一些要好。而且你知道,这样就引起了另外一些有趣的问题。设计Java是为了改进C++的不足,在处理某些问题上。那些问题?Java适合处理那些玩呢提?C++呢?在那些情况下,其他的语言要比这2种语言都好?

Once you start considering this question, you have opened a real can of worms. If the pointy-haired boss had to think about the problem in its full complexity, it would make his brain explode. As long as he considers all languages equivalent, all he has to do is choose the one that seems to have the most momentum, and since that is more a question of fashion than technology, even he can probably get the right answer. But if languages vary, he suddenly has to solve two simultaneous equations, trying to find an optimal balance between two things he knows nothing about: the relative suitability of the twenty or so leading languages for the problem he needs to solve, and the odds of finding programmers, libraries, etc. for each. If that's what's on the other side of the door, it is no surprise that the pointy-haired boss doesn't want to open it.
一旦你开始考虑这个问题,你遇到了一个乱七八糟的问题(乱翻译的)。如果光头老板想过这个问题的复杂性,这会让他脑子炸掉的。如果他认为所有的语言都一样,他所需要做的就是选一个看上去最有活力的,而且这样的话最大的问题就是潮流而不是技术,就算这样他也能得到正确的结果。但是如果语言变化多样,他需要处理2个联立方程,试着找到一个最佳的平衡在他根本不知道的2样东西之间:从20多种语言或者只是主导语言中,为他需要解决的问题选择一种语言,还有就是找相应的程序员、类库等等。如果这些问题老板完全不知道,他当然不想去研究。(清风不识字,何必乱翻译.....伤不起啊!!!)


The disadvantage of believing that all programming languages are equivalent is that it's not true. But the advantage is that it makes your life a lot simpler. And I think that's the main reason the idea is so widespread. It is a comfortable idea.
相信所有的语言都一样的缺点是 这不是真的.但是优点是,让你的生活更简单。而且我想这也是这个想法这么普遍的最重要的原因。这是个让人舒服的想法。

We know that Java must be pretty good, because it is the cool, new programming language. Or is it? If you look at the world of programming languages from a distance, it looks like Java is the latest thing. (From far enough away, all you can see is the large, flashing billboard paid for by Sun.) But if you look at this world up close, you find that there are degrees of coolness. Within the hacker subculture, there is another language called Perl that is considered a lot cooler than Java. Slashdot, for example, is generated by Perl. I don't think you would find those guys using Java Server Pages. But there is another, newer language, called Python, whose users tend to look down on Perl, and more waiting in the wings.

我们知道java一点很好,因为他是很cool的新语言(不是我说的,原文参上)。真的是这样吗?如果你远距离的看一下世界上的程序语言,java是最后出现的。(从足够远处,你能够看到的只是SUN为这个光闪闪的大牌子付出的代价。)但是如果你靠近观察,你回发现cool只是有限度的.....(我不会翻译了,非英语专业的杯具)。在黑客们的培养下,出现另一种比java还要cool的语言perl。Slashdot,就是perl开发的。我不相信你能发现那些人使用jsp。而且另外一个语言python,它的用户们BS perl,而且更加蓄势待发。

If you look at these languages in order, Java, Perl, Python, you notice an interesting pattern. At least, you notice this pattern if you are a Lisp hacker. Each one is progressively more like Lisp. Python copies even features that many Lisp hackers consider to be mistakes. You could translate simple Lisp programs into Python line for line. It's 2002, and programming languages have almost caught up with 1958.

如果我们把流行的编程语言,以这样的顺序排列:Java、Perl、Python、Ruby。你会发现,排在越后面的语言,越像Lisp。

Python模仿Lisp,甚至把许多Lisp黑客认为属于设计错误的功能,也一起模仿了。至于Ruby,如果回到1975年,你声称它是一种Lisp方言,没有人会反对。

编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平。

转载于:https://my.oschina.net/asdfsx/blog/15005

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值