2007年1月26日 星期五

超越Java(Beyond Java) - 4 (Java以外的語言)

書藉基本資料:超越Java(Beyond Java)

ch9討論其它語言,決定一個語言是否成為主流(或著說,取代Java),可分成話題性、時機、語言特性、殺手級應用來看,比方Smalltalk一直被認為是很美的語言,但30年過去仍未能成為主流,它的時機已過,未來也難以流行。Ruby興起很快,話題性夠、時機也對,語言特性好,近年來的Rails更是Web開發的殺手級應用,所以作者在本書花了大幅篇幅說明Ruby、說明Ruby on Rails,我經驗不足,看不懂Ruby更強的功能,不過寫個一陣子後會有所體會吧。

對語言有興趣的人,可以直接翻ch9看幾位專家的看法,很有意思。除了語言外,平台也需要討論,Ruby只是語言,不是平台,降低它的推廣力。提及Java時,或多或少在指JVM、J2EE、J2SE、J2ME,提及C#時也多少涉及.NET Framework、.NET Compact Framework。換句話說,我們說Java好時,其實同時指語言特性好(OOP、安全、規範多)和平台好(write once, run everywhere),JVM成功和重要的原因,可以參閱之前寫的”談JVM跨平台,卻不談scripting language跨平台的原因”

這代表其它語言也有機會參與這些優秀的平台,Microsoft一直積極(?)強調CLR(Common Language Runtime),Java也有些案例,但都不太成功,像是JythonJRuby,如果有組織積極推廣語言和Java平台、.NET平台整合,對這些語言是一大優勢。

下面節錄ch9一些有趣的內容:

Lisp

這是一個不簡單的傢伙。Lisp是世界級僅存的古老技術,人們不斷地重新發明或重新發現它,但是Lisp也是一大群家族,許多彼此不相容的設計和實踐,沒有任何一個看起來像是我們的家。當然,Common Lisp需要大修,但是由委員會來重新計計 Common Lisp 在此刻來說相當不恰當。Lisp需要一個仁慈的獨裁者,具有好的偉大的執行力,以及偉大行銷,才可能成功。
p168, by Steve Yegge 

作者另在p172提到 Lisp 的社群總由聰明的programmer組成,校園內也很流行,像MIT就強調用Lisp學習可以讓學生快地抽象思考。也許最後的語言都會回歸 Lisp,但Lisp太與眾不同,需要很多時間和精力學習。

PHP

2005 年最不可思議的一件事之一是,IBM 宣稱要支援 PHP,此舉無疑是針對意圖擁抱 PHP 的中小企業而來。
...
就和 Visual Basic 一樣,隨著開發者在錯誤的地方尋找簡單性,PHP 將會被利用在某些不適合的地方。
p170, by Bruce A.Tate (book author) 

相信許多人深有體會,我懷疑在資工學生裡,課餘寫PHP的機會搞不好比其它語言多,寫PHP是賺外快的最好機會。

Perl

某些 Perl 編程員寧願斷掉手指也不願意多打四個字元,才不管這些字元是否可以提升可讀性,畢竟難寫的程式應該也會難讀。
...
而 Perl 具有相當多火星文般的語法捷徑,簡直是神祕的溝通方式 (secret handshake )
...
說來有趣,但是對照起 Java 則是截然不同,還是別去用 Perl 吧 !
p170, by Bruce A.Tate (book author) 

這裡應該是比較開發大型多人專案的情況,有用過Perl的人都很享受快速用Perl解決瑣碎雜小事吧。

Smalltalk

早在 Java 尚未在 James Gosling (Java之父) 的眼中閃爍時,聰明的開發者就已經使用 Smalltalk建立成功的物件導向應用了。而「不是很聰明」的開發者用 Smalltalk 建立某些有史以來最醜的物件導向程式。
p171, by Bruce A.Tate (book author) 

作者認為Java的成功造成Smalltalk元氣大殺,它們都是良好的OOPL,Smalltalk語法特殊,主流的C++不願嘗試,選擇改良C++的Java則成為贏家。

Functional Language

用Haskell寫費氏數列(Fibonacci series):

fib 0 = 0 fib 1 = 1 fib n = fib (n-1) + fib(n-2)

Java

我沒說 Java 已死,或著 Ruby 即將接班,或著延續伺服器將會支配一切。我只知道:

  • 我現在很受傷,我的顧客也是。我愈來愈難叫我的顧客要滿意 Java 的一切。
  • ...

p174, by Bruce A.Tate (book author) 

讀了「Beyond Java」後,我覺得我又想學Common Lisp,但之前挑戰多次(包含Scheme在內)失敗,我真不懂為什麼Lisp要用這麼多括號,讀寫都很麻煩,最近會先玩Ruby和Haskell吧,哦,還有Python,別忘了Google內部喜歡用Python寫system management。

沒有留言:

張貼留言