Reprinted: An interview video with Dijkstra

Some people are dead, he is still alive.

 

------Zang Kejia


An interview video with Dijkstra

 

(You can also visit  YouTube  or download MPEG1 , 300M from the source address  )

I recommended an interview video with Dijkstra on Weibo. After watching it twice, I found it was really good, so I recommend it again. Most people may be aware of his contributions to graph theory algorithms and operating systems, but in fact, Dijkstra has a profound knowledge of programming languages. The commonly used "recursive function" in our commonly used programming languages, in fact, it was Dijsktra and another person who insisted on including Algol 60 despite the opposition and suspicion of everyone in the committee, so later entered Pascal, C, Java Such a language. John McCarthy was absent at that time, otherwise three people would support him.

It now appears that it is incredible that there is no recursive function in any language, but in the 1950s and 60s, few people actually knew what it was useful for! So you find that the so-called "mainstream" and "most people" have always been relatively stupid. Now, the same story happens to lambda. Many years later, a language without lambda will be unacceptable.

Here are only a few points he mentioned. Some viewpoints may not be the best way, but I am sure that there is something worth learning.

  1. The software version numbers 2.6, 2.7,… are all nonsense. Originally, the first version should be the final product, but software companies always come up with an incomplete version first, trick everyone into buying it, and then slowly "upgrade" it later. Each upgrade requires users to pay again.
  2. There are many schools of programming, and I like to classify them as "Mozart vs. Beethoven." When Mozart started writing scores, the work was completed. His manuscript was completed in one go, and his calligraphy was also very good. Beethoven is different, he is always doubting and struggling. His work usually starts to write before he thinks about it, and then he edits the sticker on it. Once Beethoven changed the manuscript 9 times before completing it. Later, someone tore the manuscript layer by layer and found that the first and last editions were exactly the same. This change is the tradition of the Anglo-Saxon nation, which runs through the British education.
  3. The job of a composer is not to write scores, but to conceive music. In the earliest days, people used assembly language to program, just like writing music scores. Later, they invented high-level languages, thinking that these languages ​​solved the programming problem. But you take a closer look and find that they only solve the most trivial problems of programming, but difficult problems are still difficult. The combination of these high-level languages ​​and growing ambitions makes programmers' minds heavier.
  4. Competent programmers know that the size of their heads is limited, so they treat their work with humility, avoiding cleverness like the plague.
  5. When I taught how to program in Paris, France in 1970, I was very successful, and the audience was very positive. On the way home, I gave the same speech at a big software company in Brussels, Belgium, and it failed. That is probably the most failed speech in my life. Later I found out why: their management does not like impeccable programs, because the company relies on "software maintenance" contracts to survive. Programmers are also not interested in this, because the thing that excites them the most is not knowing what they are doing. They feel that if they clearly know what they are doing, there is no challenge and it is boring work.
  6. People who study physics can always blame God if they encounter something they don’t understand. It’s not your fault that the world is so complicated. But if there is a problem with your program, there will be no scapegoat. 0 is 0, 1 is 1, and you messed it up.
  7. In 1969, shortly after the Apollo moon landing, I met Joel Aron, the software leader of the Apollo Project, at the NATO Software Engineering Conference in Rome. I know that the code on each Apollo spacecraft will have 40,000 lines more than the previous one. I don't know what the "line" is for the code, but 40,000 lines are definitely a lot. I was surprised that they could do so much code right, so I asked Joel: How did you do it? He said: What do you do? I said: Write so much code correctly. Joel said, "Correct?! Actually, just five days before launch, I found an error in the lunar lander's orbit calculation code. This code reversed the direction of gravity of the moon. It was supposed to be attracted, but it was written as repulsion. It was an accidental opportunity that made me discover this error." My face turned pale and said: Are these guys so lucky? Joel said, "Yes."
  8. Software testing can determine that there are bugs in software, but it cannot be used to determine that they are bug-free.
  9. The elegance of the program is not an essential luxury, but a factor that determines success or failure. Elegance is not an issue of aesthetics, nor is it an issue of fashion taste. Elegance can be translated into feasible technology. The Oxford dictionary's interpretation of elegant is: pleasingly ingenious and simple . If your program is really elegant, then it will be easy to manage. The first is because it is shorter than other solutions, and the second is because its components can be replaced with other solutions without affecting other parts. It is strange that the most elegant programs are often the most efficient.
  10. When there is no computer, programming is not a problem. When a weaker computer is available, programming becomes a moderate problem. Now that we have huge computers, programming has become a huge problem.
  11. My first days of programming were very different from now, because I was writing programs for a computer that had not yet been built. The person who built that machine hasn't finished it yet. I programed it at the same time, so there was no way to test my code. So I found that what I made had to be able to fit into my mind.
  12. My mother is an excellent mathematician. Once I asked her if geometry is difficult, she said it is not difficult at all, as long as you understand all the formulas with your "heart". If you need more than 5 lines of formula, then you are on the wrong path.
  13. Why do so few people pursue elegance? this is the truth. If elegance has its drawbacks, it is that you need hard work to get it, and you need a good education to appreciate it.

 


Reprinted from http://www.yinwang.org/blog-cn/2014/02/18/dijkstra-interview

Guess you like

Origin blog.csdn.net/sinat_39416814/article/details/96509796