Author: Xia Xin switched from http://www.wushuang.net/
[Foreword] This article combines some of the experience in the work of the author, briefly introduces the current mainstream computer software technology, especially the practical application of program design technology in China, and makes phased predictions for the current domestic software technology development trend. This article is not a formal analysis report, just some views and ideas accumulated in the work, the organizational structure is more casual, wearing some of his own opinions and some relevant technical documents, please pay more.
With the popular trend of computer applications, its expansive market demand drives the booming of computer technology and its related industries. The key composition: computer software technology, the baptism of the Internet storm has entered a new round of high-speed growth. In this rapidly developing phase, the emergence of new technology and its wide application has become a major feature, and the high system openness and internal logic are the center and theme of development.
At present, the focus of domestic software technology development and application is mainly concentrated in the following areas:
First, enterprise application
Given the specific situation in China (lack of general enterprise platform products), the enterprise-class applications here mainly refer to the field of enterprise-class industry applications, the three major industries of financial, telecommunications and government (the sum of the markets in these three industries occupy More than 80% of the company's application), in which the core system of the financial industry and the telecom industry core system is implemented in C / C due to the traditional evolution and the performance requirements. The development of government agencies and telecommunications and financial peripheral channels currently basically select J2EE architecture to obtain cross-platform deployment capabilities and good system scalability and scalability. As an example in the field that I personally involved, the bank's core business system is implemented in C / C (all of 2000, all of which use C language development, most of which use C architecture), peripheral channels. The research and development of new products are mostly using Java technology. The weight in government application is the national tax declaration system. It is currently based on the C / S structure developed by the Sybase platform. At the same time, the new generation tax system has begun to design and develop in the J2EE platform.
On the other hand, for some small and medium-sized enterprise applications, such as corporate CRMs, CIM systems, considering system costs and maintenance difficulty, etc., multi-use Windows Server-based ASP SQL Server combination is used.
Technical topic:
1.c
[Status] 98 years of language specification identification marks the "birth" of C "new" language, from this perspective, C is a young language, but from evolution history and development (C in 1979 4) The birth of the birth of the birth of the Bell Lab), C is quite mature and widely used in various fields. Readers who are interested in C can take a look at "The Design and Evolution of C " this book. In this book, Bjarne Stroustrup has explained a detailed and deeper story from the process of C from the birth of the entire design idea.
Undoubtedly, C has become the world's most popular advanced system program design and object-oriented development language, which is positioned as a complex system programming that can support the underlying in C language, and does not lose C's efficiency, and support Data-oriented programming languages for large applications and object-oriented programming languages. In fact, only C languages truly realize the reasonable support for high and low levels. It is also due to the wide use of these excellent features C , from embedded systems (such as VxWorks) to ultra-large application systems, C applications have been filled into the various corners of the IT industry. Relatively speaking, the overall level of C applications in the domestic enterprise platform is relatively low, mostly in relatively simple small-scale application development levels. On the one hand, due to the relatively lag of domestic IT industry technology, new generation programming ideas such as OOP, GP will be popular in the past two years (until now, according to the computer programming professional teaching of many colleges and universities in the author, I also stay in Turbo C 2.0 programming. Stage), the old generation of technicians are indifferent in OOP, OOD (object-oriented design). On the other hand, the domestic IT technology industry has not much, lacks high quality, high-quality application system, many applications still stay in the implementation phase of the project project, product investment is small, not strong, difficult to do Mature product design and development, so it is relatively similar to C of longer R & D cycle. At the same time, for traditional large-scale applications (such as finance, telecommunications core business areas), due to its original infrastructure, it is built in a process-oriented C language system, considering the continuation of the system and changes in maintenance (capital cost, time cost, And developers master the cost based on C OOP, OOD, etc.) Most of them are still in a comparative conservative wait-and-see or try to improve the stage. Furthermore, facing a new generation of languages such as Java, C #, C is strongly challenged based on data access, network interactions, and distributed enterprise-level applications, and many technicians began to transfer their attention to these emerging. Programming language. In such cases, there are not many domestic excellent C programmers, and excellent enterprise C architect designers are more refined.
[Development] With the expansion of IT applications and the development of software system structure, traditional process-oriented programming has been difficult to meet the needs of system architectural design, most of them are based on process design, such as bank application systems. The account account opening, withdrawal, query business, etc., often completed the database connection, read database records, read database records, verify user password fields, and judgment deposit status fields, judge deposit status fields, judging deposit status fields, judge deposit status fields, and judgment deposit status fields, and judgment deposit status fields. Update a series of operations such as database records, turn off database connections (this is not the author's chaos, the current domestic bank's business system is this, and everyone can think about thousands of transactions for the bank, so structure What nightmares will be developed and maintained (even if we can use the establishment of the general class library and define the corresponding structure method for structural adjustment, but for an increasingly large system, it is undoubtedly limited). The emergence of object-oriented design ideas provides strong support to solve such problems. By using object packages, inherits, the system is divided into several clarity of object homes, and the system business function is specifically used by the interaction between the object. In this way, the system's overall logic architecture is quite clear, and the object is focused on each independent implementation, and the code overlap is reduced and the reusability is greatly increased.
C as a tradition, mature-oriented programming language has also been widely used. At present, domestic enterprise-class C applications can say that they have just started, developing relatively late and lack a high level of application development environment, facing the fierce competition of new generations such as Java, C # (there are many arguments in this area, some Theoretical reasoning believes that the objects faced by C and Java and C # solutions do not have any conflicts, but in terms of the actual project experience of the author, C and Java are always a fierce debate in the new product research and development selection. The focus, from a small information management system to a large ERP system, financial business system, C face pressure that may be replaced by Java. In addition, we can also look at the product development plan in recent years. Out of international manufacturers have tilted Java in this regard), therefore, C may face a relatively embarrassing situation in new product research and development applications in China's enterprise-class fields, and its main development will focus on the original C language-based technology platform. Upgrade and some areas (such as financial, telecommunications core systems, online game servers, etc.) for real-time operations (for example, this is just the point of personal opinion.) 2.java
[Status] The future computer system is based on Web-based distributed calculations. Java is undoubtedly the best language that is currently satisfying this trend. Due to its own open system and its simple syntax, domestic Java technology applications are booming. Although the overall level is not very high, the development and application of C is already very advanced in China, which can be seen from many domestic or community Java Technical organizations. Key Technologies and Content in Domestic Enterprise Applications Mainly focused on: data access, data format conversion, logic control, data transmission, data representation, etc., and these are the advantages of Java, so in practical application implementation, Java / J2EE has become an irreplaceable enterprise application solution.
[Development] As a programming language that is in the peak period, Java deeply reflects the essence of "design". The rigorous and clear structure makes it a good expansion ability and broad development space, and the simple syntax provides good grammar. Maintainability, while reducing the difficulty of programmer encoding to make more energy to focus on the design and system framework of business logic. In the foreseen in the next three years, Java will further consolidate its strategic advantages established at the server side and extends in applications such as embedded systems. At present, domestic in Java applications has already had a good technical atmosphere and the masses, which emerges many excellent Java technologies to discuss organizations and Java technology-based outstanding works, which believes in the next three years to form a large-scale Java application. Personally, Java technology will have very broad prospects in China. On the one hand, J5E-based applications based on J2EE frames will become a medium-sized pillar of large commercial applications, on the other hand, in mobile phone, information appliance, IC card, etc., J2ME will also play an important role.
3. .NET
[Status] As a microsoft next-generation technology platform, .NET undoubtedly undoubted the future of the Windows platform, no matter what the international forums at home and abroad, we have to face .Net this in the future 3 New technologies that we have to accompany 10 years. Since there is no longer time, the US is still in China or in my country, .NET is also in the initial exploration and attempt phase, based on .NET-based enterprise application can say just start.
[Development] .Net itself is not a new framework. Microsoft integrates many technologies, launched this cross-language, cross-platform technical specification, it has learned the essence of all technology, I believe that with its own advancement and powerful Market capabilities, .NET will be used in the future of not far. Personally, in the foreseeable future, ASP.NET will gradually replace the current traditional ASP technology, inheriting existing Windows Server applications, and due to the popularity of the Windows platform, .NET will be in most small A wide application is obtained in the End Customer system. With the advancement of PC hardware technology according to the advancement of Moore and the development of software technology itself, Windows Server will gradually be close to the low-end small machine in small and medium-sized enterprise applications. In the next-generation Internet technology calculated by GRID, I believe that .NET will play a front-end service provider role, that is, running in high performance, Java application on the mainframe, providing a universal web service interface, and is provided by .NET platform Application integration of customer interface. Related Technology Books
1.c
There are many heavyweights in C books, such as THE C Programming Language, C Programing Language, C Primer, etc., but these books are only limited to C language itself, how to use C powerful features to design first-class software is another thing The following two books are classic books in C design:
◎ Large-Scale C Software Design (Existing Order Order on Chinapub)
If it is just a single soldier, write some little girl, don't read this book. In addition, you have to be big after reading! The content of this book is not sitting at Professor Tali, and scholars can think about it, and it comes from the first line of engineers' experience.
◎ MODERN C Design Traditional Edition is translated by Taiwan Mengyan (there is a foreign version of ChinaPub)
This book introduces a set of reused design "treasures" called "generic component", and also describes the techniques used to construct these components. These generic components can provide users with similar libraries in various software system systems. The techniques of encoding and implementation will focus on the tasks and issues that are traditionally belonging to the design phase, while the design phase is usually completed before the encoding is encoded. Because it is a high-level component, generic components make it possible to express complex software systems in a very expressive and easy-to-maintain code. The generic programming, the design mode and the three elements of C are combined here to achieve high reuse in the longitudinal and horizontal direction. In the horizontal direction, use a small code base to achieve a combined number of unlimited structural and behaviors. In longitudinal direction, the versatility of these components makes them can be applied to a wide range of applications.
The main readers of this book is two types of people. The first category is an experienced C programmer, and they want to master the latest library write technology. This book shows new, powerful C customary (IDiom), and its ability is surprising, some or even people have never thinking. The second category is those busy programmers, they have to work, and it is impossible to pay too much at the study. They can skip the most complex implementation details and concentrate on the master of this library. Each chapter has an introductory explanation to end with "Quick Facts". The programmers will find that these parts are very useful reference materials in understanding and using components. Components can be understood separately, which can also be used safely and excellent. This book is not a model technology book is not intended to fully discuss mode technology. Because in this book, the mode is displayed from a library writer, so even readers who are more interested in pattern technologies will also find this point of view. ◎ Ruminations on C : a decade of programming Insight and Experience
"Ruminations on C " is concentrated to reflect C key ideology and programming technology, not only tells you how to program, but also tell you why you want to program this.
This will be the must-read of C programmers. because:
1. It contains rich C ideas and techniques, summarizes the principles and methods of programming from the detailed code instance.
2. It not only teaches you how to follow the rules, but also teach you how to think C programming.
3. All object-oriented programming also include generic programming. And in-depth exploration of the intrinsic ideas of STL's most important new achievements in C in recent years.
When the author of this book is using C , there are very few C users around the world. They have a prominent contribution to the development of C languages.
2.java
Personally divide Java books into three types, language classes (such as Thinking in Java), platform and related technologies (such as INSIDE JVM, Java Management Extension) and design classes (such as Design Pattern Java Companion Applied Java Patterns), and , Java-based design is the weight. As we all know, the Java language itself is based on object-oriented, concise, and its language is not too complex (this is a stark contrast with C ), so for Java newcomers, books such as language teaching only need one This tutorial, a more comprehensive reference manual (Thinking in Java and JDK Document can be met), and the focus of learning is also the advantages and disadvantages of a Java designer, it is designed for specific systems. Whether the application meets demand, and the design of the design requires considerable theoretical accumulation and practical practice.
(1) Platform and related technology
◎ "inside jvm"
To go deep into Java's operational mechanism, you must understand the JVM mechanism. Java is known as Platform Independent, but JVM itself is a Platform. As we use the MFC to write a Windows application, only the Windows system message processing mechanism can be written Powerful MFC application.
◎ "O'Relliy Java Management Extension"
JMX Java Management Extension is an extension specification for Java component management and the core and foundation of the current mainstream J2EE application server (WebSphere, JBoss). (2) Language class
◎ "The Elements of Java Style"
7 people participated in the 140-page book, can it be good? J
Java Syntax tells you how to write the code you can understand, and Java Style tells you how to write someone else can easily read the code, it turns out that the code that is easy to maintain is usually more robust, while Java is a procedure for large engineering applications. Design languages are especially important in this regard. It is recommended that people who use Java programming to read this manual, but too much energy can bring great help to your work, which is very guiding.
◎ "Bitter Java"
The design model is very important to software development, which can be seen from its number of techniques. However, in view of its practicality in the development process, the design model only solves half of the problem. Anti-Mode - Description "A common solution to the problem that produces absolute negative results" - aimed to solve the problem with the Java programmaking to avoid common Java traps to solve the problem. "Bitter Java" is such a book, which tells you what should not do, thus helping readers avoid repeating the same mistakes.
◎ "Java Pitfalls" & "More Java Pitfalls"
Effective C in the Java boundary.
Many Java programmers summed up some scattered programming experience through a few years of hard work, and constantly touched the wall. When they see these two books, they may be ecstatic. These two books summarize the Java programming may encounter. Most problems. Good books that are not read.
(3) Design class
◎ "Applied Java Paterns"
GOF's Design Pattern is the mountaineering method of design mode, but because it is a description method of C , and due to the difference in Java language and C , Java programmers often have a strange feel, it is difficult to cut into practice, and applied Java Patterns is the design pattern books written in Java languages. Through the actual Java code example, the reader clearly understands the implementation of the design mode in Java and can implement a fast food application of design mode in actual work.
◎ "Thinking In Patterns with Java"
Thinking in Java by Bruce Eckel About Patterns in Java, now is still in version 0.6.
3. .NET
.NET launch time is not long, the publication of technical books is still in the stage before dawn, there is no classic book like "The C Programming Language" or "Think in Java". At this time, the document from Microsoft is undoubtedly the most deeply engaged in learning resources. The author looked through many related technical information at home and abroad, and it was best to introduce the MS Training Book, which is easy to operate.
For .NET, similar Java, the author is divided into platform technology-related classes, language classes, and design classes.
(1) Platform technology related categories:
◎ "Inside Microsoft .NET IL Assembler" (MS Press)
In-depth analysis of the internal operation mechanism of MSIL, Common Language Runtime, to learn about the .NET system mechanism, can not read.
◎ "Professional ASP.NET" (Wrox) Wrox Programmer To Programmer, the Professional Series books published in .NET are still excellent. This book mainly tells how to create ASP.NET web applications using server controls and data access technology; development, protection, and configuring Web Service, and issues such as debugging technology, performance, migration, and interoperability. If you have experienced Web application design, this book will be a very good entry and development manual for ASP.NET.
◎ "ASP.NET Website Programming: Problem -Design -Solution" (Wrox)
The advanced reading of ASP.NET is recommended to study on the basis of Professional ASP.NET.
◎ "Debugging asp.net"
This written reader is a product technical manager or experienced senior technician, and they need to review the code of the product and conduct a detailed test to ensure product quality.
Professor of this book briefs the debugging strategy and skills of large-scale .NET applications, such as how to develop code writing specifications to avoid a large number of emergence of common errors, how to track debugging .NET application through .NET debugging tools, and transfer from traditional ASP to ASP.NET Some warns and suggestions in the process, etc.
(2) Language class:
◎ "Inside C # Second Edition" & "Microsoft Visual C # .NET (Core Reference"
From the Microsoft Press .NET core language C # technology book, the most authoritative language tutorial.
◎ "Thinking In C #" 0.1 Preview MINDVIEW
I have just downloaded and read, I have not read it, I'm not comment, I hope to maintain the consistent quality of the Thinking In ... series.
(3) Design class
Temporary space.
Second, Windows Desktop Application
Due to the popularity of domestic Windows platform, a large number of desktop applications based on Windows platforms developed rapidly, and a group of high-level desktop applications have emerged. From a small tool type software to large office automation software, from multimedia play, entertainment game software to viral protection, etc., showing a thriving scene.
In the formal army developing in domestic desktop applications, development technologies based on Visual C platform are universal. The following examples: Jinshan word (may be the most software for Chinese users, development tools: VC ), WPS Office (VC ) (Last time with Jinshan President Lei Jun chatted, I also talked about the problem of Windows development tool. After I have eaten Borland OWL in Win3.1 platform, Jinshan has been fully turned to Microsoft development platform, but it seems that Delphi is also introduced. C Builder This type of development tool), Dongfang Shadow (VC ), Super Solver (VC ).
For some small desktop applications, such as shared software development, RAD development platforms such as Borland Delphi / Visual Basic have occupied great market share, representing Foxmail (Delphi), Super Rabbit (VB), Windows Optimization Master (Delphi) ), Network partner (Delphi), etc., of course, also have heavy grade works based on VC Netants, Flashget. Technical topic:
In view of the domestic desktop applications in the Windows field, we will discuss only on the desktop application development platform of the Windows platform.
1.VC / C Builder
[Status] For Windows application development, VC seems to be no choice, comprehensive SDK document, rich development resources, but because VC is not enough to support RAD development, it is difficult to develop and deploy, especially for GUI development and The support of database development is relatively lacking, so development and maintenance costs are too high for fast-customized desktop applications (such as small-scale dedicated software) (as well as exchanges with Netants Author, in order to achieve the best results and flexible Sex, he plays an old MFC framework in Netants, using Windows SDK to complete the entire interface design, and it is expected that it is quite considerable to be considerable), and individuals think that VC is more suitable for product chemical development in desktop applications for large and medium-sized software companies. .
C Builder as a combination of C syntax and Delphi's VCL framework, naturally inherits the innate advantages of two mainstream desktop technology, but from the other hand, this is precisely in the C Builder, due to Delphi VCL development For historical reasons, most VCL components are written by the Delphi programmer with Object Pascal. These components have been adapted to C Builder, but they have encountered some headache problems in compatibility and programming. At the same time, C Builder is the compilation speed of human disease and the Code Insight speed also makes large part of C programmers, and the current version of Technology is used to adjust the performance adjustment, but relative to VC , its compilation speed is still Slow, but the latest C Builder 6 has been improved by the I feel, I hope this problem can be better solved in the new version).
[Development] VC is the development platform for engineering level from design ideas. It is undoubtedly a mature application development platform, which has undoubtedly established an irreplaceable status in the field of desktop development. Its development does not seem to say, believe in the future Three years can still be awarded the first place in desktop application development tools.
Although it lists the shortcomings of C Builder, we must recognize the meaning of "reasonable", C Builder does meet the strong demand for C technicians to the RAD tool, with Kylix3, based on C Builder The code written by the Clx can be portally transplanted to the Linux platform, which also injects a congenital strong agent for the C Builder application. If Borland can make further improvements in compilation speed, C Builder will be as high as C RAD. 2.Delphi / vb
[Status] Delphi / VB is undoubtedly a rapidly developed tool, in domestic desktop applications, Delphi / VB occupies more than 80% of the share.
Delphi is very extensive in Southeast Asia, Southeast Asia, Southeast, Southeastern, and is available from desktop to small and medium-sized enterprise-level development. As Delphi.Net, Kylix 3 launched, Delphi / Kylix has also been developed as a new peak as a desktop application development tool, while using the power of .NET's power to further in the server.
At the same time, VB is very common in East Asia, especially in Japan. Relative to Delphi, due to the largest adjustment of VB.NET, its development may temporarily face a slime stage in a transformation.
[Development] From the technical point of view, VB cannot be a purely object-oriented programming language. This is greatly lagging behind Borland Delphi, Object Pascal (Pascal's Delphi version) from birth is a completely tail-oriented baby, The concise grammar makes the length of VB have a monotonous. In fact, from my personal perspective, I don't optimize VB's technical system, in addition to its royal blood of Microsoft (thus with detailed documentation and example, and reliable sustainability), it does not have technical competition Advantage. Instead of Delphi Advanced Application Framework has been consistently recognized and praised, the accumulation of nearly 10 years also brings a large-scale follower, believes that Delphi will continue to brilliant in the next three years, becoming the preferred tool in RAD development.
3. .NET Windows Form
[Status] The new generation of Windows desktop application development technologies just born, has not yet received a large scale.
[Development] .NET Windows Form as part of the Microsoft's new generation technology platform, will undoubtedly become one of the main technologies for Windows platform desktop applications, but now faces a more embarrassing situation. First, due to .NET running platform has not been popular, This is a large extent to a large extent, which hinders its further promotion and application to a desktop application developed based on .NET Windows Form. Compared with traditional Windows native development tools, their code runs slower, and individuals believe that their short-term application areas should be auxiliary development as a web application system (such as writing application configuration management systems, etc.). From the perspective of long-term, comprehensive factors, .NET Windows Form Application can only be a mainstream in next-generation operating system Windows.net, and this transition time may continue for 3 years, so. NET Windows Form's size application should be after 2005.
Related Technology Books
Personally, the biggest difference between desktop application design and enterprise application design is that the focus of enterprise application design is a good system logical architecture, while the desktop application is mostly focused on interactive interface design and the functional implementation of the operating system interface. .
In desktop applications, due to the extensive base of the masses, related excellent books have been recognized by everyone. Here, the books read by the author have a simple column for your reference. 1.VC
◎ "INSIDE VC " Chinese version "Visual C technology insider"
Online evaluation is different from this book, mainly in two Chinese version (fourth editions and fifth edition), but most of the author's attention is concentrated in key examples and corresponding descriptions, the entry and exit There is no impact J. In general, this book is relatively light, and the instance is very rich, it is a good introduction book.
◎ "INSIDE Windows 2000"
Doing a Windows desktop app, you must master the core foundation of the Windows, this book is the unveiled of Windows core technology from Microsoft Press.
◎ "MFC is deeply shallow"
Not much to say, Houjie's masterpiece, I want to go deep into the MFC's good tutor.
◎ "Exceptional C " & "More Exceptional C "
I bought this "More Exceptional C " in the past few times, but I haven't read it in-depth. I don't know how the Han is, I have read some samples of this book through some channels. I feel very good.
◎ "C Object Model", "Effective C ", "More Effective C "
These three are the works on the C language itself, not only to the desktop applications, but in depth, in depth, clarify the classic books of the C language.
2.Delphi
◎ "Essential Pascal"
Object Pascal's entry brochure, one hundred pages, beginners must have.
◎ "Delphi Developer's Guide"
Very comprehensive development manual, I believe that most of this book can solve most of the problem.
◎ "Master Delphi"
The advanced tutorial of Delphi tells the internal implementation of VCL.
3.vb
The author uses VB to see what books, the Quick Basic has accumulated some grammatical foundation, starting from VB1.0 for DOS, VB2.0 for Win3.0 (there is no VB book at that time), so for Visual Basic Book conditions are not very understandable. It is said that several books from Microsoft Publishing Society are still not bad. You can go to read it.