給沒有"方向感"的人蔘考

語言聯合國
       當一個系統比較大的時候,使用混合語言編程是很常見的,因爲:
       每個語言都有適合使用的時機,一個大系統可以分成多個次系統或模塊,每個次系統都有不同的特質,適合採用不同的語言。
       大系統開發時,開發者的人數變多。每個人傾向於使用自己熟悉的語言和工具。
以我自己的例子來說,基於上面的考慮,我規劃的系統,同時使用C++、C#、REBOL、Lua,未來可能還會加入Erlang。我們用C++進行系統編程(處理低階的,和操作系統相關的部分),使用C#寫跨平臺的服務器(未來考慮用Erlang取代),使用REBOL寫解析器和編譯器,使用Lua作內部腳本語言。每個語言各適其所。
      使用混合語言的開發方式,另一個好處是程序員擅長什麼就用什麼。學習一個語言到精通的地步,需要很長的時間。我們無法要求自己團隊的程序員都能使用某個我所熟悉的語言,可以退而求其次,讓他們用自己最熟悉的語言,只要開發出來的東西符合我們規定即可。
      使用混合式語言開發,只要模塊切割得當,接口定義清楚,架構設計正確,那麼絕對是可行的。這是我的經驗之談。
      但是也請注意,混合多語言可能會導致維護難度的提高。當開發某模塊的人離職,且當初他所使用的語言沒有其它人會,這個時候麻煩就來了。
      混合多種語言開發系統,有可能要面對語言之間的阻抗(impedance)問題,就好像不同國家之間會有不同的文化隔閡一樣。好的系統設計應該要考慮到這一點,減少模塊之間的接觸點,設法讓語言之間的阻抗降到最低。
      我的建議
      如果你想培養一個全能的聯合國夢幻開發團隊,我的建議是要集合下面的語言人才:
 C:進行系統開發
 C++:進行COM與傳統的微軟技術開發
 C#:進行現代的微軟技術開發
 PHP:進行Web後端開發
 JavaScript:進行Web前端開發
 Objective-C:進行Mac或iPh-one開發
 Java:畢竟許多地方還是會用到Java
 Python:進行腳本開發
      如果有一支這樣的夢幻團隊,應該是任何軟件都能很快地開發出來吧!我想。
      2009年,估計全世界經濟都處於低谷,這個時候,身爲程序員的我們,更應該好好學習一兩個語言,爲未來做準備。我的建議是,如果你只會系統語言,就挑一個腳本語言學習;如果你只會腳本語言,就挑一個系統語言學習;如果你只會Procedure語言,就挑一個OO語言學習;如果你只會OO語言,就挑一個函數式語言學習;如果你只會靜態語言,就挑動態語言學習。如果你都會了就挑邏輯式語言(Prolog)學習。如果你是個怪胎,什麼都會了,連Prolog都會了,那麼就學習REBOL吧!
(本文來自《程序員》雜誌0902期)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章