編程語言大比拼——誰的效率高

摘要:C、C++、Java這幾個屹立不倒的開發語言,如果以功能點作為單位的話,誰的效率最高呢?如果在項目初期就能確定功能點數量,那么就可以很好的預測項目完成時間。這一點是不是對你很有幫助呢?

一份6000個項目的比較結果表明:編程語言的選擇對項目進度有重大的影響。

我最近在開發者論壇上看到一個討論有關JVM語言生產力(編程效率)方面的問題,如果那些高效率的開發人員一旦離開了Java(無需處理語言的冗長),他們的編程效率會怎樣?會找到其他JVM語言來代替Java嗎?說實話,這完全是一個似是而非的要求,把簡潔轉化成生產力。簡潔和底層技術使人們有可能相信其他的技術成本——可讀性。另一個貢獻者——動態類型可以允許在運行時報錯并且會被靜態類型捕獲。一個給定語言的生產力(編程效率)是有許多因素決定的,冗長僅僅是其中之一,至于這是否是最大因素,目前還不確定。

語言生產力(編程效率)的衡量常常被視為一種藝術而不是科學工作。或許因此有人認為,它違背了精確測量這一標準并且有了失真方面的嫌疑。但是本文的作者Peter Hill帶領了一組研究人員在軟件工程上就硬件數據這一主題進行了研究。以功能點做為核心衡量單位,在項目的需求階段就開始測量功能點的數量,它對許多組件進行了測量,比如邏輯文件數量、接口文件、外部輸入、外部輸出和外部查詢。它是一種可以給35年以上軟件提供統一測量的一種方法。從本質上來講,它是基于可衡量的工件來估算功能總額的。一旦項目的功能點數量被確定,你就可以進行其他方面的衡量并且還可以與其他大致相同數量的項目進行比較。

Peter小組,ISBSG,一個非營利性的軟件研究小組,已經聚集了6000個項目,把功能點衡量的主要數據。從這些數據可以知道完成一個項目需要多少小時,然后在映射到項目所用語言上。下圖顯示了他們研究結果:

Language

Hours Per Function Point

ASP*

?????????? 0.61

Visual Basic

?????????? 0.85

Java

?????????? 10.6

SQL

?????????? 10.8

C++

?????????? 12.4

C

?????????? 13.0

C#

?????????? 15.5

PL/1

?????????? 14.2

COBOL

?????????? 16.8

ABAP

???????????19.9

*表示經典的ASP.用于進行比較(由ISBSG提供)

這個數字是無可爭議的。在表1上也似乎表明,高級語言比低層次語言是更有生產力的。然而,這一趨勢又自相矛盾的,語言設計主要是用于商業用途- COBOLABAP – 與通用編程語言相比,反而會降低(效率)生產力。Hill指出,語言并不是影響這些數字的唯一因素。項目類型(你肯定不希望同一項目里面摻雜多種語言,比如C和ASP)、團隊的規模與性質也會對上面的數字起著一定的作用。

盡管我希望C++C更具生產力并且希望Java也超過CC++,但是C#排在這幾個語言的最后仍讓我非常吃驚,我覺得它應該更接近Java,特別是它們可以被使用在相類似的項目中。但是它排在VB的下面似乎是理所當然的。

?

Hill是一個非常謹慎的家伙,他不會提供語言上統計數據,除非他有個可借鑒的大項目。所以我猜測在我們知道如何提升腳本語言或者Java替代方案出來之前,還需等一段時間。與此同時,如果你能準確評估項目功能點,那么你就可以參照上面這張表來預測項目完成時間啦!


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450818.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450818.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450818.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Hadoop之Flume詳解

1、日志采集框架Flume   1.1 Flume介紹     Flume是一個分布式、可靠、和高可用的海量日志采集、聚合和傳輸的系統。     Flume可以采集文件,socket數據包等各種形式源數據,又可以將采集到的數據輸出到HDFS、hbase、hive、     kafka等眾多…

搞懂Java的反射機制

搞懂Java的反射機制 1.什么是反射? java的反射機制是指可以在運行狀態下獲取類和對象的所有屬性和方法。 2.反射的作用? 1、在運行時獲取一個類/對象的成員變量和方法 2、在運行時創建一個類的對象 3、在運行時判斷一個對象是否屬于一個類 3.反射有哪些…

表單oninput和onchange事件區別

oninput事件是元素value發生變化是立刻觸發,而onchange是元素發生變化并且失去焦點時才會觸發。 轉載于:https://www.cnblogs.com/ykli/p/9565601.html

Struts2中<s:iterator>基本用法及示例

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Struts2中<s:iterator>基本用法及示例 Iterator用于遍歷集合&#xff08;java.util.Collection&#xff09;或枚舉值&#xff08;j…

如何使用postman做接口測試

1、get請求傳參 只要是get請求都可以在瀏覽器中直接發&#xff1a; 在訪問地址后面拼 ?keyvalue&keyvalue 例如&#xff1a;在瀏覽器中直接輸入訪問地址&#xff0c;后面直接拼需要傳給服務器的參數http://api.nnzhp.cn/api/user/stu_info?stu_name小黑2、post請求&…

【狂神說】分析前后端分離開源項目?

文章目錄1.如何分析開源項目項目簡介項目源碼2.觀察開源項目3.開源項目下載4.跑起來是第一步5.前后端分離項目固定套路6.如何找到一個開源項目1.如何分析開源項目 學習的方式&#xff1a; 不知道這個代碼怎么來的這個代碼跑不起來這個項目對我們有什么幫助&#xff0c;不會模…

設計公共API的六個注意事項

摘要&#xff1a;俗話說&#xff1a;“好東西就要貢獻出來和大家一起分享”&#xff0c;尤其是在互聯網業務高度發達的今天&#xff0c;如果你的創業公司提供了一項很酷的技術或者服務&#xff0c;并且其他用戶也非常喜歡該產品&#xff0c;在這種情況下&#xff0c;最好的解決…

go 交叉編譯

golang中windows交叉編譯 env GOOSlinux GOARCHamd64 go build .打包鏡像 FROM alpineMAINTAINER "congge"ADD ./casino_niuniu /usr/local/casino_niuniu/bin/casino_niuniu ADD ./templates /usr/loca/lcasino_niuniu/bin/templates ADD ./public /usr/local/casin…

IntelliJ Idea 2017 免費激活方法

見&#xff1a;https://www.cnblogs.com/suiyueqiannian/p/6754091.html 1. 到網站 http://idea.lanyus.com/ 獲取注冊碼。 2.填入下面的license server: http://intellij.mandroid.cn/   http://idea.imsxm.com/   http://idea.iteblog.com/key.php 以上方法驗證均可以

P3193 [HNOI2008]GT考試

傳送門 容易看出是道DP 考慮一位一位填數字 設 f [ i ] [ j ] 表示填到第 i 位&#xff0c;在不吉利串上匹配到第 j 位時不出現不吉利數字的方案數 設 g [ i ] [ j ] 表示不吉利串匹配到第 i 位&#xff0c;再添加一個數字&#xff0c;使串匹配到第 j 位的方案數 那么方程顯然為…

LeetCode刷題攻略

目錄 一、LeetCode簡介 二、刷leetcode的主要目的 三、常用的數據結構 四、常用的算法思想 五、選擇算法題 1、刷題選擇 2、刷題方法 方法一&#xff1a;順序法 方法二&#xff1a;標簽法 方法三&#xff1a;隨機法 方法四&#xff1a;必殺法 六、刷題攻略 TIP 1&…

SQLserver數據庫反編譯生成Hibernate實體類和映射文件

一、建立項目和sqlserver數據庫 eclipse&#xff0c;我使用的版本是neon3 二、Data Source Explorer 選擇OK 在data source Explorer的Database Connections 選擇New 填寫好General的連接信息 新建New Driver Definition 填寫完選擇OK 選擇剛才的Drivers Test Connetion測試 N…

最受歡迎的5大Linux發行版

摘要&#xff1a;要統計有多少人在使用那款Linux發行版幾乎是不可能的事情&#xff0c;但我們可以使用一些在線分析工具來大概地看看哪些Linux發行版更受歡迎。 Google Trends的數據顯示&#xff0c;Ubuntu用戶正在流向Mint&#xff0c;但依然在各方面都比其它Linux發行版更有優…

C#動態操作DataTable(新增行、列、查詢行、列等)

public void CreateTable(){//創建表DataTable dt new DataTable();//1、添加列dt.Columns.Add("Name", typeof(string)); //數據類型為 文本//2、通過列架構添加列DataColumn age new DataColumn("Age", typeof(Int32)); //數據類型為 整形DataColumn…

使用IntelliJ IDEA 配置Maven(入門)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 下載Maven 官方地址&#xff1a;http://maven.apache.org/download.cgi 解壓并新建一個本地倉庫文件夾 2.配置本地倉庫路徑 3.配…

[算法]不使用*、/、+、-、%操作符求一個數的1/3

摘要&#xff1a;算法一直是程序員進階的一道龍門&#xff0c;通常算法都是為了更高效地解決問題而創造的&#xff0c;但也有的只是出于學術性&#xff0c;并不在意其實際意義。這是近日在國外技術問答網站stackoverflow的一個熱門問題&#xff0c;不知道你能給出幾種解決方法&…

2022屆互聯網秋招備戰

文章目錄1、何為秋招&#xff1f;1.1應屆生身份1.2秋招、春招、校招1.3、社招、海投2.秋招信息如何獲取&#xff1f;3、如何備戰秋招&#xff1f;3.1、簡歷&#xff08;ps做簡歷&#xff09;3.2、筆試準備3.3、面試準備4、日常實習和暑假實習&#xff1f;1、春招≠暑期實習2、什…

php 兩變量值互換 方法

//方法一&#xff1a;$a "abc";$b"def";$a $a^$b;$b $b^$a;$a $a^$b;//方法二&#xff1a;list($a, $b) array($b, $a);//方法三&#xff1a;$a $a . $b;$b strlen( $b );$b substr( $a,0,(strlen($a)- $b ));$a substr( $a, strlen($b));//方法四&…

MySQL5.7 group by新特性,報錯1055

項目中本來使用的是mysql5.6進行開發&#xff0c;切換到5.7之后&#xff0c;突然發現原來的一些sql運行都報錯&#xff0c;錯誤編碼1055&#xff0c;錯誤信息和sql_mode中的“only_full_group_by“關&#xff0c;到網上看了原因&#xff0c;說是mysql5.7中only_full_group_by這…

IDEA中多行注釋及取消注釋快捷鍵

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、一次性添加多行注釋的快捷鍵 首先選中要注釋區域&#xff0c;然后 ctrl/ 這個是多行代碼分行注釋&#xff0c;每行一個注釋…