I am a little bit bitter with Microsoft. I am sure a lot of you out there feel the same way. Our reasons may be different though. My biggest problem with MS is that they take things, any things, and try to make them into their own brand that doesn't like to play well with others. Aside from this, I think that Windows is a great OS. Heck I can't not like it right? Everyone uses it. Well today they might, but in times past Windows was not even an option. Lets take a look back for a moment.
C was developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. Pretty cool huh. In 1983 the X3J11 committee, formed by the American National Standards Institute (ANSI), started the process of standardizing C.
I know what you are thinking...
"Well Seth, why are you telling me all this bunch of bull crap about the history of C and how you hate MS?"
If you are starting to put the pieces together you already know where this is going. If not just read on and try to imagine what things would be like if there were no standards. I want you to learn about a very bad, nay cursed evil.
Anyhow, while ANSI was creating standards for C, the same sort of thing was happening with C++. You can read all about the history of C++ here. It is nothing less than fascinating. The guys who came up with this, the purest form of C++, are the architects of the modern programming language C++. I kneel before you great oh great lords of code.
Now about this time, Microsoft walks up into the realm of software compilers. So far so good, there is nothing wrong with a little healthy competition when it comes to software.... Or is it...
World: Whats that MS is pulling out of his back pocket? MFC? StdAFX... Windows API? What is this trickery that you are pulling before the our eyes? And what the hell is .NET?
MS: Oh this? This is what the creators and ANSI want C/C++ to REALLY be. Besides we are making it EASIER for you to program.
World: Oh ok... But I thought that ANSI came up with a standard that C and C++ compilers are supposed to use.
MS: Bah hah foolish children, there is no other C++ but Microsoft C++. Look, you can make a dialog box with one single command now!
World: Oh ok... So I can use this to create software.
MS: Yes of course... Windows software. There really is no other OS out there so whatever. Here is a sort of class thing that accesses the windows registry with C++! How cool is that?
World: Oh ok... Cool I guess.
MS: Trust us, you won't even have to learn ANSI C/C++ to use our modified versions. Here's a C++ function to show your icon! Presto!
World: Oh ok... That does sound alot easier.
What I just did there was I told a little story. A story about how the world was tricked by Microsoft. I was tricked, but here's the thing. I didn't even realize I was tricked.
My first compiler was Visual C++ 6.0. Oh yes I shelled out some big bucks for that monster. As a cool bonus I got a membership with Microsoft's Developer Network and recieved free CD's about 4 times a year. I thought I had everything I would ever need in order to learn how to program.
Had I only had a mentor to steer me in the right direction.
As it turns out, I was headed down a road that I wish I never took because I feel like I wasted a couple of years learning the MS bastardized version of C++.
It wasn't until I started to dabble around with Linux that I realized there was something strange. At first it was a small trickle of questions. Whats this POSIX stuff? Curses? WTF? Then the flood gates opened and I knew I had been duped by MS. Those bastards.
Some of you may understand what I am talking about. Others maybe not so much. But I am here to tell you one thing.
Microsoft C/C++ is NOT ANSI C/C++
Do not make this mistake. Do not create an entire set of your own libraries that are based on Microsoft standards. While this is fine if you know for a fact that you will never ever leave the safe and comfy confines of Windows, be aware that once you cross that line into the world of X you are going to either have to gut your libs or write ports of MS functions just to make it compile.
So please if you don't learn anything from my blog, please just take this away. The reason for me telling you this will become more and more clear as I continue to guide you on this journey. For now just tuck it away in your mind... One more time because this is important:
(Microsoft C/C++) != (ANSI C/C++)
What's next? I will be talking about a few terms used within C++ & a few of the more simple things that most documentation won't tell you (but should, but leave it out because they assume you already know these simple things).
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment