Related to software engineering questions
Author: Edsger W. Dijkstra
Translation: Gallen
[It is possible to reorganize the problem, this will leave the reader as an exercise]
l None of the need to improve, please see the following sequence: Background -> Excessive Projector -> PowerPoint
L is precisely because I am a computer scientist, I don't have to waste my time in front of a computer.
[A pathologist does not have necessary to suffer from the pain of the pain he studied]
l Promoting "Computerization" is not the responsibility of computer scientists. It is said that this "promotion" is a market to create a market by developing some popular applications.
[Pathologists are not required to develop what new diseases develop in order to create a market for more drugs. ]
l The responsibility of the University is not the "What is the social requirements" (question), but to meet the needs of society.
[Social requirements are extensive understanding, do not include a university to say three four; university must provide something that others can't provide]
l The tools we use to shape us, especially: we use our thinking habits, whether it is good or bad. This means that we must be cautious when choosing to learn and taught, because it is impossible to learn.
[Before many years, if I let me recruit a assistant, a prerequisite is "I have never used Fortran", as well as: Teaching Basic in Siberia is also not allowed. ]
l A programmer must be able to demonstrate the features needed by his procedure. If it is just a demonstration, it is almost certain that he did not fulfill this: only when he allows this responsibility to affect his design, he has hope to fulfill this responsibility. The inspection of a pure incident will have a good impact, but it is put the carriage to the front of the horse (inverted). But this is exactly what happened in the software workshop, where "Programming" and "Quality Assurance" are made by two different groups. [Do not say, what is not guaranteed from this kind of workplace]
l The necessary effective reasoning technology is very formal. As long as the program is completed, the software crisis will always be accompanied by us, and will be considered an immortal. As you know, what will be done in the immortal of the dismissal: They will come to some Jianghu Lang and the mediocrity liar, which is the banner of the software engineering experts in the urinary symptoms mentioned above.
l You some people will suspect that the "effective reasoning technology" mentioned earlier, it is very good for some small procedures, but will its utility increase with the size of the program? Here I emphasize that the "large-scale superior complicated program". Oh, if you try to use it to get into the programs who are unknown, there is no organization, which is of course useless. Its power performance is compared in the program creation: (i) and other technologies makes text (code) shorter; (ii) it makes the length of the exporter will not grow linearly as the exporter grows. The final result is that the procedure thus produced is better than those of the usual garbage programs.
We will never forget that programmers are living in a humanized world, which is the essence of their other scientists. A programmer should not ask this question: How is a good programming technology? And should create an environment that makes it applicable. This is the only way he can submit high quality design. Here, let me quote a paragraph I wrote in 1984.
"The capacity of today's machine provides us with a lot of space, so that we can do some Wu Qi eight worse things, and give some dirty things have an endless opportunity! In such an environment, we must cultivate a stay. A sufficiently simple and strict intelligence, it will be a serious challenge in technology and education. "L answers" Why do we have to teach some useless things that are indifferent to the industry, let me quote a paragraph Written in 1985.
"Back to our original question: Can computer science save computer industry? My answer is 'If the computer industry is saved, save it can only be computer science'. But let the computer industry - especially those excellent Companies - Recognizing this, it takes a long time. It is almost certain that this time will be longer than the 'future' of their plan. At the same time, the academic circles - there is still a longer far from the tradition of their plan. - No choice, it must be carefully selected first-class talents, teach them how to do calculation; if it is succumbing to the current unhealthy trend, it is best to collapse. "
In order to emphasize how much patience we need, let me quote my other old say (1990).
"Few people recognize that high-tech in today's high-tech is a mathematical technology"
l No, I am afraid it is an intersession of Internet to make computer science suffer from harm. It attracts more and more - it is better to say: the number is overwhelming - a little scientific hobby student, in scientific research, it is just a popularity of its speed and capacity (some vulgar) Concept.
L is good, let me talk about what you are paying attention to: How to better program - although it is taught - it is difficult to professor. This situation is similar to math, most of the courses in mathematics are in mathematical conclusions; frankly, how to do mathematics can only be taken slowly from students. Compared to language-ornamental or graphical arguments, symbolic manipulated and calculated arguments are more popular, one of which is the latter way is more easier to professor. However, the course of massively introducing calculation methods will encounter difficult political issues in difficult to overcome.
l There are many companies in the software industry, computer science should not, can help them are not so clear.
Austin, 2000/11/28