Computer Language
About
A programming language is a interface to the control of a CPU effectively controlling a computer.
A language is a (possibly infinite) set of string all of which choose their symbols from some one alphabet.
There is range of language going to lowest level, the machine language to the highest level possible where each programming language solve its own domain of application:
Type of language | Domain of application | Performance |
---|---|---|
Lower-level | hardware / machine | computer performance |
Higher-level | business domains | programmer performance |
Computer languages differ not so much in what they make possible, but in what they make easy.
Each level is known as a generation / hierarchy and implements an abstraction layer where:
- Logic gates abstract away the details of wiki/CMOS.
- Machine language abstracts away the details of logic gates.
- Assembly language abstracts away the details of machine languages.
- Programming language abstracts away the details of assembly languages.
- In programming language, the first layer is the Operating system that abstract away the hardware details (ie file cluster vs sector for instance)
A programming language (high level) is:
- that follows a grammar
- that is compiled (at runtime or not)
- that send instructions to the computer
See Language - (Grammar | Syntax | Lexicon)
This section is about computer language, for Natural Language, see (Natural|Human) Language - Text (Mining|Analytics)
There are only two kinds of languages:
the ones people complain about and the ones nobody uses.
Visual
- Text-based computer languages based on sequences of characters
- wiki/Visual programming languages based on the spatial layout and connections between symbols. See also wiki/Flow-based_programming
When workflows are defined as code, they become more maintainable, versionable, testable, and collaborative.
The problem about all graphical programming languages is that when your project becomes complex, not only will you have spaghetti code, bit it will actually look like spaghetti too
Core language
is it:
- algorithmic,
- functional,
- object-oriented
Scripting / Dynamic Language
Compiled Language
At Build time
At runtime
Query Language
Markup and Style Sheets language
DSL
Turing tarpit
A Turing tarpit (or Turing tar-pit) is any programming language or computer interface that allows for flexibility in function but is difficult to learn and use because it offers little or no support for common tasks.