Why MSVC programmers are spoiled
by HidekiAI on May.23, 2007, under Technology Opinions
I’m spoiled by Microsoft…
Back in about year 2000, I’ve began writing game engine under MSVC 4.2 (remember the .DSW and .DSP days?) and just recently, I’ve began reviving my projects. So we are talking “Medium to Large Scaled C++” projects here.
Although I enjoy and love programming and debugging, I have come to realize how Microsoft has made me love programming more! There are many conveniences which I have come to assume it to be standardized C++ when in fact, it’s purely MSVCRT which I have come to realize if I want portability, I cannot use.
For example, try Googling “GCC” and  ”itoa” in a single search. The function itoa() is something I have come to use quite a lot, fortunately, only base I use is 10 (decimal) and 16 (hex), which I can use sprintf().
I have also had to convert all my “#include” to use “/” rather than “\”. Fortunately, MSVC can handle “#include” in *nix file format so that makes it portable.
Another recognitions of how spoiled I’ve become is the compiler and linker error messages. At one point, I was stuck on an error and no matter how many time I’ve prototyped it, it would compile fine. Then I’ve realized it wasn’t the compiler issue, it was the linker. It did mention it was a linker error but because I was so spoiled of the error message method MSVC provides, I did not realize it.
Finally, the ease of use of the IDE. Don’t get me wrong, I love Eclipse with CDT. It is the ultimate “free” IDE and I do not think nothing can beat it in its category of “free” software. But when it comes to “commercial” IDE, MSVC (even the sluggish current version of MSDev which I use at work) are far superior IDE and makes you realize and appreciate the cliche of “you get what you paid for”.
When “time is money”, the investment you make on MSDev is well worth it. For example, if you were a boss or you have a contract with milestone date, every minute counts! Would you want to be spending/investing time trying to figure out how to setup your Makefile to compile for i586, i686, and x86_64? On MSDev, it’s as easy as selecting the pull-down menu for target platform.
But on the flip-side, too much spoilage is bad…
These days, I run into more and more junior programmers who do not understand the “art of memory management”. They come from the school of garbage-collecting language such as Java and now C#. They also do not understand the “art of optimizations” either. For both of these issues, they have an answer: Hardware. Add more memory if we’re running out of memory, get a faster CPU if the applications are sluggish. This reminds me of my favorite joke:
Q: How many programmers does it take to screw in a light bulb?
A: None, that’s a hardware problem.
I come from the school of Assembly Language (my first language was 6502 on Apple ][+), where every BYTE counted, where I had to be thrifty about my source codes to “fit” inside the 128K 5.25″ floppy, so I had to make sure to convert all the space-characters to tabs (that saved 3 bytes if 4 spaces = 1 tab space). Back then, we used variables such as i, j, k, x, y, and z because we wanted to save storage spaces on the mainframe (remember Pascal?). Today, there is no excuse for programmers to use shorthand variables!
I think it is a very good exercise for me to cross-compile my MSVC project against GCC. It has taught me a lot. It has also reminded me how spoiled I’ve become and have made me almost forget about the “art of programming”. I think it’s okay to become spoiled as long as you keep reminding yourself of where you came from so you truly appreciate it (in life and in programming).
peace!
Addendum: I have just attended MSDN Event in Austin (mainly covered AJAX and CardSpace) and the presenter of the event was continuously encouraging the developers to construct the web-service project “by hand” just so that after you’ve learned the basics of how it works in the micro-level, you will appreciate the macro-level via drag-and-drop of how easy Microsoft has made web-development. Yet again, my point of how well Microsoft tries to spoil you to be “productive” and how much one will appreciate it more knowing all the time-consuming labor behind it. They really understand return-on-investment (R.O.I.) from all aspects including from the developers’ level.
Addendum: I recently discovered KDevelop, and for Linux developing, IMHO this is the closest I’ve ever seen it come to “feeling like” Visual Studio. I now use KDevelop + CMake and enjoy more programming rather than maintenancing and configuring. So my comment about Eclipse being the “ultimate” is not too valid anymore to me.
LinkedIn profile
Recent Comments