Friday, April 18, 2008

Chapter 1: Starts and beginnings

The goal of this blog is to document my work while I'm learning to code again, and to show to other people so that they might be able to a) learn from it, or, more likely, b) yell at me because I've been slacking.

Let me begin by saying that I started programming when I was about 14 in C and C++ for my Macintosh running System 7. I think I was using Metrowerks Codewarrior, a trial copy that came with a book I bought from the closeout bin at Books-A-Million. Either because of my lack of experience, my lack of years, or the fact that, if I recall correctly, writing for Macs back then was impossible, I had a hard time of it. It went okay, though, and over the years I wrote a couple of little games that never really worked quite right from beginning to end. But whatever, I was learning.

I worked a lot in Java as well, still mainly in high school, and again wrote some games, wrote some simple programs to do this and that, and learned a bit along the way.

Fast forward five or ten years, and here I am. I've forgotten most of what I knew, and that might be a good thing. I'm going to try really hard over the next couple of months to see what I can do, and I'll try to document it here.


The primary point of this post, though, is to list my goals, which are--at this time--the following:

1. To work in Visual C# Express to learn the basics of contemporary Windows programming. A big sub-goal in this heading is to better understand the program flow inside the Windows Forms framework--something which is kind of weird to me right now. A major reason for working within this framework is that it makes the UI end of things so easy that it will free my mind to focus on the actual code, the actual algorithms rather than making sure the event handler or menu system is working.

1(a). To work with the XNA toolkit, once task 1 is well underway, to write a non-trivial game that doesn't look awful, will take a fair amount of time and effort on my part such that it will feel like an accomplishment, and hopefully something that is actually fun (or at least interesting) to play. More on this later.

2. To learn (or relearn) the fundamentals, be it basic searching and sorting, data handling, or really whatever. I have not decided the best source of information to go about learning this, although I do have several related textbooks, two Knuth books, and the whole wide interwebs to assist me in this matter. This is going to be the least fun and most important item to work on, so I really need to do it.

3. To learn (for the heck of it) to work with Lisp, possibly working from Structure and Interpretation of Computer Programs. This task is inspired by another blog, and I do not in any way expect to complete this task in nearly the extensive fashion that the linked person has done. This task, as you may notice, seems fairly unrelated to the other two. It may be, it may not. I think it will stretch my mind in a thoroughly different direction, and while this task will receive the least immediate attention of the three, I'd feel very accomplished to get somewhere with it.

That's enough for now. I'll be posting what I have of the programs I've written so far in the coming days.

No comments: