Of course I'm liberal, I believe in liberty.

Tuesday, February 01, 2005

Programming Languages

You'll have to be a computer geek to find these funny, but here is a quick summery of various computer languages with several goofy quotes.
I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so complicated that there are no obvious deficiences.
APL, in which you can write a program to simulate shuffling a deck of cards and then dealing them out to several players in four characters, none of which appear on a standard keyboard.
It is practically impossible to teach good programming style to students that have had prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.

BASIC is to computer languages what Roman numerals are to arithmetic.
C: A language that combines all the elegance and power of assembly language with all the readability and maintainability of assembly language.

... one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.
C++: an octopus made by nailing extra legs onto a dog
The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense.
If you learn the "Forth way" "correctly", you will grok in fullness procedural programming, without getting hung up in the irrelevant incidentals of syntax.
Consistently separating words by spaces became a general custom about the tenth century A.D., and lasted until about 1957, when FORTRAN abandoned the practice.

If a variable is not declared, it is implicitly given a type based on its first letter (I to N being integers, the rest floats), which led to the famous story of losing a spacecraft.

The primary purpose of the DATA statement is to give names to constants; instead of referring to PI as 3.141592653589793 at every appearance, the variable PI can be given that value with a DATA statement and used instead of the longer form of the constant. This also simplifies modifying the program, should the value of PI change.
-- FORTRAN manual for Xerox computers
If you learn Lisp correctly, you can grok all programming styles with it: procedural, OO, predicate, functional, pure or full of side-effects. Recursion will be your friend, function references your allies, you will truly know what a closure is, and that an argument stack is actually a performance hack. You will see that the most elegant way to solve a problem is to create a custom language, solve the generic problem, and have your specific one fall out as a special case. You will learn to truly separate intent from the bare metal, and you will finally understand the two deepest secrets, which are really the same secret, which we tell all, but so few understand, that code and data are the same thing, but organize your data and your code will follow.
Python is executable pseudocode. Perl is executable line noise.
"How many Prolog programmers does it take to change a lightbulb?"
"No."