Readability
Programming language Readability is of, at least, two layers:
- Human Readability
- Machine Readability.
To date, programming language designers have been emphasizing human readable syntaxes.
To date, we think of programming to consist of only 2 layers:
- machine code (assembler, etc.)
- human-readable PLs.
Machine readable languages enable automatic manipulation of source code.
Machine readable languages enable layering, e.g. allowing more than 2 layers for software designs.
Human-readable languages can be automated using parsers. (REGEXP is a subset of parsing).
The belief that only 2 layers are possible, leads to:
- the belief that PLs can be designed and implemented by only a select few (interpreter and compiler people)
- the belief that PL technology is split into only 2 parts - compile-time and run-time
- mixing implementation details with DI (Architectural) details
- an uneven blend of DI vs. Implementation details in a language (depends on the language designer). For example, data abstraction is a DI concern, whereas low-level operations, like “+”, are implementation details.1
Human Readable
Basically, any language that “has syntax” is meant for human consumption.
Syntax is a way to error-check programs written by humans.
Examples:
- Pascal
- Python
- HTML
- spreadsheets
Machine Readable
Examples:
- assembler
- bash, *sh
- CL (Common Lisp)
- JS (JS is schizophrenic - it contains syntax, but also contains machine-level concepts)
See Also
-
Note that user-defined data structures are actually Implementation details. ↩