Microcomputer World Journalist - Li Mingxia
---- Q: You can talk about the development of compilation systems as the old experts who have been engaged in compilation in my country?
---- A: We generally say software mainly includes system software (such as operating system, compilation system, etc.), support software and application software. Solving problems in any field usually use system software, compilers are secondary system software that is second only to the operating system.
---- Compilation System is translated into an equivalent machine language program or assembly language program. It is logically analyzed and integrated with two major parts. The analysis part mainly includes lexical analysis, gramatic analysis and semantic analysis; the integrated part mainly includes storage allocation, code optimization, and code generation, and sometimes also includes generating intermediate code. The classification of the compiler mainly includes diagnostic, optimized, rectiable target, cross type, and incremental type.
---- With the development of senior languages in formation, structured, intelligent, and visual, as a compilation system that realizes the corresponding language function, it also develops to the direction of automatic programming and visualization programming. . I want to be mainly understood from the following aspects:
---- First, the new version of the new version of the various senior languages is constantly emerging. If the Fortran language has developed from 66, 77,90 to Fortran95, it is said that there must be a fortran2000 to be launched. Most of these new version of compilation systems are modified on the basis of the original legacy compilation system.
---- Secondly, in parallel computers, parallel C, parallel C , parallel Fortran or high-performance Fortran (HIGHPERFORMENCEFORTRAN, HPF) have also introduced, and these languages are generally compiled in the corresponding serial language. On the basis, add the parallel part, convert the parallel language into a serial language, and then compile the system compile system compilation.
---- Third, research on parallel compilation technology is not only for parallel languages, but also study how to compile on parallel.
--- Fourth, the continuous development of object-oriented technology, on the one hand, there is an object-oriented language such as C compilation system, and on the other hand, research is different from the past ideas - how to use object-oriented methods Compile system,.
---- Fifth, Java language As a cross-platform language for network applications, the concept of virtual machine is practical, and there is a third-generation Java language virtual machine.
---- Sixth, the tools that automatically generate compilation systems have been put into use. There is also a tool for generating other parts of the compilation system, such as semantic analysis, code generation, etc.
---- Q: Compile system as part of the system software, for general users, what is it? What do you think of a good technical standard for a good compilation system?
---- A: In the research and study of compilation systems, it is very representative of "Compilation Principles, Technology and Tools" written by experts such as AHO. Some technical contents talked in the book not only useful for developing compilation technology systems, but the principles, methods and technologies have guided role in many ways. Such as the five-generation language, object-oriented programming language, neural network model, disassembly technology, software automatic generation, pattern identification, etc. Therefore, undergraduate students in China, foreign computer software, and applying professional, even graduates must repair or elect this course.
---- I think it is related to the specific usage of this compilation system to judge the standard of this compilation system. If the speed of compilation is important, such as in the educational compiler and compiler to the test algorithm, the compiler is constantly modified, requiring the compiler to be simple. If the result of the executor is in the primary location, carefully, carefully, and optimize, do more high quality target code, which is more important for compilation systems to be repeatedly used, especially the compilation system.
---- In addition to the compiler itself, there are several requirements:
---- (1) To facilitate debugging of the user program.
---- (2) Running the system is also important, there must be a good operating system, running the environment, talking to the object language, there must be rich libraries. Compile programs in practical applications can include: program development support environments, including editing, compiling, debugging, running, and maintenance; pretreatment; non-standard versions of programming languages. ---- (3) In the optimization, the optimization effect has a set of standards, including global optimization and local optimization.
---- (4) For the Java language, including the compilation system and the virtual machine implementation two parts, there are many technologies in each part, and there is no unusless unit collection in the virtual machine, etc., these techniques or algorithms are also Can constitute a part of the standard.
---- (5) Checking the wrong work should be as good as possible. Mainly refers to the compiler to help users find out the errors in the program and how the modifications and recovery functions after the error was wrong.
---- (6) Maintenance of compilation system, a compilation system can track maintenance after handing over to the user, the user has problems can help solve the service, which is increasingly important in the standard of compiling system. position.
---- Q: I used to talk about compilation systems for a certain type of machine or a language. What is the current situation?
---- A: In the 1960s, the computer industry has a unified language of universal computer oriented language (UNCOL) with virtual machines to build unified compilation, that is, all languages are compiled into UNCOL, then implement them on the local machine. Uncol, but there is no epidemic. It is now generally a compilation system for specific languages for specific machines, specific operating systems.
---- The Tang Tang Academician of the Chinese Academy of Sciences designed XYZ language classes in the 1970s, which is a series of timing logical language, where each sub-language represents different programming methods or program model languages, this can It is a future development model. Academician of the software in recent years, in recent years, the MLIRF method has been combined with machine learning and recursive function. The concept of language (CFL) is represented by CFL to describe the problem and its solution, using the recursive function (CFRF) of the context-independent language, which is the relationship between the problem, the problem algorithm, which is software automation.
---- 1995 SUN's Java language is divided into two steps. The first step is to compile into a unified bytecode program, then implement Java virtual machine under different machines and operating systems, in the local machine and operating system. Interpretation or compile the bytecode program.
---- Software Development has experienced senior language, structural programming period, software engineering tool, now developed in the period of knowledge-based software engineering.
---- But generally, with the changes in computer hardware (32-bit machine development to 64-bit machine), the corresponding compilation system must do certain modifications. If there is a forward-looking consideration when designing a compilation system, there is room for the word, and some variable parameters are placed, and it is easier to modify.
---- Q: What is the main difference between research and foreign compilation system research in my country?
---- A: my country's compilation system research started in the 1960s, the starting is not too late. my country has developed the Bcy language of Algol60 language, class Algol60 language, and its compilation system, and later developed the vector language, COBOL language, Ada language, 757 vector machine, vector, Galaxy, Parallel Fortran and its compilation system . Some systems are also undergoing sweating in our country's two stars and other national major projects.
---- From the technical side, our gap is not big, but we all develop a system, because the machine has little production, some only 2 to 3, or even 1, lack of productization, goods The maintenance improvement work is poor, so for the user, the quality of the compilation system is not good, although it is possible to optimize the work well, but the commissioning means, operational environments, etc., it is not enough. ---- Q: Can you talk about the Java language from the perspective of compilation system?
---- A: Java language is compiled into a texture code program, and then interprets or compiles on different operating systems and computers, that is, what we said. The virtual machine is unified to have more than 200 instructions, and the bytecode program consists of these instructions, and now it has been developed to the third generation Java virtual machine.
---- "Computer World" newspaper has introduced the concept of the pseudo-code compiler used by Java, that is, the source program is converted into a non-existing machine's solid target code, which is the virtual machine command. This can be: (1) Making the difference in the machine; (2) Accelerate the development cycle, no need for each machine, each operating system compile, simplify cross-platform development; (3) good portability; (4) Easy to maintain , Management and modification.
---- The past UNCOL and later PASCAL languages have such thoughts. Now the Java language can get such a numerous person's recognition. In a sense, it should be summed up for the development of the Internet network. This is an excellent The timing, people are particularly important to cross-platform demand, and technical feasible, there is a wide range of popularization.
---- Although the user's largest complaint is too slow, it has developed a third-generation virtual machine HotSpot with several years of efforts through Sun and other companies, and the speed is greatly improved. The recent Java2 has a great enhancement, especially suitable for business, not only for IT applications, business and banks, etc., but also adapt to industry, manufacturing and many other industries, Java is also maturing .