Feature | C++ | F 90 | O-2 |
---|---|---|---|
the language is easy to learn, easy to use | -- | -- | ++ |
one language construct per features only | - | -- | + |
are numeric libraries for the language available | - | ++ | -- |
object-oriented features | + | - | + |
exception and error handling | - | -- | -- |
support for parallelism | -- | - | -- |
block-structured features | - | -- | + |
go-to like statements avoided | - | -- | + |
variable initialisation in definition | ++ | + | -- |
logical and set types | - | - | ++ |
type complex | -- | ++ | -- |
record extension/variants | + | - | ++ |
initialisation aggregates for records | + | + | -- |
safe multidimensional arrays | -- | + | ++ |
user defined lower index bound | -- | ++ | -- |
safe pointer handling | -- | ++ | + |
forced pointer initialisation | -- | -- | + |
omit dangling references | -- | -- | ++ |
all types as procedure parameters | - | - | + |
call by value of procedure parameters | - | + | ++ |
call by reference of procedure parameters | + | + | ++ |
arbitrary function result types | + | + | + |
procedure and operator overloading | ++ | ++ | -- |
procedure recursion available | + | ++ | + |
safe module and interface | -- | - | ++ |
After three decades, the FORTRAN language became a partly useful patchwork of
numerous features, reflecting the history of software techniques. Actually, too
many constructs cover the same features with different side-effects and
restrictions. This aggravates software development, and is of no benefit at
all. The dusty decks will keep dusty.
In the chapter "design notes" [1], the author writes, "Simplicity was an
important design criterion for C++ ..."! But the language reference chapter for
C++ covers about 150 pages, versus less than 30 pages for Oberon [9] or
Oberon-2 [19]. A tool should support the solving of problems, not create
problems. The originally hardware-oriented design lacks a sound programmer-oriented model. C++
offers too many concepts. Their interaction is error-prone.
We listed some features to be included in Oberon-2. Applications written in
this value-added Oberon-2 will be safer and more readable. At present,
Oberon-2 implementations are not less efficient than C++ implementations at
all. The language is easier to learn than FORTRAN 90 and C++; compare the size
of their reports; [1] 680 pages, [3] 740 pages, and [8] 16
pages. The small number of language constructs facilitates a correct compiler
implementation. The programmer easily understands and memorises the
interference of Oberon-2 constructs, which is hardly possible for FORTRAN 90 and C++.