"VC++6 is remarkably powerful for 1996. It has features such as "Go to definition", breakpoints, stacktrace, and variable inspections (but no Intellisense auto-completion yet). I never used it but it must have felt like a dream at the time."
And here we are, in a generation of people writing blogs that never used VS6. I am now officially old.
I was still using VS6 as late as 2009 btw...also it's from 1998. If you made a list of Microsoft bangers it's in the top 5 with probably windbg, quickbasic and windows 3.11.
Which is why, I usually assert I cannot understand the nostalgia of CLI and TUI, being there at the time, and not being able to use some of these systems, due to the amount of money they required.
Rational Apex Ada is another dev platform that was way ahead of its time in early to late 90's. Multi-user hosted dev environment with incremental compilation and dependency tracking, syntax and semantic error highlighting, semantic search (i.e function signature) across whole repo, its own version control system with a git submodules style structure, automatic formatting as you write code. [Remote] Debugging and emulation features (stack trace, line of code, disassembly, etc), plus excellent VxWorks integration and tooling. Not to mention all the Ada language features which are still not available in modern languages.
Turbo Pascal had breakpoints, variable inspections in the late 80s. I think it had stack traces too but not 100% sure.
I am not old enough to have used it professionally, but my teacher used it for teaching intro programming in the early 2000s. So I used it quite a lot, the debugger was great and the development loop was so tight. Not until I got into web dev did it ever feel "fast" to make change->see change. To this day it is still bad in most stacks.
The earlier Microsoft compilers included since 1985 the debugger CodeView, which could do all that and much more.
Around 1990, the development tools offered by Borland and Microsoft for C and C++ were pretty much equivalent and they both were quite good.
While the Borland languages were like "Turbo-X", the Microsoft languages were like "Quick-X".
The greatest difference between the commercial software available at that time and what exists today is that everything was accompanied by a set of high quality manuals that could teach you anything that one would want to know. Nowadays the quality of technical documentation is usually much worse.
Turbo Pascal was amazing for its time. As a young person learning programming it was a step change in functionality. Before that on PCs you were using Basic or assembly It was cheap and incredibly useful.
That wasn't the banger for vs6 it was the workflow and muscle memory of the thing. The flow is still unmatched IMHO. It was like avid or photoshop for writing windows software.
Default keys in modern IDEs are basically still the vs assignments from the 5/6 era.
It was the closest Microsoft ever came to making their own emacs or vim. vs6 was like 90% of my screen time as a windows dev in the 90s and 2000s
I've been a linux user for 30 years ... I never had the vs6 level of efficiency in linux, still don't. NetBeans was the closest ... yes, NetBeans... (I've given up though, I do things in nvim, tmux and suffer)
Yes, but if you compare the complexity of (Turbo) Pascal to the complexity of C++... language, environment, libraries and cross-compilation...
(A nice thought-experiment is to ask if Quake could have been coded in TP at all - even if memory hadn't been an issue (I think there was no DOS extender for TP, but I could be wrong).)
I used VS6 professionally and for private business around 2000-2004, and it was still going strong then. VC++ was great.
One thing though that I still have nightmares about is Visual SourceSafe, Microsoft's idea of a source control system for small teams. It was not only terrible to use (and slow), but we regularly lost data in it due to concurrency issues.
Speaking of MS and source control, I have to shout out this incredibly niche channel [1] that recently covered "Microsoft Delta", a precursor and home grown effort that was eventually abandoned in favour of buying in what would become SourceSafe.
It was my favorite VCS ever at my first workplace where we deployed .war to prod tomcat from eclipse with one click. No tests, no PRs, no tickets. Customer would call me and I could get a change out to them within 5 minutes. Most (and only!) agile workplace I ever experienced in two decades.
It feels now like an alternative timeline, one which performance optimisations were first and foremost still. Sometimes I fantasize, thinking how would our current development ecosystem look like, if we never abandoned the "be very vigilant with all resources you use" approach, that includes the whole webdev liftoff, where we ship a few hundred mb chromium engine for a dock app
We'd have far fewer apps, far fewer features, far more bugs, far more crashes, far less stability and far more memory safety vulnerabilities. Oh, and Linux and Mac would be far less usable.
The age of performance optimizations was the age of computers as little islands that didn't need to communicate with anybody or anything, and definitely not outside of a homogeneous LAN environment. It was the age of people having just one device, running one OS, with no expectation of data synchronization. Sharing files was, at best, done by sending quarterly_report_v14_approved_by_legal_fixed.doc over email. This is no longer the age we live in.
In the timeline I remember, Microsoft and Windows were routinely criticized for producing bloated and buggy systems. Especially from those who previously used an Amiga or Mac. A new version of Windows inevitably meant buying a whole new computer, along with upgrading the memory midway through it's 3-4 year lifespan.
The last time I used it in anger to release commercial software was round about the year 2020, at which point the dev environment for that particular piece of software that customers were still paying annual license fees on was a VM machine. The source code repo it linked to had been unknowingly destroyed years earlier, so the VM image was copied around as needed. One had to find the very latest version of that image, because otherwise any changes one made would of course exclude some other recent changes and customers would receive a Frankenversion.
Starting the VM would reveal a desktop with VC++6 already open, and enough supporting evidence to show how to build the software. Make your changes, build, carefully extract the binary to send to the users, freeze the VM again.
I expect it's still there, still being brought back every year for "one last update."
Before the .Net era, there were millions of programmers who were experts in VB. In fact, VB6 was the defacto tool to build desktop apps.
Then Microsoft decided to compete with the new-age rivals: Java and CORBA. So it expanded COM into DCOM and then further into COM+, and eventually released the .Net platform.
Suddenly, those millions of programmers and their built desktop apps were obsolete, as they had to race to understand .Net and learn how to use it to build new apps and replacements for the old VB6 apps.
And somewhere along the way, many of them decided it wasn't worth the struggle (because .Net was a nightmare to install as client apps on Windows machines; even the deployment scripts had becom3 too complex), and they migrated to other tools (Java, Python, Perl, Ruby on Rails, PHP, etc.) or to non-programming jobs (usually management).
Thus, within a few years, Microsoft had veritably killed the programming industry it took decades to build and nurture (and yes, Microsoft's decision to turn a blind eye - as its Windows OSes, MS Office and Visual Studio (VB & VC++) tools were pirated across the world, churning out millions of programmers and users familiar with its products as they used the pirated versions at school, college. home and office - that was also a deliberate decision by Microsoft during this halycon era).
But I feel .Net became too big of a beast even for mighty Microsoft to handle. As concerns grew over the performance aspects and innumerable dependencies of the .Net platform and related tools (Azure, SSIS, SSRS, etc.), the world started to shift away from Microsoft's tools, and that's perhaps why Microsoft finally knuckled under and embraced the open-source ecosystem it had openly hated for decades. VSCode, etc., are Microsoft's last-ditch attempts to have some relevancy in the programming industry.
.net was fine ... they were solving these fleeting problems of interoperability, event driven gui programming, object re-use and a bunch of other things. They tried tackling this so many ways: win16, ole, mfc, activex, win32s ... it was a big mess and nothing really worked well.
Microsoft had some really smart people working on the problem for years and .net was the culmination of the efforts with things like c# and the very interesting f#.
The problem was they finally solved the desktop interoperability problem when it no longer mattered and there wasn't a huge killer app for it.
Properly scoped well designed abstractions can be extremely powerful and also pretty useless.
There's an interesting counterfactual if they had .net ready to go around windows 98 ... I might be on a windows phone right now...
The whole thing compiles with 2 warnings. Incredible codebase. John Carmack definitely was/is on a different level.
Back when I was making videogames I followed a similar philosophy. No warnings (but in an orders-of-magnitude smaller and less complex codebase). Crash on failed asserts, used liberally, in debug builds. Not sure why but it seems that gamedev doesn't do this kind of rigorous engineering in general (or at least it didn't back then -- and admittedly I never worked in a big studio).
> Go back and run setupsp5.exe. This time it will work. By now it should feel like you are following the solution of Monkey Island. Nothing makes sense. We are definitely deeeep into the 90s.
VC++ 6 was awesome, I wouldn't have a career if I didn't have pirated copies of VC++ 6 and Borland Delphi. And look at how clean and crisp it all looks. Every pixel has a purpose.
There is a dozen of existing Quake ports ready to run the moment you feed them the game files, and you recommend a version re-implemented on top of Xash3D, which is a GoldSrc-compatible engine. Why?
"VC++6 is remarkably powerful for 1996. It has features such as "Go to definition", breakpoints, stacktrace, and variable inspections (but no Intellisense auto-completion yet). I never used it but it must have felt like a dream at the time."
And here we are, in a generation of people writing blogs that never used VS6. I am now officially old.
I was still using VS6 as late as 2009 btw...also it's from 1998. If you made a list of Microsoft bangers it's in the top 5 with probably windbg, quickbasic and windows 3.11.
Many of those features were already available in MS-DOS and Windows 3.x IDEs from Borland for Turbo Pascal and C++.
Which is why when I got into UNIX development felt like going into the stone age of development tools, thankfully XEmacs was already there.
Which by the way, it was born for Energize C++, in 1993!
https://www.youtube.com/watch?v=pQQTScuApWk
Also here is what NeXTSTEP development environment looked like, used for Quake tooling development, in a 1991 marketing video.
https://www.youtube.com/watch?v=UGhfB-NICzg
Which is why, I usually assert I cannot understand the nostalgia of CLI and TUI, being there at the time, and not being able to use some of these systems, due to the amount of money they required.
>Which is why, I usually assert I cannot understand the nostalgia of CLI and TUI
Elitism
1 reply →
You make it sound like he's some young'un, but Fabien has been programming since 1983.
https://fabiensanglard.net/40/
Rational Apex Ada is another dev platform that was way ahead of its time in early to late 90's. Multi-user hosted dev environment with incremental compilation and dependency tracking, syntax and semantic error highlighting, semantic search (i.e function signature) across whole repo, its own version control system with a git submodules style structure, automatic formatting as you write code. [Remote] Debugging and emulation features (stack trace, line of code, disassembly, etc), plus excellent VxWorks integration and tooling. Not to mention all the Ada language features which are still not available in modern languages.
Turbo Pascal had breakpoints, variable inspections in the late 80s. I think it had stack traces too but not 100% sure.
I am not old enough to have used it professionally, but my teacher used it for teaching intro programming in the early 2000s. So I used it quite a lot, the debugger was great and the development loop was so tight. Not until I got into web dev did it ever feel "fast" to make change->see change. To this day it is still bad in most stacks.
The earlier Microsoft compilers included since 1985 the debugger CodeView, which could do all that and much more.
Around 1990, the development tools offered by Borland and Microsoft for C and C++ were pretty much equivalent and they both were quite good.
While the Borland languages were like "Turbo-X", the Microsoft languages were like "Quick-X".
The greatest difference between the commercial software available at that time and what exists today is that everything was accompanied by a set of high quality manuals that could teach you anything that one would want to know. Nowadays the quality of technical documentation is usually much worse.
1 reply →
Turbo Pascal was amazing for its time. As a young person learning programming it was a step change in functionality. Before that on PCs you were using Basic or assembly It was cheap and incredibly useful.
That wasn't the banger for vs6 it was the workflow and muscle memory of the thing. The flow is still unmatched IMHO. It was like avid or photoshop for writing windows software.
Default keys in modern IDEs are basically still the vs assignments from the 5/6 era.
It was the closest Microsoft ever came to making their own emacs or vim. vs6 was like 90% of my screen time as a windows dev in the 90s and 2000s
I've been a linux user for 30 years ... I never had the vs6 level of efficiency in linux, still don't. NetBeans was the closest ... yes, NetBeans... (I've given up though, I do things in nvim, tmux and suffer)
All the good borland devs were poached by Microsoft. VC5 and 6 were the spiritual successors of the Turbo XXX family of IDEs.
Yes, Turbo Pascal 5.0 introduced those features in 1988.
https://www.youtube.com/watch?v=UNx4dxXptUg
Yes, but if you compare the complexity of (Turbo) Pascal to the complexity of C++... language, environment, libraries and cross-compilation...
(A nice thought-experiment is to ask if Quake could have been coded in TP at all - even if memory hadn't been an issue (I think there was no DOS extender for TP, but I could be wrong).)
3 replies →
I used VS6 professionally and for private business around 2000-2004, and it was still going strong then. VC++ was great.
One thing though that I still have nightmares about is Visual SourceSafe, Microsoft's idea of a source control system for small teams. It was not only terrible to use (and slow), but we regularly lost data in it due to concurrency issues.
TortoiseCVS all the way down. Nothing else came close. (this was before git and svn, kids. relax!)
Speaking of MS and source control, I have to shout out this incredibly niche channel [1] that recently covered "Microsoft Delta", a precursor and home grown effort that was eventually abandoned in favour of buying in what would become SourceSafe.
[1] https://www.youtube.com/watch?v=8bNLp_oTuNM
> Visual SourceSafe
Ugh, instant flashbacks and not the good kind.
It was my favorite VCS ever at my first workplace where we deployed .war to prod tomcat from eclipse with one click. No tests, no PRs, no tickets. Customer would call me and I could get a change out to them within 5 minutes. Most (and only!) agile workplace I ever experienced in two decades.
100% agree. Not only was VC++6 a stand-out product overall, but it was easily the better IDE out of the crop of options at the time.
Sadly, the product line got worse before VSCode came out. Things are much better now.
It feels now like an alternative timeline, one which performance optimisations were first and foremost still. Sometimes I fantasize, thinking how would our current development ecosystem look like, if we never abandoned the "be very vigilant with all resources you use" approach, that includes the whole webdev liftoff, where we ship a few hundred mb chromium engine for a dock app
We'd have far fewer apps, far fewer features, far more bugs, far more crashes, far less stability and far more memory safety vulnerabilities. Oh, and Linux and Mac would be far less usable.
The age of performance optimizations was the age of computers as little islands that didn't need to communicate with anybody or anything, and definitely not outside of a homogeneous LAN environment. It was the age of people having just one device, running one OS, with no expectation of data synchronization. Sharing files was, at best, done by sending quarterly_report_v14_approved_by_legal_fixed.doc over email. This is no longer the age we live in.
In the timeline I remember, Microsoft and Windows were routinely criticized for producing bloated and buggy systems. Especially from those who previously used an Amiga or Mac. A new version of Windows inevitably meant buying a whole new computer, along with upgrading the memory midway through it's 3-4 year lifespan.
Could be worse. It’s finally gone now but I believe that my employer used VS6 as late as 2025.
Ah yes, VC++6.0
It had such a long lifetime.
The last time I used it in anger to release commercial software was round about the year 2020, at which point the dev environment for that particular piece of software that customers were still paying annual license fees on was a VM machine. The source code repo it linked to had been unknowingly destroyed years earlier, so the VM image was copied around as needed. One had to find the very latest version of that image, because otherwise any changes one made would of course exclude some other recent changes and customers would receive a Frankenversion.
Starting the VM would reveal a desktop with VC++6 already open, and enough supporting evidence to show how to build the software. Make your changes, build, carefully extract the binary to send to the users, freeze the VM again.
I expect it's still there, still being brought back every year for "one last update."
VC++6 was the first IDE I ever used: as a kid, I was gifted a CD that had a version of it included. What a great tool to have for the time.
I would go on to use Bloodshed Dev-C++ next. Which was also quite great for the time.
Before the .Net era, there were millions of programmers who were experts in VB. In fact, VB6 was the defacto tool to build desktop apps.
Then Microsoft decided to compete with the new-age rivals: Java and CORBA. So it expanded COM into DCOM and then further into COM+, and eventually released the .Net platform.
Suddenly, those millions of programmers and their built desktop apps were obsolete, as they had to race to understand .Net and learn how to use it to build new apps and replacements for the old VB6 apps.
And somewhere along the way, many of them decided it wasn't worth the struggle (because .Net was a nightmare to install as client apps on Windows machines; even the deployment scripts had becom3 too complex), and they migrated to other tools (Java, Python, Perl, Ruby on Rails, PHP, etc.) or to non-programming jobs (usually management).
Thus, within a few years, Microsoft had veritably killed the programming industry it took decades to build and nurture (and yes, Microsoft's decision to turn a blind eye - as its Windows OSes, MS Office and Visual Studio (VB & VC++) tools were pirated across the world, churning out millions of programmers and users familiar with its products as they used the pirated versions at school, college. home and office - that was also a deliberate decision by Microsoft during this halycon era).
But I feel .Net became too big of a beast even for mighty Microsoft to handle. As concerns grew over the performance aspects and innumerable dependencies of the .Net platform and related tools (Azure, SSIS, SSRS, etc.), the world started to shift away from Microsoft's tools, and that's perhaps why Microsoft finally knuckled under and embraced the open-source ecosystem it had openly hated for decades. VSCode, etc., are Microsoft's last-ditch attempts to have some relevancy in the programming industry.
.net was fine ... they were solving these fleeting problems of interoperability, event driven gui programming, object re-use and a bunch of other things. They tried tackling this so many ways: win16, ole, mfc, activex, win32s ... it was a big mess and nothing really worked well.
Microsoft had some really smart people working on the problem for years and .net was the culmination of the efforts with things like c# and the very interesting f#.
The problem was they finally solved the desktop interoperability problem when it no longer mattered and there wasn't a huge killer app for it.
Properly scoped well designed abstractions can be extremely powerful and also pretty useless.
There's an interesting counterfactual if they had .net ready to go around windows 98 ... I might be on a windows phone right now...
The whole thing compiles with 2 warnings. Incredible codebase. John Carmack definitely was/is on a different level.
Back when I was making videogames I followed a similar philosophy. No warnings (but in an orders-of-magnitude smaller and less complex codebase). Crash on failed asserts, used liberally, in debug builds. Not sure why but it seems that gamedev doesn't do this kind of rigorous engineering in general (or at least it didn't back then -- and admittedly I never worked in a big studio).
I would guess that the 1998 era Microsoft compiler didn't have nearly as many warnings as modern compilers do.
> Go back and run setupsp5.exe. This time it will work. By now it should feel like you are following the solution of Monkey Island. Nothing makes sense. We are definitely deeeep into the 90s.
Gold.
Man, I love the Visual C++ and Visual J++ interface so much. It was so fast and super clear.
VC++ 6 was awesome, I wouldn't have a career if I didn't have pirated copies of VC++ 6 and Borland Delphi. And look at how clean and crisp it all looks. Every pixel has a purpose.
If you want to play Quake for free on Windows 11, try this: https://quake-remake.en.uptodown.com/windows/download
There is a dozen of existing Quake ports ready to run the moment you feed them the game files, and you recommend a version re-implemented on top of Xash3D, which is a GoldSrc-compatible engine. Why?
[dead]