论坛首页 编程语言技术论坛

我开始不喜欢ruby了

浏览 71881 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-04-08  
liusong1111 写道
普遍的观点是: ruby语言复杂, 编写rails应用简单.

运行时扩展,是ruby强悍的标志性特性。动态语言在运行时才能完全正确的inspect,这是它的局限。编写扩展的人,都会刻意让它更易读易记,不然就让使用者困扰。一个应用中,有哪些代码对哪些地方进行了扩展,是应该也必须能被编程人员理解和掌握的,如果失控,只能说明你们选择的第三方包有问题(自己选择不当),或自己写的扩展不好(设计不当),或基础不好或培训不到位(java一样有这个问题)。


要求编程人员时刻记住那些地方进行了扩展,而且很难通过文档的方式查看,你不觉得这样很累吗。另外,不同的程序员之间最好的交流方式就是接口和接口的文档,如果没有清晰的接口,会产生很多问题。

另外,如果非要看源代码才能明白到底发生了什么,还谈什么抽象和封装呢。

动态特性固然很重要,然而并没有我们想的那么重要,一点点的动态特性能让语言表现很出色,大量的依赖动态特性会产生糟糕的效果。我认为动态特性不应该改变程序,写好的代码应该是只读的,动态体现在自省上,让别人了解自己,而不是改变自己。JAVA的动态特性就很不错,不过难用了点。
0 请登录后投票
   发表时间:2008-04-08  
各有所爱吧

ruby 是我见过可读性最强的编程语言

0 请登录后投票
   发表时间:2008-04-08  
引用
首先是类库太混乱,比如IO,可以直接open(file),可以File.open,还可以File.new,测试文件可以通过FileUtils,也可以File,都是完成相同的事情,何必搞这么功能一样的东西出来呢,增加阅读类库的工作量。完全违背了最小接口的原则。还有方法别名,这有必要吗?

为什么没有必要? File.open 和 File.new的功能是一样的吗? File.open 可以提供一个block, 帮你自动关闭文件, 而File.new则不能. ruby确实是提供了许多看起来做类似事情的方法, 但这样作的目的应该是在不同的情况下使用不同的方法, 以获得更好的便利性. 什么叫最小接口原则? 难到是只提供一个最底层的api? 只提供File.new, 即使代码中有很多地方需要File.new后关闭file?

引用
最后,也是最严重的,是运行时的对象扩展,比如defind_method和undef等,这使得良好的接口说明成为了不可能。你无法知道正在使用的类到底有那些方法。

第一我觉得ruby的meta programming十分强大, 但不代表你可以滥用它,到处使用它, 我觉得在我日常的应用编程中,使用define_method和undef之类的不是特别多.第二,我实在不明白你说的"这使得良好的接口说明成为了不可能",  api的接口说的清楚不清楚是人的表达能力的问题, 不明白和这些方法有什么关系?

引用
使用ruby写一些小程序的时候的确很爽。但个人感觉还是不适合做大。对于一个java框架,看看入门教程和api文档,我大致就可以知道各个部分是如何工作的,每一部分,如何进行高级应用。但是rails,我从来都离不开敏捷web开发这本书。rails2.0出来了,我不知道当我在routes.rb 中加上一句map.resources :news之后,会使哪些地方发生了什么变化。
听你说用Java似乎更简单, 是真的吗? 写一个j2ee应用起码要用至少三个框架, 就说ssh, 你需要同时研究struts, hibernate, spring吧? 光一个hibernate你要吃透就够你受的. 起码比起java来你就整天抱着"敏捷web开发这本书"就行了. rails2.0出来了, 并不代表你就真需要里面的新特性,如果真的需要,那就应该研究一下它,难到你等着天上掉馅饼? 

别的高深的话我也说不出来, 总之是用了rails一段时间再也不想回到java了.

0 请登录后投票
   发表时间:2008-04-08  
楼主同志,你这是哲学问题,所谓各花入各眼

孟岩有篇谈ruby/python/etc.的文章推荐你读一读
0 请登录后投票
   发表时间:2008-04-08  
[quote]听你说用Java似乎更简单, 是真的吗? 写一个j2ee应用起码要用至少三个框架, 就说ssh, 你需要同时研究struts, hibernate, spring吧? 光一个hibernate你要吃透就够你受的. 起码比起java来你就整天抱着"敏捷web开发这本书"就行了. rails2.0出来了, 并不代表你就真需要里面的新特性,如果真的需要,那就应该研究一下它,难到你等着天上掉馅饼? 别的高深的话我也说不出来, 总之是用了rails一段时间再也不想回到java了. [/quote] 为啥要Struts/hibernate/spring?少了一个就不能写程序了不成? 换掉其中一个会出人命不? 天天黏在这三个东西上自然是累,谁逼你用这三个了?
0 请登录后投票
   发表时间:2008-04-08  
引用
为啥要Struts/hibernate/spring?少了一个就不能写程序了不成?换掉其中一个会出人命不? 天天黏在这三个东西上自然是累,谁逼你用这三个了?
请你看清楚, 我不是在说一定要用ssh, 我是举一个例子, 是说java的framework更多, 要完成一个j2ee应用通常要几个framework的组合, 所以学习的东西更多, 同时资源也分散到不同的地方. BTW, 我没有天天粘在这三个东西上,我天天粘在rails上. 你说天天粘在"这三个东西上自然是累", 那么你天天粘在什么上面?
0 请登录后投票
   发表时间:2008-04-08  
rubynroll 写道
“对于一门语言,如果你不能体会到这种的美,那么你肯定不会习惯它。


未必吧,编程语言不成熟的远远要比成熟的多
0 请登录后投票
   发表时间:2008-04-09  
既然讨厌,则可有如下选择:
     1、改变它
     2、放弃它
     3、适应它
     4、创造新的

语言级别的总是“工业”的,总是和工作在一起……
0 请登录后投票
   发表时间:2008-04-09  
toostupid 写道
dennis_zane 写道
楼主适合写八股文,仅此而已。各有所好吧。


为什么javaeye有如此多尖酸刻薄的程序员?


Easy, easy...
0 请登录后投票
   发表时间:2008-04-09  
toostupid 写道
dennis_zane 写道
楼主适合写八股文,仅此而已。各有所好吧。


为什么javaeye有如此多尖酸刻薄的程序员?


惭愧啊,说了句“楼主适合写八股文”就成了尖酸刻薄了?我只是认为如果你不喜欢Ruby,那么就远离它,自有喜欢它的在人用。这样的帖子很容易沦为语言之争,而这样的争论通常情况下都是毫无营养,而且根本就没办法得出什么结论
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics