2007-01-19

程式漫談:如何選擇程式語言

堅守一種語言可以精化你的程式技巧 達到神乎其技的程式藝術家境界 但是作者文中有具關鍵的重點「如何在可攜性、程式易讀性、執行效率、穩定度、開發容易、功能性、易用性、使用空間中取捨才是重點。」甚至我喜歡他說的:踩在巨人的肩膀上,可以解決很多問題

確實如此 我認為每個人都必須經歷全身投入一項專精的語言中的過程 但是不要死守 這只是打地基而已 真正要來到神人的世界 必須要能以你的地基當主幹 去整合其他異質技術快速完成大家心目中的大樹 才能適時庇蔭你的使用者 而不辜負他們的殷殷期盼 [:)]

原文網址

其實這個問題被提出來很多次了,由於現在的程式語言越來越多樣化,傳統的第四代結構化的程式語言 (C/PASCAL/FORTRAN/RPG/COBOL),與新世代的物件化語言(C++/DELPHI/JAVA/.NET),再加上網頁伺服器用的 (PHP/JSP/ASP),一些傳統的 SCRIPT語言如SHELL SCRIPT/PERL SCRIPT,還有一些結合 DB 的變形如(POWER BUILDER/CENTURA)。

就我的想法而言,你可以設法用一種泛用的程式語言,加上一點其他的延伸的幫助,職場上有時就能使用利用這個工具解決大概 9成的問題。一般軟體公司的軟體由於不太可能馬上更換核心語言,所以通常都是延續舊的程式語言。

但是當要開發新的專案或模組,有時就會陷入如何選擇的困局,有時公司內清一色都是某種程式語言,引進新的程式語言的好處是可以利用該程式語言的特點,但是缺點是公司內是否有足夠的人才來熟悉該語言。

我無意去強調如C/C++ 的執行效率,Java的可攜性,Delphi的多樣化VCL ,.Net的強大功能等等,但是我的想法裡,公司內混用兩三種程式語言的好處是,某些時後即使第一選擇的程式語言難以完成,也可以藉由第二三種語言來補足。

至於人才的問題,可以藉由一些課程的訓練來補足,就像一般學生在學校念的,做的專題專案。跟工作時需要的軟體專案的內容,通常都會有些差異,學校不教的,還不是得自己學。

如何在可攜性、程式易讀性、執行效率、穩定度、開發容易、功能性、易用性、使用空間中取捨才是重點。就像很久以前我摘錄的淘金熱書中所寫的,這些考量點,在加強某些方面時,就會降低一些其他的特點。你不可能專案中樣樣考量都是第一,如何拿捏其中的分寸,才是專案經理人在早期專案開始時,應該考量的。

至於什麼現在電腦越來越快 ,所以某某語言就可以執行的很快的論點之類的,那個每個程式語言都你會有一樣的效應,那不是你因此採用這個語言的原因,好的演算法和結構在快速的程式語言可以改善更多,但是慢速的程式語言也會得到幫助。

一把粗大的鐵棍也能磨成鏽花針,如何選擇適當的開始,有時是專案最應該考慮的,一個正確而適合的工具可以加速很多開發的時間,踩在巨人的肩膀上,可以解決很多問題,願軟體同業共勉之。