) Rationally look at the decline of VC/MFC

Source: Internet
Author: User
1. VC is not as popular as it is imagined, and there are exaggerated elements. I don't know about it abroad. I only talk about China.
For several years in a row, VC is definitely the main force in school libraries, Xinhua Bookstore, and XX training courses.
Many universities are either still in the turboc era when they offer C/C ++ courses, or even in the VC ++ era. Few
Other development environments. Libraries and bookstores are full of VC ++, both of which are 24-hour proficient, both fast-paced and both
In simple terms, they are all inside clouds. Almost no other development tools can be seen. This gives us an error message,
VC is very powerful, and VC is used in the whole society. When I first saw Linux, there was even fear
So different windows. I was panic when I first used GCC and vim. I think many people should follow
I am in almost the same situation. I am surrounded by the shadows of VC, so many of them are suffocating. In fact, the scripting language is quite popular,
The big environment makes us feel it only after work.

2. VC is in decline.
The development of desktop software was once the only place for VC. When C # Was just launched, it was regarded as a joke by many people.
Net. Up till now, using C # To develop desktop software is still a minority, at least I have only one cable in my computer
Love mobile phone management software. This situation will be rewritten because. net has been integrated into the operating system by default Since Vista started.
, Just like the previous mfcxx. dll and msvcrt. dll. Anyone who has used C # knows that C # is very convenient, whether it is for oo
The degree of thinking support, or the rad of GUI, is very convenient. Looking at VC, the MFC gradually fades out, and it has almost never been used for so many years.
Microsoft's support for the progress is far inferior to. net. wtl is a good thing, but there is no official support. Even if
Vc.net is not comparable to C #. After all, C # is generated for. net.

3. VC development efficiency is not high in many aspects.
It is not that VC is regressing, but that his progress is slow. In many fields, the tool to replace Vc has gradually emerged, and python is fast
The development capability is amazing, and Java also has a wealth of library support. Some small projects originally used VC to do it with them, saving
A lot of development time. Microsoft's VC class library has been around for many years. Especially when it comes to Internet functions,
Vc has been surpassed by many tools.

In fact, the positioning of Microsoft products is more accurate and clear than the decline of VC/mfc.
In the windows driver development field, where performance is very important, VC will continue to play a role in game development.
He is no longer trained as an all-powerful player, but he has his own focus.

Even so, I estimate that VC will continue to heat up in the domestic education sector, and China's national conditions are different.
Dos, QBASIC, turboc, and so on, which is not in the foreign recession, but has been popular in China for a few years.

Currently, many projects without historical issues have started to use C #, Java, QT, Python, Ruby, PHP, etc.
Of course, for personal desktop software, VC is estimated to continue for a period of time. After all, Windows 7 is not so fast to replace XP

Not so quickly eliminated over the years, it is the so-called useless basic theory in the university that has been criticized.

In my personal experience, algorithms and designs run through all my projects. They are irreplaceable.
Even if there is an alternative, it is only possible that the algorithm replaces the B algorithm, or the design replaces the B design.

Looking at recruitment information recently, there have been fewer and fewer traces of VC

Ms's support for it is indeed far less powerful than C #. For example, sending a server-certified email requires a considerable experience of programmers in VC. Recently, I spent a lot of effort to complete the program for sending server-certified emails through MFC, but I will go back to C # And see, hey, there are ready-made controls available, not only simple, but also useful for development. So I do think Ms is abandoning VC. Since C # already exists, why not use a VC? VC programmers are discriminated against and abandoned, so I do feel deeply affected by Ms. Now I am not confused and can only play in windows. It is unlikely that I want to switch to Linux, hey !!!

I personally have this feeling
Use assembly languages as mainstream development tools
Accepted and widely used in C Language
Widely used in C ++
To a wide range of Java applications
To the popular scripting language

Some ideas in software development are changing
Development efficiency is more important than operation efficiency in most cases.
Benefits of lower hardware consumption can be easily eliminated by higher labor costs

We once put a lot of emphasis on performance.
Even to optimize the pipeline and branch prediction, write obscure code
Now we can only see those items at the OS source code level.
Will you try to increase the CPU cache hit rate when using common applications?

However, to improve readability and reduce maintenance costs
The task may even be completed by increasing hardware consumption.
Several reconstruction methods can reduce the running performance.

As someone said above, the "social division of labor" is getting clearer and clearer, and the production tools in the software industry are getting better and better.
It is ideal for proper tools to do the right things and correct methods to solve the right problems.

Investigate by the way
How many people are there to reduce software volume or increase performance?
Select pure Assembly + invoke WIN32API?

Work is indeed fine, but the development accuracy and accuracy of each division of labor unit are getting rough. Due to some deviations in the development concept, the application systems developed by C # and Java are, it's just a program that can be run, and it's just a matter of saying that everything is turning to service. In fact, it means that the program can be used. It's a big deal. I'll change, maintain, and provide services for you later.

Of course, C # and Java can develop commercial-level systems from a technical point of view, and achieve high-level control in terms of fine processing. However, the cost of experience, manpower, development costs, and various tests is not lower than the previous system developed using C/C ++.

The precise control of C and C ++ in development is still very effective. Commercial systems often require more stable and continuously automated operations. Instead of running the program.

The division of labor is the statement of software engineering and management. In the subtle field of technology development, too many management engineering colors are added, which means to improve the production efficiency brought about by software.

In a heterogeneous and complex operating system, C/C ++ development teams often have a special position, which is independent, closed, and cannot be easily changed. Compared with other open-source, C #, Java teams, C ++ development processes are not used to cater to the so-called project management. Its core is stability and performance. Precise Control. Most commercial systems are not a single development language platform. There are not only common languages, but also self-developed design platforms, runtime platforms, and even IDE. The language is used for the purpose of integration.

The end cannot be put upside down

I have to question the comments of the landlord! It is not a problem of decline, and the inevitable result of the times of progress.

As far as VC is concerned, Microsoft does not pay much attention to it. This is just an illusion. It seems that C # is already very popular in a variety of other scripting languages. In turn, these advanced things (including various web applications) aren't all implemented using C/C ++? (Again, VC is a development tool, and C/C ++ is a development language ). Without these underlying things, how can we simply implement and apply them now.

It can only be said that with the progress of the times. The social division of labor is becoming more and more divided. The original programmers must take into account both the underlying foundation and high-level applications. The development trend is that more and more integrated environments are developed (these are the results of C/C ++. It is easy to implement upper-layer applications, and the current division of labor has emerged. Many practical applications no longer require C/C ++.

But are these complex integration environments not developed by people? It also requires constant updates to keep pace with the times. It is still a sophisticated C/C ++ programmer.

It is restricted by national conditions, because 90% of China's companies are small companies, working-type economies, and only three of them have their own intellectual property rights. Small companies naturally want to do things fast, quick transfer to money, RAD tools, and C # are naturally popular. Large companies, VC will never be out of date
What if a development tool fails? As long as my c ++ does not fall.
Different directions!
Each has its own advantages and disadvantages.
I used VB for one year, Delphi for half a year, and C #. Net for three years (for Windows Development). VC is just familiar with it.
Oh!
C #. NET is similar to VB, which is easy to use but more powerful than VB.
C #. NET is similar to Delphi. It may be that both tools can only be used for development on the operating system!
C #. NET and VC! I think windows development has its own advantages and disadvantages. It's just that VC is better at porting!
What else can we do?
You can only say the number of classes provided by the tool!
If you use net badly, you can.
You can only use the basic type
No other classes
It's not the same as the C language!
Let's talk about embedded development!
He is only suitable for single-chip microcomputer. A single chip is so big that you cannot define a large type!
My own understanding!
Development Tools vary in different directions
However, the language is the same.

Sort out the previous replies

1. C/C ++ provides more precise control.
What is the control? Does it directly operate on hardware or call system APIs?
I think most of the effort of software to this extent should be spent on processing the business logic, rather than the technical details that are irrelevant to the business.
A programmer who writes a browser cannot implement TCP/IP by himself, and does not need to worry about how the NIC level signal changes.
What is precision? Is it inconvenient to Implement Precision for things developed in other languages?
I don't think any software is allowed to be inaccurate. If the program cannot run exactly as intended, it is a mistake.

2. C/C ++ is more stable and robust.
Is the C/C ++ compiler more stable than other languages? Or is the compiled binary code more stable with the same logic?
Although the compiler and CRT have a certain impact on Stability Robustness, more often, they depend on people and machines instead of the compiler or CRT.
People can write more robust code, and machines can have some redundancy, which is very important for key applications. Are there a few without disaster recovery?

3. Other compilers are written in C/C ++, So C/C ++ will not fall.
In fact, not all compilers are written in C/C ++. There are many examples, so I will not go into detail.
Any mainstream language can write a compiler, as long as it supports string processing.
In the past, compilers were written in assembly languages, and C/C ++ will be replaced by new things in the future.
Compilers and operating systems. This is where no other language can compete too much. It is also good at C/C ++.
But how much can this infrastructure account for in the entire software environment?

4. VC/mfc is more underlying and can be used as needed.
Yes, it is indeed relatively more powerful than the underlying layer, but the focus of software development is no longer the underlying layer.
Instead, it is best to have nothing to do with the underlying layer. It is fully developed for business-related things.
For the interface, the language environment that can call the system API is not only VC, But Delphi can also call the API
Freepascal can also call the API. After all, MFC still needs to call the API. All of them call the API, where is the underlying
?

5. VC/mfc is more flexible.
If this flexibility refers to the elasticity of encapsulation, it is a pity that although MFC is popular, its encapsulation is not very prominent, at least at the time of 2009.
GTK, wxWidgets, QT, or even the owl, VCL, or wtl of a few years ago, are not part of MFC.

By the way, it indicates a conceptual problem.
My point is that the decline of VC/MFC, rather than the decline of C/C ++, cannot be confused.
If Microsoft integrated the same rich and powerful libraries as QT for VC, I wouldn't say it would have fallen.

From my own perspective, the school and society have been tirelessly instilling in me the idea that VC is invincible for many years.
So when I got into touch with Linux, GTK, QT, and other things, I had an inexplicable fear.
Things that have been firmly believed in have to be re-examined. Please ask them to come down the altar.

PS:
When I was just working, I wanted to use C/C ++ for everything. Later I failed to do so. All of them were PHP + Python + Java + bash.
Even if C/C ++ is used occasionally, it only encapsulates some very underlying things and does not use it to implement business logic.
Vc has never been used at all. Two companies have successively. Our stuff is on Linux/Unix, And the development environment is not local either.
SSH Login is required for development. Only vim and Emacs can be selected. However, VIM is easier to edit than VC.

I still use C/C ++ to write something in my spare time. It is my most familiar and favorite tool.

Memory leakage is more serious in environments without GC, which also shows some shortcomings of the tool.
Server Load balancer, multi-machine hot standby, and fast switching are irrelevant to specific languages.
When it is related to the kernel, the features of C ++ are completely stripped, And the C language is enough.
Because of the real-time and reliability requirements, the underlying implementation requirements are extremely stable and robust.
Using C ++ to do this will bring considerable complexity and unnecessary overhead.
Therefore, the popular operating systems do not use C ++ to implement C ++ compilation.

The underlying things you mentioned are also above system call, thread pool, memory pool, and so on. They all encapsulate a group of system calls.
To modify the General OS kernel for a project, the use of its own scheduler and its own resource management methods often outweighs the loss.
From the perspective of call system calls, the comparison between C ++ and other languages is not convenient except for the declaration and parameter types.
Resource management is a relatively low-level thing. Unless it is a driver or an OS kernel, the proportion of business-core systems should be very small.
That is, it is used, and there are many C, threadpool, libevent, memory pool, and so on. They are all encapsulated in C language.
Almost all libxxx interfaces provide C interfaces.

Besides, these are all C/C ++, which have little to do with VC/mfc.
Why does VC need to talk with MFC, because these two things are most closely integrated?
Let's leave VC and talk about MFC. Let's leave MFC and talk about VC. It's better to talk about Cl compiler or C ++.

With the development of Linux and embedded platforms
In many cases, we require cross-platform capabilities.
In this case, VC/mfc is directly ignored.
Even QQ is out of the Linux client, and Thunder's Linux version is coming soon.

It is better to change the question to the fallen MFC, which is more accurate and avoids misunderstanding.
Let me also talk about MFC. Of course, MFC is not equal to VC, but you have already said that in the bookstore, the training lecture on VC is basically about MFC.
The feature of MFC is that it shares some class libraries with windows and synchronizes them with OS, providing the OS style. For MFC, the inheritance encapsulation and message mechanism are both good and do not require special management. We can only say that this set of MFC packaging is not popular now.
In addition, MFC uses the document-view structure. As the ms ide, embedded MFC can shorten the user learning cycle, and does not require simple applications.
Construct the basic code. Easy to use, which is also the reason for the popularity.
It is certain that there is a problem with MFC. The class library is complex, the program structure is not clear, and it is difficult to develop it in depth.
This is actually a negative effect to reduce the entry level. However, it is not difficult to switch to other platforms. Therefore, VC cannot be used for short-term use. However, if you study writing code in depth, especially related to Windows, VC/mfc will certainly not decline (my opinion)
In addition, algorithms have nothing to do with data structures and development languages and frameworks. In addition, as far as I know, there are no courses related to VC/mfc in colleges and universities, basically, there are software engineering courses and so on. As a management system, most people actually use Java
Ah. it is now popular in the web world. when developing a Win32 application. I also want to use C #. it is indeed fast. but ..... its source code is a headache. can I use obfuscators? I tried it. After I used it, I always had some inexplicable problems. How can I use Delphi? Ah. The syntax is not suitable. How can I use C ++ builder? There are very few Chinese documents. there are very few foreign materials. c ++ programmers do not buy accounts at all. other methods except VC are not found. it may be because of the thin package. it is convenient to customize something. I will soon know what to do. I am in Delphi. I cannot find my head for half a day. because it is fully encapsulated.

PS: I am writing shared software, but I can't find anything better than VC. If the D language has a powerful IDE, I may learn how to use it. (d Non-Delphi)

Everyone wants to take the lead of others and serve as the provider of language/development tools. Of course, it is hoped that programmers will never leave their own development platforms. For commercial companies, these practices are the same.

Programmers are an inverted pyramid structure. The number of people increases by an order of magnitude from the bottom up, but each layer is indispensable. The number of people at the top may exceed 80% or more, but what does this mean? Which of the following layers can be removed? Using this statistical data can prove that VC/mfc will fall? All programmers have the basis for dependency, but the basis for each layer is different. Do you dare to say that the. Net Library code is directly written using machine commands?

Programmers who use. NET and all the most popular and fashionable RAD tools are undoubtedly at the top of the inverted pyramid. I do not doubt that the proportion of these people is getting higher and higher, and I believe that the proportion of VC is getting lower and lower, but I think this is not the decline of VC. On the contrary, this is an opportunity for VC programmers. When more and more. Neter and javaer compete for the 3 or 5 thousand monthly salary, the vcer can start at 10 thousand, 15 thousand, 20 thousand? The more you enter, the higher you enter. Why? Because the proportion of VC is getting lower and lower, the threshold for VC is getting higher and higher.

In fact, from my private point of view, I do not want the full support of Microsoft.. net ,. net Library is the application library, there are essential differences between the two), leave a bit of mystery for VC, leave a little difficulty, leave a little threshold is not good? At least let the programmer have some room to think about and won't rust his head. I like it ". net, because I always like to put. some of the application functions of. NET are implemented by VC, and sometimes the functions implemented by VC code are implemented. net is encapsulated into dozens of objects to complete the process, and it is quite fun: Microsoft is doing this. net programmers ......

Technically, Rad-type development languages or tools can only be used in applications. Although everyone claims that their language is capable of doing anything, they can do what they do, whether it is appropriate or not is the most important thing. Google's applications are based on Web and scripting languages, and the same applies to cloud computing. However, I do not believe that Google's Basic Search Engine service is also developed using these tools, even if it has thousands of servers, even if each of its servers is configured with the most upscale hardware, the largest hard disk, the most memory, I believe it is still struggling to save memory resources and improve search performance.

Looking back, why is there a browser war? Why do browser manufacturers spare no effort to promote a script engine with higher performance? Because this is an indispensable tool for network operating systems and cloud computing, they hope that 99% of programmers will use 1% of the platform developed by people to develop applications. Google's application lab is no exception, Microsoft's. net is not an exception (in fact, VC is also the same, but because of the independent features of C ++ itself, VC is not so powerful as the kidnapping capability, leaving VC can also engage in GCC ).

For the overwhelming ranking of language tools on the internet, whether it is a scam or a lie, or the first one, they have only one purpose, and they hope to grasp the programmer by themselves. At this point, Microsoft's. NET is undoubtedly the most cruel, and the programmers can't even run away.

Search engines, operating systems, browsers, and so on require high performance and continuous optimization.
However, Google's search engine runs on a Linux host and has little to do with VC.
The operating system is C and assembly, while the UNIX system is GCC. It has nothing to do with VC and has nothing to do with MFC.

For example, if a real estate agent once monopolized the national property market, and now only one or two small cities have the ability to monopolize the property market, isn't it a failure?

Does VC have a high threshold?
For those at the language and tool levels, the threshold is higher. Those who use the same tools are not easy to get a high-paying job.
People with 3 years of work experience, who are engaged in PHP/Python development, also have a lot of annual salary more than 0.15 million, and VC also has a lot of annual salary less than 50 thousand.
The real difference should be internal, that is, those parts that are not related to language and tool, and the mastery of language and tool is much easier than internal.
The position in the structure of the programmer pyramid is not the tool used, but the basic skills such as algorithm, design, and system principles.

Taking a simple example of VC than. Net does not prove that VC is more convenient.
For example, change the byte order of an integer.
Compilation programmers only need one bswap command to complete.
Advanced languages are not that easy, even some people do not know how to do it.
Platform independent is one of the trends in software development.
From machine commands to assembly, to C/C ++, to Java, to scripts, there are fewer underlying layers to be understood each time.
The closer we get to human activities, the more we don't have to do with the bottom layer. The development of tools itself is close to humans, rather than making humans adapt.

C ++ programmers are not superior to Delphi programmers, nor are c ++ programmers superior to HTML programmers.
More and more companies are aware of this, so when recruiting, better companies do not need to know XX language.
As long as the thinking is good, as long as the basic skills are good, master any computer language is acceptable, even with their business is not very relevant to the language to: http://www.justwinit.cn/post/2044/

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.