And also cock-swatch(tm)
Even though IBM boasted about having threads in OS/2, even IBM never actually used them. Ironically a lot of windows versions of IBM apps, like the documentation reader that came with the OS/2 development kit, worked a lot better in OS/2 than their native apps did. You could actually run windows apps in separate memory space, so one crashing didn't bring them all (or the OS) down. And if one of those windows apps stopped processing for a while, you could still get stuff done on your computer.
When the 95 COMDEX rolled around in Atlanta, I volunteered to go on my own time and provide tech support for Team OS/2. They gave us all pink Team OS/2 polo shirts and a bunch of install packages. My favorite bit about the show was setting the OS up on a quad processor Compaq system with a MASSIVE 16 MB of RAM on it. We made a ram disk, pulled the demo videos off the OS/2 install media and set up 4 media players to play the videos in separate windows -- an amazing feat at the time. Hell, playing video at all was not a common thing at the time. Most people were lucky if they could dial up a BBS and download some 8 bit porn.
I'd already started switching to Slakware when IBM announced they were killing OS/2, and that was pretty much the end of all that.
C++ in the early days did suck. Look at a last-generation library like gdal -- you never know who owns any particular piece of data, and you'll constantly find yourself in situations you need that piece of data outside the only place you can actually enforce its destruction when it's no longer needed. You rarely run into those problems in current-generation libraries like boost. Once we started to figure out how to use it, the language got a whole lot better. Most developers don't need to delve into esoteric metaprogramming techniques to be able to use the language effectively.
!07/11 PDP a ni deppart m'I !pleH