programming languages - 各種語言的開發時間



programming-languages performance (10)

Web應用程序的語言/框架比較

Plat_Forms項目為Web應用程序提供了此類型的一些信息。

有三項研究具有不同的任務(2007年,2011年,2012年完成),所有以下格式:三個專業開發人員的幾個團隊在兩天內在受控條件下實施相同的應用程序。 它涵蓋了Java,Perl,PHP和Ruby,並且每種語言都有多個團隊。 評估報告的不僅僅是開發時間。

例如,包括迭代的結果

  • 語言和框架的經驗似乎比該框架更具相關性。
  • Java傾向於誘導團隊進行繁重的構建,而Perl則誘使他們製作出務實(並且非常方便)的構造。

包括迭代二的結果

  • Ruby on Rails在這類項目中的效率更高(由於其持續時間比成熟應用程序的全面開發更快速的原型設計)
  • 並且上述規則的一個例外是使用Symfony的一個團隊,這是一個PHP框架,它與Ruby on Rails具有相似的概念(但它下面仍然是非常不同的基本語言)。

查看http://www.plat-forms.org或在網上搜索“Plat_Forms”。 報告中有更多細節,特別是迭代1中的厚技術報告。

有沒有人知道在各種語言中開發相同應用程序需要多長時間的研究或基準? 我真的在尋找Java與C ++,但任何比較都會很有用。 我覺得代碼完成中有一節關於此,但我的副本正在運行。

編輯:

這個問題有很多有趣的答案,但似乎缺乏真正好的研究。 我在meta上就這個問題proposal了一個proposal



Pratt&Whitney是民用和軍用噴氣發動機的供應商,多年前對此進行了一項研究,但實際上沒有打算進行這項研究。

在20世紀90年代,他們繼續執行其他人所做的相同指標。 他們收集了大量關於噴氣發動機控制器項目的數據,包括時間卡數據。 他們嘎吱作響。 那些不得不扼殺數據的悶棍人注意到了結果:軍事項目統一的程序員生產率是民用項目的兩倍,缺陷密度是民用項目的四分之一。

這本身就很重要。 這意味著你只需要一半的程序員,而且你不會花太多時間來修復bug。 更重要的是,這是一個蘋果對蘋果的比較。 噴氣發動機控制器是噴氣發動機控制器。

然後他去尋找候選人的解釋。 所有常見的候選人:個人經驗,團隊規模,工具集,軟件流程,需求穩定性,一切都被淘汰出局,當人們看到這些項目的故事在兩側統一相同時,它們被排除在外。走道。 在一天結束時,只有一個統計上顯著的差異出現。

民用項目是用您能想到的每種語言編寫的。 軍事項目都是用阿達寫的。

在每一個案例中,與Pratt&Whitney的噴氣發動機控制器相比,對於其他所有人來說,使用Ada可以提高生產率和缺陷密度的四分之一。

我知道飛猴代碼會說些什麼。 “你可以用任何語言做好工作。” 從理論上講,這是事實。 然而,在實踐中,似乎至少在普惠公司,語言有所不同。

最後我聽說過,Pratt&Whitney高層管理人員下令所有噴氣發動機控制器項目都將在Ada完成。

不,我沒有引用。 沒有寫過紙。 我在這個故事中的消息來源是那些喋喋不休的悶棍。

順便說一下,這是在波音公司完成777之前,以及在777剎車分包商故事發生之前。 但這是另一個故事。


本文 (pdf)在C,C ++,Perl,Java,Perl,Python,Rexx和Tcl之間有一些基準(注意它是2000年)。

我認為一些常見的觀點是正確的(也在文章的某處):

The number of lines written per hour is independent of the language


大多數程序必須與其他框架接口。 選擇具有專門針對您要執行的操作的庫的語言往往是個好主意。 例如,您是否正在嘗試構建分佈式冗餘消息傳遞系統? 如果是這樣我會使用Erlang。 您是否正在嘗試創建一個快速而骯髒的數據驅動網站,使用Ruby和Rails。 你明白了。 實時DirectX,性能是關鍵,C ++ / C / Asm。

如果你正在寫一些基於算法的東西,我會看一下像Haskell這樣的函數式語言,儘管它有很高的學習曲線。


從ARPA和ONR資助的90年代初,我從少數資助的科學研究之一,我知道跨語言生產力,

我們描述了一個實驗的結果,其中幾個傳統的編程語言與功能語言Haskell一起用於原型海軍水面作戰中心(NSWC)對幾何區域服務器的要求。 由海軍選擇的委員會審查了由此產生的計劃和發展指標。 結果表明,Haskell原型開發時間明顯縮短,並且比...更簡潔,更容易理解。


意見:更重要的是對於給定的開發人員來說更快,例如你自己。 你習慣了,通常會更快。 如果你已經習慣了20年的C ++陷阱並且永遠不會跳過未初始化的變量,那麼對於任何人來說,這都會比Java快。

如果你記住了CreateWindowEx()的所有參數,它將比MFC或winforms更快。


根據Norvig說法,Lutz Prechelt在1999年10月的CACM中發表了這樣一篇文章:“將Java與C / C ++效率問題與人際問題進行比較”。

Norvig包含該文章的鏈接。 不幸的是,ACM雖然有一個位圖圖形宣稱他們的目標是“推動計算作為科學和專業”,但卻無法弄清楚如何在他們的網頁上保持穩定的鏈接,所以它現在只是404。 也許您當地的圖書館可以幫助您。


這個問題有點過時了。 僅僅基於語言選擇來關注開發時間的價值有限。 還有許多其他因素與語言本身俱有相同或更大的影響:

  1. 可用/使用的庫或框架。
  2. 所需的質量水平(即缺陷數)。
  3. 應用程序的類型(例如GUI,服務器,驅動程序等......)
  4. 所需的可維護性水平。
  5. 開發者使用該語言的經驗。
  6. 構建應用程序的平台或操作系統。

作為一個例子,許多人會說Java是構建企業(業務線)應用程序而不是C ++的更好選擇。 這通常不是因為語言本身,而是認為Java具有更好(或更成熟)的Web服務器和數據庫框架。 這可能是也可能不是,但這不是重點。

您甚至可能會發現在不同的操作系統或平台上使用相同的語言構建應用程序會產生大大不同的開發時間。 例如,在Linux上使用C ++構建GUI應用程序可能需要比使用C ++的基於Windows的GUI應用程序更長的時間,因為在Linux上可以使用不太廣泛和成熟的GUI庫(這也是值得商榷的)。