2008-01-07
Ruby为什么会受程序员的欢迎?
孟岩最近写了一篇博客:
Ruby 1.9不会杀死Python
这篇文章很有点标题党的意思,所以在JavaEye论坛很快被水掉了,只好锁贴:
http://www.javaeye.com/topic/153651
但我个人对于孟岩的观点是不敢苟同的。首先我并不同意所谓魔幻语言和简约语言的分类。其实Martin Flower论述过这个问题,他是用“人性化接口”和“最小接口”来区分编程语言的风格化差异的,请看这篇文章:
http://martinfowler.com/bliki/HumaneInterface.html
其实不用我多说,Martin论述的挺充分了。强把Ruby和C++归为魔幻一类,其实并不准确,因为Ruby的魔幻语法和C++相比,最大区别在于:
C++的魔幻语法会导致代码的可读性变差,而Ruby的魔幻语法会导致代码的可读性大大提高。
不论是matz本人,还是整个Ruby社区,Rails社区诸多开源项目的作者,抑或整个Ruby和Rails开发者社区,在一个编程哲学问题上是高度统一的,这就是:
强调程序员的快乐编程,追求人性化编程,在代码的可读性上面有偏执的追求,拒绝难以阅读的代码和难用的API。也就是所谓的coding for fun!
所以你看无论是Rails,rake,rspec,甚至移植自lucene的ferret,都鲜明的体现出来这种特点,就是API简单好用,让你写的代码像英文文章,自然流畅,轻松愉快。要是哪个Ruby框架的API复杂晦涩,在Ruby社区简直没法混,大家根本不买他的帐,这也是为什么Ruby应用于DSL领域这么热的根本原因。
对于ruby程序员来说,这种追求编程人性化的哲学理念会潜移默化影响程序员,让他不知不觉把代码的可读性越写越好。对于程序员来说,谁不想coding for fun呢? 而当你品尝到了coding for fun的乐趣,又怎么会轻易抛弃?
所以Ruby受程序员欢迎的根本原因还是在于它是一种能给你带来编程乐趣的语言。
Ruby 1.9不会杀死Python
这篇文章很有点标题党的意思,所以在JavaEye论坛很快被水掉了,只好锁贴:
http://www.javaeye.com/topic/153651
但我个人对于孟岩的观点是不敢苟同的。首先我并不同意所谓魔幻语言和简约语言的分类。其实Martin Flower论述过这个问题,他是用“人性化接口”和“最小接口”来区分编程语言的风格化差异的,请看这篇文章:
http://martinfowler.com/bliki/HumaneInterface.html
其实不用我多说,Martin论述的挺充分了。强把Ruby和C++归为魔幻一类,其实并不准确,因为Ruby的魔幻语法和C++相比,最大区别在于:
C++的魔幻语法会导致代码的可读性变差,而Ruby的魔幻语法会导致代码的可读性大大提高。
不论是matz本人,还是整个Ruby社区,Rails社区诸多开源项目的作者,抑或整个Ruby和Rails开发者社区,在一个编程哲学问题上是高度统一的,这就是:
强调程序员的快乐编程,追求人性化编程,在代码的可读性上面有偏执的追求,拒绝难以阅读的代码和难用的API。也就是所谓的coding for fun!
所以你看无论是Rails,rake,rspec,甚至移植自lucene的ferret,都鲜明的体现出来这种特点,就是API简单好用,让你写的代码像英文文章,自然流畅,轻松愉快。要是哪个Ruby框架的API复杂晦涩,在Ruby社区简直没法混,大家根本不买他的帐,这也是为什么Ruby应用于DSL领域这么热的根本原因。
对于ruby程序员来说,这种追求编程人性化的哲学理念会潜移默化影响程序员,让他不知不觉把代码的可读性越写越好。对于程序员来说,谁不想coding for fun呢? 而当你品尝到了coding for fun的乐趣,又怎么会轻易抛弃?
所以Ruby受程序员欢迎的根本原因还是在于它是一种能给你带来编程乐趣的语言。
评论
我个人感觉,C++的魔幻语法其实也是为了快乐编程。
只是这些魔幻语法后面的实现机制确实很难理解,需要较高的编程修养的人才能够体会。
比如说,boost库里面的一些类我觉得就很好,用多了之后跟用脚本编程没有太大的差别。
可是要熟练的应用这些库需要花一定的时间,不像简单语法那么容易上手。
总而言之,C++的魔幻语法目前只能够让编程高手快乐编程。
只是这些魔幻语法后面的实现机制确实很难理解,需要较高的编程修养的人才能够体会。
比如说,boost库里面的一些类我觉得就很好,用多了之后跟用脚本编程没有太大的差别。
可是要熟练的应用这些库需要花一定的时间,不像简单语法那么容易上手。
总而言之,C++的魔幻语法目前只能够让编程高手快乐编程。
blackanger
2008-03-09
回复
Martin Fowler told us :
Humane interface designers try to identify what are the most common uses of a class, and design the interface to make these uses easy.
这就是我们为什么喜欢Ruby的原因,别争了。
Humane interface designers try to identify what are the most common uses of a class, and design the interface to make these uses easy.
这就是我们为什么喜欢Ruby的原因,别争了。
leonardleonard
2008-02-02
回复
helloworld
2008-01-14
回复
我觉得语言要能够长久,首先是不能有排它性。要能够调用别人,也能够被别人调用。其次是性能考量,性能关键不在于解释器或编译器的好坏,而在于设计语言的时候有没有考虑到硬件的发展。拥有了良好的设计才有可能优化编译使其得到很好的硬件执行性能。
helloworld
2008-01-14
回复
我倾向于多种语言建模,如果一种语言全部做掉,即使能够,也太庞大了。
多种语言建模的基础语言是C,这是由于硬件所决定的。但现在C的这个地位也在被动摇,同样是因为硬件的发展。
在应用中我们有不同的需求,有计算的,图像分析的,界面表达的,规则描述和数据处理的等等,如果都用一种语言去实现可能性不大,有些东西要直接用不相关的语言表达可能和用汇编写程序一样困难。因此我们有了不同语言和相应的编译器或解释器,最终,这些语言是适合表达的,而执行最终转换成机器码。
Ruby不管有多好用,设计的初衷不是面向问题领域的,而是面向效率考虑的。
多种语言建模的基础语言是C,这是由于硬件所决定的。但现在C的这个地位也在被动摇,同样是因为硬件的发展。
在应用中我们有不同的需求,有计算的,图像分析的,界面表达的,规则描述和数据处理的等等,如果都用一种语言去实现可能性不大,有些东西要直接用不相关的语言表达可能和用汇编写程序一样困难。因此我们有了不同语言和相应的编译器或解释器,最终,这些语言是适合表达的,而执行最终转换成机器码。
Ruby不管有多好用,设计的初衷不是面向问题领域的,而是面向效率考虑的。
语言,总是在变化啊,人类语言不是吗?
计算机语言当初汇编时代出现高级计算机语言,人类多兴奋?
语言与公司一样有发展期,成熟期,衰退期。未必真的衰退而是相对其他与奥运年的成熟期?
所以今天的ruby就是10年后的python或是java
今天的ruby也许是10年钱的java
计算机语言当初汇编时代出现高级计算机语言,人类多兴奋?
语言与公司一样有发展期,成熟期,衰退期。未必真的衰退而是相对其他与奥运年的成熟期?
所以今天的ruby就是10年后的python或是java
今天的ruby也许是10年钱的java
dennis_zane
2008-01-08
回复
还别说,就有人就喜欢dirty and quickly地干活,perl这样的语言还是很有市场
我是搞嵌入式系统的,非常喜欢用ruby,所以“ruby是因为rails才吸引人”的说法对我不成立。
其实除了rails,ruby可以开展拳脚的地方很多,特别是在日常工作中需要自己写一些小工具的时候,ruby特别引诱人。
回到话题,我认为ruby吸引人的主要原因是ruby本身的语法非常自然,“最小惊诧”原则是明显起到作用的。如果说到吸引人的细出,可能closures是最大贡献,至少对我来说是closures使我使用ruby的。
要说不足,就是MRI可移植性还不够,特别对于嵌入式系统,目前除了在embedded linux上可用,对于资源更少的系统ruby就无能为力了,相反,python则在这方面有很大优势。
其实除了rails,ruby可以开展拳脚的地方很多,特别是在日常工作中需要自己写一些小工具的时候,ruby特别引诱人。
回到话题,我认为ruby吸引人的主要原因是ruby本身的语法非常自然,“最小惊诧”原则是明显起到作用的。如果说到吸引人的细出,可能closures是最大贡献,至少对我来说是closures使我使用ruby的。
要说不足,就是MRI可移植性还不够,特别对于嵌入式系统,目前除了在embedded linux上可用,对于资源更少的系统ruby就无能为力了,相反,python则在这方面有很大优势。
不过魔幻/简约分法和可读变好/变差的分法倒让我想起了Stevens对perl的评论:
I don't use perl--I consider it an unreadable write-only language.
魔幻的说法显然有个误区,就是认为好写的语言必定不好读。
I don't use perl--I consider it an unreadable write-only language.
魔幻的说法显然有个误区,就是认为好写的语言必定不好读。
要是没有rails,我是不会接触ruby的,呵呵,所以个人认为在web开发方面Python即使被杀死也主要取决于rails而不是ruby。
是否被杀死,关键看领域的,也就是使用的场合。
比如,js除了语言动态性这点做得完全正确之外,要不是在浏览器场合、在DOM领域却是独一无二的,它的语法和api设计谁会乐意去用它。
不过倒真的希望ruby能够把shell语言给统一起来。杀死Python对ruby也不是什么好事情。至于对搞应用开发的,那绝对是坏事一件了。
是否被杀死,关键看领域的,也就是使用的场合。
比如,js除了语言动态性这点做得完全正确之外,要不是在浏览器场合、在DOM领域却是独一无二的,它的语法和api设计谁会乐意去用它。
不过倒真的希望ruby能够把shell语言给统一起来。杀死Python对ruby也不是什么好事情。至于对搞应用开发的,那绝对是坏事一件了。
发表评论
- 浏览: 1979809 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
我的相册
iphone2.jpg
共 39 张
共 39 张
最近加入圈子
链接
最新评论
-
Facebook的成功秘诀是什么 ...
robbin认为校内的做法愚蠢,但我认为校内不重视开发者,有它自己的原因。rob ...
-- by include -
中国行业应用软件领域恶性 ...
是这么回事,我们是做银行的,挺苦的啊:)不过比前几年好点了,水稍微清点了
-- by zhdy007 -
中国行业应用软件领域恶性 ...
icewubin 写道引用to icewubin, “与国外没有办法比”不等于研 ...
-- by jacklondon -
JYaml,用Java读取YAML
虽然刚做ROR不长时间,但是今天也试着用了一个JYAML(尽管手已经有点生),确 ...
-- by berek_quyj -
使用libmmseg实现Ruby的中 ...
require 'ChineseAnalyzer' acts_as_ferre ...
-- by zhangzldipan






评论排行榜