2013年1月20日 星期日

程式語言分析



這篇文章是當初我找工作時,履歷的附加檔案。基本上只是我個人的主觀意見。每種語言都有各自的愛好者,且每個人的偏好也不一定相同。選擇自己最喜歡的語言即可。




變數分析(指區域變數、全域變數等分析):
  1. 這部分ruby做得比較好,他強制@@開頭為類別變數,@開頭為實體變數等。個人認為此種設計較優。
  2. python寫法不像ruby那麼直觀且簡潔,例如實體變數前要加self.、類別變數要加類別名.。python全域變數有個地雷,要在function給新值到全域變數要先加global。
  3. c、c++、java、go命名上就沒有區別,只能要求程式設計師想成習慣自己在前面加特殊字串。
  4. tcl則是利用upvar、uplevel、global等自進行變數視野的分隔。細節不清楚。
  5. perl的開頭字元則是區分一個或者一個陣列等。
  6. php則是每個變數前都要加$字號,太過沒意義。
  7. 有人說過,好的設計就是讓使用不要用腦。ruby的設計可以讓使用者清楚知道用的變數是什麼,而c語言等則需要程式設計師自己去追蹤或建立命名習慣。python寫法太冗長。

迴圈分析:
  1. go語言的迴圈設計有點極端,只有一種形式。for而已。
  2. java、c、c++迴圈相似性過高。
  3. ruby、perl則過多迴圈。
  4. python的迴圈形式則分為兩種,一種while一種for,for是拿來列舉用的。個人偏好這種。
  5. 迴圈形式很多種有助於語意表達,但是太多形式會增加程式設計師的負擔。
多型分析:
  1. c++、java的多型則是建立在繼承,要有相同的祖先才能多型。
  2. go、python則是要求有我要的方法即可
  3. 前者的缺點是很難一開始設計就設計正確,改一改可能又改錯。後者則是可能擁有相同名字函數,卻又不同語意,而導致錯誤。
  4. 後者也沒辦法接受不同方法名字,但是擁有相同語意的物件。而前者因為在繼承時強制規定名字,因此無此困擾。

沒有留言:

張貼留言