Posted on 27 October 2007
In my role as a programmer, I had the opportunity to code in many computer languages. any… ok…. would be a wrong word. When you compare a dozen to a few thousand, you can’t call it MANY. A few thousand… yes, its true. A quick search on Google on list of computer languages would reveal the magic number of 2500+ which can then be extrapolated to approx 3000. But is that it. There is more to computer languages than the above magical number. Before, we go ahead at checking out the number, here is a brief classification of computer languages.
Classification of Computer Languages
Applicative Languages operates by application of functions to values. A functional language in the broad sense.
Assembly Languages a symbolic representation of the machine language of a specific computer.
Concurrent Languages describes programs that may be executed in parallel. this may be either: multiprogramming, sharing one processor, multiprocessing- separate processors sharing one memory distributed.
Constraint Languages languages in which a problem is specified and solved by a series of constraining relationships.
Dataflow Languages language suitable for use on a dataflow architecture. Necessary properties include freedom from side effects, and the equivalence of scheduling constraints with data dependencies. Examples: Val, Id, SISAL, Lucid.
Declarative Languages operates by making descriptive statements about data and relations between data. The algorithm is hidden in the semantics of the language. This category encompasses both Applicative and Logic languages. Examples of declarative features are set comprehensions and pattern-matching statements.
Definitional Languages an applicative language containing assignments interpreted as definitions.
Functional Languages in the narrow sense, operates on higher-order functions, building operators that manipulate functions directly without ever appearing to manipulate the data.
Imperative Languages operates by a sequence of commands that change the value of data elements. Typified by assignments and iteration.
Intermediate Languages a language used as an intermediate stage of compilation. May be text or binary.
Logic Languages deals with predicates or relationships. Logic languages try alternatives for each goal in succession, backtracking in a search for a common solution.
Markup Languages a language where markups are used to describe the rendering of the content.
Meta Languages a language used for the formal description of another language.
Procedural Languages which states how to compute the result of a given problem.Each statement in the language tells the computer to do something.A procedural program is “a list of instructions”. Encompasses both imperative and functional languages.
Query Languages an interface to a database.
Single Assignment Languages an applicative language using assignments with the convention that the variable may appear on the left side of an assignment only once within the portion of the program in which it is active.
Specification Languages a formalism for expressing a hardware or software design.
Number of Computer Languages
As stated before most of the sources on the internet site the number to be around 2500, but I had always doubted this number. It always seemed small.
A deep search, digging into results Google revealed, browsing through additional links provided at the end of articles, I came across this link. The HOPL: History of Programming Languages boasts of over a collection of 8500 computer languages description collection. It is also a recommended reading material in many computer language courses in some of the most prestigious universities.
The reason why this list is not so popular is because of restrictions that it cannot be reproduced at any place. One is restricted to site and provide a link to this list. I have browsed through the list and it seems to be pretty much more informative than from Eric Lehberz.
Another good informative resource for anyone interested in the history of programming languages would be this time line of c omputer languages. The link is quite updated and shows a relational diagram between the development of various languages.