If those who choose languages are better informed, better languages would eventually squeeze out poorer ones.
FORTRAN (short for FORmula TRANslation).
COBOL (short for COmmon Business Oriented Language).
LISP (short for LISt Processor).
C
It reduces readability because features like feature multiplicity and operator overloading create different “subsets” of the language, making code hard for others to understand.
Operator overloading harms readability because it allows standard symbols to perform unexpected operations, confusing the reader.
You can return a structure (record) from a function, but you cannot return an array.
ALGOL 68
The goto statement
Subprograms
A program is reliable if it performs to its specifications and handles errors gracefully under all conditions.
Type checking the parameters is important because it ensures reliability by detecting errors where a function receives incompatible data. (e.g., receiving an integer bit-string when it expects a float)
Having two or more distinct names that can be used to access the same memory cell.
The ability of a program to intercept run-time errors, take corrective measures, and then continue execution.
Because writing a program involves frequently re-reading the parts you have already written. If you can’t read it easily, you can’t write/modify it efficiently.
If the language design is very complex (like early Ada), the compilers are expensive to build and run. If the design is simple, compilers are cheaper.
Computer architecture (Von Neumann) and programming design methodologies.
Imperative languages.
Incompleteness of type checking and inadequacy of control statements.
Data abstraction, inheritance, and dynamic (run-time) method binding.
Smalltalk
Reliability vs. Cost of Execution (e.g., Java’s array index checking makes it safer but slower).
Also, Writability vs. Readability (e.g., APL is very concise/writable but hard to read).