March 14, 2005

Mario Kart and the art of programming

I would qualify my Mario Kart: Double Dash playing these past few weeks as aggressive. I first picked up the game a while back when my sister was in town. We always played the old N64 game together and worked as a team to get gold metals in all the cups. We got the 50cc cups with not too much effort but the weekend came to an end before we made much progress on the 100cc races.

It took me a lot more time to get past that darn Star cup than i thought it would. I had to get accustomed to the feel of the different cars and weapons to find something that worked for me. I would occasionally have a good run, but it took a lot of practice to achieve the consistency necessary to get the gold. After two weekends of work, i finally got passed my roadblock.

I assumed that each new challenge would be incrementally as difficult, but that turned out not to be the case. Once i had achieved a certain level of skill, it turned out to be relatively straightforward to complete the "more difficult" races. Even the sixteen track cup only took two times through to get the gold. Once you know how to work the cart, it only takes a few laps to adjust to a new track.

The phenomenon of having to put in a lot of work to accomplish basic goals and then comparatively little effort to achieve more complex goals reminds me a lot about computer programming. Once you learn the general concepts involved with solving problems with computer code, you starting thinking like the computer. I've noticed that now that i've had experience with many different programming languages, i find picking up new ones to be fairly easy. To learn a new language, you just have to focus on the differences and sometimes the differences can be small. Many languages have similar ways of accomplishing a given task.

The revelation is not hard to come to when you compare Java to C#. In fact, most true object oriented languages have so many common that traits that generic design patterns have been developed to cover all of them. The only difference in implementation is in the syntax. More often when a programmer get the sense that there "must be" some way to accomplish a particular task, he find that he's right. Usually the answer can be found by just knowing which part of the documentation the answer will probably be in.

These idea were reinforced by the the MSDN presentation on designing progressive APIs. It's nice to know that some people put together classes with the idea that someone should be able to make an educated guess as to what a class might be named or how it might work and should be reasonably confident they are making the right choice. Thanks to the wonders of Intellisense , it's often not necessary to read documentation any more.

Ok, wow. I guess i should probably stay away from Gamecubes and computers for the next few days before i just go completely nuts. I'm going to bed.

Posted by Matthew at March 14, 2005 11:08 PM
Comments

So I start spring break friday. Wanna do a movie or catch some lunch at some point in the next week? Let me know. Peace!

Posted by: Kristi at March 15, 2005 01:31 PM