SPR-Programming Language Tablel
SPR-Programming Language Tablel
SPR-Programming Language Tablel
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.
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.
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 2 of 15
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.
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.
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.
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.
AVERAGE SOURCE
LANGUAGE LEVEL STATEMENTS PER
FUNCTION POINT
1032/AF 20.00 16
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 3 of 15
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 4 of 15
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 5 of 15
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 6 of 15
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 7 of 15
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
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 8 of 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
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 9 of 15
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
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 10 of 15
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
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 11 of 15
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 12 of 15
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 13 of 15
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
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 14 of 15
http://www.spr.com/library/0langtbl.htm 8/15/2001
Programming Languages Table Page 15 of 15
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.
http://www.spr.com/library/0langtbl.htm 8/15/2001