1.04.2010

Layers upon layers of information

So, this is where I'm starting with my C# learning endeavors. I actually started by reading a few online tutorials and realized that the people who try to teach such a complex language so quickly wind up throwing out verbiage at a rate that a new user couldn't possibly keep up with. They don't seem to understand that the people who want to learn don't know much or anything, but they write and teach as if you already know 80% of the language.

I also tried another site's tutorial and realized that this person barely spoke comprehensible English, so it was off to Barnes & Noble to grab this book. I can see why these people wrote a book and not just a tutorial on a website somewhere. Hey, at least they speak English, too.

The only problem with this learning method is that reading is such a weak form of stimulation for me. If all I'm doing is reading I start to fall asleep or my mind will wander and I'll start thinking about things that have nothing to do with what I'm supposed to be reading, but my eyes will continue to go through the motions (ironic that you'd need to read to understand my point). 2 or 3 paragraphs later I'll realize that I haven't been paying attention at all and then I'll have to stop and go back to read what I skimmed over, making sure I retain the information this time instead of wandering off and wasting time.

The language is massively complex and it needs to be told everything. I'm used to PHP where it has tremendous flexibility and the language does a lot of assumptions for you. C# doesn't. It makes you carefully consider how you're going to use every bit of code.

I feel a little lost so far with so many new concepts being introduced and being drug through the gauntlet of new terms and procedures, but I've done all of the little exercises at the end of each chapter and passed them easily. I guess it's not as tough as I think.

Another one of my problems is that I'll start to think of everything on a more micro level once I learn about something. I start thinking "so, if I write this code and something interprets it, there's some language sitting underneath this language, interpreting it all and telling the hardware and corresponding software what to do with it!", and then start wondering down to the next most basic level, and so on. It'll get so bad that I'll start wondering exactly how it is that electronics can parse the billions of tiny bursts of electricity flowing through them to make something that you can use without having to think about it.

If you had to think of how much code runs during the course of a video game in the form of printing it out on paper, a modern-size game would print like 150 pages of used code every 5 seconds. Not to mention the operating system supporting it, and then all of the sub-layers of programming supporting that! Just thinking about how many tiny electrical signals are sent and received by any computer at any given second is incomprehensible, much less how many layers of programming support every day functions and how much easier my job looks because of it.

It's amazing that I can come into a profession that has been the product of refining somewhat basic things for the past 50 or more years. Everything boils down to interpreting little tiny bursts of electricity by pieces of different kinds of metal, carefully organized inside a plastic or metal shell. I come in on about the 6th level, confused. I couldn't imagine what the 1st level would be like.

Anyway, back to the grind. This game isn't gonna write itself.

1 comment:

  1. Welcome to the last seven years of my life :P I guess since I started with an actual language (albeit a relatively simple one) rather then a scripting language I had an easier time learning. It's a much easier jump and it's much easier to learn to program when your not used to the simple convenience of scripting. But ya, the basic hardware level is not a complex as you'd imagine. LEt me rephrase that, the mechanics behind it are about the same in complexity as programming. This whole layered system used in computers (and really anything) is there exactly because of the compexity of what it does at the base level. It's all about modularity, about dividing things into smaller problems, then combining those solutions in a structured system that creates what you see in front of you.

    But anyways, my suggestion is simple, practice, practice, practice. I'd like to say it get's easier, but honestly it really doesn't. This is something you'll be at for a while, but honestly programming is one of the funnest and most rewarding experiences I can think of. And it completely changes the way you think and look at things. It's the most interesting field I know of and is a great way to keep your mind sharp.

    ReplyDelete