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


LANGUAGE LEVEL        PRODUCTIVITY AVERAGE
                        PER STAFF MONTH
--------------      -------------------------
    1 - 3            5 to 10 Function Points
        
        
< 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/PLUS10.0032
IMPRS8.0040
INFORMIX8.0040
INGRES8.0040
INQUIRE25.0013
INSIGHT26.5049
INSTALL/120.0016
INTELLECT6.0053
INTERLISP5.5058
Interpreted BASIC3.00107
Interpreted C2.50128
IQLISP5.5058
IQRP25.0013
JANUS4.5071
JAVA6.0053
JCL1.45221
JOSS3.00107
JOVIAL3.00107
KAPPA8.0040
KBMS6.5049
KCL5.0064
KEE6.5049
Keyplus8.0040
KL5.0064
KLO5.0064
KNOWOL6.5049
KRL5.5058
KSH15.0021
Ladder Logic9.0036
LAMBIT/L5.0064
Lattice C2.50128
Liana2.50128
LILITH4.5071
LINC II23.0014
LISP5.0064
LOGLISP5.5058
LOOPS15.0021
LOTUS 123 DOS50.006
LOTUS Macros3.00107
LUCID 3D51.006
LYRIC6.0053
M20.0016
macFORTH5.0064
MACH18.0040
Machine language0.50640
Macro assembly1.50213
MAESTRO20.0016
MAGEC20.0016
MAGIK15.0021
MAKE15.0021
MANTIS8.0040
MAPPER6.0053
MARK IV8.0040
MARK V9.0036
MATHCAD60.005
MDL9.0036
MENTOR6.0053
MESA3.00107
Microfocus COBOL4.0080
microFORTH5.0064
Microsoft C2.50128
MicroStep16.0020
Miranda8.0040
Model 2048.5038
MODULA 24.0080
MOSAIC50.006
MS C ++ V. 76.0053
MS Compiled BASIC3.5091
MSL5.0064
muLISP5.0064
MUMPS17.0019
NASTRAN4.5071
NATURAL 16.0053
NATURAL 27.0046
NATURAL Construct13.0025
Natural language0.103200
NETRON/CAP17.0019
NEXPERT6.5049
NIAL6.5049
NOMAD28.0040
Non-procedural default9.0036
Notes VIP9.0036
Nroff6.0053
Object-Oriented default11.0029
OBJECT Assembler5.0064
Object LISP11.0029
Object LOGO11.0029
Object PASCAL11.0029
Object Star20.0016
Objective-C12.0027
ObjectVIEW13.0025
OGL4.0080
OMNIS 78.0040
OODL11.0029
OPS7.0046
OPS55.5058
ORACLE8.0040
Oracle Developer/200014.0023
Oscar3.00107
PACBASE22.0015
PACE8.0040
PARADOX/PAL9.0036
PASCAL3.5091
PC FOCUS9.0036
PDL Millenium15.0021
PDP-11 ADE6.0053
PERL15.0021
Persistance Object Builder15.0021
PILOT6.0053
PL/I4.0080
PL/M4.5071
PL/S3.5091
PLANIT6.0053
PLANNER5.0064
PLANPERFECT 145.007
PLATO6.0053
polyFORTH5.0064
POP5.5058
POPLOG5.5058
Power BASIC6.5049
PowerBuilder20.0016
POWERHOUSE23.0014
PPL (Plus)8.0040
Pro-C12.0027
PRO-IV5.5058
Problem-oriented default4.5071
Procedural default3.00107
Professional PASCAL3.5091
Program Generator default20.0016
PROGRESS V49.0036
PROLOG5.0064
PROSE3.00107
PROTEUS3.00107
QBasic5.5058
QBE25.0013
QMF22.0015
QNIAL6.5049
QUATTRO51.006
QUATTRO PRO51.006
Query default25.0013
QUICK BASIC 15.0064
QUICK BASIC 25.2561
QUICK BASIC 35.5058
Quick C2.50128
Quickbuild11.5028
QUIZ22.0015
RALLY8.0040
RAMIS II8.0040
RapidGen11.5028
RATFOR3.5091
RDB8.0040
REALIA7.0046
Realizer 1.08.0040
Realizer 2.09.0036
RELATE/30008.0040
Reuse default60.005
REXX (MVS)4.0080
REXX (OS/2)7.0046
RM BASIC3.5091
RM COBOL3.00107
RM FORTRAN3.00107
RPG I4.0080
RPG II5.5058
RPG III5.7556
RT-Expert 1.45.5058
S-PLUS10.0032
SAIL3.00107
SAPIENS20.0016
SAS10.0032
SAVVY25.0013
SBASIC3.5091
SCEPTRE4.5071
SCHEME6.0053
Screen painter default57.006
SEQUAL27.0012
SHELL15.0021
SIMPLAN9.0036
SIMSCRIPT7.0046
SIMULA7.0046
SIMULA 677.0046
Simulation default7.0046
SMALLTALK 28615.0021
SMALLTALK 8015.0021
SMALLTALK/V15.0021
SNAP4.0080
SNOBOL2-42.50128
SoftScreen23.0014
SOLO5.5058
SPEAKEASY9.0036
Spinnaker PPL9.0036
Spreadsheet default50.006
SPS1.00320
SPSS10.0032
SQL25.0013
SQL-Windows27.0012
Statistical default10.0032
STRATEGEM9.0036
STRESS4.5071
Strongly typed default3.5091
STYLE7.0046
SUPERBASE 1.39.0036
SURPASS50.006
SYBASE8.0040
Symantec C++11.0029
SYMBOLANG5.0064
Synchroworks18.0018
SYNON/2E17.0019
System-W9.0036
Tandem Access Language3.5091
TCL5.0064
TELON20.0016
TESSARACT8.0040
THE TWIN50.006
THEMIS25.0013
TI-IEF23.0014
Topspeed C ++11.0029
TRANSFORM22.0015
TRANSLISP PLUS5.7556
TREET5.0064
TREETRAN5.0064
TRS80 BASIC II,III2.50128
TRUE BASIC5.0064
Turbo C2.50128
TURBO C++6.0053
TURBO EXPERT6.5049
Turbo PASCAL >56.5049
Turbo PASCAL 1-44.0080
Turbo PASCAL 4-54.5071
Turbo PROLOG4.0080
TURING4.0080
TUTOR6.0053
TWAICE6.5049
UCSD PASCAL3.5091
UFO/IMS9.0036
UHELP10.0032
UNIFACE20.0016
UNIX Shell Scripts15.0021
VAX ACMS5.5058
VAX ADE8.0040
VECTRAN3.00107
VHDL 17.0019
Visible C6.5049
Visible COBOL8.0040
Visicalc 135.009
Visual 4.011.0029
Visual Basic 17.0046
Visual Basic 27.5043
Visual Basic 38.0040
Visual Basic 49.0036
Visual Basic 511.0029
Visual Basic DOS8.0040
Visual C++9.5034
Visual COBOL16.0020
Visual Objects20.0016
VisualAge15.0021
VisualGen18.0018
VS-REXX10.0032
VULCAN5.0064
VZ Programmer9.0036
WARP X8.0040
WATCOM C2.50128
WATCOM C/3862.50128
Waterloo C2.50128
Waterloo PASCAL3.5091
WATFIV3.7585
WATFOR3.5091
WHIP3.5091
Wizard11.5028
XLISP5.0064
YACC6.0053
YACC++6.0053
ZBASIC3.5091
ZIM17.0019
ZLISP5.0064
On-Going Research Of Languages

The relationship between source code statements and Function Points has only been subject to research for a few years, so the margin of error in Table 2 can be quite high. Even so, the method is useful enough so publication of a preliminary table may be helpful in filling in the gaps and correcting the errors.

A complete and reliable industry-wide study of languages and their levels is of necessity a large multi-year project. A reasonable sampling of applications and languages would require data from about 5000 projects, assuming 10 projects in each language or dialect.

The organizing principle used in this research is basically sound and the construction of a periodic table of languages is potentially as useful to software engineering as the periodic table of the elements has been to chemical engineering and to physics.

SPR is conducting an on-going study of languages and their levels. For additional information, or to participate in this study, contact SPR Customer Support at 781-273-0140 or use e-mail: support@spr.com.


[Home] [Company] [Products] [Services] [News] [Support] [Resources]

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

 
利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值