Programming languages
A programming language is a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer. Programming languages can be used to create programs that specify the behavior of a machine, to express algorithms precisely, or as a mode of human communication.
Contents |
Programming languages in general [edit]
- Programs must be written for people to read, and only incidentally for machines to execute.
- Abelson & Sussman, "Structure and Interpretation of Computer Programs", preface to the first edition
- For twenty years programming languages have been steadily progressing toward their present condition of obesity; as a result, the study and invention of programming languages has lost much of its excitement. Instead, it is now the province of those who prefer to work with thick compendia of details rather than wrestle with new ideas. Discussions about programming languages often resemble medieval debates about the number of angels that can dance on the head of a pin instead of exciting contests between fundamentally differing concepts.
- John Backus, "Can Programming Be Liberated From the von Neumann Style?", 1977 Turing Award Lecture, Communications of the ACM 21 (8), (August 1978): p. 614
- That language is an instrument of human reason, and not merely a medium for the expression of thought, is a truth generally admitted.
- George Boole, quoted in Kenneth E. Iverson's 1979 Turing Award Lecture
- Write a paper promising salvation, make it a 'structured' something or a 'virtual' something, or 'abstract', 'distributed' or 'higher-order' or 'applicative' and you can almost be certain of having started a new cult.
- About the use of language: it is impossible to sharpen a pencil with a blunt axe. It is equally vain to try to do it with ten blunt axes instead.
- Edsger W. Dijkstra, "How do we tell truths that might hurt?" (1975). Published in ACM SIGPLAN Notices 17:5 (May 1982), pp. 13–15.
- If there is ever a science of programming language design, it will probably consist largely of matching languages to the design methods they support.
- Robert Floyd , The Paradigms of Programming, 1978 Turing Award Lecture, Communications of the ACM 22 (8), August 1979: pp. 455–460
- To the designer of programming languages, I say: unless you can support the paradigms I use when I program, or at least support my extending your language into one that does support my programming methods, I don't need your shiny new languages.
- Robert Floyd , The Paradigms of Programming, 1978 Turing Award Lecture, Communications of the ACM 22 (8), August 1979: pp. 455–460
- SQL, Lisp, and Haskell are the only programming languages that I've seen where one spends more time thinking than typing.
- My original postulate, which I have been pursuing as a scientist all my life, is that one uses the criteria of correctness as a means of converging on a decent programming language design—one which doesn’t set traps for its users, and ones in which the different components of the program correspond clearly to different components of its specification, so you can reason compositionally about it. [...] The tools, including the compiler, have to be based on some theory of what it means to write a correct program.
- C. A. R. Hoare, Oral history interview by Philip L. Frana, 17 July 2002 [ http://www.cbi.umn.edu/oh/display.phtml?id=343]
- Computer languages of the future will be more concerned with goals and less with procedures specified by the programmer.
- Marvin Minsky, "Form and Content in Computer Science", 1969 Turing Award Lecture, Journal of the Association for Computing Machinery 17 (2), April 1970
- Computer scientists have so far worked on developing powerful programming languages that make it possible to solve the technical problems of computation. Little effort has gone toward devising the languages of interaction.
- Donald Norman, The Design of Everyday Things (1988), Ch. 6
- Programmers should never be satisfied with languages which permit them to program everything, but to program nothing of interest easily.
- Alan Perlis, "The Synthesis of Algorthmic Systems", 1966 Turing Award lecture, Journal of the ACM 14 (1), January 1967, pp. 1–9
- When someone says "I want a programming language in which I need only say what I wish done," give him a lollipop.
- If someone claims to have the perfect programming language, he is either a fool or a salesman or both.
Specific programming languages [edit]
Ada [edit]
- When Roman engineers built a bridge, they had to stand under it while the first legion marched across. If programmers today worked under similar ground rules, they might well find themselves getting much more interested in Ada!
- Robert Dewar (President Ada Core Technologies) [citation needed]
- C treats you like a consenting adult. Pascal treats you like a naughty child. Ada treats you like a criminal.
- C was designed to be written; Ada was designed to be read.
- Beyond 100,000 lines of code you should probably be coding in Ada.
- If you're masochistic enough to program in Ada, we're not going to stop you.
ALGOL [edit]
- [ALGOL 60] is a language so far ahead of its time, that it was not only an improvement on its predecessors, but also on nearly all its successors.
- C. A. R. Hoare, Hints on Programming Language Design, December 1973
- [ALGOL W] was not only a worthy successor of ALGOL 60, it was even a worthy predecessor of PASCAL.
- C. A. R. Hoare, "The Emperor's Old Clothes", 1980 Turing Award lecture, Communications of the ACM 24 (2), (February 1981): pp. 75-83.
- There is an appreciated substance to the phrase "ALGOL-like" which is often used in arguments about programming, languages and computation. ALGOL appears to be a durable model, and even flourishes under surgery — be it explorative, plastic, or amputative.
- Alan Perlis, "The Synthesis of Algorthmic Systems", 1966 Turing Award lecture, Journal of the ACM 14 (1), January 1967, pp. 1–9
APL [edit]
- APL is the first language not based on the lambda calculus that is not word-at-a-time and uses functional programming forms.
Unfortunately, however, APL still splits programming into a world of expressions and a world of statements. Thus the effort to write one-line programs is partly motivated by the desire to stay in the world of expressions.- John Backus (August 1978), "Can Programming Be Liberated From the von Neumann Style?", 1977 Turing Award Lecture, Communications of the ACM 21 (8): p. 639, 618
- APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past: it creates a new generation of coding bums.
- Edsger W. Dijkstra (May 1982), "How do we tell truths that might hurt?", SIGPLAN Notice 17 (5): pp. 13–15.
- The initial motive for developing APL was to provide a tool for writing and teaching. Although APL has been exploited mostly in commercial programming, I continue to believe that its most important use remains to be exploited: as a simple, precise, executable notation for the teaching of a wide range of subjects.
- Kenneth E. Iverson, "A Personal View of APL", IBM Systems Journal, 30 (4), 1991
- APL is a write only language.
- *Anonymous, widely repeated remark
BASIC [edit]
- It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
- Edsger W. Dijkstra, "How do we tell truths that might hurt?" (1975). Published in ACM SIGPLAN Notices 17:5 (May 1982), pp. 13–15.
- The teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery.
- Edsger W. Dijkstra, "The Threats to Computing Science", ACM 1984 South Central Regional Conference, November 16–18, Austin, Texas. EWD898
- Basic happened to be on a GE timesharing system that was done by Dartmouth, and when GE decided to franchise that, it started spreading Basic around just because it was there, not because it had any intrinsic merits whatsoever.
- Alan Kay, quoted in Stuart Feldman, A Conversation with Alan Kay, ACM Queue 2:9 (Dec/Jan 2004-2005)
C/C++ [edit]
-
"Tsk, tsk," said the Hatter, "what a mess you've made."
"It is perfectly fine," replied Alice calmly. "I will leave it for the garbage collection service to recover."
"Don't expect any garbage collection here. Furthermore, your polymorphic variables won't ever be properly deleted, because you haven't declared your destructor to be virtual."
"My what to be what?" said Alice, starting to get worried.
"Declare your destructor. You must have a destructor. Everything that is constructed should be destroyed; it's only natural. Furthermore, if you are ever not quite what you seem, you should declare yourself to be virtual."
"A rule to remember!" roared the Red Queen. "Never make a mess without cleaning it up first."
"You can ignore her," whispered the Dormouse, picking up the tea cake Alice had just set aside, "but you shouldn't cast away const so lightly."
Alice began to feel that this new world she found herself in was not quite the same as the cozy sitting room she had just left.
- Timothy Budd (C++ for Java Programmers)
- …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.
- Writing in C or C++ is like running a chain saw with all the safety guards removed.
- What you see is all you get.
- There are only two things wrong with C++: The initial concept and the implementation.
- Fifty years of programming language research, and we end up with C++?
- A C program is like a fast dance on a newly waxed dance floor by people carrying razors.
- C is quirky, flawed, and an enormous success.
- C gives the programmer what the programmer wants; few restrictions, few complaints . . . C++ maintains the original spirit of C, that the programmer not the language is in charge.
- Herbert Schildt - ANSI C++ Standards Committee [citation needed]
- The evolution of languages: FORTRAN is a non-typed language. C is a weakly typed language. Ada is a strongly typed language. C++ is a strongly hyped language.
- Within C++, there is a much smaller and cleaner language struggling to get out.
- Bjarne Stroustrup, The Design and Evolution of C++
- In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg.
- C++: an octopus made by nailing extra legs onto a dog.
- The major cause of complaints is C++ undoubted success. As someone remarked: There are only two kinds of programming languages: those people always bitch about and those nobody uses.
- Bjarne Stroustrup. in comp.lang.c++, December 1994.
- C provides a programmer with more than enough rope to hang himself. C++ provides a firing squad, blindfold and last cigarette.
- dandelion in talk.origins (see here)
COBOL [edit]
- The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence.
- Edsger W. Dijkstra, "How do we tell truths that might hurt?" (1975). Published in ACM SIGPLAN Notices 17:5 (May 1982), pp. 13–15.
- Cheatham's amendment of Conway's Law: If a group of N persons implements a [COBOL] compiler, there will be N-1 passes. Someone in the group has to be the manager.
- Tom Cheatham [citation needed]
Fortran [edit]
Haskell [edit]
- A parser for things
Is a function from strings
To lists of pairs
Of things and strings- Graham Hutton[1]
- Think of a monad as a spacesuit full of nuclear waste in the ocean next to a container of apples. Now, you can't put oranges in the space suite or the nuclear waste falls in the ocean, but the apples are carried around anyway, and you just take what you need.
- Don Stewart[citation needed]
- Haskell is faster than C++, more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java, and has absolutely nothing in common with PHP.
Java [edit]
- Java is, in many ways, C++--.
- Java is C++ without the guns, knives, and clubs.
- James Gosling, co-inventor of Java [citation needed]
- The memory allocation strategy of Java can be described in 3 words. Nom nom nom.
- Chainsaw, [2]
Lisp [edit]
Pascal [edit]
- That is the great strength of PASCAL, that there are so few unnecessary features and almost no need for subsets.
- C. A. R. Hoare, "The Emperor's Old Clothes", 1980 Turing Award lecture, Communications of the ACM 24 (2), (February 1981): pp. 75-83.
Perl [edit]
- I have a pretty major problem with a language where one of the most common variables has the name $_
- If I were chained to a bench and 'perl' was the only thing that could open the lock, I'd probably cut my hand off.
- Gerald Penn [citation needed]
- There's no obfuscated Perl contest because it's pointless.
- Jeff Polk (Source). Note that there was in fact an Obfuscated Perl contest.
- Perl is designed to give you several ways to do anything, so consider picking the most readable one.
- Doing linear scans over an associative array is like trying to club someone to death with a loaded Uzi.
- A Perl script is "correct" if it gets the job done before your boss fires you.
- The camel has evolved to be relatively self-sufficient. (On the other hand, the camel has not evolved to smell good. Neither has Perl.)
PL/I [edit]
- When FORTRAN has been called an infantile disorder, full PL/1, with its growth characteristics of a dangerous tumor, could turn out to be a fatal disease.
- Edsger W. Dijkstra, "The Humble Programmer", 1972 Turing Award Lecture, Communications of the ACM 15 (10), October 1972: pp. 859–866
- At first I hoped that such a technically unsound project would collapse but I soon realized it was doomed to success. Almost anything in software can be implemented, sold, and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars.
- C. A. R. Hoare, "The Emperor's Old Clothes", 1980 Turing Award lecture, Communications of the ACM 24 (2), (February 1981): pp. 75-83.
Python [edit]
sed [edit]
- Some people, when confronted with a problem, think "I know, I'll use sed." Now they have two problems.
- Jamie Zawinski, in The UNIX-HATERS Handbook
Smalltalk [edit]
- Smalltalk is dangerous. It is a drug. My advice to you would be don’t try it; it could ruin your life. Once you take the time to learn it (to REALLY learn it) you will see that there is nothing out there (yet) to touch it. Of course, like all drugs, how dangerous it is depends on your character. It may be that once you’ve got to this stage you’ll find it difficult (if not impossible) to “go back” to other languages and, if you are forced to, you might become an embittered character constantly muttering acerbic comments under your breath. Who knows, you may even have to quit the software industry altogether because nothing else lives up to your new expectations.
- Andy Bower, C++ expert [citation needed]