Hello.

Actually the question is: why are MFC, COM, ATL still used and are they good enough to use them now? The fact is that I noticed that many C ++ Developera vacancies in the list of necessary skills and knowledge are MFC and / or COM, ATL. Are they so promising to teach?

Why? Where are they used and why should they be used?

Take the same MFC. It is very bulky, heavy, uncomfortable, etc ... There are, for example, Qt, which is much more convenient and more pleasant to work with. What is the meaning of MFC then? Is it worth studying? Why write new projects on it when there are more convenient frameworks (Qt, GTK, SDL in the end).

And COM ... It is also quite uncomfortable and difficult (as well as a curve). I do not understand why they are so often in vacancies. Enterprise? But for this now there is .NET (C #, etc.) and Java, of course, and such things as WPF, where you can make the interface pretty quickly and it will look decent.

PS: It will be especially interesting to listen to answers from Senior C ++ Developer and whether they use these things in their work (this, of course, depends on the specialization, but still), if so, why and where, and whether these technologies are worth it. to study (I know only the basics of these technologies, I like the same Qt more than, for example, MFC).

  • 7
    I think the offices have many old projects that need to be supported. - skegg
  • Microsoft's SAPI technology designed to synthesize text to speech and back uses COM technology. And now there are many talker programs that accept commands from a person, serving him by name, etc. That is, COM is likely to stretch, although it is not very convenient. - manking
  • DirectX, if I'm not mistaken, it is completely COM-interfaces. This, in principle, is also a pretty good reason for the continued existence of this technology - DreamChild
  • On COM, it seems like the whole NET rests (although I'm not sure about this statement) - PaulD


3 answers 3

COM is a universal glue for Windows. A COM component can be written in any language and called from any language. A large number of functions in Windows is based on COM.

Even the new WinRT is in its essence a wrapper over COM objects.

COM is a fundamental part of Windows as well as WinAPI.

Perhaps, for application software, COM has become bulky, heavy, uncomfortable, just like WinAPI, but it is an important part of modern Windows.

    The thing is that there are a lot of old projects that use these technologies. It is not necessary to teach them at all if you are not going to accompany any old project. The Microsoft library has not taken root at all and now there are many better opportunities. COM is used primarily for tracking. I can not vouch for ATL - I do not know.

    • Those. If it is written in the requirements, then it will definitely be support for old projects? I really did, but the problem is that there is usually written about the development of new software, and quite often these requirements indicate, so I could not be calm, because Actually, I don’t have much experience with COM, MFC, ATL, and I don’t really like these technologies (as I’ve already mentioned), but, really, I’ll have to learn them in order to go to a job, Senior C ++ Developer (where skills are required). - Programmer
    • Well, to know these technologies is desirable. Moreover, if you know them and you know them well, you can reassure them to use them, say, in favor of the same Qt - gecube
    • It is not necessary to know, because In addition to writing new software, in many offices there is also maintenance of the old, knowledge is desirable. - Airhand

    Qt, definitely, now more in demand