Comparison of ALGOL 68 and C++

The nearest living sibling to ALGOL 68 May Be C++, making this a good comparison candidate:

C++ doesn't have:

  • PROC - nested functions,
  • OP and PRIO - definable operator symbols and priorities,
  • garbage collection,
  • use before define,
  • formatted transput using complex formatting declarations,
  • := - assignment operation symbol (to avoid confusion with equal sign),
  • array (and slice operations on them, but in layered libraries),
  • automatic UNIONs,
  • CASE expressions,
  • nonlocal GOTO
  • intuitive declaration syntax due to its origin from C.

ALGOL 68 doesn't have:

  • public/private access protection,
  • overloaded procedures (in contrast to operators),
  • explicit memory deallocation,
  • forward declarations,
  • textual preprocessing (eg macros),
  • confusion between &- and pointer-style,
  • comment lines (only bracketed comments),
  • hierarchical classes.

Code Example

Mode declaration

A new mode (type) may be declared using a mode declaration:

 int max=99;
 mode newtype = [0:9][0:max]struct (
     long real a, b, c, short int i, j, k, ref real r
 );

This has the similar effect as the following C++ code:

 const int max=99;
 typedef class 
 { 
     double a, b, c; short i, j, k; float &r;
 } newtype[9+1][max+1];

Note that for ALGOL 68 only the newtype name appears to the left of the equality, and most notably the construction is made - and can be read - from left to right without regard to priorities.

External references