2010-11-28 32 views
2

我想知道當我比較編程語言用於給定的工作項目時,我應該記住哪些具體問題。例如,我被告知像Prolog這樣的邏輯編程語言對於自然語言處理是很好的。我不確定爲什麼;我認爲這是事實,因爲專家這樣說,但我不知道引導他們得出結論的考慮。所以我在尋找一個簡單的啓發式問題,一個問題清單,我可以申請評估編程語言並能夠解釋我的決定,這樣我就可以說「語言X對Y有好處,因爲它確實是Z.」如何比較工作項目的編程語言?

回答

4

我知道找出哪種編程語言最適合給定問題的唯一方法就是了解大量的編程語言。畢竟,如果你不知道螺絲刀是否存在,當你遇到螺絲時你怎麼知道不要使用錘子?

不幸的是,有成千上萬(甚至幾萬)的編程語言,所以即使學習其中很大一部分也是不現實的。

但是,編程語言實現了範例。彼得·範羅伊的着名海報只列出了其中的34個。雖然他故意決定忽略幾個方面,包括任何與打字有關的方面,所以實際數字可能比這更高。但我們可以預計它會遠低於100.

雖然這仍然很多,但值得慶幸的是,範例並非原子,它們由概念組成。海報列出了大約十幾種(再次忽略打字和其他一些事情)。比範例少得多。

學習大部分概念是完全可行的。一旦你瞭解他們,你可以看看一個問題,看看哪些概念對建立解決方案有用。然後你看看哪些範例包含這些概念,哪些語言實現這些範例。選擇一個,學習它,使用它,解決問題。

既然你已經知道語言實現的概念(以及範例),你只需要學習語法,而不是語義。實際上並沒有很多不同的語法(C,C++,Objective-C,Objective-C++,D,Go,Java,C#,ECMAScript,PHP,Vala和其他許多語法都有相同的語法,例如, Smalltalk,Self,Newspeak和Objective-C,SML,OCaml和F#等等),所以很可能你會很快選擇它。 (此外,對於今天的現代IDE,無論如何都不是什麼問題。)

1

從你的團隊所熟悉的開始。儘管對於一個偉大的開發人員幾乎可以在短時間內完成幾乎所有語言的哲學,哲學有很多要說的,但有一個實際的一面是,如果您擁有大量的.Net或Java編碼器,那麼您是最好的從該基地開始服務。

現在,在這兩個堆棧中,您可以選擇諸如函數式編程(F#,Erlang等)以及您團隊最熟悉的運行時其他語言的選項。但它確實歸結爲文化,基礎設施以及(最重要的)團隊中個人開發人員的經驗和靈活性。

1

有幾個因素要考慮:

  • 你是什麼地方的專業知識?如果你有一個充滿C程序員的公司,可能沒有必要再培訓每個人來做Lisp程序員。
  • 你的圖書館是什麼?如果您有要使用的庫,請確保它們與您選擇的語言兼容。

如果您正在開始一個帶有廣泛選項的新項目,我建議您從應用程序域中抽取幾個示例問題。沒有太複雜的東西,但也不是微不足道的。然後,在每種候選語言中實施(或讓團隊中的某個人實施)這些樣本。然後,選擇一個清晰,簡單和適當的。

+0

並且不要讓Java開發人員用Java和C++等編寫實現。 – thejh 2010-11-28 20:03:09

3

需要牢記的一點是:如果您是X語言的專家,並且您被要求開發一個語言Z應該是理想的Y領域的程序,您是否可以通過撰寫在語言中你是一個專家,即使它不是(通過某些措施)對問題領域的理想?或者,通過首先學習一種新語言,你會更快更好地交付嗎?

我認爲你尋找一個簡單的啓發式是徒勞的。