Thursday, July 21, 2005

Welcome all to my new blog, I'm using this mainly as a way to output my thoughts about various topics, and to document success, frustration and topics of the like. If you'd like to reach me, you can email me at or catch me on AIM with the screenname of voodoochile920.

C++ Thoughts
When I first started learning programming three weeks ago, beginning with the standard "Hello World" program (basically, outputting a static string or 'string literal' to the screen using the cout function of the namespace of the standard library) I was quite discouraged, thinking that I would be stuck doing trivial programs for a long time. Yes, outputting "Hello World" to the screen doesn't seem like much, but what I failed to realize when I wrote the program, is that even the simplest programs have so many things worth investigating. For example, you might not think a "Guess my number" game would be terribly complex to do, seeing as how all games of any significance are 3D based or simulating a 3D world (hell, even the original Doom gave the illusion of 3D, while being 2.5D) , and it isn't. However, simple the code itself is, it's not really the important part of writing a game like that. The important part of the development is trying to get the program to run, work in all cases (requiring some time experimenting with error handling) and not take a significant amount of time to program, and also understand what is happening. Sure anybody can go google for the game, retype it in the IDE and compile it and say "gee look, I made a game", but what have you learned? Researching how to do it, understanding every line of code and being able to use the techniques learned in other situations is the important part .

Another thing I failed to realize was that all these trivial tasks and aspects of C++ were cumulative to bigger, more useful parts of C++ and then eventually you get to the real important stuff. I've learned that starting simple and moving upward from there, can be somewhat discouraging and also frustrating for some (I know how badly I wanted --- and to a degree still want to just open a D3D9 book and start learning), but C++ and programming in general take years and years to learn and become skilled in, and a lifetime to master. I'm quite glad that I have chosen to start doing C++ programming, because I'll be able to eventually go to graphics programming, or if not, I can go into other areas like AI, Sound, Physics, Networking, and even do general Win32 API programming. I know full well it'll take time, but I'm determined and patient enough to try to go one step at a time :-)

Okay, now for recent developments on what programming projects I've been working on. Lately I've just been spending time doing simple programs that test a specific new feature that I've learned to use, but I recently wrote a "Coke Machine" program which basically simulates a real-world coke machine. The first version was quite interesting to develop. My skill at the time were much more constricted than they are now (not implying my skills are even noteworthy at the present), but it was neat. I used the limited knowledge I had, with spaghetti coding practices (I'd not learned about functions, classes , objects etc.) and I had made a fully operational coke machine, that worked great and handled errors quite nicely. Unfortunately the code was extremely messy, and it wasn't easily modifyable. So after my friend Robert nagged me to go do a function-'ized' one, I went and did it, and it turned out great as now I have a great grasp on the concept of functions and passing parameters.

(Oh and if anyone wants the source code or executable then shoot me a mail and I'll send it to you!)

Something that's very interesting to note, I don't know if it's just me, but I tend to learn better, quicker and more effectively if I try applying concepts and tinkering around until they work, rather than spending an excessive amount of time just trying to follow what a book or video is showing. Don't be afraid to experiment, because from my (limited) experience, It's always best to fully understand the limitations of what you can do.

Finally, the most important thing is to have a guide, someone who is experienced and is willing to help you out when you don't understand something. Heh, if I didn't have anyone to talk to, I'd be progressing much slower, so I find it quite beneficial.


Lately, I've gotten the urge to just push my rigt to the max. Sure a P4 2.4 is quite good and provides plenty of processing power, but it's not really more performance I'm after, rather I'm looking to see how much I can get out of the hardware, and that, in itself is the most fun and rewarding part.

Interestingly, I have my P4 2.4 running at 2.8GHz quite reliably with a 944MHz bus. Now, one might think I used a 5:4 ratio divider in order to get my ram to run at 472MHz ( dual channel), but the amazing part is, that my ram is running 70MHz overclocked with a 1:1 memory/bus ratio! Also, I don't even have any ramsinks on the sticks either!

So I'm very happy indeed that I could squeeze a little more life from an aging PC. I don't suspect I'll have to upgrade for about a year, if not, more.

Ashraf Eassa


Post a Comment

<< Home