Living in the real world: “It doesn’t matter.”


I have met Lisp programmers who react to these diadvantages by arguing that the the problems would go away if only the whole world used Lisp and nothing else. And indeed they might! But it doesn’t matter: The whole world isn’t going to start using Lisp any time soon, and interface problems arent’t going to melt away.
The smart programmer will treat Lisp, and any other language, as a tool: Use it when doing so is appropriate and use some other tool when that other tool makes more sense.

Andrew Koenig and Barbara Moo, “Ruminations on C++: A Decade of Programming Insight and Experience”,1996, Chapter 3 - Living in the real world”


The Children's Machine: Rethinking School in the Age of the Computer, 1993

In a computer-rich world, computer languages that simutaneusly provide a means of control over the computer and offer new and powerful descriptive languages for thingking will undoubtedly be carried into the general culture. They will have a particular effect on our langugae for describing ourselves and our learning. To some extent this has already occured.
We shall give an example of this process by showing how programming concepts can be used as a conceptual framework for learning a particular physicall skill, namely, juggling. Thus, we look at programming as a source of descriptive devices, that is to say as a means of strengthening language.

 Many scientific and mathematical advances have served a similar linguistic function by giving us words and concepts to describe what had previoulsy seemed too amorphous for systematic thought.
[p99, p100]
... The child, we recall, was explicitly looking for a way to describe the process of walking in a circle.

 The field of education research has not worked in the direction of developing such formalisms. But another research community, that of computer scientists, has had (for its own reasons) to work on the problem of descriptive languages and has thereby become an unexpected resource for educational innovation. ...
One might even say that computer science is wrongly so called: Most of it is not the science of computers, but the science of descriptions and descriptive languages. Some of the descriptive formalisms produced by computer science are exactly what are needed to get a handle on the process of learning a phisical skill. ...
Seymour Papert, "Mindstorms", the 2nd ed. 1993, Chapter 4 - Languages for Computers and People


Designing good software takes time

File:Mythical man-month (book cover).jpg
Good cooking takes time. If you are made to wait, it is to serve you better, and to please you.
- Menu of restaurant antoine, new orleans
When a task cannot be partitioned because of sequential constraints, the application of more effort has no effect on the schedule. The bearing of a child takes nine months, no matter how many women are assigned. Many software tasks have this characteristic because of the sequential nature of debugging.

Frederick P. Brooks, JR., "The Mythical Man-Month", Chapter 2 - The Mythical Man-Month
The stranger sitting next to me was reading The Mythical Man-Month, and I was waiting to see if by word or sign he would react. Finally as we taxied toward gate, I could wait no longer:
"How is that book? Do you recommend it?"
"Hmph! Nothing in it I didn't know already."
I decided not to introduce myself.
"The Mythical Man-Month", Chapter 19 - The Mythical Man-Month after 20 Years.


Software design is Language Design

Library Design is Language Design,
- Bell Labs proverb
and vice vera.
- Andrew R. Koenig
... Designing a general library is much harder than designing an ordinary program. A program solution to a particular context, but a library must be the solution to a set of problems encountered in a number of projects. An ordinary program can make strong assumptions about its environment, but a good library has to operate successful in the contexts provided by a number of programs. ... 
- Bjarne Stroustrup, The C++ Programming Language 2nd Edition, Chapter 13. Design of Libraries


Organizing a program as a language processor

...  A Second, more philosophical point, is the value of thinking of the job at hand more as language development than as "writing a program." Organizing a program as a language processor encourages regularity of syntax (which is the user interface), and structures the implementation. It also helps to ensure that new features will mesh smoothly with existing ones.

Brian W. Kernighan and Rob Pike, "The UNIX Programming Environment", p286, 1984


Multi-lingual Programming


Beauty in programs, as in poetry, is not language-independent. There is an aesthetic dimension in programming that is visible only to the multi-lingual programmer.

"Programming Languages: An Intepreter-Based Approach.", Samuel N. Kamin, 1990