前兩個禮拜都在忙一個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吧 😀
C++ 的 STL 應該可以補償沒有 list/hash 的遺憾。
要 regular expression?PCRE 有 C/C++ 版。:-p
C++ 的問題目前大概就是,compiler 太爛,一堆人還在用 VC6,為了好用而寫的 code,拿到爛 compiler 上難保不出問題。而且寫 C/C++ 免不了會期待以後有機會可以在 embedded system 上跑,這下限制又更多了。
但都不是語言的限制就是了。:-)
STL是有list和hash(map), 但因為C++有強制的型別規定,
造成C++的STL只有homogeneous container,
而script lang的特點就是container中可以放入任何東西。
這種本質上的差異,其實是種很大的限制。
(BTW, 至於哪種好? 我覺得就是各有利弊了)
至於compiler的問題對我來說反而不是問題..。
因為我總是會感召周圍的人使用gcc,因此VC已經是我很久沒看到的東西了 😀
也曾經對 ruby 動念,不過看看 ruby 的程式庫列表長度,再看看 python 的程式庫列表長度,introduction 就看不下去了 :p
不妨看一下 RAA, Rubyforge之類的站台
也有不算少的 packages可以用。
ruby目前的問題是user base小
所謂萬丈高樓平地起嘛,大概沒有一個語言是一開始就有幾千萬user的
我喜歡 Ruby
但從解決問題的角度來看, Perl 跟 Python 應該都比較實際(library size)
那未來呢?
看這陣子 RoR 能否成為殺手級應用
可以的話,說不定 Ruby 就乘勢而起了
Python是怎樣起來的??
雖然有不少project用Python開發,甚至也有Zope這個傳說中的killer application,
但我一直沒感覺Python有起來的氣勢…。
(也有可能是因為我認識的人幾乎都是Perl hacker…XD)
Python 和 Fortran 的介面太棒了,在 Ruby 裡沒看到類似的。
迴圈運算改用 Fortran 寫完以後,速度會差到兩三個數量級。
一般性運算的話就不知道了。但用 Python 控制 Fortran 副程式,現在的感覺非常好。
一方面也是程式還沒有大到會出現問題吧 🙂
如果在意速度,為什麼不和C/C++連結呢? :p
因為好寫好呼叫,還可以把舊程式割過來用 😀
C/C++ 很好,不過 Fortran 是不能被丟棄的。
hey~~ 路過路過
但可惜Perl的OO寫法是一個讓我完全無法接受的污點,所以我實在不能眛著被詛咒的風險用Perl寫還需要給繼續別人看/維護的程式。
這句話實在太棒了:-p
在Perl6還沒正式現身前,我就來支持一下Ruby吧
可是Perl6可以讓人有乾淨的程式碼嗎….!?
尤其是OO部分?
CPAN實在太吸引人 但perl code真的太變態了!
Hi vgod,
homogeneous container? 我倒覺得這正是 C++ 的強處呢。當程式一大,不靠這個很難過活。
真的有需要的話,靠 ::boost::shared_ptr 做一個簡單的「類 perl/php/python/javascript/…」的 class hierarchy,也不是難事。喔,對,還有 ::boost::any 可以用。
C++用執行效率換取開發效率
Script用開發效率換取執行效率
我個人覺得C++最大的問題就是編譯速度太慢,不像script可以即寫即測,
除此之外,好好運用STL就可以解決不少memory leak的問題,寫起來跟script
一樣輕鬆,這也是script之所以寫起來很輕鬆的原因(自動記憶體管理)
不過新版C++也要加入這部份…
以往Delphi受歡迎就是因為在開發效率與執行效率間取得平衡點,現在來看
反而越是支援標準C++的編譯器編譯的越慢…囧
http://godspeedlee.myweb.hinet.net/
新版 C++ 加入自動記憶體管理!?
如果真的發生了,那就是我該轉台的時候了。不過就我所知道,似乎沒這回事。
C++ 最大的優點 (同時也被蠻多人罵的一點) 是 core language 很小,能用 library 支持的就不用 core language。
這很明顯是一個可用 library support 做到的功能,沒必要改語言核心。