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

我喜欢Ruby的原因

浏览 68479 次
精华帖 (0) :: 良好帖 (12) :: 新手帖 (0) :: 隐藏帖 (2)
作者 正文
   发表时间:2008-04-16  
ltian 写道
gigix 写道
JBeans 写道
代码什么都说明不了~ruby本身就是一门动态语言~其自身的动态特性决定了一定程度上存在很大的灵活性~相比较而言javascript更是如此~拿精巧的动态特性去比较静态语言本身的一板一眼的写法没有任何意义~

一行代码干完的事情要写十行,你说有没有意义?

成功的软件项目开发中,代码所占的工作量并不大。 所以即使省几行代码也没多大意义,另外,由此可能会产生大量的维护成本。动态语言,在WEB客户端开发中能发挥作用,服务器端的业务逻辑层还是靠静态语言比较放心。

首先这句就是扯淡。软件的价值链上最主要的一部分就是编码,代码都不重要我就不知道还有什么重要。维护成本,huh?维护难道不是在代码上工作?难道不是代码越少越容易维护,反而是代码多了容易维护?说什么Java一板一眼规范严格,我就奇了怪了,怎么我每每看到的都是遗留系统里Java代码乱七八糟没法维护呢?是我运气太背,还是所谓一板一眼规范严格根本就是想象出来的呢?
5 请登录后投票
   发表时间:2008-04-16  
ltian 写道
“软件的价值链上最主要的一部分就是编码”这样的提法才是扯淡,不管哪个大师说的,都是有很大的问题。我只能说,这个观点适合于功能简单的小软件。

(耸肩)
你去随便找一个软件项目,统计在上面耗费的所有成本,然后看看一个软件的成本结构是怎样的
0 请登录后投票
   发表时间:2008-04-17  
引用
这在一个比较大的系统中,某程序员在某处为一个对象添加了动态属性,而其他程序员不知道,他也想添加这么一个名字的属性,但是意义和用途完全不同,这就是问题之所在。


在Rails框架下面编程,你要是给一个model对象增加动态属性,一定会在这个model的源代码里面添加你的code(当然,如果你吃饱了撑的,非自己弄一个文件去瞎改,然后把这个文件require到environment.rb里面来,就当我没回过这个帖子),如果其他程序员也要干这件事情的时候,当他打开这个model的源代码,我假设他眼睛的视力在正常范围内,他必然不会看不到前面程序员已经添加的动态属性。于是我请问,你所谓的问题究竟何在呢?是程序员的视力问题,还是程序员的智商问题?

0 请登录后投票
   发表时间:2008-04-17  
gigix 写道
ltian 写道
“软件的价值链上最主要的一部分就是编码”这样的提法才是扯淡,不管哪个大师说的,都是有很大的问题。我只能说,这个观点适合于功能简单的小软件。

(耸肩)
你去随便找一个软件项目,统计在上面耗费的所有成本,然后看看一个软件的成本结构是怎样的

我们做一个不大不小的项目,前期需求、设计大概要花两三个月,而主要功能代码开发就两三个星期而已,剩下的N多个月就是在不停的测试、bug修复、功能补充、用户反馈。。。。应该也算是编码的一部分吧,不过很多时候都是需求做的有问题,编码所占比重貌似并不大。。。
0 请登录后投票
   发表时间:2008-04-17  
ltian 写道
我不知道你的Rails框架是什么样子,但是我想说的是,能保证对这个model的所有操作都能封装在一个文件中吗?就所能锋到一个文件中,那么代码行数要有多少呢?我想这个本不关视力问题,而是关乎精力问题。如果一个程序员要开发程序的时候都要把前面别人的每行代码都过目一遍,以发现是否在某行中添加了某个属性,我看那才吃饱了是撑的。如果我说的不对,就当我没说。

过去四十年的历史已经证明你没有办法保证垃圾程序员不把项目搞得一团糟
大致了解一下Rails再来发表关于Ruby的评论可以帮助很多人节约看你废话的时间
0 请登录后投票
   发表时间:2008-04-17  
ltian 写道
gigix 写道
ltian 写道
我不知道你的Rails框架是什么样子,但是我想说的是,能保证对这个model的所有操作都能封装在一个文件中吗?就所能锋到一个文件中,那么代码行数要有多少呢?我想这个本不关视力问题,而是关乎精力问题。如果一个程序员要开发程序的时候都要把前面别人的每行代码都过目一遍,以发现是否在某行中添加了某个属性,我看那才吃饱了是撑的。如果我说的不对,就当我没说。

过去四十年的历史已经证明你没有办法保证垃圾程序员不把项目搞得一团糟
大致了解一下Rails再来发表关于Ruby的评论可以帮助很多人节约看你废话的时间


我没根本就没提Rails这个东西,我对这个语言不感兴趣,
另外您也别提40年的血泪史,好像40年来人类的软件事业一塌糊涂,根本没成就,于是乎,ROR这个这个拯救人类软件事业的语言或者平台诞生了。
我是基于对As3这种类似的动态语言的了解来讲这些存在的可导致程序难以维护的问题的。你说不存在,那当然好了。你去玩你的 Ruby,我也没时间看你在这里废话。


Rails是基于ruby语言的一个WEB框架,我想你是笔误。
对不了解的东西做结论式的评论,是我十分反感的。因为从哲学的空对空的角度,任何一门语言/框架,或它的任何一个特性,都会有所取舍,有好坏两方面,"都有它的适用之处". 但如果最终结论是"比较它们没有意义",或者不加了解的做结论,都是有违专业精神的.
AS3在我的了解中,更像java语言(十分像),而跟ruby相去甚远. 这里讨论的是ruby,所以类比AS3可以,但绝不是充份条件.
关于ruby/rails哪些好哪些不好的讨论,我一直保持兴趣,因为在我们使用rails的工作当中,确实发现一些问题. 但令人失望的是,很多参加讨论的人发表的言之凿凿的结论,在我们工作当中或者正好不是问题而是优势,或者是个大不了的问题。
我希望的是跟有实践经验的人互相交流,却每每最终发现是给人解释,事情不是这样,是那样的,等等等等,而且是对一个没有什么了解却言之凿凿的人。
太令我失望了,太令我失望了,呼呼,唉唉~
0 请登录后投票
   发表时间:2008-04-17  
我喜欢 ruby
0 请登录后投票
   发表时间:2008-04-17  
关于这个问题我一直是这么理解的:

无论是静态语言或动态语言,在存在『垃圾程序员』的情况下,一样能写出不容易维护的烂代码。
而使用动态语言,更容易进行迭代开发,实现重构和自动化测试。

在没有编译器约束所谓“不知什么地方添加的属性”是否存在并互相覆盖的问题的现实下,
况且,在需求变化迅速和维护工作繁复的现实下,
自动化测试是必须的。

动态语言是有适合动态语言的开发理念和开发方法的。
一直认为一种语言所包含的外延远远超出该语言本身。
忽略这些外延而去反对一种语言,我认为是不够公允的。


试想,如果开发一个JAVA工程的时候,不去划分DAO,Serivce,Action等诸多层面,完全凭藉个人喜好去编写代码,代码难道就规范且整齐了么?

静态语言仅仅在代码层次上增添了一些约束,能够阻止思维的混乱么?


很多人对动态语言的一个极大的误解就是,动态语言是过度自由且几乎没有方法在软件工程中加以约束的。


而许多框架,成熟的库的出现正在有力地对此进行回击。

在进行了许多静态语言的最佳实践的基础上,带着有色眼镜来看待动态语言。
而并没有试图深入了解一些东西。这种态度并非科学辩证的,我想。
0 请登录后投票
   发表时间:2008-04-17  
ltian 写道

我不知道你的Rails框架是什么样子,但是我想说的是,能保证对这个model的所有操作都能封装在一个文件中吗?就所能锋到一个文件中,那么代码行数要有多少呢?我想这个本不关视力问题,而是关乎精力问题。如果一个程序员要开发程序的时候都要把前面别人的每行代码都过目一遍,以发现是否在某行中添加了某个属性,我看那才吃饱了是撑的。如果我说的不对,就当我没说。


原来你真的是没有Rails开发经验,难怪说出来的话这么离谱,可以理解了。

一个model的操作是肯定会写在这个源代码文件里面的。而且你不了解ruby本身表达能力强,很多事情都只需要写一两行代码,所以代码行数再多也不会比Java多吧。更何况,如果这个model的职责太大的话,说明就不适合放在这个对象里面,应该分离到其他对象里面去了,听说过单一职责原则吗?

我给你一个实际点的例子,JavaEye网站源代码50多个model当中,代码行数最多的model文件也不过224行,你程序员要多娇气,连200多行的代码过目一遍都做不到?那Java程序员写的源代码动辄一个文件几千行,你还不得跳楼?
0 请登录后投票
   发表时间:2008-04-17  
ltian 写道
robbin 写道
ltian 写道

我不知道你的Rails框架是什么样子,但是我想说的是,能保证对这个model的所有操作都能封装在一个文件中吗?就所能锋到一个文件中,那么代码行数要有多少呢?我想这个本不关视力问题,而是关乎精力问题。如果一个程序员要开发程序的时候都要把前面别人的每行代码都过目一遍,以发现是否在某行中添加了某个属性,我看那才吃饱了是撑的。如果我说的不对,就当我没说。


原来你真的是没有Rails开发经验,难怪说出来的话这么离谱,可以理解了。

一个model的操作是肯定会写在这个源代码文件里面的。而且你不了解ruby本身表达能力强,很多事情都只需要写一两行代码,所以代码行数再多也不会比Java多吧。更何况,如果这个model的职责太大的话,说明就不适合放在这个对象里面,应该分离到其他对象里面去了,听说过单一职责原则吗?

我给你一个实际点的例子,JavaEye网站源代码50多个model当中,代码行数最多的model文件也不过224行,你程序员要多娇气,连200多行的代码过目一遍都做不到?那Java程序员写的源代码动辄一个文件几千行,你还不得跳楼?


你说的有些道理,但是JavaEye网站源的用了50多个代码行数比较小的model能否具有广泛的代表性值得商榷,我不是做网站开发的,我的工作背景是开发基于B/S结构的电力行业软件,一个完整的电力管理信息系统要集成多达几十个子系统,都能做到您说的这样保证每个model不是很大,我心里没底。
另外我更觉得每个model文件也不过224行主要功劳应该归功于设计合理,这一点我是很佩服的,估计你的需求分析和设计的投入的精力不少!而规划设计合理的Java类文件也不会动辄上千行,因为面向对象中的单一职责原则也适合Java语言。
我目前使用Flex开发,用到的AS3据说也是动态语言,由于动态增加属性造成维护困难的问题,所以就说了一下。我不反对跟进先进的技术潮流,但是也希望里面存在的问题能够不被忽略,觉得有些方面的解释有些牵强,力度不够,所以就说了几句,可能存在误解,希望各位不要介意,尤其gigx,我们两个说话都很冲!也希望在ROR技术走在前面的弟兄继续努力,如果这东西真的在行业软件领域成熟了,还会向各位请教的。


刚统计了下我们系统,model文件共167个,共17759行。行数最多的那个很变态,有1167行。剩下还有5个超过500行的。这是个业务逻辑十分复杂的系统,表间关系之复杂超出想像(DB schema是我们WEB显示和底层运算两个team协作的最重要依据,也是为什么不用rails的db migration的原因)。你算一下会发现,平均每个文件的代码不到80行
这是rails stats的一部份,仅供参考:

+----------------------+-------+-------+---------+---------+-----+-------+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Models               | 17759 | 13439 |     169 |     771 |   4 |    15 |
+----------------------+-------+-------+---------+---------+-----+-------+

0 请登录后投票
论坛首页 编程语言技术版

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