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.











