One thing not mentioned is that Visual C++ and Visual Basic historically were separate IDEs with separate codebases. When the time came to unify them, only one of them could continue on. My understanding is that Visual Basic won, and that today's Visual Studio IDE (devenv.exe, msenv.dll, etc.) is the continuation of that VB codebase.
I don't actually know in which release that transition happened. But since there's a screenshot of each version in the article, presumably that transition is visually documented...
Interesting to see the UI change (degradation) over time. The first version makes it very clear what's a button and clickable at first glance, while the latest version looks like a sea of whitespace and makes that far more difficult.
It doesn't point out the massive productivity boost of Visual C++ 6, IntelliSense (ie, autocomplete). This saved so much time from having to look up documentation.
When / How did versioning enter versioning the awkward state we have today? There is cl.exe, MSBuild and build chain at the very least (now at work computer at the moment, pretty sure I am wrong with the making here) with versioning that is close enough to each other to be confusing and related to each other in word ways. Naming itself also feels confusing to me. Documentation also only helps when you already have a good idea what's going on.
(Not so) funny that there was nothing "visual" in Visual C++. The dialog resource editor was a joke. I remember how I was relieved when I discovered Borland C++Builder, so I didn't have to switch to Delphi for Windows software development.
The “Visual” in this product’s name was one of the greatest disappointments of my childhood. [1]
I had dabbled in both QuickBASIC and Quick C on MS-DOS building very simple text games and such. When Visual Basic for Windows came out, I was ten years old. It was a revelation because it let me build something that felt like real software. Place controls on a canvas and start wiring them up with event handlers — so easy!
When Visual C++ was announced, I figured it would be the next step up. I had already learned some simple C, so probably it’s just like Visual Basic but you use an improved C for your event handlers? I harangued my dad to “borrow” a copy from his work, and sat down with the Hello World… Which was an incomprehensible 300 lines of Win32 message handlers and Hungarian notation variable names. Nothing “Visual” about it.
It did give me an appreciation for just how much work the Visual Basic team had done to hide the ugly guts of GUI programming.
- -
[1] I had a very easy childhood by most standards.
I started with Visual C++ 1.0. There were no templates.
Visual C++ 2.0 had templates.
There was by Visual C++ 3.0. They went to 4.0 to sync the MFC (Microsoft Foundation Classes) versions.
IIRC, you could use a bit of STL with 4.0
Visual C++ 5.0 was mainly optimizer differences.
Visual C++ 6.0 was actually pretty good. However it lacked partial template specialization. I was a Boost author at the time and lots of Boost code had specific workarounds for Visual C++ 6.
Visual C++ 2002 also had no partial template specialization.
Visual C++ 2003 was the first version with partial template specialization and that could compile all of Boost.
Visual C++ 2005 and 2008 did not have much changes.
Visual C++ 2010 tried to get back to 6 in the IDE (there was a deliberate marketing as such). It also had some C++11 features. But no variadic templates.
Visual C++ 2012 had no variadic templates.
Visual C++ 2013 was the first with variadic templates.
Nowadays, Visual C++’is doing much better tracking the C++ standard and often has compiler and library features before clang and GCC.
Was I the only one that consistently experienced a crash when exiting Visual Studio 6 without first closing the solution? I think this was running on some flavour of Windows 98 in 1999 or 2000. So I got into the habit of closing the solution first.
To this day, I experience a very brief spasm of regret when I just exit Visual Studio without closing the solution first.
14 comments
[ 3.3 ms ] story [ 34.1 ms ] threadI don't actually know in which release that transition happened. But since there's a screenshot of each version in the article, presumably that transition is visually documented...
Visual C++ v4.2b generating an assignment operator which invoked the destructor of a returned object before assigning it to the lval.
That was fun to figure out. :-/
I had dabbled in both QuickBASIC and Quick C on MS-DOS building very simple text games and such. When Visual Basic for Windows came out, I was ten years old. It was a revelation because it let me build something that felt like real software. Place controls on a canvas and start wiring them up with event handlers — so easy!
When Visual C++ was announced, I figured it would be the next step up. I had already learned some simple C, so probably it’s just like Visual Basic but you use an improved C for your event handlers? I harangued my dad to “borrow” a copy from his work, and sat down with the Hello World… Which was an incomprehensible 300 lines of Win32 message handlers and Hungarian notation variable names. Nothing “Visual” about it.
It did give me an appreciation for just how much work the Visual Basic team had done to hide the ugly guts of GUI programming.
- -
[1] I had a very easy childhood by most standards.
But with a focus more on C++ features.
I started with Visual C++ 1.0. There were no templates.
Visual C++ 2.0 had templates.
There was by Visual C++ 3.0. They went to 4.0 to sync the MFC (Microsoft Foundation Classes) versions.
IIRC, you could use a bit of STL with 4.0
Visual C++ 5.0 was mainly optimizer differences.
Visual C++ 6.0 was actually pretty good. However it lacked partial template specialization. I was a Boost author at the time and lots of Boost code had specific workarounds for Visual C++ 6.
Visual C++ 2002 also had no partial template specialization.
Visual C++ 2003 was the first version with partial template specialization and that could compile all of Boost.
Visual C++ 2005 and 2008 did not have much changes.
Visual C++ 2010 tried to get back to 6 in the IDE (there was a deliberate marketing as such). It also had some C++11 features. But no variadic templates.
Visual C++ 2012 had no variadic templates.
Visual C++ 2013 was the first with variadic templates.
Nowadays, Visual C++’is doing much better tracking the C++ standard and often has compiler and library features before clang and GCC.
To this day, I experience a very brief spasm of regret when I just exit Visual Studio without closing the solution first.