9/05/2006

Ruby,Python,Perl 中心思想的不同

Ruby,Python,Perl的中心思想都有不同
今天不比較他們的好壞,轉而討論中心思想的差異

Ruby


Ruby 的作者在接受訪問的時候提到
Often people, especially computer engineers, focus on the machines. They think, "By doing this, the machine will run faster. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves.

代表的意思是人們寫程式時不應該選擇了解機器做啥事情,以及怎麼做機器比較有效率
而應該考慮到 "人" 怎麼去想
人是比機器更高級的東西,應該要去思考該思考的東西
而不是將時間花在記憶體配置等等的問題上面
並且 Ruby 採用 the principle of least surprise (POLS),代表我們應該用機器應該照人們的意思去做,而不是機器常常給人 Surprise !!!

People are the masters. Machine are the slaves.

這就是Ruby最主要的中心思想,一切以人為本,方便人們思考為最重要的方向。
有些人形容讀 Ruby 就跟讀詩一樣,有些人覺得Ruby的文法很像英文
這些都是因為這個中心思想的原因。
Duck Typing 跟 Parallel Assignment 都是在此思想下的產物。
但是 Ruby 很重視 Perl 的 There is more than one way to do it. 的觀念
(因為人本來就是喜歡多變化的,這也是符合以人為本的中心思想)
所以他也提供許多不同的文法選擇。

Python

Python的中心思想,在由Tim Peters寫的python格言(稱為The Zen of Python)裡面寫為為:
There should be one-- and preferably only one --obvious way to do it.

它的作者有意的設計限制性很強的語法,使得不好的coding習慣(例如if語句的下一行不向右縮進)都不能通過compile。這樣有意的強制programmer養成良好的coding習慣。Python也因此被稱為是一門清晰的語言。因為它的作者在設計它的時候,中心思想是,對於一個特定的問題,只要有一種最好的方法來解決就好了。

另外Python在其他部分的設計上也堅持了清晰劃一的風格,這使得Python稱為一門易讀性、易維護性好,並且被大量用戶所歡迎的、用途廣泛的語言。

Perl

一個Perl程式設計師常常想起的Perl俗語是

Easy things should be easy, and hard things should be possible
代表著Perl 可以比其他語言更容易做到簡單的事情(因為有一堆符號@@!)

Perl語言的中心思想更可以集成為一句話

There's More Than One Way To Do It

代表著今天要做同一件事情,可以有很多種寫法。

同一行程式,Perl 通常都有兩種以上的寫法,一種是比較 dirty 但是比較迅速的方式,另一種是比較清晰好整理但是確比較慢的方式。通常在 Perl 當中,實現相同功能的程序代碼長度可以相差十倍。通常保持良好閱讀的coding習慣是很重要的,但是 Perl Programmer 通常為符合 Easy things should be easy的觀念,大家都選用 Easy way XD。

最能夠形容 Perl 的就是 駭客與畫家 裡面提到的拋棄式程式,那是一種Deadline將近,火燒眉頭時,利用 Perl 這種快速而方便的語言趕快做完事情,然後只用一次就忘了他。也正是因為Perl的靈活性和「過度」的簡化語法,也因此獲得了write-only的「美譽」,因為許多Perl程序的代碼令人難以閱讀,三個月過去了,自己也看不懂,只好重新寫一個XD


結論


我本身不太相信這些語言一開始開發的時候,就一定已經有這些中心思想。但是我相信這些語言的主導群組應該都是意氣相投的人,開發語言時,他們都是用心良苦的向自己心目中最好的方向去發展。到最後的結果大家也看到了,Programmer 在Coding時,會有意無意的被這些語言的中心思想所引導,產生了風格類似的 Code 。

至於我喜歡的思想呢?我是 Perl 出身的,很喜歡 Perl 的想法,但是我卻對 Perl 的 write-only 感到很麻煩。後來投身 Ruby ,對Ruby的以人為本想法感到相當的疑惑,真的有那麼神奇嗎?後來漸漸的發覺,我寫出來的code擁有簡單的結構,但是產生的效率跟可讀性非常的棒。並且 Ruby API 可以用猜的就猜出他的規律,不像 JAVA 還要 Documention 放在旁邊 =_= 。漸漸的,我好像稍微可以掌握 The Ruby Way ... 至於 Python ,我想喜歡 Perl 的人都很難去喜歡 Python 的感覺吧(這兩個中心思想是相對的)。

1 則留言:

匿名 提到...

發現一個小小的拼字錯誤:
Documentation <--> Documention