最近的新歡: Ruby

前兩個禮拜都在忙一個project,寫了很多Python code,也因此想起一些跟Python有過的不愉快…。
話說我在高中參加國際科展時,當時的程式就是用Python寫的。而Python最令我不滿的,就是每次寫class method都要自己加self,
所有的member variable也都要用self.。此外,private甚至要加上__作開頭…。
對於有程式碼潔癖的我來說,這真是很惱人的限制。
上大學後,用的最多的程式語言是C++和Perl。
C++的語法一直是我最喜歡的,不用自己加this,沒有一堆奇怪的符號,有清楚的access control(private, protected)和class宣告。
Perl的語法雖然噁心,但可以用很短的code作完很多複雜的事(這也要感謝CPAN)。
但可惜Perl的OO寫法是一個讓我完全無法接受的污點,所以我實在不能眛著被詛咒的風險用Perl寫還需要給繼續別人看/維護的程式。
C++的語法雖然漂亮,但它實在太低階,沒有Perl/Python都有的list、hash、龐大的lib,作起事來就是麻煩許多。

就在我最近又拿Python出來時,心中的許多缺憾又一一浮現。
但前幾天,意外看到介紹Ruby on Rails的這段影片。我突然想起除了Python和Perl之外,還有Ruby這個語言啊!
(其實我大一時也曾看過Ruby,只是當時沒能力欣賞它的美..)

於是最近又開始重學Ruby。結果赫然發現,這不就是我朝思暮想的程式語言嗎!
語法簡單、乾淨、不用再寫self、不用再用__作private member,也有豐富的library…。
Perl6還沒正式現身前,我就來支持一下Ruby吧 😀

12 thoughts on “最近的新歡: Ruby

  1. C++ 的 STL 應該可以補償沒有 list/hash 的遺憾。
    要 regular expression?PCRE 有 C/C++ 版。:-p

    C++ 的問題目前大概就是,compiler 太爛,一堆人還在用 VC6,為了好用而寫的 code,拿到爛 compiler 上難保不出問題。而且寫 C/C++ 免不了會期待以後有機會可以在 embedded system 上跑,這下限制又更多了。

    但都不是語言的限制就是了。:-)

  2. STL是有list和hash(map), 但因為C++有強制的型別規定,
    造成C++的STL只有homogeneous container,
    而script lang的特點就是container中可以放入任何東西。
    這種本質上的差異,其實是種很大的限制。
    (BTW, 至於哪種好? 我覺得就是各有利弊了)

    至於compiler的問題對我來說反而不是問題..。
    因為我總是會感召周圍的人使用gcc,因此VC已經是我很久沒看到的東西了 😀

  3. 也曾經對 ruby 動念,不過看看 ruby 的程式庫列表長度,再看看 python 的程式庫列表長度,introduction 就看不下去了 :p

  4. 不妨看一下 RAA, Rubyforge之類的站台
    也有不算少的 packages可以用。

    ruby目前的問題是user base小
    所謂萬丈高樓平地起嘛,大概沒有一個語言是一開始就有幾千萬user的

    我喜歡 Ruby
    但從解決問題的角度來看, Perl 跟 Python 應該都比較實際(library size)

    那未來呢?
    看這陣子 RoR 能否成為殺手級應用
    可以的話,說不定 Ruby 就乘勢而起了

    Python是怎樣起來的??

  5. 雖然有不少project用Python開發,甚至也有Zope這個傳說中的killer application,
    但我一直沒感覺Python有起來的氣勢…。
    (也有可能是因為我認識的人幾乎都是Perl hacker…XD)

  6. Python 和 Fortran 的介面太棒了,在 Ruby 裡沒看到類似的。

    迴圈運算改用 Fortran 寫完以後,速度會差到兩三個數量級。

    一般性運算的話就不知道了。但用 Python 控制 Fortran 副程式,現在的感覺非常好。

    一方面也是程式還沒有大到會出現問題吧 🙂

  7. hey~~ 路過路過

    但可惜Perl的OO寫法是一個讓我完全無法接受的污點,所以我實在不能眛著被詛咒的風險用Perl寫還需要給繼續別人看/維護的程式。

    這句話實在太棒了:-p

    在Perl6還沒正式現身前,我就來支持一下Ruby吧

    可是Perl6可以讓人有乾淨的程式碼嗎….!?
    尤其是OO部分?

    CPAN實在太吸引人 但perl code真的太變態了!

  8. Hi vgod,

    homogeneous container? 我倒覺得這正是 C++ 的強處呢。當程式一大,不靠這個很難過活。

    真的有需要的話,靠 ::boost::shared_ptr 做一個簡單的「類 perl/php/python/javascript/…」的 class hierarchy,也不是難事。喔,對,還有 ::boost::any 可以用。

  9. C++用執行效率換取開發效率
    Script用開發效率換取執行效率

    我個人覺得C++最大的問題就是編譯速度太慢,不像script可以即寫即測,
    除此之外,好好運用STL就可以解決不少memory leak的問題,寫起來跟script
    一樣輕鬆,這也是script之所以寫起來很輕鬆的原因(自動記憶體管理)
    不過新版C++也要加入這部份…

    以往Delphi受歡迎就是因為在開發效率與執行效率間取得平衡點,現在來看
    反而越是支援標準C++的編譯器編譯的越慢…囧

    http://godspeedlee.myweb.hinet.net/

  10. 新版 C++ 加入自動記憶體管理!?
    如果真的發生了,那就是我該轉台的時候了。不過就我所知道,似乎沒這回事。
    C++ 最大的優點 (同時也被蠻多人罵的一點) 是 core language 很小,能用 library 支持的就不用 core language。
    這很明顯是一個可用 library support 做到的功能,沒必要改語言核心。

留言給我吧!