Directory
A view of the language
The trend of language development
Methods and Best Practices
Looking to the future
Books and telephones
Occasionally, evolutionary leaps can quickly improve and reshape the entire engineering landscape. In the field of software development, the birth of C + + programming language has caused such leaps. This leap is not inherent in the language itself. Object-oriented languages (such as Simula67 and Smalltalk) already exist before C + +. But because C + + is built on the C programming language (and can compile existing C programs), it can bring the essence of object-oriented thinking into the mainstream.
C + + provides a great deal of inspiration in software design and development, from design patterns to metaprogramming. And because it can be ported between hardware platforms and have a lower level of representation, C + + will certainly become a mainstay as hardware becomes faster and smaller.
I recently had the opportunity to interview the inventor of C + +, Bjarne Stroustrup, who talked about a number of topics: from his view of the language, the general development of the industry to his own reading of the bibliography. Many of these questions have been raised by readers through my blog, and I would like to express my thanks to those who have asked questions. Of course, thank Bjarne more.
A view of the language
Howard Dierking Why does the programming language have so much to do with people-and all languages have their own "groupies"?
Bjarne Stroustrup This question is best to ask psychologists, sociologists, and even economists, not a computer scientist! I suspect that because the language we use to express thought has become part of itself, it is difficult to communicate with supporters of other languages if you understand only one language. If so, it seems that you have to be proficient in more languages. I think it's impossible to become an expert in software if you only know a single programming language. There may be economic reasons: while understanding the fundamentals is not limited by the kinds of programming languages, many practical techniques are different. So if I only knew language X and its toolset, and you were in favor of language Y and its toolset, then there would be obstacles between us. There is also a need to master multiple languages and toolset (and firmly grasp the fundamentals) to overcome this obstacle. Unfortunately, the solution I proposed does not take into account that most people do not have much free time. Those fanatical fans are the exception.
What role should the HD IDE play in software development? How should the IDE support language?
BS I don't use the IDE very often. I appreciate the IDE editors who understand my language and react quickly, but also want to work without the IDE. If a good IDE can be popularized, I might change my point of view-that the IDE actually becomes part of the language, and vice versa (see Figure 1). The code portability I want here will be useful. By using C + +, I want to be able to understand my system through source code. Some IDE mechanisms contain transformations or generated code that is very inconvenient to understand, and I don't appreciate it.
Figure 1The IDE Designer as a Language
HD do you think that unwanted information or readability is a problem in today's common language? If so, how should it be resolved?
The simpler the BS syntax is, the better, but I guess when most people talk about readability, there's not much to say about the actual text, and the complexity of expressing content often attracts more complaints. Too many people want to understand any program written in any language, and want the online support tool to provide only a small amount of help to understand all the logic used to express the program's structure and the program itself. We can compare it to the way we view and use natural language. Do you want to understand Shakespeare's 14-line poems without background knowledge? What if you met Beowulf, who was written in original Old English? Perhaps, our expectations for programming languages are too high. For any particular application, if the content expressed in any language is widely used, it is often considered too complex, but in practice the language must be adapted to a variety of applications. A domain-specific language can only be applied to special cases, but now we have to confront the complex problems of multiple languages and their interactions.
How should the HD Universal Language Support application design concepts (such as component programming and service programming)?
The BS common language should support the writing of generic and application-specific libraries, support for tool building, and the "glue" required to connect different parts of the application. For this reason, language needs to be flexible, expressive, good base performance, and long-term stability.