華文網

企業和程式師如何選擇合適的程式設計語言?

“任何不談使用場景的最佳程式設計語言都是耍流氓。”我們經常會聽到“201X年最佳的程式設計語言”、“程式師最應該學習的程式設計語言”、以及那句最著名的“PHP是最好的語言”......在沒有使用情境的情況下,

這些都沒有任何的參考意義。

為了能夠給更多處在迷茫期的程式師提供一些建議,我們將在多篇文章中從多個角度來分析程式設計語言的選擇和應用。本文會先講述一下程式設計語言的選擇成本以及選擇標準。

更改程式設計語言的成本

如果你有一個很大的代碼庫,那麼一般來說,你是不會輕易更換程式設計語言的。因為這樣做帶來的成本會非常大,

聘請新的開發人員、改變原有的基礎設施、學習最佳實踐......這樣的成本支出我們相信會讓大多數的公司望而卻步。

另外,除了以上成本的支出,往往我們還會忽略一種成本支出,那就是學習成本。雖然學習瞭解一門程式設計語言只需一到兩個月的時間,但是想要熟練掌握一門程式設計語言則需更長的時間,所以無論是從程式師還是從企業的角度來看,他們都傾向於選擇原有的程式設計語言。

在這種情況下,最好的程式設計語言一定是你現在正在使用的程式設計語言。

何時更改程式設計語言?

沒有任何一種語言是完美的,事實上每種語言是擴展時都會遇到一些問題。但是,將所有語言一視同仁,也是不公平的,畢竟當你有某些重要或者特殊需求的時候,有些語言的表現會特別突出。

保留原有程式設計語言有時也需成本支出

PHP到C++的轉換器—HipHop for PHP、PHP的未來—Hack、用於PHP和Hack的虛擬機器—HHVM。PHP的性能很好,所以很多企業會選擇保留使用,但是他們並不是完全沒有付出代價,例如,Facebook的內部代碼是用PHP開發的,其也投入成本發佈了新的程式設計語言—Hack。

選擇程式設計語言的標準

雖然我們認為世上沒有完美的程式設計語言,

但是對於某些場景和特定任務來說,是有更好的程式設計語言。所以我們認為可以制定一些標準來幫助程式師和企業選擇程式設計語言。

良好的技術素質

除了性能,程式設計語言必須具有良好的技術素質來滿足用戶需求。如果你的軟體包含有大量的併發,所以需要一種具有一流支援的程式設計語言。

例如,Twitter的程式設計語言選擇了Ruby,其LAMP模型不支援封裝,

所以很難建立獨立的獨立存儲或搜索服務。這是Ruby的缺點,但是Ruby也有專為其他東西設計的特性。技術素質指的不僅僅是你看到或者用到的,如語法,更多的是其在背後是如何實現的。

所以,在選擇程式設計語言時不要盲目相信程式設計語言的排名,而是要根據你的需求對所有的語言進行分析對比。假設現在有兩種程式設計語言分別是X和Y,X程式設計語言在使用者量達到500萬之後表現優秀,而Y語言在使用者不到500萬的時候,表現優秀且價格便宜,如果你一開始就選擇了X語言,可能它的使用成本非常高,你直接死在了通往500萬的路上。

程式設計語言的流行程度

流行的程式設計語言能夠幫你節省金錢和時間,尤其是對開源開發來說。假設你的公司是用PHP來開發的,那麼你就可以搭乘Facebook的順風車,使用Hack和HHVM等加快公司的發展。

如何判斷一個程式設計語言是否流行?

該語言的就業崗位數量;

搜尋引擎上該語言的搜索數量;

GitHub上該語言的專案數量

社區會發揮更多的作用

良好的社區有很多好處,例如,企業能夠更瞭解開發人員的思維方式,混社區的程式師往往具備更多非程式設計的技能、社區會企業招聘人才節約了更多的時間和人力成本......

PHP是門檻較低的程式設計語言,所以企業在招聘時對於應聘程式師的能力判斷可能會迷茫。這時,社區就發揮作用了,企業可以通過社區上他們的項目來判斷這個人的能力。而且並不是所有程式師都是學電腦出身的,他們的代碼可能並沒有那麼規範,社區的存在可以讓程式師的程式設計更加規範。

另外,程式設計語言一旦被社區接受,就會衍生出大量的庫,更利於程式設計語言的發展。

而Y語言在使用者不到500萬的時候,表現優秀且價格便宜,如果你一開始就選擇了X語言,可能它的使用成本非常高,你直接死在了通往500萬的路上。

程式設計語言的流行程度

流行的程式設計語言能夠幫你節省金錢和時間,尤其是對開源開發來說。假設你的公司是用PHP來開發的,那麼你就可以搭乘Facebook的順風車,使用Hack和HHVM等加快公司的發展。

如何判斷一個程式設計語言是否流行?

該語言的就業崗位數量;

搜尋引擎上該語言的搜索數量;

GitHub上該語言的專案數量

社區會發揮更多的作用

良好的社區有很多好處,例如,企業能夠更瞭解開發人員的思維方式,混社區的程式師往往具備更多非程式設計的技能、社區會企業招聘人才節約了更多的時間和人力成本......

PHP是門檻較低的程式設計語言,所以企業在招聘時對於應聘程式師的能力判斷可能會迷茫。這時,社區就發揮作用了,企業可以通過社區上他們的項目來判斷這個人的能力。而且並不是所有程式師都是學電腦出身的,他們的代碼可能並沒有那麼規範,社區的存在可以讓程式師的程式設計更加規範。

另外,程式設計語言一旦被社區接受,就會衍生出大量的庫,更利於程式設計語言的發展。