First they ignore you
then they ridicule you
then they fight you
then you win
    -- Mahatma Gandhi
Chinese => English     英文 => 中文             
随笔-160  评论-851  文章-0  trackbacks-0
Ruby的语法可以借鉴,但其本身的实现就免了

说Ruby是一种没有光明前途的语言的原因:
Ruby的Thread是伪线程,不管代码中写了多少个Thread.new,Ruby都只启动了一个线程去运行这些Thread的代码。
这样做的确使得Ruby的Thread很容易控制,程序也不容易产生类似死锁这类严重的线程问题。但是效率始终无法提高,因为在ruby进程中,实际上只有一个真实的线程在运行,同样的代码在那么多核或者多cpu的电脑上运行效率和单核cpu的电脑上的效率并不会相差多少。

你目前在工作站上用的CPU时钟速度是多少?10GHz么? 2001年8月Intel芯片就达到2GHz,按照2003年前的CPU发展趋势推算,到2005年初,我们就能拥有第一块10GHz的Pentium芯片。但实际上没办到。而且情况好像越来越糟——我们根本就不知道到底在什么时候这样的芯片可以出现。

那么放低期望,4GHz又如何呢?目前我们已到3.4GHz——那么4GHz已经不远了吧?唉,好像4GHz也遥不可及。可能你知道,Intel首先于2004年中将4GHz芯片的发布时间推迟到2005年,而到了2004年秋季,则彻底取消了4GHz计划[译注11]。在本文写作的同时,Intel宣布计划到2005年早期,实现到3.73GHz(即图中的右上最高处)的微量提升。所以,至少就目前来说,时钟速度的竞赛实际上结束了,Intel和其他大多数处理器厂商将把旺盛的精力投入到多核等方向去。

也许,我们某天在主流PC里能装上4GHz的CPU,但2005年别想。Intel实验室里的确已经有运行在更高速度的芯片——不过代价是惊人的,比如庞大数量的冷却装置。你想不久在你的办公室里就有这样的冷却设备,坐飞机的时候,就把它们放在你膝盖上?别做梦了!

如果应用程序想充分利用CPU吞吐增加量,那它们就必然日益需要并发,这种形势逐渐明朗,并将在接下来的数年里深入发展。Intel已经扬言未来他们会推出集成100颗内核的芯片,那么单线程应用最多就只能利用这种芯片1/100的潜在生产力。“哦,性能没那么重要吧,计算机总是跑得越来越快”的论调已经变得天真而可疑,甚至在未来不久将完全错误。

总结一下我的观点:
CPU性能提升途径主要是靠实现多核,靠提高主频是没有多大希望了,而单线程仅仅能利用单核资源,严重浪费了多核CPU提供的性能,不幸的是,Ruby的线程是伪线程,即始终仅有一个线程在执行,随着软件的日益庞大,Ruby将不得不求助于CPU主频的提升,但像前面所说的那样,4G都是一个遥不可及的目标,别提10G甚至更高了。我坚信,RoR终有一天不堪重负,被Java击溃! 
posted on 2006-12-11 14:53 山风小子 阅读(1672) 评论(21)  编辑  收藏 所属分类: Python & Ruby & RoR

评论:
# re: Ruby真有那么好吗? 2006-12-11 15:20 | whenn
4GHz的CPU已经出现了 而且Ruby本身也是在不断变动的,好象很容易的就击溃了你的论据…^^

另:建议不要将blog音乐设为自动播放。  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 15:31 | 小陆
ruby的光辉点不在于他的运行效率,而是他的思考方式,他可以让程序员摆脱底层的技术,从一个最接近于business的地方开始自己的工作。这是未来的企业开发的趋势。
你说到的这个缺点,ruby发布一个新的版本就可以解决,建立在ruby之上的应用不需要改变一行代码。  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 15:32 | badqiu
单一关于Thread的特性论证实在是太没有说服力了,Ruby的前途决不会是因为楼主提到的这一点  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 15:46 | BeanSoft
把 Ruby 的底层虚拟机性能提升到跟 Java 差不多就 OK 了. Java 为什么这么火? 是因为 Sun 公司雇用了一堆人来用 C 语言写各个操作系统下的虚拟机, 一般人(小团体)做不到这些, 最初的 JDK 只有可怜的两三个平台... 跨平台, 也就是脚本(或者Class文件)跨平台而已. 没人写 VM, 就是垃圾一堆.  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 16:17 | 2002PP
Ruby诞生有10年了,以前一直是默默无闻,自从ROR出现后,一下被炒的很火。
ROR的理念也许很有创意,但我更佩服发明ROR的作者的超作能了!
他不去广告公司真是太可惜了。:)  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 16:48 | ChuPaChuPs
就这么一个理由就能写出一篇 Ruby真有那么好吗?
然后推出 RoR终有一天不堪重负,被Java击溃!
真好笑

那我马上能写出 Java真有那么好吗?
然后推出 Java终有一天不堪重负,被OOXX击溃!

和 C真有那么好吗?
然后推出 C终有一天不堪重负,被XXOO击溃!

最后 人真有那么好吗?
然后推出 人终有一天不堪重负,被机器击溃!

哈哈  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 17:00 | netfishx[匿名]
@2002PP
ror真是DHH炒起来的吗?无知兼幼稚  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 17:52 | netfishx[匿名]
@山风小子
首先,ruby的虚拟机即将出来,现在的情况会有改变;
退一步,即使是现在的进程模型也不一定性能差,这个你可以到IBM的网站或者ruby社区(估计你不屑于看这里)查一下资料  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 18:29 | iceboundrock
晕,就这个论据啊,太不堪一击了。
就算想并发提高处理能力,也不一定多线程吧,多进程也可以嘛。用一个apache/lighttpd+n个webrick不就可以了。  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 20:09 | weidagang2046
不看好Ruby,理由是和C编码风格类似的语言才可能有广大的群众基础,尤其在中国。  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-11 21:20 | 山风小子
@netfishx
我会进一步关注Ruby的,希望Ruby会有所改进吧
不过一种编程语言的使用时间一般在10年左右,Ruby的出现时间似乎跟Java差不多,但至今仍未彻底翻身,其前景堪忧啊~  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-12 13:38 | Zou Ang
语言是否好用,起不了最根本的作用,背后有没有人支持,也就是有没有钱(¥)才是最重要的!没钱,就凭个人喜好是成不了主流的  回复  更多评论
  
# re: Ruby真有那么好吗? 2006-12-13 05:07 | Wudi
Look at JRuby
The performance will beat the original Ruby. And it supports RoR  回复  更多评论
  
# re: Ruby真有那么好吗? 2007-01-25 09:30 | 刘明
嗯。。。Ruby不熟。但看过ROR,确实惊奇它的开发效率。我觉得Java有些过于自大,过于学究了。好的东西我们可以学习嘛。既然Ruby通过ROR发展起来,Java也可以借鉴嘛。ROJ,如果Java本身难以实现的话,就在Java上构建一层好了,比如Groovy。

其实我觉得Java下的太多东西都过于技术化了,比如Struts等,似乎它们想解决所有的问题,我觉得这是很费精力,而且意义不大的。不要妄想自己的东西可以在所有的环境下都适用,我们完全可以作个类似于ROR的东西用于快速开发,也许它有很多的问题(应用面窄、不能承受太大的压力等),但我觉得它只要能很好的完成它面对的用户需要的东西就行了(比如:快速开发、好管理等)。我始终比较信奉8:2法则。  回复  更多评论
  
# re: Ruby真有那么好吗?[未登录] 2007-06-16 14:01 | wzjin
其实本人也不看好ROR,语言的发展要靠实力做后盾的,这也像人类的语言。如果.net不是微软的产品有谁会学?  回复  更多评论
  
# re: Ruby真有那么好吗? 2007-06-17 01:37 | 山风小子
不喜欢ruby的理由:
1, 太灵活,算法表达形式太多,代码维护比较困难
2, 非‘C语系’:http://www.blogjava.net/BlueSUN/archive/2007/03/03/101562.html
3, 由日本人创造

不喜欢jruby的理由:
除上述原因外,
4, jruby必须兼容ruby即cruby,跟着ruby走,那岂不是小日本的走狗?


  回复  更多评论
  
# re: Ruby真有那么好吗? 2007-06-17 06:48 | piggy
关于表达多样,groovy难道不也一样么?表达多样其实并不一定导致维护困难,大部分人有这个坏印象都是perl大量使用古怪符号的造成的恶劣印象。ruby是非常接近自然语言(英语)的,我们人类自然语言本身同一个意思就有多种表达,并没有什么理解困难吧?

  回复  更多评论
  
# re: Ruby真有那么好吗? 2007-06-17 12:03 | 山风小子
@piggy

Java过于笨拙,ruby过于灵活
groovy就比较中庸,取ruby之长,补Java之短 :)

>我们人类自然语言本身同一个意思就有多种表达,并没有什么理解困难吧?
其实不然,一个文盲和一个文采飞扬的人交流一定会存在问题的,为什么呢?文采飞扬的那个人总是用成语,那么文盲就很难理解对方表达的是什么意思了。
同样地,一个高水平的ruby程序员和一个低水平的ruby程序员之间的交流也是存在问题的。  回复  更多评论
  
# re: Ruby真有那么好吗? 2007-08-06 23:33 | 远离尘嚣
ruby离Java太远,即使有JRuby实现,也有点'隔靴搔痒'的味道,当前企业级开发的首选是Java,老板要选定一个架构时,第一个考虑的是风险,第二才是开发效率如此之类的问题,若是一种语言没有性能和并发上的考量,更重要的是没有能彻底说服业界的大型项目出籠,最强的语言也难以商用.据我所知,业界第一个用JRuby实现的商业软件,是thoughtWorks公司开发的,业界貌似也没有太大反响.我的反应跟业界一样,不太看好ruby,嘻嘻,身边看到很多php开发人员对ruby兴趣蛮大,个人就觉得ruby是php的救命稻草,而不能跟java抗衡,毕竟Java的成功是大厂商和开发社区的支持促进的,并且多年的成果积累,使得Java的家底厚实,看那么多的开源项目和框架技术,就可以知道了.而ruby就算要成功,也得重走这一段路,不说多的,至少五年至十年吧,嘻嘻...而groovy呢?它已经是站在巨人肩膀上了!ruby有的,它也有,java有的,它都能用,无缝集成.值得一提的是,Oracle力挺Groovy,一旦有一天oracle将它应用在自己的数据库产品中,我想世人再也不敢怀疑groovy的王者之相了吧?!In a word,groovy不但是王储,还是太子!!  回复  更多评论
  
# re: Ruby真有那么好吗? 2007-08-08 21:06 | 山风小子
@远离尘嚣
> In a word,groovy不但是王储,还是太子!
我也是这么认为的 :)

ps: Groovy Team将在Groovy2.0开发中致力于性能的提升,而Groovy1.1也有少许性能提升,期待Groovy1.1,期待Groovy登基 :)  回复  更多评论
  
# re: Ruby真有那么好吗? 2008-04-07 16:35 | hello
@netfishx[匿名]
你这种说法很有问题,我同事写了个多线程的得ruby,在linux下面速度很慢,狂占cpu,形象说明一下好了:用java来实现3%cpu占用率,运行时间1秒钟不到,用ruby的99%cpu占用率,运行时间3分钟.
凡事不要停留在理论上,ok?  回复  更多评论
  

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-01-10 20:46 编辑过
 
 
相关链接:
网站导航: