A few months ago I had a relatively large C++ source code set for a suite of applications dropped into my lap. Well, that’s OK, I don’t mind C++, but what I did mind was that it was all written using Visual Studio.
It’s been a long time since I had to work with Windows code, and now that I’ve waded through line after line of code and wrestled with Visual Studio along the way, I’ve recalled now why I don’t like working with Windows.
Back in the day there was Win32, and while not perfect it was OK. It was just really low level, and the message passing scheme was pretty clumsy. I only worked with it for a few years, and then I moved away to go back to working with Unix (and then OS/2 and Linux). Now I’m back, and in my opinion programming for Windows is not a pleasant experience. At one point it was tolerable, and I actually enjoyed working with MS C 6.0 (the non-GUI text editor that came with it rocked).
Then, after reading “Advanced Unix Programming” by Marc Rochkind and “Advanced Programming in the Unix Environment” by Richard Stevens, I guess you could say that I drank the Kool-aid. I’ve become spoiled by POSIX, and small, lean libraries that may only do a few things, but they do them well. With clean, well thought-out APIs, orthogonal design, and cohesive modules Unix is a joy to work with, and by extension Linux shares many of these good qualities. And, best of all, I can use the command line, multiple editor instances in different windows, a makefile, and get things done in a hurry.
My recent experiences with Visual Studio, on the other hand, have not been very much fun for me. Compiler settings are buried in sub-menus, the compiler is slow, and just getting the environment set up sensibly can be a pain. Every time I work with VS I feel like I’m playing a video game, not doing actual work.
Then there’s Microsoft’s underhanded ploy to try to convince people that POSIX functions are deprecated! I wrote about this a while back (you can read it here), so I won’t go over it again, but the big question that it raises for me is: Why does Microsoft feel that they need to reinvent the wheel and rebrand everything? POSIX is a recognized standard, at least by most everyone except Microsoft it seems.
For me I’ve found that MS Visual Studio is not a very efficient environment, and I think that MS could do better if they wanted to. Simplify the compiler switches, offer a make utility that is compatible with the make found on Unix and Linux systems, and generally throw out all the useless stuff that does nothing but show that it’s from Microsoft.
But, then again, maybe people want to play with the GUI and waste time clicking buttons and trying to find the right text box to enter a path or file name into. As for myself, my hourglass is running low, and I don’t have time to wrestle with a computer. I’d rather throw it in the trash and unpack my old manual typewriter.