A bit of History and Background
- The original computer languages were so-called machine
languages: human and computer programmed in same language
- machine language is great for computers but not great for humans
- High-level languages introduced for ease of programmability
- Fortran was the first high-level language: 1956, Backus
- A Swarm of early languages followed: Lisp in early 60's, ALGOL
in '58, PL/1 in late 60's, BASIC in 1966.
Tiers of language evolution
- Machine language
- FORTRAN, BASIC, C, Pascal, etc: first-order programmability
- Lisp, Scheme, ML: higher-order programmability, automated
allocation and garbage collection, memory-safe; ML is strongly typed.
Object-oriented languages paralleled this hierarchy:
- First, passing objects is passing code which is similar to
passing functions -- elements of higher-order functional
programming to pass and return objects, but no creating them on
the fly. More powerful than C's function pointers, objects
have "their" state with them and function passing doesn't.
- Simula67: original O-O language, created for simulation.
FORTAN-like otherwise. C++ is another basic O-O language.
- Smalltalk in the late 70's: Lisp-inspired version
of O-O which
also pushed ahead greatly the concept of object-oriented
programming. Includes implicit allocation and garbage
collection, explicit higher-order functions, others. Squeak is
a Smalltalk dialect; Ruby is "Smalltalk++"
- Java improves on Smalltalk by being typed and more secure plus a
better module system.
Domain-specific programming languages (DSL's)
- A language designed to solve a more narrow domain of problems.
- All languages are at least domain-specialized:
- FORTRAN for scientific programming,
- Smalltalk for GUI's,
- Java / C# for Internet,
- C for UNIX systems programming,
- Smalltalk Squeak and Ruby for medium-scale quick coding
- ML for language processing,
- Visual Basic for Windows Windows,...
- Some languages are particularly narrow in applicability: DSL's
- Javascript: scripting for browser
- Perl: small custom text processing needs
- Python: small quick programs across many applications (?)
- PHP: web servlets for simple websites
- UNIX shells: short file and text hacks
- Prolog: implementing rule-based systems
- Prof. Hager: robots and vision programming language.
- Lots of others
Also, some languages aren't for general programming at all
- SQL: database query
- XML/HTML: web page display -- data representation languages
Last modified: Fri Feb 9 11:28:47 EST 2007