Throughout the Successful application software since the 1980s, most of the long-lasting success, most of which have the following characteristics:
With a system language (usually C / C ) to provide a high-level application runtime (Runtime), including a high level, a virtual machine for semantic optimization, a huge application-level API Library (based on the unique process library, or OO-based class library, or Component-based component library), a Software architecture (especially inserted structures or application-oriented Framework is typical), and, Ideally, an application-oriented language engine. The entire application is completed in system language and application language. The application level language is mainly used when expanding, or you can use the system-level language, no matter which type, you must rely on an extension framework.
And see some examples:
1. Emacs, develop the core with C and implements the ELISP interpreter, and the atomic function can be implemented with C and ELISP. The entire program is completed in C and ELISP and can be expanded in any way.
2. AutoCAD, develop core with C / C , implement Autolisp, complete the entire program to complete with C / C and Autolisp, can be extended with C / C / Autolisp / VB. Also equipped with MAX scripts from Autodesk's 3D Max.
3. Mathematica, develop core, implement the Mathematica language, complete the entire program with C and Mathematica languages, mainly using Mathematica for application development.
4. MATLAB, develop kernels in C / C , implement MATLAB language, complete the entire program to complete with C / C and MATLAB languages, mainly using MATLAB for application development, or use C / C / Fortran to expand.
5. Microsoft Office, based on the COM system, C / C writes the core module, VB is responsible for integration, and provides VBA supply development.
6. TEX, PASCAL writes a core interpreter to develop a high-level system in macro extension.
There are also such as SAP, Perl, and Python.
This kind of thinking, has been successful, is practical for my generation. Its core is difficult to have two, one is the design, dynamic realization of Runtime, the trade-out of Framework (need to be applied, all the flexible Eclipse, is not optimal for the specific application field), abstraction of the underlying computing platform ( Truely mature network application development should transparenize networks); the second is the design and implementation of the application level language, design is the key, and it is the most weak point of Chinese programmers.
The design of high-level languages facing the application, is equivalent to manufacturing large-scale equipment in the machinery industry, is a trunk industry, core technology. To design a good application language, ask the designer's system programming technology, the interpreter's and its interaction with the system, the extension of the extension is very familiar, and the second should be deeply understood to understand the theory of the programming language, proficient in form language theory and language History, can not be trapped in the mainstream thoughts in 20 years, providing the desired semantics in the most natural way, and third is to be familiar with the application field and guide the design. At present, domestic education institutions and impetuous breaths are difficult to cultivate masters such as Larry Wall. The .NET CLR provides the active Runtime, FCL, which provides the above, provides a complete support library, which makes it difficult for us to develop high quality applications. However, VB and C # have been applied to the application, and the level is still slightly lower. The next step should be to provide a dynamic language like Python. What is the dynamic language on the .NET platform look? There are two possibilities, one is to transplant Python directly, I believe this is something that will happen, but as Microsoft officially, it will take another road, which is directly to C # and VB script. And I estimate that VB will be preferred during this process.
In the end we will go to the field, I think a model of this is Mathematica, original text: http://blog.9cbs.net/Myan/archive/2005/01/30/274236.aspx