How Do We Tell Truths that Might Hurt? - excerpts from a memo by Dr. E.W. Dijkstra - later printed in his book: " Selected Writings on Computing..." Programming is one of the most difficult branches of applied mathematics; the poorer mathematicians had better remain pure mathematicians. The easiest machine applications are the technical/scientific computations. The tools we use have a profound (and devious!) influence on our thinking habits, and therefore, on our thinking abilities. FORTRAN, "the infantile disorder", by now nearly 30 years old, is hopelessly inadequate for whatever computing applications you have in mind today: it is now too clumsy, too risky, and too expensive to use. PL/I --"the fatal disease"-- belongs more to the problem set than to the solution set. 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. The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense. 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. The problems of business administration in general and of database management in particular are much too difficult for people that think in IBM JCL, compounded with sloppy English. 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. Besides a mathematical inclination, an exceptionally good mastery of one's native tongue is the most vital asset of a competent programmer. Many companies that have made themselves dependent on IBM (and in so doing have sold their soul to the devil) will collapse under the sheer weight of the unmastered complexity of their data processing systems. We can found no scientific discipline, nor a healthy profession, on the technical mistakes of the Dept. of Defense and, mainly, one computer manufacturer. The use of anthropomorphic terminology when dealing with computing systems is a symptom of professional immaturity. By claiming that they can contribute to software engineering, the soft scientists make themselves even more ridiculous. (Not less dangerous, alas!) In spite of its name, software engineering requires (cruelly) hard science for its support. In the good old days, physicists repeated each other's experiments, just to be sure. Today, they stick to FORTRAN, so that they can share each other's programs, bugs included. Projects promoting programming in "natural language" are intrinsically doomed to failure. You would rather that I had not disturbed you by sending you this.