The dominant technique in process-oriented programming is

Program development: analysis and summary of the current mainstream development technology

Mainstream programming languages: C++, Delphi (ObjectPascal), Java, C#

Desktop application framework: MFC, VCL, QT, JavaAWTSWING, .

Enterprise application framework: WindowsDNA (ASP, COM, COM+), J2EE, .NetFramework

Development tools: VisualBasic, Delphi, VisualC++, C++Builder, VisualC#

* Programming Language: C++Delphi (should have been ObjectPascal, but for simplicity’s sake, I’ll just mix the language and the tool) JavaC# (although he has just been launched, but because Microsoft has poured a lot of heart and soul into it, it will surely become an important development language)

* Desktop Application Framework:MFCVCL

*Enterprise Application Framework:WindowsDNAJ2EE.Net

*COM Technology: I’m singling out this technology because it can’t simply be thought of as a language, a desktop application framework, or an enterprise application framework; it’s related to all of those.

2.1 Programming Languages

2.1.1 The Evolution of the C++ Language

Initially it’s important to start with binary code and assembly, but that’s too far away. Let’s start with process-oriented languages (including BasicCFortranPascal). Such process-oriented high-level languages finally brought computers into the realm of unusual applications. One of them, C, because of its simplicity and flexibility, has led to great software like Unix and Windows.

Object-oriented languages are a logical evolution of computer languages because they provide a better way of organizing data without compromising too much on efficiency, simplicity, and can make programs easier to understand and easier to manage – this may lead to disagreement, but the facts speak for themselves. The facts speak for themselves, and C++ has finally made C’s territory smaller and smaller. every computer language alive today is more or less object-oriented, so this point doesn’t cause too much confusion. much of C++’s success is due to C, and it’s a logical outgrowth of C++ to be what it is today. C++ is a logical product of what it is today, because in the process-oriented era, C had pretty much ruled the roost. Today’s languages like Java and C# borrow a lot of things from C. C# originally meant C++++. In fact, C++ had a good reason to unify the world of object-oriented programming languages, but unfortunately, C++ is too complex. Even as a skilled programmer, you’d have a headache if you had to explain something clearly. To take a few examples that aren’t quite so complicated:

What is the difference and connection between overloaded member-converting copy-constructors and transform-constructors for =?

What is the significance of defining a class member function private:virtualvoidMemFun()=0;?

What does int(*(*x(int))[4])(double); mean?

There are other features, such as typedefs and macros that can be used to make a new language (macros aren’t part of C++, but they’re just too closely related to it), memory problems that make you fall over at the drop of a hat (is it enough to just new and delete?), and memory problems that make you fall over at the drop of a hat (is it enough to just new and delete?). Is there any consideration of an object stored in a container?) …… blah, blah, blah, C++ is so complex that it takes a long time to learn it, and you’ll find that even if you’ve been using C++ for years, you’ll still find new things to learn on a regular basis. You want to solve a problem in an application domain – say, querying data from a database, changing data – but you need to have a headache in C++ first. Yes, you are proficient in C++, and you can easily answer my question, but have you ever thought about how much it costs you? I don’t mean to overly condemn C++, I personally love C++, I even recommend a serious programmer developing common applications to learn C++ as well. Some features in C++, such as the pointer arithmetic template STL are almost loveable, macros can replace a lot of code with a couple of characters, and C++ is irreplaceable for system level programmers, Java’s The virtual machine is written in C++, and C++ is here to stay and will continue to thrive.

2.1.2 Java and C#


Delphi is an intermediate product from the move from developing applications in C++ to developing applications in Java. It is simpler than C++, almost as simple as Java, because of its simplicity it was possible to define and use a rich library of classes, and Delphi did so, resulting in the VCL and other component libraries. On the other hand, it is more efficient than Java, which runs in a virtual environment, so that in the balance of simplicity and efficiency, Delphi has found its own living space. And it is expected that in the future within a period of time, this living space will still exist. It is obvious that Microsoft has given up on this area, and is focusing on two areas: the system language C++ and the future of Java (actually .Net). Maybe this is a lucky thing for Borland. If I could give Borland some advice, it would be not to make Delphi more and more complex; if that happens, one is driving one’s users into the territory of C++ or Java. Delphi and Delphi’s users will still survive just fine until virtual machines finally take over all application development.

2.2 Desktop Application Frameworks

Currently there are only two really successful desktop application frameworks, one for MFC and one for VCL, and a few others that haven’t in fact made it into the application space. Unfortunately I am not well versed in either desktop application framework. But that doesn’t stop me from making a proper assessment of him.


MFC (and at one time OWL) is the result of a normal evolution of SDK programming, in the same way that C++ is the result of the evolution of C. MFC itself is a marvelous, but less successful, piece of work, and it is outdated. That’s my conclusion, and MFC is the result of a lot of genius – as is OWL and VCL, of course, and Hou Jie’s “MFC in Depth” puts that wisdom in front of us. But I don’t think anyone will feel comfortable using this thing, and if you’ve been using Java, VB, or Delphi, and then go back to MFC, the discomfort will be even stronger. I can not explain why MFC has not been able to finally develop and VCL as simple and good desktop program framework, perhaps Microsoft did not have the energy or motivation, in any case, MFC is that way, and there will be no further development, it has been abandoned. I sometimes think that maybe developing something like MFC based on a complex language like C++ is inherently wrong – it is possible to develop such a framework, but it shouldn’t be required that the people who use it are familiar with the whole framework before being able to use the system, but it’s clear that if you don’t understand the internal mechanisms of MFC, it’s unlikely that you’ll be able to to use it well, and I can’t explain clearly why this is the case.


VCL has been much more successful in comparison. I’m sure that many of the people who use VCL probably haven’t studied the internal mechanisms of VCL as painstakingly as MFC users have studied MFC. But that doesn’t stop them from developing applications that work well and look good, and that’s good enough, so what else is there to say?VCL gives you a simple and consistent mechanism for writing complex applications. In Levy’s Borland Story article, it was said that after Borland C++3.1 was released, Borland proposed to develop something like C++Builder, but it didn’t happen. Yes, if C++Builder appeared at that time, what would be the world of software development today? I can’t imagine. Maybe after a while, none of this will matter anymore. Because new languages such as Java and C# provide desktop application frameworks similar to VCL. At that time, with the simplicity of Java and C# themselves, if they have enough chunks of speed, even languages like Delphi are going to disappear, so what’s the point of arguing? It’s just that for today’s desktop program developers, VCL really is the choice.

What are the characteristics of the Java language


Java was originally designed as a language for integrated control of household appliances, so it had to be simple.The simplicity of the Java language is reflected in the following three aspects:

1)The style of Java is similar to C++, and thus C++ programmers are very familiar with it. In a sense, the Java language is a variant of C and C++, so C++ programmers can quickly master Java programming techniques.

2)Java does away with the areas of C++ that tend to cause program errors, such as pointers and memory management.

3)Java provides a rich class library.

2. Object-Oriented

Object-Oriented is arguably the most important feature of Java. the Java language is designed to be completely object-oriented, and it does not support procedural programming techniques like C. Java supports both static and dynamic styles of code inheritance and reuse. Java is similar to SmallTalk in terms of object-oriented features alone, but other features, especially for distributed computing environments, go far beyond SmallTalk.

3. Distributed

Java includes a sublibrary that supports TCP/IP-based protocols such as HTTP and FTP. As a result, Java applications can open and access objects on the network by virtue of URLs in almost exactly the same way as accessing a local file system. Dynamic content for distributed environments, especially the Internet, is certainly a very ambitious task, but the syntactic features of Java make it easy to achieve this goal.

4. Robustness

Java is committed to checking programs for errors at compile and run time. Type checking helps to check for many errors that occur early in the development process. java manipulates memory itself to reduce the possibility of memory errors. java also implements true arrays, which avoids the possibility of overwriting data. These features greatly reduce the development cycle of Java applications. Java provides Null pointer detection array bounds detection exception exit byte code checks.

5. Structure-neutral

In addition, in order to establish Java as a whole of the network, Java compiles its programs into a structure-neutral intermediate file format. Any machine with a Java runtime system can execute this intermediate code. Now, Java running system Solaris2.4 (SPARC), Win32 systems (Windows95 and WindowsNT), etc. Java source programs are compiled into a high-level machine-independent byte-code format language, which is designed to run on a virtual machine, the execution of the machine-related runtime debugger implementation.

6. Security

The security of Java can be guaranteed in two ways. On the one hand, C++ functions like pointers and freeing memory have been removed from the Java language to avoid illegal memory manipulation. On the other hand, when Java is used to create a browser, the combination of language features and features provided by the browser itself makes it more secure.The Java language is tested many times before it is executed on your machine. It goes through code validation, checking the formatting of code snippets, detecting pointer manipulation, object manipulation for excesses and attempts to change the type of an object.

7. Portable

This phrase has always been a mental indicator for Java programmers and is one of the reasons why Java is so popular with programmers, with the biggest credit going to the technology of the JVM. Most compilers produce object code that can only run on one kind of CPU (e.g., Intel’s x86 series), and even those compilers that can support multiple CPUs can’t produce object code suitable for more than one CPU at the same time. If you need to run the same program on three CPUs (e.g., x86, SPARC, and MIPS), you must compile it three times.

But the JAVA compiler is different; the object code (J-Code) produced by the JAVA compiler is targeted at a non-existent CPU, the Java Virtual Machine, rather than an actual CPU; the JAVA Virtual Machine masks the differences between CPUs so that J-Code can run on any machine with a JAVA virtual machine.

The concept of a virtual machine is not unique to AVA: the University of California introduced the concept of a PASCAL virtual machine a few years ago; Perl scripts, which are widely used on Unix servers, also generate machine-independent intermediate code for execution. But the special feature of the JAVA virtual machine, designed for Internet applications, is that it produces secure object code that is not threatened by viruses. It is because of the Internet’s special requirements for security features that the JVM has been rapidly accepted. Today’s major operating systems such as OS/2, MacOS, and Windows 95/NT have or will soon provide support for J-Code.

As a virtual CPU, the JAVA virtual machine is independent of the source code (SourceCode). We can generate J-Code not only in JAVA, but also in Ada95. In fact, there are already J-Code compilers for several types of source code, including Basic, Lisp, and Forth. Once the source code is converted to J-Code, the JAVA virtual machine can execute it without distinguishing which source code it was generated from. The result is CPU portability. The advantage of compiling a source program into J-Code is that it can be run on a variety of machines, while the disadvantage is that it does not run as fast as native code.

Architecture-independence allows Java applications to run on any computer system equipped with a Java interpreter and runtime environment, which is a good basis for easy portability of Java applications. But that’s not enough. If the basic data type design depends on the specific implementation, will also bring great inconvenience to the program portability. For example, in Windows 3.1 in the integer (Integer) for 16bits, in Windows95 integer for 32bits, in DECAlpha integer for 64bits, in Intel486 for 32bits. through the definition of platform-independent basic data types and their operations, the Java data can be consistent on any hardware platform. The basic data types and their representations in the Java language are as follows: byte8-bit binary complementshort16-bit binary complementint32-bit binary complementlong64-bit binary complementfloat32-bitIEEE754 floating-point numberdouble32-bitIEEE754 floating-point number char16-bitUnicode characterIn any Java interpreter, data types are implemented specifically based on the above standards. Because almost all currently used CPUs can support the above data types, 8 to 64-bit integer format complementary arithmetic and single/double precision floating-point arithmetic. the Java compiler itself is written in the Java language. the Java arithmetic system is compiled according to the restrictions of the POSIX ease of portability, and is written in the ANSIc language. the Java language specification does not have any “with the implementation of” the content. The Java language specification does not contain any “implementation-related” content.

8. Interpreted

9. High performance

If the interpreter is not too slow, Java can translate object code directly into machine instructions at runtime. 300,000 procedures can be called in a second by Sun with a direct interpreter. The speed of translating target code is no different than the performance of C/C++.

10. Multithreading

The multithreading feature makes it possible to perform multiple small tasks simultaneously in a single program. Threads — sometimes called small processes — are small, independent processes that are carved out of a larger process. Because Java implements multithreading technology, it is more robust than C and C++. The greater benefits of multithreading are better interactive performance and real-time control. Of course, real-time control performance depends on the system itself (UNIX, Windows, Macintosh, etc.) and is better than single-threaded in terms of ease of development and performance. Anyone who has used the current browser, feel for the adjustment of a picture and waiting is a very annoying thing. In Java, you can use a single thread to pull up a picture, and you can access other information in the HTML without having to wait for it.

11. Dynamic

The dynamic nature of Java is a development of its object-oriented design approach. It allows a program to dynamically load classes that are needed during runtime, something that is not possible with object-oriented programming in C++. In C++ programming, whenever an instance variable or a member function is added to a class, all subclasses referencing the class must be recompiled, or the program will crash.Java solves this problem in the following ways.Instead of compiling references to instance variables and member functions as numeric references, the Java compiler saves the symbolic references in bytecode and passes them to the interpreter for interpretation. Instead of compiling references to instance variables and member functions as numeric references, the Java compiler saves the symbolic reference information in the byte code and passes it to the interpreter, which converts the symbolic reference information into numeric offsets after completing the dynamic connection to the class. In this way, an object generated in memory is not determined during the compilation process, but is delayed until runtime to be determined by the interpreter. In this way, updates to variables and methods in the class are made without affecting the existing code. When interpreting the execution of byte code, this process of finding and converting symbolic information is performed only once, when a new name appears, and the code can then be executed at full speed. The advantage of determining references at runtime is that you can use updated classes without worrying about affecting existing code. If a program connects to a class on another system on the network, the owner of that class is also free to make updates to the class without crashing any programs that reference it.Java also simplifies the way to use an upgraded or completely new protocol. If your system running a Java program encounters a program that you don’t know what to do with, that’s okay; Java can automatically download the functional program you need. IV. Similarities and Differences with C and C++ Languages Java offers all the features of a powerful language with hardly a hint of ambiguous features.C++ is not safe, but C and C++ are still accepted, so Java was designed in C++ form to make it easy for people to learn.Java removes many of the features of the C++ language, making Java a very concise language feature and adding a Very useful features, Java removed the following C and C++ functions and features: pointer arithmetic structure typedefs#define need to free memory global variable definition of this feature are very easy to cause errors.

12. Unicode

Java uses Unicode as its standard character, a feature that allows Java programs to be written and executed on platforms in different languages. This feature allows Java programs to be written and executed on different language platforms. Simply put, you can use Chinese characters for variables and category names in your programs <note>, and when your programs are ported to other language platforms, they will still execute normally.Java is also the only computer language that inherently uses Unicode.

Software development in general what skills

Software development skills needed:

1, understanding of computing models and frameworks: sequential computing, concurrent computing (parallel computing, distributed computing);

2, efficient data processing: familiar with commonly used data structures and algorithms design, able to design efficient data structures and algorithms for the calculation of the target and realize it to meet the performance requirements;

3, large-capacity data management and retrieval: at least proficient in one mainstream database, separated from the data processing of a technology specialized in real-time retrieval of large amounts of application data requirements;

4, the underlying system mechanisms: processes, signals, memory management, APIs, etc., understanding of the relevant concepts and implementations, familiar with the use of LinuxMacOSWindows at least one operating system;

5, the process of network communication: TCPIPsocket, RPC, Http, serialization and deserialization, familiar with the underlying principles of network programming;

6, programming languages: process-oriented, object-oriented, scripting languages, functional, browser language, etc., the best Master one of each type of language, etc.

Do I need basic C to learn C++?

The basic statements are the same, but C++ is object-oriented. The content of classes has been increased. Programming ideas have changed, structured into object-oriented

Misconceptions: in the form of questions and answers:

Q: C++ is object-oriented and C is process-oriented?

A: Second right, first wrong, C++ is not fully object-oriented, I’m afraid the only truly object-oriented language is Java.

Q: Can C++ do what C can’t?

A: At least I haven’t found out yet

Q: Is there a barrier to learning C++ after learning C? For example, programming ideas

A: At least I haven’t seen anyone with this symptom.

Q: Do I have to start all over again after learning C and then C++?

A: No, you can do everything in C under C++.

Q: Do I have to learn C++ after C to program?

A: It is not necessary at all.

Q: How is C++ better than C?

A: More software engineering

Q: Is it easy to learn C++ after C?

A: That depends on whether you’ve actually finished C

50 pieces of advice for C++ beginners

1. Learn C++ as a new language (nothing to do with C.)! Really.)

2. Read ThinkingInC++, not C++ Becomes Deadly;

3. Read The C++ProgrammingLanguage and InsideTheC++ObjectModel, not just because they’re hard and we’re beginners ourselves;

4. Don’t be fooled by words like VC, BCB, BC, MC, TC, etc. – they’re all IDEs, and we’re learning a language;

5. Don’t let go of small programming problems that seem simple – they’re often not.

6. Just because you can use VisualC++ doesn’t mean you know C++;

7. It’s not that hard to learn classes, templates, STLs, and genericprogramming. –The hard part is to keep practicing for a long time and spare no effort to read a lot of books;

8. If you are not a genius, don’t want to play games if you want to learn to program – you think you did it, but in fact, your level of C++ doesn’t get higher along with your ability to pass the level. In fact, you can always remember: learning C++ is to program games;

9. You can’t learn C++ by reading VisualC++ books;

10. -It’s you who can’t do it!

11. The impetuous person is prone to ask: what should I learn in the end; — do not ask, learn it right;

12. The impetuous person is prone to ask: XX have a rich way; — suggest that you go to rob the bank;

13. Impatient people are prone to say: I want the Chinese version! I can’t do English! –I can’t do it! I can’t?

14. Impatient people are prone to ask: XX and YY which one is good; – tell you what, both good – as long as you learn;

15. Impatient people are divided into two kinds of people: a) only wait and see and do not learn the people; b) only learn and do not adhere to the people;

15. people;

16. It’s better to hang on to trendy technology than to keep outdated technology in mind;

17. C++ is more than just an object-oriented programming language with support for object-oriented programming;

18. One of the best ways to learn to program is to read the source code;

19. Don’t at any point think that the book you have in your hand is enough;

20. Please read “TheStandardC++Bible”(Chinese version: Standard C++ Treasure Trove) to master the C++ standard;

21. If you can read a book that you can understand, read it carefully; if you can’t read a book that you can’t understand, read it hard;

22. Don’t expect that you can memorize and master anything by reading the book for the first time – -Please read the book the second and third time;

23. Please read EffectiveC++ and MoreEffectiveC++ and ExceptionalC++;

24. Don’t stop at the cradle of the IDE, learn to control the IDE, and also learn to handle programs in a command-line approach to programs;

25. Discuss meaningful C++ points with others, instead of arguing about whether XX works or not or which is better, YY or ZZ;

26. See Programming in Practice and follow it to the letter;

27. Don’t assume that just because there are syntaxes and keywords that look the same in C and C++, they have exactly the same meaning and function;

28. Don’t assume that just because some syntax and keywords in C and C++ look the same that they have the same meaning and function;

28. C++ is not an “expansion” of C — if C++ had been called Z from the beginning, you wouldn’t have made the connection between C and Z as strong as you did;

29. 29. Don’t think there’s anything wrong with switching from XX to C++ — you’re just learning a whole new language again;

30. Read InsideTheC++ObjectModel before you decide if you’ve learned C++;

31. The secret to learning to program is: program, program, program;

32. Look out for the following books: “C++EffectiveObject-OrientedSoftwareConstruction”, “Object-Oriented Software Construction”, “Object-Oriented SoftwareConstruction”, “C++ObjectModel”, “Object-OrientedSoftwareConstruction”, “Object-OrientedSoftwareConstruction” and “Object-Oriented SoftwareConstruction”. Object-Oriented Software Construction (Object-Oriented Software Construction), Design Patterns (DesignPatterns), TheArtofComputerProgramming;

33. Remember: Object-Oriented technology is not exclusive to C++;

34. Put the program examples in the book into practice on your computer, even if the source code is on the accompanying CD-ROM;

35. Expand on the examples you see in the book that make sense;

36. Pay attention to the exception handling techniques in C++ and apply them practically to your own programs;

37. Review your previously written programs often and try to rewrite them to apply your new knowledge;

38. Don’t miss any of the exercises in the book – do them all and record your thoughts on them;

39. Learn and master both the C++ language and the C++ integrated development environment;


40. Since you have decided to learn C++, please stick to it, because the purpose of learning a programming language is to master programming techniques, which are cross-language;

41. Let the various platforms and development environments of C++ go to compete fiercely with each other, and let us focus on the learning of the C++ language itself;

42. When you are halfway through a C++ program and realize that you have used a very poor method, do not stop at once; please work on the rest of the program as soon as possible. Don’t stop; please rough out the rest of the program as soon as possible to ensure the completeness of this design, then analyze your mistakes and redesign and rewrite it (see 43);

43. Don’t be impatient, designing a C++ class is really not easy; the class in your own program and the level of your own class design are improved and developed through continuous programming practice;

< p>44. Never fail to follow some rules you are not proficient in just because your program is “small” – good habits are developed, not memorized;

45. Whenever you learn a difficult point in C++, try to explain it to someone else and make them understand it. This knowledge point and let him understand – you can speak clearly to show that you really understand;

46. Record the knowledge points that you have overlooked or do not understand when you communicate with others;

47. Please continue to make higher and higher demands on your own program, even if the version number of your program becomes Version100.XX;

48. Save all the programs you’ve ever written-that’s one of your best accumulations;

49. Please don’t be a flake;

50. Please love C++!

Basic Methods of Programming

The basic methods of programming are process-oriented and object-oriented methods.

Process-Oriented Approach:Process-Oriented (ProcereOriented) is a process-centered programming idea. These are programmed with the primary goal of what is happening, unlike object-oriented which is who is being affected. The obvious differences from object-oriented are encapsulation, inheritance, and classes. Process-oriented design methodology is a linear process, in accordance with the relationship between the transformation and transfer of information within the intelligent transportation, data-centered, top-down progressive refinement for the decomposition and design of system functions, and ultimately designed to meet the user’s needs of the physical model. Process-oriented design methods mainly use data flow diagrams, data flow description tables, system structure diagrams, framework flow description tables, entity relationship diagrams, etc. to describe the intelligent transportation system architecture. The common programming language for process-oriented is c language.

Object-oriented approach: object-oriented (ObjectOriented, OO) is a software development method. Object-oriented concepts and applications have gone beyond programming and software development, expanding to such areas as database systems, interactive interfaces, application structures, application platforms, distributed systems, network management structures, CAD technology, artificial intelligence. Object-oriented is a method of understanding and abstracting the real world, and is a product of the development of computer programming technology to a certain stage. Object-oriented refers specifically to the use of encapsulation, inheritance, abstraction and other design methods in program design. However, it is obvious that this definition can no longer fit the present situation. Object-oriented thinking has been involved in all aspects of software development. Common object-oriented languages are java, c++, python, c# and so on.