Christopher B. Browne's Home Page
cbbrowne@acm.org

Computer Languages

Christopher Browne

$Id: language.sgml,v 1.196 2005-12-28 14:06:08 cbbrowne Exp $

Table of Contents
1. General Language Links
2. The C Family
3. Algol
4. The PASCAL Family of Languages
5. COBOL
6. Smalltalk
7. Functional Programming Languages
8. Other Families of Languages
9. Dylan
10. Prolog
11. ABAP/4
12. Assembly Language
13. Macro Programming Systems
14. Compiler Construction Tools
15. Programming Tools and IDEs

This document discusses computer languages, with emphasis on what is available for Linux and Unix environments. Linux is a generally attractive environment for software development particularly with "novel" computer languages as there are many languages of all sorts of different styles available for Linux.

Some people have "favorite" languages, and like to bash other languages. I feel, in contrast, that every language has a place under the sun. (Possibly even INTERCAL !)

I am a believer in the notion of using a variety of computer languages. I don't think that any one given language can most conveniently express all the things that people want computers to do.

For instance:

  • C has the strength that it is quite ubiquitous, and has simple enough requirements for the underlying "system model" that it is useful for implementing operating systems;

  • Lisp offers the merits of representing both code and data as lists, providing higher order functions, and providing the ability to manipulate the representation of code at compile time via macros.

  • Perl allows building compact programs that quite powerfully manipulate text, and links to huge libraries of utilities.

  • Python brings together a somewhat "stricter" data model than Perl with a simpler syntax.

  • ML uses "theorem-proving" concepts to validate that the data manipulations expressed in a function validly correspond to the function's "signature," which is is helpful in verifying correctness of code.

  • Prolog uses backtracking and (seeming) indeterminism so that you describe answers rather than indicating how to calculate them. This is very useful when you know what answers you want, but either don't care or don't know the sequencing of how the result is to be found.

1. General Language Links

Google
Contact me at cbbrowne@acm.org