[Eiffel Translation] Matz About Technical Dialogue
Note: Matz is the founder of the famous programming language Ruby (Japanese)
This dialogue translated the fourth part of the Artima.com website to Matz.
English article Orine: http://www.Artima.com/intv/craft.html
Without the consent, don't reprint any of this translation article (first published in my website http://www.eiffelqiu.com/index.jsp?date=20040131).
About technology
Bill Venners: In the exchange of CIPS Connections, you have said: "I have read many source code for open source software, such as Perl, Python, and a lot of origin of the Lisp interpreter, I know I should understand before writing Ruby. They "What benefits can you think of the programmer through the reading code?
YUKIHIRO MATSUMOTO: Programmers can earn a lot through reading source code. You can't make simple telling others how to be a good programmer, you can provide them with some good programming principles, you can describe some of your own good design experience, but you can't give them a good program The actual knowledge of the staff. I believe that the best way to get these actual knowledge is to read the code. Write code can of course help you become a good programmer, but read code better.
Bill Venners: Why?
Yukihiro Matsumoto: Because it is a good programmer, it is actually related to experience, the code is the expression of programmer thinking, attitude, idea. Through reading code, you can not only understand how special tasks and know how they are implemented, and you can also grow through their thinking. That's why read programs can make you better programmers. In addition, if you want to know how to implement something with the code, you can open a book of computer science, books can explain the algorithm to you, but if you want to know faster, then read code will be the most Good way. In addition, you can perform code to implement algorithms. You can use a debugger to observe it when the code executes the algorithm. This way is much better than reading book.
Bill Venners: In the communication of CIPS Connection, you give the programmer's ten techniques. One of them is: "Learn not only a program language, it is best to make different styles, such as scripting languages, object-oriented language, functional language, logical language, etc.", what is the benefit of learning multi-programming language?
YUKIHIRO MATSUMOTO: Each program or system has its own culture. Every language or system has its own core concept. Most of these concepts are good, but they are different. By studying multiple languages and systems, you can accept different ideas, and enhance your own point of view.
For example, if you don't know the ProLog language, you will not understand the power of the target guided programming (the way to program the problem to be resolved by applying the specified rule). This is a very interesting concept and is a different way of thinking. But if you don't know the word logic, it is difficult to find this way of thinking. Understanding other systems and paradigms will expand the world in their minds. That's why I truly recommend the reasons for learning a variety of languages.
Bill Venners: You also said in your ten highest skills: "Don't pay too much attention to tools, tools will change, and algorithms and basic concepts will not", what do you mean?
YUKIHIRO MATSUMOTO: Part is about people-oriented rather than the machine. The change of people is very slow, but the system changes very fast. People don't have any difference between 100 years ago. 100 years ago we didn't have a computer, we have a computer 50 years ago, but they are very original. 20 years later, I can't imagine what computer will look like, but I can think about how people will think about 20 years. Another example is mathematics. Mathematics has a very long history. It is a very mature science, but computer science is not. So getting thinking from mathematics is very good.
Tools will easily change over time. If you pay too much attention to the current tool, then your efforts can only get short-term returns. If you want to get a long-lasting income, you should pay more attention to some foundations. Pay attention to mathematics and human psychology. Focus on the scientific and way of thinking that has been established.
lazy:
Bill Venners: You have mentioned in your top ten skills: "Lazy, the machine will serve human beings. Always serve the machine inadvertently, let the machine serve you. What makes you lazy things as much as possible "Why should we try to get lazy?"
YUKIHIRO matsumoto: Because you want to become lazy. You have to do anything you can do, I work hard to reduce my work and become lazy. Bill Venners: I believe this
YUKIHIRO matsumoto: I am very eager to become lazy.
Consider the interface
Bill Venners: You also mentioned in the top ten skills: "Friendly of others, first consider interface: people to people, people to machine and machine to machines. Remember that people's factors are very important", you What does it mean, "First consider the interface?"
YUKIHIRO MATSUMOTO: The interface is everything we see as a user. If my computer is doing very complicated things inside, but complexity is not exposed outside, I don't care. I don't care whether the computer works internally. I just need to present the correct result in a good way. This means that the interface is everything, at least for ordinary computer users, the situation is the case, that is why we have to pay attention to the reason.
Some software people, such as weather forecasts, digital calculations, they are more about understanding the inside of things, but they are very limited in computer science fields. Most programmers need to pay attention to the surface, interface, because it is the most important thing for them.
Bill Venners: You also mentioned the interface of the machine to the machine, is you meant is just an interface to a user or a machine
YUKIHIRO matsumoto: Not just user interface. When the machine is dialogue between the machine, they don't care about how the other party is implemented, and the most important thing is the most important thing to pass the right way through the right agreement.
If you have a good interface, enough time and financial budget, you can continue working on your system. If your system has an error or too slow, then you can improve it. But if your system has a bad interface, then you are basically nothing. How high skills do not have internal implementation. If your system has a bad interface, no one will use it. So the surface characteristics of the interface or system, whether it is for the user or for other machines.
Qiu Haifeng (EIFFELQIU)
Mail: Eiffel_Q@163.comwww: http://www.eiffelqiu.comWeblog: http://mulder.5d.cn