One year ago, I even walked over and turned over, I can't help but exclaimed "The original C program can be written like this", this is the deepest time since I have been shocked for many years. I remember that a few years ago, I purchased a free C reference manual in the bookstore, and FoxBase was more popular. There were several books, C almost no. After the initial reading at the time, it also exclaimed "C is a future C". That is the first time I was shocked by the technology. The previously written procedure is almost purely facing the process. Although it is also a painful planning document and the independence of the function, readability, but with the expansion of the scale, even if you modify a small BUG, you must be surprised to check a lot, to confirm There is no new problem. At that time, an idea was working as a graphical interface system in DOS (with a Windows interface DOS, its purpose is to quickly start a DOS program) without any directory and does not need to occupy basic memory. Today, it looks a simple thing, but there is no internet that there is no Internet, the electronic file source is completely 0, only the PCX, the display point array, the icon editor (I don't know if there is an icon) like this. The periphery, I spent a lot of effort to check the information and debugging procedures. With the menu, windows, multiple VGA graphics cards, several interrupt service procedures intervention, source code has been complicated to have almost no maintenance. At that time, I spent nearly 1 month time to re-plan the name, cut source files and finishing function locations (the most primitive reconstruction). From then on, I became very picky to code quality. Although other students, colleagues don't think of it, huh, huh ... but no matter how much it works at the time, it is still a hard thing for the overall maintenance. When I saw C , everything didn't know how to change, data and operations simply combined into classes in my brain, and each class can manage and maintain separately, I can even The function of the object is tested (the prototype of the unit test). I was for BC 3.1, I didn't know how much time I used to search in the D version of the directory. This is also the way to improve today's Google's ability; in order to use it in schools protected by the protected card, each time To patiently copy the program from the disc to the floppy drive and copy it from the floppy drive. However, I can use C , I don't care, I am very happy, not only knowing a lot of fresh gates, but I feel like a C writer is like a person who has used the big knife spear suddenly has an advanced fire. A program, a class is constantly born under the hand ... Happy will not last too long, after the university, DOS finally gradually be moved to decline. No matter whether it is willing, Internet and Windows bring me on a new platform. Although I also try to see some MSC and BC3.1 for Win books, I suspect that it is not a nightmare ... strange, huge, difficult to understand, strange return value and error handling method, long-bless function Name, more lazy parameters and casually write a simple program to do hundreds of lines that don't know, all of which makes the API like a monster monster, in vicinating the patience of each tried to close it. confidence. All the knowledge that accumulated in DOS has been abandoned by the unfarest, I can only look like a newborn and fool, watching Coreldraw's beautiful running under Windows and only envy. child. I have to admit that MS is often surprised, but gives me more frustration and disappointment. When it was approximately three (Win95 era), VC4 (quickly came again, VC5 / VC6).
After a paragraph of dos./windows, I finally entered the gate of Windows development. The structure of the MFC has become a new hobby. However, a DOC / view can make people feel half-day, at that time, there is almost no book that can make this concept clear book. MFC seems to be a library that is still huge, it feels more simple and fast than developing with API, but it is not denying that it has brought more unknown details. No matter how the source code of the MFC is reverating in me. MFC only makes me a little dream when I am evil dream, and the nightmare is still going on. In comparison, in the development project of the school, his neighbor VB has a lot of advantages, but based on the desire for the deeper understanding of the technology and operating system itself, C has never forgotten me. Finally, this difficult time has also been spent, the Windows API layer has become clear, and DOC / view is not so weird and difficult to understand, and inherit some anytime, anywhere, it is not to be used, Windows I am coming, although I am awkward ... At this time, another thing that made me shocking quietly, that is, COM / COBRA has some information, but it is the concept of concept, unknown Look at those things seem to be more bored more than the political class, it is estimated that the translator itself is also a semi-solution. At that time, for a graduation papers, it is necessary to make an ActiveX that releases a three-dimensional model on the Web. After the Tsinghua BBS asked several seniors, I hurried began to develop a sense of intensiveness. Although I finally completed this, and blurred understanding the level of virtual function table, but more at the time, I felt artifacts for this little bit in IE and VB programs. Fortunately, my tutor allows us to propies their own, and eventually let me (not very skilled) master this fresh technology. Very fortunately, I immediately met a programming master in the company immediately after graduation. He is a hipster in COM. It is his advocacy and help, let me be familiar with and love this technology. With the experience of debugging, the interpretation of the ATL reservoir source code, COM development is gradually no longer so uncomfortable, and even without the manual, you can find a solution in the ATL library. And later INSIDE COM, let me know many of the details and secrets of COM. At this time, the brain has already put the object further out of the interface, which is only connected between these interfaces, and the original objects and classes are not present, all of which are replaced with a small wood block. Down-compatible extension, replaceable parts, plug-in mechanism, multi-storey software architecture, provide secondary development package, now all of this is very realistic, this feels very good, I am also very happy to see other The VB program can use the components that I use VC development and design. When STL is covered, I have not been shocked, or in fact, I have enough mental preparation. Maybe because the ATL library has hints me to express the expression of the template, or because STLs that are not very good, STLs are not too dare to use in the project, STL gives me the feeling of C and COM, although it It is so elegant and almost perfect work. STL has strengthened my original vague generic design idea, but I learned that I wisely gave up the extension of the STL library like tampering MFC and ATL / WTL library (this correctness behind STL) It is confirmed). However, it is important to point out that many practices after COM, including STL and .NET appearance, let me abandon the components more determined, return to more traditional standard C camps.
In fact, I need a program's source code cross-platform running instead of their binary form. Those who run very well in VB and Delphi, will make occasionally study Wince, Symbian and Web me. It's almost like an idiot. Therefore, I decisively gave up COM (by the way), COM will only be a shell level, and many features indicate that it is not suitable as a suitable design basis. The more and more templates in my program have a more and more template class, which often significantly shorten my code. I often hold a large design of the aircraft carrier, but I plan to use small fishing vessels limited. Code to implement it. STL has long been rooted in my heart, I gradually thought that the end point of C is STL, and there will only be some more and more complete STLs, such as Boost ... STL, I have learned some about UML, design. Mode, agile development, reconstruction, unit test book, and use several company projects to taking Java. They all left me, but this impression is only confirmed and deepened, and I can't talk about shock and refresh. Among them, GOF offers me a new standardized design sample, clear structure and expansion ability makes me god. Java for many years, I will reach this at this time: a lack of lightweight cross-platform C , let me transfer the original in the architecture maintenance, cross-platform and API, most of them To procedural performance, database structure, communication protocol, and load balancing (IBM's developwork provides a lot of good information). Java is a good thing, but I will not praise Java's grammar, will not praise Java's virtual machines and cross-platform, and will not praise the concept of jet full of j beggers, I will leave the Java Framework because I will leave. It is a life of many projects, not other ... However, I have begun to consider how I can apply the design pattern on my Java project, and the result is painful. I found yourself every time I tried this time. Almost destined to cause "excessive design" and repeatedly write a lot of differences in appearance. I even considered whether it was written a Wizard to generate Java source code. I also hoped to try to make a universal GOF library with Java, but I later discovered that this implementation will continue to be ugly, no one will like to make the GOF, even more willing to use it, including myself. In the end, I decided that I have to have a modified application GOF, so I just make the GOF as a dictionary and formula, when I need to communicate it with other programmers, put it as a language, I have no enough good solution to the solution. When doing dictionary and model design to check and set the model. I don't want a potential demand that is completely impossible to waste programmers (companies and programmers will be furious for this). I am willing to read and apply other "modified" mature libraries (in the absence of copyright issues), rather than yourself to implement such libraries. Thus, Java gradually became the default development platform for all non-GUI projects. Mastering Java is more likely to master C , I think this is good for companies and projects, because I can't expect that everyone is C experts to enter my project group, and I can't expect to abuse C "to fly the whole leg. "The situation does not happen in the project. In order not to be dragged down by the project, I like Java from my heart, although I gradually found that he became like C , complex, redundant. And gradually, GOF is also far away ... As for later C # and .net, I only saw 1-2 books. My interest is not high, but as a Microsoft, I will undoubtedly need to warm up and understand.