The role of programming language theory in programmer education
By Wang Yin
Recommend Dan Friedman's article "The Role of the Study of programming Languages in the education of a Programmer". It introduces how the study of programming language theory will play a role in the education of programmers. This is a very long English article, to the back will be very technical, so the average person only need to look at the first 10 pages of the small story on the line.
Several of these points are:
In a real project, when the database is needed, people call in the database experts, when the network solution is needed, people call on the network experts, when the operating system is needed, people call the operating system experts. But all these things can not be separated from one thing is the programming language, so the program language experts often can play the overall overview of the framework and coordination role. But people often don't know what the program language experts are and how to find them.
The "Study of programming languages" here does not mean learning a particular programming language (such as C, Java, or Scheme), but rather the notion of learning how to implement a programming language, that is, to write some interpreters.
The best way to learn any knowledge is to model it. So the best way to learn the programming language is to implement the programming language. For the average programmer (who is not going to be a program language expert), this does not require a particularly professional and efficient implementation, and an approximate implementation will do the same.
This kind of learning allows you to master some of the "essentials" of programming languages. Then learn to use a new language, but the essence of these have been learned to sift together.
Friedman points out that the two most important roles in the study of programming language theory are: 1) it teaches you how to avoid bad ideas in the programming language. 2) It teaches you how to use good ideas in any language (including a language that does not have such a good design). Examples include dynamic scoping, the lack of tail recursion optimization in Java, why it is a bad idea, and why the theoretical knowledge of programming language can teach you how to circumvent these problems without changing the language to achieve good design.
Jon Rossie and Anurag Mendhekar are all Friedman students in this article. They use personal experience to tell how the theoretical knowledge of the programming language plays an important role in their practical engineering. Jon Rossie is now Cisco's Principle Engineer. Anurag Mendhekar, the chief designer and founder of Online Anywhere, was later bought by Yahoo! and is now the CEO of another company. Friedman also has many other academic descendants in the world's best job positions. For example, Google's V8 JavaScript compiler architect, Cython's designer, Cisco's other Principle Engineer, and some are entrepreneurs, tenured professors and so on.
This article is posted on Yinwang's Sina blog, on 2012-06-13.
Though it ' s not available now.
(turn) The role of programming language theory in the education of programmers