Programming Languages Table-By Capers Jones

Programming Languages Table

Release 8.2, March 1996

By Capers Jones, Chairman, Software Productivity Research, Inc.

© Copyright 1997 by Software Productivity Research, Inc. All Rights Reserved.


What Is A Language Level?

As language levels go up, fewer statements to code one Function Point are required. For example, COBOL is a level 3 and requires about 105 statements per Function Point.

The numeric levels of various languages provide a convenient shortcut for converting size from one language to another. For example, if an application requires 1000 non-commentary COBOL statements (level 3), then it would take only 500 statements in a level 6 language (such as NATURAL) and only 250 statements in a level 12 language (such as OBJECTIVE C). As you can see, the average number of statements required is proportional to the levels of the various languages.

Do Language Levels Affect Productivity?

The correlation between the level of a language and development productivity is not linear. For most large software projects, coding amounts to only about 30 percent of the effort.

Assume a program is written in a language that is twice the level of a similar program, for instance level 6 versus level 3. In this example, the coding effort might be reduced by 50 percent. But the total project might be improved by only 15 percent, since coding only comprised 30 percent of the original effort. Double the level of the language again to a level 12. That will only give an additional 7.5 percent net savings. Once again, coding is halved. But coding is not a major factor for very high level languages.

More accurate economic productivity rates can be gained by examining the average monthly Function Point production rates associated with various language levels. Table 1 looks at how language levels affect productivity.


Table 1. Language Level Relationship to Productivity

 
      
< br >
4 - 8 10 to 20 Function Points
< br >
9 - 15 16 to 23 Function Points
< br >
16 - 23 15 to 30 Function Points
< br >
24 - 55 30 to 50 Function Points
< br >
Above 55 40 to 100 Function Points
< br >

What Is The Basis For Language Levels?

The languages and levels in Table 2 were gathered in four ways.

  • Counting Function Points and Source Code
  • Counting Source Code
  • Inspecting Source Code
  • Researching Languages
Counting Function Points And Source Code

Actual counts of Function Points and source code statements were performed. Samples of counting Function Points and source code statements were done on Ada, several BASIC dialects, COBOL, PASCAL, and PL/I.

Counting Source Code

Source code statements were counted, then compared to the size of the same program in languages of known levels. Assembly, APL, C, OBJECTIVE C, FORTH, FORTRAN, LISP, PILOT, and PROLOG are languages that produce the same source code count as COBOL. So code sizes were compared to the known quantity of COBOL source code.

Inspecting Source Code

Source code inspection for common applications was done. Then the volume of code for the application in a measured language was hypothesized. ACTOR, CLARION, and TRUE BASIC are examples of languages that were inspected and their levels hypothesized by subjective means.

Researching Languages

Research was done by reading descriptions and genealogies of languages and making an educated guess as to their levels. KL, CLOS, TWAICE, and FASBOL are examples of languages that were assigned tentative levels merely from descriptions of the language, rather than from actual counts.

For spreadsheets the ordinary concepts of a language do not apply. In this case, formulas, labels, and constants were considered to be statements.


List Of Programming Languages

As of 1996, there were more than 500 languages and major dialects of languages available to software practitioners. Table 2 lists the most common of them in what is considered version 7 of the SPR Programming Languages Table.


Table 2. Programming Languages and Levels

LANGUAGELEVELAVERAGE SOURCE STATEMENTS PER FUNCTION POINT
1032/AF20.0016
1st Generation default1.00320
2nd Generation default3.00107
3rd Generation default4.0080
4th Generation default16.0020
5th Generation default70.005
AAS Macro3.5091
ABAP/420.0016
ACCEL17.0019
Access8.5038
ACTOR15.0021
Acumen11.5028
Ada 834.5071
Ada 956.5049
ADR/DL8.0040
ADR/IDEAL/PDL16.0020
ADS/Batch16.0020
ADS/Online16.0020
AI shell default6.5049
AI SHELLS6.5049
ALGOL 683.00107
ALGOL W3.00107
AMBUSH10.0032
AML6.5049
AMPPL II5.0064
ANSI BASIC5.0064
ANSI COBOL 743.00107
ANSI COBOL 853.5091
ANSI SQL25.0013
ANSWER/DB25.0013
APL 360/37010.0032
APL default10.0032
APL*PLUS10.0032
APPLESOFT BASIC2.50128
Application Builder16.0020
Application Manager9.0036
APS19.0017
APT4.5071
APTools16.0020
ARC6.5049
Ariel3.00107
ARITY6.5049
Arity PROLOG5.0064
ART6.5049
ART-IM7.0046
ART Enterprise7.0046
Artemis8.0040
AS/SET17.0019
ASI/INQUIRY25.0013
ASK Windows7.0046
Assembly (Basic)1.00320
Assembly (Macro)1.50213
Associative default5.0064
Autocoder1.00320
awk15.0021
Aztec C2.50128
BALM3.00107
BASE SAS6.0053
BASIC3.00107
BASIC A2.50128
Basic assembly1.00320
Berkeley PASCAL3.5091
BETTER BASIC3.5091
BLISS3.00107
BMSGEN9.0036
BOEINGCALC50.006
BTEQ25.0013
C2.50128
C Set 23.5091
C++6.0053
C86Plus2.50128
CA-dBFast8.0040
CA-EARL11.5028
CAST6.5049
CBASIC3.5091
CDADL16.0020
CELLSIM7.0046
Centerline C++6.0053
CHILI3.00107
CHILL3.00107
CICS7.0046
CLARION5.5058
CLASCAL4.0080
CLI10.0032
CLIPPER17.0019
CLIPPER DB8.0040
CLOS15.0021
CLOUT8.0040
CMS23.00107
CMSGEN17.0019
COBOL3.00107
COBOL II3.00107
Cobol/4003.5091
COBRA16.0020
CodeCenter9.0036
Cofac9.0036
COGEN9.0036
COGNOS9.0036
COGO4.5071
COMAL4.0080
COMIT II5.0064
Common LISP5.0064
Concurrent PASCAL4.0080
CONNIVER5.0064
CORAL 663.00107
CORVET17.0019
CorVision22.0015
CPL2.00160
Crystal Reports16.0020
CSL6.5049
CSP6.0053
CSSL7.0046
CULPRIT25.0013
CxPERT6.5049
CYGNET17.0019
Data base default8.0040
Dataflex8.0040
Datatrieve16.0020
dBase III8.0040
dBase IV9.0036
DCL1.50213
DEC-RALLY8.0040
Decision support default9.0036
DELPHI11.0029
DL/18.0040
DNA-417.0019
DOS Batch Files2.50128
DSP Assembly2.00160
DTABL7.0046
DTIPT7.0046
DYANA4.5071
DYNAMO-III7.0046
EASEL11.0029
EASY6.5049
EASYTRIEVE +25.0013
Eclipse6.5049
ED-Scheme 3.46.0053
EDA/SQL27.0012
EIFFEL15.0021
ENFORM7.0046
English-based default6.0053
Ensemble11.0029
EPOS16.0020
Erlang8.0040
ESF8.0040
ESPADVISOR6.5049
ESPL/I4.5071
EUCLID3.00107
EXCEL 1-251.006
EXCEL 3-455.006
EXCEL 557.006
EXPRESS9.0036
EXSYS6.5049
Extended Common LISP5.7556
EZNOMAD9.0036
Facets16.0020
FactoryLink IV11.0029
FAME9.0036
FileMaker Pro9.0036
FLAVORS11.0029
FLEX7.0046
FlexGen11.0029
FOCUS8.0040
FOIL6.0053
Forte18.0018
FORTH5.0064
FORTRAN 662.50128
FORTRAN 773.00107
FORTRAN 904.0080
FORTRAN 954.5071
FORTRAN3.00107
FORTRAN II2.50128
Foundation11.0029
FOXPRO 18.0040
FOXPRO 2.59.5034
FRAMEWORK50.006
G26.5049
GAMMA20.0016
Genascript12.0027
GENER/OL25.0013
GENEXUS21.0015
GENIFER17.0019
GeODE 2.020.0016
GFA Basic9.5034
GML7.0046
Golden Common LISP5.0064
GPSS7.0046
GUEST11.5028
Guru6.5049
GW BASIC3.2598
Haskell8.5038
High C2.50128
HLEVEL5.5058
HP BASIC2.50128
HTML 2.020.0016
HTML 3.022.0015
Huron20.0016
IBM ADF I16.0020
IBM ADF II18.0018
IBM Advanced BASIC3.2598
IBM CICS/VS8.0040
IBM Compiled BASIC3.5091
IBM VS COBOL3.00107
IBM VS COBOL II3.5091
ICES4.5071
ICON4.0080
IDMS8.0040
IEF23.0014
IEW23.0014
IFPS/PLUS
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值