A few weeks ago, I started getting back into programming after a long absence. Its strange, but at University I did a BEng in Computer and Electronic Systems and a MSc in Computer and Internet technologies, but I always considered programming as a necessary evil. I just used it as a way of getting something else done. It was nothing more than an Engineering tool for me (just like a calculator, slide-rule, paper, pen...etc). I used whatever programming language that the task called for, including Java, C, C++ .net...etc (anything and everything). I had no preference or favored language and I never really gave it much thought.
However recently I have been feeling an itch to get into something other than the work im involved with at the moment (I'm a 'Network Engineer' and at the moment its a means to an end and in no way what I want to do for any longer than is necessary...I feel the telecommunications industry is quickly becoming a commodity industry with no redeeming features, everything is done as nastily and cheaply as possible). So, I thought about what I do to keep myself sane and something I could do in my own time and something that I could do right now! (and hopefully would become useful if I were ever thinking of going into Software development)
I have always had a soft spot for Mac's (they were always cheaper...in the long term and I loved the simplicity and power of OSX) and I used them right through university, got an iphone and fell in love with its capabilities. It really revolutionised the mobile industry and has become an fully fledged platform in its own right. I think of it more as a platform (just like OSX, Windows, Linux, UNIX...etc) with a phone application to boot. Its got so much potential its looks like an exciting device to be involved with. So I decided if I was going to get back into programming that I my as well direct my efforts and try some application development for OSX and the iphone. So because I have a bit of a background in C, C++, Ada and Java, I thought I would add a superset to C and start learning Objective-C with an aim to get something together for the iphone or OSX.
I must admit, it has been perhaps close to 2 years (could even be 3) since I was involved in programming of any type. My last effort was a C++ simulation (discrete event simulation) for a telecommunications project. Its was a program that was in support of my thesis and there was nothing elegant about it. It was a very basic terminal application (if you could even call it an application) and just spewed out its results....its was fucking ugly....and it always bothered me. I didn't get the time to do anything special with it. It was simply a very crude simulation for some half baked idea I had about GPRS at the time. So Im going back to the drawing board....going back to C/C++ and picking it all up again....sounds weird, but after 2 years you would be surprised at how much you forget!! Its just because I was not thinking of it for quite some time.
Books
So I started with the original C bible.
- K&R C Programming - This was a great book....probably the only C book you will ever need. I remember this was my go to book for the basic C syntax, and I already had it, so I dusted it off and started flicking through it.
Now I needed some other resources to effectively pick up Objective-C, so I installed iphone dev environment for xcode and downloaded all the documentation explaining the framework, and that was fine...but I was still looking or a softer introduction to Obj-C So I thought I would post a little list of some of the things I have found usefull so far:
- Programming in Objective-C 2.0 - Because quite honestly nothing beats a book when it comes to learning anything. Programming and software development is something you just stop thinking about when you are away from the computer. I found some good reviews on this book and it pitches itself as a book for everyone (beginners through to experts). Its good to have a book that you can use as a reference after you have run through the it for the first time. I would really recommend it, its been a great one so far.
Web Sites
Quite honestly some of the best resources are on the web. They are normally from programmers who have already spent many years battling with the language and all its little quirks. Not to mention that they are free.
- BecomeAnXcoder - This is a great little resource. Its essentially a free ebook, that helps you get to grips with the Xcode development environment and Objective C. Its a very soft introduction (meant for beginner programmers by the looks of it), and worth a read in your spare time. I feel its always good to have bookmarks like this so that you can browse during your downtime.
- LabNotes - Is a follow on from the one above which goes into some more advanced topics, such as recursion and other things that a beginner wont necessarily want/need to cover straight away.
- Learn Coca (Cocadevcentral) - great free resource for Coca developers and beginners alike. There are a few introductory articles there, as well as links to Coca related blogs and the coca community.
- Object Orientated Programming and Objective C language - Great introduction to the principles of object orientated languages and at the same time introduces Objective C. I find this text quite hard to read at times (In several places I founds I had to re-read some parts of the text, and even then it left me with a WTF feeling, but its still great.
- http://www.otierney.net/objective-c.html - Is another great introduction. Its really succinct and flows really nicely, great for dipping in and out of.
Anyway, there is some things to start you off on, and I have certainly found them useful so far...and perhaps they may be useful to you too?!