What Languages Fix ================== Kevin Kelleher suggested an interesting way to compare programming languages: to describe each in terms of the problem it fixes. The surprising thing is how many, and how well, languages can be described this way. Algol: Assembly language is too low-level. Pascal: Algol doesn't have enough data types. Modula: Pascal is too wimpy for systems programming. Simula: Algol isn't good enough at simulations. Smalltalk: Not everything in Simula is an object. Fortran: Assembly language is too low-level. Cobol: Fortran is scary. PL/1: Fortran doesn't have enough data types. Ada: Every existing language is missing something. Basic: Fortran is scary. APL: Fortran isn't good enough at manipulating arrays. J: APL requires its own character set. C: Assembly language is too low-level. C++: C is too low-level. Java: C++ is a kludge. And Microsoft is going to crush us. C#: Java is controlled by Sun. Lisp: Turing Machines are an awkward way to describe computation. Scheme: MacLisp is a kludge. T: Scheme has no libraries. Common Lisp: There are too many dialects of Lisp. Dylan: Scheme has no libraries, and Lisp syntax is scary. Perl: Shell scripts/awk/sed are not enough like programming languages. Python: Perl is a kludge. Ruby: Perl is a kludge, and Lisp syntax is scary. Prolog: Programming is not enough like logic.