選用那種編程語言作開發是一個非常復雜的問題。有時開發者是沒有選擇余地的,比如客戶可能出于某種原因規定項目必須采用某種語言,或者有決定權的經理因為自己有過使用某一種語言的經歷而要求自己所管理的開發人員使用這種語言開始項目。拋開這些情況,當你作為一個開發者,有權利選擇自己所使用的語言時,你會基于什么原則做出選擇?
在這個問題上的爭論非常多。經常有C++的擁護者提出學會了C++,就可以應付各種領域的問題?;蛘逬ava的使用者宣稱C++已經過時了。最近又看到有人倡導使用Lisp,因為其優美。
作為一個C++的長期使用者,我曾經用C++完成幾乎一切工作,從項目的開發,到一些很小的,但需要寫程序來完成的工作,如一些文件格式的轉換。長期積累的經驗使我了解C++語言的很多細節,我同樣熟悉C++的標準類庫,因此在對語言的掌握上不存在大的障礙。但我感到即便如此,開發效率仍舊比較低。
我的開發平臺一直主要是DOS,后來是Windows。Windows對開發者不夠友好的一點是它沒有提供一個好的Shell。如果你想使用一個批處理文件來完成稍為復雜一點的任務,比如一個項目的build,都將是一個挑戰。后來我安裝了cygwin,開始使用一些Unix工具,如tr,sed,lex,yaclearcase/" target="_blank" >cc等,我發現有些任務不再需要使用C++了。因為用其他的工具更方便。
Python語言進一步減少了我對C++的使用。盡管對我來說,Python是一門新的語言,但我發現,即便是把熟悉它所需要的時間算在內,有時用Python還是比C++效率要高。其中的一個原因在于Python有更多現成的庫。
同Java相比,C++在庫方面的弱點更加明顯。從XML處理到圖形用戶界面,Java都提供了功能強大的類庫。而C++盡管在某些方面有一些對應的庫,但C++語言的復雜性導致了編寫類庫的難度和使用類庫的難度。而類庫的缺乏就意味著必須要作一些重復性的工作,除非你編寫一些供自己使用的類庫。
開發工具的支持?Eclipse,IntelliJ Idea,JBuilder,NetBeans,這么多優秀的IDE使我不再想念Visual C++的IDE帶來的方便。更重要的是,Java的IDE通常提供了較強的Refactoring功能。 而Ant也使我減輕了對Shell的依賴。
但我仍然要使用C/C++。最近我參與了一個跟硬件有關的項目,硬件的firmware只能用C來寫(還好,不需要太多匯編)。
現在我對編程語言的選擇標準是:根據開發需要,選擇效率最高的。當然,維護的工作是要考慮在“效率”中的。