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

    4 - 8           10 to 20 Function Points

    9 - 15          16 to 23 Function Points

   16 - 23          15 to 30 Function Points

   24 - 55          30 to 50 Function Points

  Above 55          40 to 100 Function Points


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

LANGUAGE LEVEL AVERAGE SOURCE STATEMENTS PER FUNCTION POINT
1032/AF 20.00 16
1st Generation default 1.00 320
2nd Generation default 3.00 107
3rd Generation default 4.00 80
4th Generation default 16.00 20
5th Generation default 70.00 5
AAS Macro 3.50 91
ABAP/4 20.00 16
ACCEL 17.00 19
Access 8.50 38
ACTOR 15.00 21
Acumen 11.50 28
Ada 83 4.50 71
Ada 95 6.50 49
ADR/DL 8.00 40
ADR/IDEAL/PDL 16.00 20
ADS/Batch 16.00 20
ADS/Online 16.00 20
AI shell default 6.50 49
AI SHELLS 6.50 49
ALGOL 68 3.00 107
ALGOL W 3.00 107
AMBUSH 10.00 32
AML 6.50 49
AMPPL II 5.00 64
ANSI BASIC 5.00 64
ANSI COBOL 74 3.00 107
ANSI COBOL 85 3.50 91
ANSI SQL 25.00 13
ANSWER/DB 25.00 13
APL 360/370 10.00 32
APL default 10.00 32
APL*PLUS 10.00 32
APPLESOFT BASIC 2.50 128
Application Builder 16.00 20
Application Manager 9.00 36
APS 19.00 17
APT 4.50 71
APTools 16.00 20
ARC 6.50 49
Ariel 3.00 107
ARITY 6.50 49
Arity PROLOG 5.00 64
ART 6.50 49
ART-IM 7.00 46
ART Enterprise 7.00 46
Artemis 8.00 40
AS/SET 17.00 19
ASI/INQUIRY 25.00 13
ASK Windows 7.00 46
Assembly (Basic) 1.00 320
Assembly (Macro) 1.50 213
Associative default 5.00 64
Autocoder 1.00 320
awk 15.00 21
Aztec C 2.50 128
BALM 3.00 107
BASE SAS 6.00 53
BASIC 3.00 107
BASIC A 2.50 128
Basic assembly 1.00 320
Berkeley PASCAL 3.50 91
BETTER BASIC 3.50 91
BLISS 3.00 107
BMSGEN 9.00 36
BOEINGCALC 50.00 6
BTEQ 25.00 13
C 2.50 128
C Set 2 3.50 91
C++ 6.00 53
C86Plus 2.50 128
CA-dBFast 8.00 40
CA-EARL 11.50 28
CAST 6.50 49
CBASIC 3.50 91
CDADL 16.00 20
CELLSIM 7.00 46
Centerline C++ 6.00 53
CHILI 3.00 107
CHILL 3.00 107
CICS 7.00 46
CLARION 5.50 58
CLASCAL 4.00 80
CLI 10.00 32
CLIPPER 17.00 19
CLIPPER DB 8.00 40
CLOS 15.00 21
CLOUT 8.00 40
CMS2 3.00 107
CMSGEN 17.00 19
COBOL 3.00 107
COBOL II 3.00 107
Cobol/400 3.50 91
COBRA 16.00 20
CodeCenter 9.00 36
Cofac 9.00 36
COGEN 9.00 36
COGNOS 9.00 36
COGO 4.50 71
COMAL 4.00 80
COMIT II 5.00 64
Common LISP 5.00 64
Concurrent PASCAL 4.00 80
CONNIVER 5.00 64
CORAL 66 3.00 107
CORVET 17.00 19
CorVision 22.00 15
CPL 2.00 160
Crystal Reports 16.00 20
CSL 6.50 49
CSP 6.00 53
CSSL 7.00 46
CULPRIT 25.00 13
CxPERT 6.50 49
CYGNET 17.00 19
Data base default 8.00 40
Dataflex 8.00 40
Datatrieve 16.00 20
dBase III 8.00 40
dBase IV 9.00 36
DCL 1.50 213
DEC-RALLY 8.00 40
Decision support default 9.00 36
DELPHI 11.00 29
DL/1 8.00 40
DNA-4 17.00 19
DOS Batch Files 2.50 128
DSP Assembly 2.00 160
DTABL 7.00 46
DTIPT 7.00 46
DYANA 4.50 71
DYNAMO-III 7.00 46
EASEL 11.00 29
EASY 6.50 49
EASYTRIEVE + 25.00 13
Eclipse 6.50 49
ED-Scheme 3.4 6.00 53
EDA/SQL 27.00 12
EIFFEL 15.00 21
ENFORM 7.00 46
English-based default 6.00 53
Ensemble 11.00 29
EPOS 16.00 20
Erlang 8.00 40
ESF 8.00 40
ESPADVISOR 6.50 49
ESPL/I 4.50 71
EUCLID 3.00 107
EXCEL 1-2 51.00 6
EXCEL 3-4 55.00 6
EXCEL 5 57.00 6
EXPRESS 9.00 36
EXSYS 6.50 49
Extended Common LISP 5.75 56
EZNOMAD 9.00 36
Facets 16.00 20
FactoryLink IV 11.00 29
FAME 9.00 36
FileMaker Pro 9.00 36
FLAVORS 11.00 29
FLEX 7.00 46
FlexGen 11.00 29
FOCUS 8.00 40
FOIL 6.00 53
Forte 18.00 18
FORTH 5.00 64
FORTRAN 66 2.50 128
FORTRAN 77 3.00 107
FORTRAN 90 4.00 80
FORTRAN 95 4.50 71
FORTRAN 3.00 107
FORTRAN II 2.50 128
Foundation 11.00 29
FOXPRO 1 8.00 40
FOXPRO 2.5 9.50 34
FRAMEWORK 50.00 6
G2 6.50 49
GAMMA 20.00 16
Genascript 12.00 27
GENER/OL 25.00 13
GENEXUS 21.00 15
GENIFER 17.00 19
GeODE 2.0 20.00 16
GFA Basic 9.50 34
GML 7.00 46
Golden Common LISP 5.00 64
GPSS 7.00 46
GUEST 11.50 28
Guru 6.50 49
GW BASIC 3.25 98
Haskell 8.50 38
High C 2.50 128
HLEVEL 5.50 58
HP BASIC 2.50 128
HTML 2.0 20.00 16
HTML 3.0 22.00 15
Huron 20.00 16
IBM ADF I 16.00 20
IBM ADF II 18.00 18
IBM Advanced BASIC 3.25 98
IBM CICS/VS 8.00 40
IBM Compiled BASIC 3.50 91
IBM VS COBOL 3.00 107
IBM VS COBOL II 3.50 91
ICES 4.50 71
ICON 4.00 80
IDMS 8.00 40
IEF 23.00 14
IEW 23.00 14
IFPS/PLUS 10.00 32
IMPRS 8.00 40
INFORMIX 8.00 40
INGRES 8.00 40
INQUIRE 25.00 13
INSIGHT2 6.50 49
INSTALL/1 20.00 16
INTELLECT 6.00 53
INTERLISP 5.50 58
Interpreted BASIC 3.00 107
Interpreted C 2.50 128
IQLISP 5.50 58
IQRP 25.00 13
JANUS 4.50 71
JAVA 6.00 53
JCL 1.45 221
JOSS 3.00 107
JOVIAL 3.00 107
KAPPA 8.00 40
KBMS 6.50 49
KCL 5.00 64
KEE 6.50 49
Keyplus 8.00 40
KL 5.00 64
KLO 5.00 64
KNOWOL 6.50 49
KRL 5.50 58
KSH 15.00 21
Ladder Logic 9.00 36
LAMBIT/L 5.00 64
Lattice C 2.50 128
Liana 2.50 128
LILITH 4.50 71
LINC II 23.00 14
LISP 5.00 64
LOGLISP 5.50 58
LOOPS 15.00 21
LOTUS 123 DOS 50.00 6
LOTUS Macros 3.00 107
LUCID 3D 51.00 6
LYRIC 6.00 53
M 20.00 16
macFORTH 5.00 64
MACH1 8.00 40
Machine language 0.50 640
Macro assembly 1.50 213
MAESTRO 20.00 16
MAGEC 20.00 16
MAGIK 15.00 21
MAKE 15.00 21
MANTIS 8.00 40
MAPPER 6.00 53
MARK IV 8.00 40
MARK V 9.00 36
MATHCAD 60.00 5
MDL 9.00 36
MENTOR 6.00 53
MESA 3.00 107
Microfocus COBOL 4.00 80
microFORTH 5.00 64
Microsoft C 2.50 128
MicroStep 16.00 20
Miranda 8.00 40
Model 204 8.50 38
MODULA 2 4.00 80
MOSAIC 50.00 6
MS C ++ V. 7 6.00 53
MS Compiled BASIC 3.50 91
MSL 5.00 64
muLISP 5.00 64
MUMPS 17.00 19
NASTRAN 4.50 71
NATURAL 1 6.00 53
NATURAL 2 7.00 46
NATURAL Construct 13.00 25
Natural language 0.10 3200
NETRON/CAP 17.00 19
NEXPERT 6.50 49
NIAL 6.50 49
NOMAD2 8.00 40
Non-procedural default 9.00 36
Notes VIP 9.00 36
Nroff 6.00 53
Object-Oriented default 11.00 29
OBJECT Assembler 5.00 64
Object LISP 11.00 29
Object LOGO 11.00 29
Object PASCAL 11.00 29
Object Star 20.00 16
Objective-C 12.00 27
ObjectVIEW 13.00 25
OGL 4.00 80
OMNIS 7 8.00 40
OODL 11.00 29
OPS 7.00 46
OPS5 5.50 58
ORACLE 8.00 40
Oracle Developer/2000 14.00 23
Oscar 3.00 107
PACBASE 22.00 15
PACE 8.00 40
PARADOX/PAL 9.00 36
PASCAL 3.50 91
PC FOCUS 9.00 36
PDL Millenium 15.00 21
PDP-11 ADE 6.00 53
PERL 15.00 21
Persistance Object Builder 15.00 21
PILOT 6.00 53
PL/I 4.00 80
PL/M 4.50 71
PL/S 3.50 91
PLANIT 6.00 53
PLANNER 5.00 64
PLANPERFECT 1 45.00 7
PLATO 6.00 53
polyFORTH 5.00 64
POP 5.50 58
POPLOG 5.50 58
Power BASIC 6.50 49
PowerBuilder 20.00 16
POWERHOUSE 23.00 14
PPL (Plus) 8.00 40
Pro-C 12.00 27
PRO-IV 5.50 58
Problem-oriented default 4.50 71
Procedural default 3.00 107
Professional PASCAL 3.50 91
Program Generator default 20.00 16
PROGRESS V4 9.00 36
PROLOG 5.00 64
PROSE 3.00 107
PROTEUS 3.00 107
QBasic 5.50 58
QBE 25.00 13
QMF 22.00 15
QNIAL 6.50 49
QUATTRO 51.00 6
QUATTRO PRO 51.00 6
Query default 25.00 13
QUICK BASIC 1 5.00 64
QUICK BASIC 2 5.25 61
QUICK BASIC 3 5.50 58
Quick C 2.50 128
Quickbuild 11.50 28
QUIZ 22.00 15
RALLY 8.00 40
RAMIS II 8.00 40
RapidGen 11.50 28
RATFOR 3.50 91
RDB 8.00 40
REALIA 7.00 46
Realizer 1.0 8.00 40
Realizer 2.0 9.00 36
RELATE/3000 8.00 40
Reuse default 60.00 5
REXX (MVS) 4.00 80
REXX (OS/2) 7.00 46
RM BASIC 3.50 91
RM COBOL 3.00 107
RM FORTRAN 3.00 107
RPG I 4.00 80
RPG II 5.50 58
RPG III 5.75 56
RT-Expert 1.4 5.50 58
S-PLUS 10.00 32
SAIL 3.00 107
SAPIENS 20.00 16
SAS 10.00 32
SAVVY 25.00 13
SBASIC 3.50 91
SCEPTRE 4.50 71
SCHEME 6.00 53
Screen painter default 57.00 6
SEQUAL 27.00 12
SHELL 15.00 21
SIMPLAN 9.00 36
SIMSCRIPT 7.00 46
SIMULA 7.00 46
SIMULA 67 7.00 46
Simulation default 7.00 46
SMALLTALK 286 15.00 21
SMALLTALK 80 15.00 21
SMALLTALK/V 15.00 21
SNAP 4.00 80
SNOBOL2-4 2.50 128
SoftScreen 23.00 14
SOLO 5.50 58
SPEAKEASY 9.00 36
Spinnaker PPL 9.00 36
Spreadsheet default 50.00 6
SPS 1.00 320
SPSS 10.00 32
SQL 25.00 13
SQL-Windows 27.00 12
Statistical default 10.00 32
STRATEGEM 9.00 36
STRESS 4.50 71
Strongly typed default 3.50 91
STYLE 7.00 46
SUPERBASE 1.3 9.00 36
SURPASS 50.00 6
SYBASE 8.00 40
Symantec C++ 11.00 29
SYMBOLANG 5.00 64
Synchroworks 18.00 18
SYNON/2E 17.00 19
System-W 9.00 36
Tandem Access Language 3.50 91
TCL 5.00 64
TELON 20.00 16
TESSARACT 8.00 40
THE TWIN 50.00 6
THEMIS 25.00 13
TI-IEF 23.00 14
Topspeed C ++ 11.00 29
TRANSFORM 22.00 15
TRANSLISP PLUS 5.75 56
TREET 5.00 64
TREETRAN 5.00 64
TRS80 BASIC II,III 2.50 128
TRUE BASIC 5.00 64
Turbo C 2.50 128
TURBO C++ 6.00 53
TURBO EXPERT 6.50 49
Turbo PASCAL >5 6.50 49
Turbo PASCAL 1-4 4.00 80
Turbo PASCAL 4-5 4.50 71
Turbo PROLOG 4.00 80
TURING 4.00 80
TUTOR 6.00 53
TWAICE 6.50 49
UCSD PASCAL 3.50 91
UFO/IMS 9.00 36
UHELP 10.00 32
UNIFACE 20.00 16
UNIX Shell Scripts 15.00 21
VAX ACMS 5.50 58
VAX ADE 8.00 40
VECTRAN 3.00 107
VHDL 17.00 19
Visible C 6.50 49
Visible COBOL 8.00 40
Visicalc 1 35.00 9
Visual 4.0 11.00 29
Visual Basic 1 7.00 46
Visual Basic 2 7.50 43
Visual Basic 3 8.00 40
Visual Basic 4 9.00 36
Visual Basic 5 11.00 29
Visual Basic DOS 8.00 40
Visual C++ 9.50 34
Visual COBOL 16.00 20
Visual Objects 20.00 16
VisualAge 15.00 21
VisualGen 18.00 18
VS-REXX 10.00 32
VULCAN 5.00 64
VZ Programmer 9.00 36
WARP X 8.00 40
WATCOM C 2.50 128
WATCOM C/386 2.50 128
Waterloo C 2.50 128
Waterloo PASCAL 3.50 91
WATFIV 3.75 85
WATFOR 3.50 91
WHIP 3.50 91
Wizard 11.50 28
XLISP 5.00 64
YACC 6.00 53
YACC++ 6.00 53
ZBASIC 3.50 91
ZIM 17.00 19
ZLISP 5.00 64

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.