I’ve been working on a semi-secret project for a while with my dawg Diego and it’s going pretty well. I’m learning objective-c through making this game, which is a bit of a trip. So far, all of my experience with any of the C languages has been marked by a lack of some basic understanding that would make things a lot easier. Let me put it this way: I learned how to program first in Java, learned some PHP and Perl, and then started working at a Python/Javascript house (Parse.ly). Before this winter, my only exposure to any of the C languages was via CS classes and this book, which I read last summer. I’ve been programming for a while now, but the Cs are the only settings in which I’ve had to worry about things at a byte-level so far in my career. Python’s nice because you don’t have to do that, in my opinion.
Example: the other Sunday when I was working with Diego, I had the idea that I wanted to extend this C++ object’s void* field by having it point to a struct so I could store lots of stuff in it. Very standard. This ended up taking me a good 40 minutes to figure out, because, as it turned out, I had forgotten to allocate the space for the struct via ‘new’. Now, as a Python programmer, I’m not used to having to do this. The idea of allocating memory is abstracted in Python so you don’t have to deal with it so directly. But the point of the story is that I felt pretty dumb, because this really amounted to a mistake made by inexperienced C programmers, which I certainly am.
I’m running into the same kind of thing working through the labs for my Operating Systems class, which is taught completely in C. Of course, these things get easier with repetition, just like the concepts I struggled with when I was first learning to write code. It’s a bit of a strange feeling though, because there are some languages (esp. Python) in which I’m very comfortable with my skill level, and to be thrown back to the beginning when writing C can be jarring.
Anyway, the point of this is that I’m learning C/C++/Obj-C quite thoroughly this semester, both through working on this delicious project and my classes. Related: get excited for our game! It’s going to come out on iPhone at a time in the moderately-near future. It’ll be fun and cheap and you will buy it and play it and love it.
Also: if you’re a CS person of any skill level: follow my new link stack on Delicious! I started it to share with people the links that I’ve used and been helped by in the past. Included right now are the pages that first taught my shell scripting, Applescript, Python, and a bunch more cool stuff. I highly recommend checking out “What Every Computer Science Major Should Know” on that stack, too – it’s a helpful benchmark I’ve been using as I go through school.
Follow my stack! Get pumped for our game! Talk to you later!