Learn Programming - Which Language Do I Use?
These graphs compare Ubercode to other computer programming languages. Each graph shows the
complexity of one language using several measurements. Measurements include the number of low level
features in the language, the levels of operator precedence, the number of symbols and keywords and
the number of commands in the language run time library.
There are graphs for several common languages, including Visual Basic (v5), Borland Delphi and
C++. All graphs have the same scale, and the complexity measurements are discussed in more detail
at the end.
How complex is Ubercode? (see diagram above)
How complex is Visual Basic? (see diagram above)
How complex is Borland Delphi? (see diagram above)
How complex is C++? (see diagram above)
How complex is C? (see diagram above)
How complex is Ada? (see diagram above)
The complexity measurements are calculated and used as follows:
Low level features. These count the features from the following list: "Goto" statements,
global variables, pointers, untyped binary conversions, bit operations, in-line assembler,
programmer-controlled memory allocation, and aliasing between function parameters. These are
features which, if misused, make software more likely to crash, according to researchers into
Levels of operator precedence. The number of levels of operator precedence is a measure
of how complex it is to write expressions. In general the larger the number, the easier it is to
make mistakes when writing expressions.
Number of symbols and keywords. Keywords are alphabetic syntax elements, and symbols are
non-alphabetic syntax elements. Both are used by a language for data types, statements, operators,
function structure, compilation unit structure and object structure. The number of keywords and
symbols counts these elements, excluding identifiers.
Number of language runtime commands. This is the number of functions, constants, objects,
types and other identifiers in the run time library. Identifiers with the same name that carry out
very similar tasks are counted as a single function. Languages that allow extra libraries or header
files to be imported only include the elements required for writing a Hello World program, to avoid
penalizing them for providing a rich range of features. Languages that provide interfaces to the
Windows operating system DLLs do not include these interfaces if they are optional. Languages (such
as Visual Basic) that always include the full runtime will include the full range, since it is
impossible to separate the essential identifiers from the non-essential.
In general, the more complex a language is according to these measurements, the harder it is to
learn and use effectively, and the harder it is to maintain existing code.