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

我开始不喜欢ruby了

浏览 71870 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-10-05  
fireflyc 写道
好吧,好吧,为了证明我不是在说谎,维护我好孩子的形象;我决定忍痛去看上一眼ruby的代码。(估计今后一个星期我都要处于晕乎乎的状态……)
先看一下它被人家吹的最“优美”的部分,迭代器。

some_list.each do |this_item|
  # We're inside the block.
  # deal with this_item.
end

不知道大家什么感觉,这个愚蠢的竖线符号是怎么想到的?它太优美太漂亮了。还有个好听的名称叫做迭代器。真是太伟大了。
好吧,我上面里没有提到python是无敌的。但是我要用这个不无敌的python来和无敌的ruby做一下对比:
python中有一个map函数的东西,不妨看看。注意请使用pythonic的做法。也许你会喜欢清晰的表达式而不是所谓的简洁表达。

再来看看第二个例子:
x = 10
y = 11
z = if x < y
  true
else
  false
end
z # => true

哦,世界上最伟大的发明,伟大的if居然如此用…………太伟大了,对了,ruby有? :这个运算符号吗?诸位喜欢如此灵活或者说是多变,诡异的写法吗?你会选择哪一个?也许你会说是灵活,可是语言的灵活不是语法的如此多变。

好吧,这段代码估计是诸位最喜欢的一本书(我也很喜欢,除了它上面的该死的ruby代码。)
    session[:user_id] = nil
    if request.post?
      user = User.authenticate(params[:name], params[:password])
      if user
        session[:user_id] = user.id
        redirect_to(:action => "index")
      else
        flash.now[:notice] = "Invalid user/password combination"
      end
    end

好像正常了很多……这些代码正常了很多,可是不难发现那句伟大的if的写法,居然有一个可爱的尾巴,我不明白它为什么不是一个函数而是一个无聊的运算符(它叫做运算符吗?如果叫那么ruby该会有多少运算符啊?又有多少运算符是具有上下文不同意义的呢?)还有那个取数据的做法,key居然带上一个冒号~为什么呢?这可能无伤大雅,可是这样做的原因是什么呢?为了显示与众不同吗?

这段代码同样是上面那本书中的代码~(我喜欢的书,;-)~)
<% form_tag :action => 'create' do %>
  <%= render :partial => 'form' %>
  <%= submit_tag "Create" %>
<% end %>

观察一下……哦,真是伟大的做法,=>这样的运算符都有……而且还有可爱的冒号。我无话可说。

那个松本弘先生喜欢把代码写的像文章,所以会有如此多的关键字如此多的运算符号。可是这些古怪的关键字和可爱的符号只有他老人家记得住,因为这个是给他自己用的。除非你具有超强的自虐倾向否则你可能不会喜欢品味这些古怪的语法,记忆这些可爱的关键字,伟大的运算符号。

还是说那个小小的python,太小了,你居然不需要记忆什么关键字和符号,很没有挑战性;估计这就是很多人不喜欢的原因。太简单的东西显示不出自己的伟大。

最后是meta programming,这个东西是ruby的新伪装吗?哦,它奇怪的外表又有了一种新的解释。
最后我们歌颂伟大的ruby吧,真是它的普及让我们这些人得以保住了饭碗;我们可以继续写别人看不懂的代码,一直这样下去;我们将有源源不断的财源。歌颂ruby~热爱ruby……因为它的复杂和怪异让我们保住了饭碗。

 

1 第一个例子,ruby也有map函数,而且很常用,估计你不知道

 

2 你说那个冒号叫做标号变量,和字符串的区别简单说,标量无论出现多少次,在内存中只有一个引用,无疑比字符串效率高,估计这个你也不知道

 

3 => 是个符号,用来标识散列的,不是运算符!大哥,求你了,别胡扯了行不?

 

至于python,俺06年就用django做过项目,拜托不要以为就你知道行不。

“太小了,你居然不需要记忆什么关键字和符号,很没有挑战性”,“太简单的东西显示不出自己的伟大”,我估计你还没毕业

 

0 请登录后投票
   发表时间:2008-10-05  
map方法举例:

unless [@user, @city, @order].map(&:valid?).include?(false) 
     @user.save 
     @city.save 
     @order.save 
     redirect_to "/main/new" 
end
0 请登录后投票
   发表时间:2008-10-05  
1. 是的我确实不知道,可是ruby的那个map也叫做迭代器吗?那个map的用法是和python的一样吗?那是函数吗?
或许那些乱码里面还有个东西应该叫做代码块,真是不好意思。由于我确实没有毕业所以对这些比较模糊的概念实在是搞不清楚了,它名词太多了。

2. 如果是个字符串变量引用也是只有一个,如果是一个常量那么这儿是由编译器或者解释器优化的,可能也是一个引用。看到了,大家都是一个引用,没有什么特殊的。我不明白为什么它加上一个可爱的":"就有了一个好听的名字而且把这个大家都有的特征说成自己独有的。(哎呀,不知道我是不是又把名词搞混了~)

3. 哦,我突然意识到了那个以冒号开头的东西表示的是一个map,难道这个是在给map赋值吗?天啊,我知道现在还没有搞懂它的意思。后面的do和end难道就是传说中的代码块?你是用什么办法读懂它的呢?

   最后,~我说ruby的坏可是我只是在map的时候顺带提了一下python中有一个东西和这个类似,可是它的做法是个函数,而不是一个语法结构。早知道会攻击无辜的python我应该说php也是用函数达到同样的效果(或许会攻击PHP)或者别的什么东西………………

   我还要为python平一下反,为什么一提到python就是django呢?为什么一提到ruby就是ruby on rails呢?
   ruby的语法火星,晦涩这个大家认同吗?至少我认同ruby on rails的神奇和清新,但是我不能容忍一个火星的语法被吹嘘的神乎其神说什么这是简洁。
   python不是只有django一家,django也不是最好的实现。你只要愿意甚至可以用3分钟自己做一个框架。
   django是向ruby on rails学习其开发理念;但是为什么ruby不能向python学习平民一样的语法呢?为什么让我看到那种语法就想起来Drools呢?(这个规则引擎比起别的确实平民了很多……可是还是不够。)
  
   至于你老大哥抬出了“06年”和“做过项目”来压我,我只能抬出“02年”和“一直在玩”来对付了。没有办法,我没有毕业所以自然底气不足了。O(∩_∩)O哈哈~~~估计老大哥你是想说python需要记忆的东西也很多,同样需要查参考手册对吧?那么你不妨想一下python核心的东西有多少?如果你有编程经验几乎你10分钟就能熟悉python的语法。这点你不妨仔细想想是不是非常的小。(我承认写程序不可能只用最基本的东西,可是那是语法结构好不好。再变也只是库的变化而已。)

   ruby流氓语法一日不改我就会坚持自己的原则一日。坚持对ruby的鄙视。直到我有人有人能回答我ruby的语法不火星了,并给我确实的证据。
  
   顺带要给学生平一下反,好像很多人认为学生都是的话都是那么幼稚可笑,没有说服力对嘛?没有经验,对吗?可是那些熬了3、4年的人又如何呢?难道就有经验了嘛?经验=时间?还是经验=function(时间, 实践)呢?实践=做能卖钱的项目?还是实践=做项目呢?不许鄙视学生。即使我不是学生,我也曾经是个学生;而且对认为经验=时间的观点十分不占同。
0 请登录后投票
   发表时间:2008-10-05  
哈哈哈哈,只许你你鄙视ruby,就不许我鄙视你?
我比较奇怪的是,你觉得ruby不好,你不用就是了,你不用ruby, 一样有人用。
可以告诉你,做项目或者做产品,语言不是最重要的,做项目需求第一,做产品策划第一,而且还有很多附加的技术很有着举足轻重的作用,比如flex或者ajax,在或者数据库,这些都很重要。
客户不会关心你用什么语言,他只关心你能不能满足他的要求。

另外据我的观察,一般经常抱怨这不好,那不好的人,在公司一般不大受欢迎,希望你好自为之,多听多想,少信口开河,除非你有十足的把握。

话是重了点,只想让你明白,争论哪个语言好确实很无聊,我说完了,退出
0 请登录后投票
   发表时间:2008-10-05  
多谢老大哥的忠告。

   如果论项目那么就完全没有什么技术细节讨论了。如何管理才是成败的关键。这个也不在我的主题之内,我的主题是,ruby的语法怪异,楼主不喜欢很正常,这是明智之举。
   我重来不会抱怨公司让我用的东西不好,也从来不去轻易否定一个方案的可行性。我只陈述自己发现的利弊,给出自己的看法。我认为ruby的语法怪异,这个就像上面说的。大家认为它怪异吗?我认为它确实怪异,我还提出它应该把语法平民化。这些都是针对这个主题的一些细节的讨论。如果有一天我们公司真的神来之笔使用了ruby,那么我也没有什么好说的,我会埋头写代码,但是我会保留我对ruby的意见。
0 请登录后投票
   发表时间:2008-10-05  
fireflyc 写道
   如果论项目那么就完全没有什么技术细节讨论了。如何管理才是成败的关键。这个也不在我的主题之内,我的主题是,ruby的语法怪异,楼主不喜欢很正常,这是明智之举。

所谓怪异,很多时候也就是“我不熟悉”的换种说法而已
比如说两条下划线和缩进混用就会出错这种事情,其实对于不熟悉的人来说也就够怪异的了
对于一个明明看起来很怪异却偏偏有很多人玩得开心的东西,大抵有两种态度可选
你可以坚持认为它真的很怪异而玩它的人都是傻逼受虐狂,然后自己开心的哈哈笑
你也可以试着去了解为什么那些人对这么怪异的东西还能玩得这么开心,看看是不是有一些自己还不知道的新鲜玩意
所以喜欢哈哈笑的人继续哈哈笑好了,除了你自己没人会因此损失什么,这种娱乐世界的精神也挺好的
0 请登录后投票
   发表时间:2008-10-05  
fireflyc 写道
1. 是的我确实不知道,可是ruby的那个map也叫做迭代器吗?那个map的用法是和python的一样吗?那是函数吗?
或许那些乱码里面还有个东西应该叫做代码块,真是不好意思。由于我确实没有毕业所以对这些比较模糊的概念实在是搞不清楚了,它名词太多了。

2. 如果是个字符串变量引用也是只有一个,如果是一个常量那么这儿是由编译器或者解释器优化的,可能也是一个引用。看到了,大家都是一个引用,没有什么特殊的。我不明白为什么它加上一个可爱的":"就有了一个好听的名字而且把这个大家都有的特征说成自己独有的。(哎呀,不知道我是不是又把名词搞混了~)

3. 哦,我突然意识到了那个以冒号开头的东西表示的是一个map,难道这个是在给map赋值吗?天啊,我知道现在还没有搞懂它的意思。后面的do和end难道就是传说中的代码块?你是用什么办法读懂它的呢?

   最后,~我说ruby的坏可是我只是在map的时候顺带提了一下python中有一个东西和这个类似,可是它的做法是个函数,而不是一个语法结构。早知道会攻击无辜的python我应该说php也是用函数达到同样的效果(或许会攻击PHP)或者别的什么东西………………

   我还要为python平一下反,为什么一提到python就是django呢?为什么一提到ruby就是ruby on rails呢?
   ruby的语法火星,晦涩这个大家认同吗?至少我认同ruby on rails的神奇和清新,但是我不能容忍一个火星的语法被吹嘘的神乎其神说什么这是简洁。
   python不是只有django一家,django也不是最好的实现。你只要愿意甚至可以用3分钟自己做一个框架。
   django是向ruby on rails学习其开发理念;但是为什么ruby不能向python学习平民一样的语法呢?为什么让我看到那种语法就想起来Drools呢?(这个规则引擎比起别的确实平民了很多……可是还是不够。)
  
   至于你老大哥抬出了“06年”和“做过项目”来压我,我只能抬出“02年”和“一直在玩”来对付了。没有办法,我没有毕业所以自然底气不足了。O(∩_∩)O哈哈~~~估计老大哥你是想说python需要记忆的东西也很多,同样需要查参考手册对吧?那么你不妨想一下python核心的东西有多少?如果你有编程经验几乎你10分钟就能熟悉python的语法。这点你不妨仔细想想是不是非常的小。(我承认写程序不可能只用最基本的东西,可是那是语法结构好不好。再变也只是库的变化而已。)

   ruby流氓语法一日不改我就会坚持自己的原则一日。坚持对ruby的鄙视。直到我有人有人能回答我ruby的语法不火星了,并给我确实的证据。
  
   顺带要给学生平一下反,好像很多人认为学生都是的话都是那么幼稚可笑,没有说服力对嘛?没有经验,对吗?可是那些熬了3、4年的人又如何呢?难道就有经验了嘛?经验=时间?还是经验=function(时间, 实践)呢?实践=做能卖钱的项目?还是实践=做项目呢?不许鄙视学生。即使我不是学生,我也曾经是个学生;而且对认为经验=时间的观点十分不占同。

你是不是觉得说英文很变扭?你举的例子很没说服力,或者只能说明你的个人能力
要批评一样东西至少先要了解他吧,或者你已经是牛的不行了,瞟一眼就知道这个语言"语法火星"
说ruby魔幻,的确是,但c++又何尝不是呢
说ruby语法难懂,这简直就是搞笑了
0 请登录后投票
   发表时间:2008-10-05  
还争个P啊,连Ruby基础语法都不了解的人,还跟他争什么,不就来zhuangbility?到此为止了。
0 请登录后投票
论坛首页 编程语言技术版

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