Sdílet prostřednictvím


Does it make sense to build MFC GUI apps anymore?

For most developers, I think the answer has to be "No," especially with the advent of managed code.  Some would argue that the answer has been "No" for a long time.  Tools like VB made GUI development so much easier than it ever was with MFC that many gave up C++ for GUI development years ago.  Even in MFC's heyday, it wasn't uncommon at all to see the GUI pieces of an app built in VB with its underlying system code in C++. 

Delphi improved on the VB model by providing a rich class framework and OOP model behind its visual forms that, even to this day, rivals WinForms and large parts of the .NET Framework.  For most GUI developers, VB and Delphi were simply superior tools -- they were faster, produced apps with fewer defects because they were so much easier to use, and more closely resembled the model business developers were accustomed to working with:  that of windows being forms that contain controls with property settings and code attached to them that ran in response to events -- the so-called PME model.

With the advent of managed code, this is even more so.  The .NET Framework presents a more mature model than the one originally espoused by VB and Delphi.  It is Delphi and VB "The Next Generation."  It builds on the lessons learned with tools like those and takes the notion of an object-oriented PME model to the next level. 

Even without IL and JIT compilation -- even if C# were a native code language (and, perhaps, especially if it were) -- it would still make little sense to create a GUI app of any complexity in C++ for most developers.  Of course, there are exceptions, but I'm talking about the vast majority of application developers out there.  C#, VB.NET, and many of the other managed code languages are simply easier to code in than C++.  The average developer will be far more productive far more quickly with, say, C# than C++ when building complex GUI applications.  Add to this features such as garbage collection and xcopy deployment, and you have little reason to build most types of apps -- particularly those with a GUI -- in C++.

And don't get me started on what this guy does :-).  And I thought I was a dinosaur!

Comments