Saturday, July 30, 2011

Learning the ropes

    So as you may remember from my previous post last Wednesday, I had chosen to develop for Mac OS and iOS rather than the Google Android OS. I also wanted to see if someone could be self taught to do this and actually become a capable programmer.

    Before we get too far down the rabbit hole I should bring you up too speed on my current knowledge of computers, programming and generally all things electronic. First, I am a gadget geek. I love gadgets. I don't really own a lot of a gadget's, but I do like to follow tech news and try to stay on top of what is out there and what is coming soon. Part of the reason for this is just good old-fashioned consumer information. As a good example of one of my blunders, three days after I purchased my Macbook Pro Apple released the newer model. It happens. I could have returned my Macbook, the Apple Store where I purchased it included a 30 day unconditional return policy, and then re-purchased the new model. It may have even been the smart thing to do. Fortunately for me Mac's tend to last for many years.

    Second, I have some programming experience. I have been programming in Visual Basic, Visual Basic dot Net and Microsoft Office's VB Script for many years. All of the Microsoft Basic languages are all very easy to learn and very capable of creating some very amazing software. However these languages are nothing like C, C++ or Objective-C. In fact, if you enter most programmer forums you will find some interesting opinions on the subject. The most prevalent being that learning any Basic Language first ruins you as a programmer and your not "really" a programmer at all.

    So while I do understand the concepts involved in programming and object oriented languages, the mechanics and rules for Objective-C are very different than anything I am used too. That and according to many in the programming community I have already been ruined by Basic. At this point things are not looking good for me.

    Developing on the Mac is actually a two step process, sort of. More like a step and a half. I will explain. Objective-C is the underlying language that the compiler uses to create the software that runs your Mac, iPhone or iPad. XCode is an Application and "development environment" that is used to covert Objective-C into an actual application. XCode is also the application that a developer uses to "draw" and plan the user interface. This determines what the application will look like and how the user will interact with it.

    While XCode determines what the application will look like, and parts of the user interface are "connected" to snippets of Objective-C and even to other parts of the user interface, it has nothing to do with the code it self. You can literally draw a very good looking application that does nothing. You can also code an entire application in Objective-C by hand and have no graphical user interface.

    The two work together in harmony, yet remain very separate. The best way for me to proceed soon became clear. Learn the Objective-C code first, then learn to design user interfaces on for Mac software. I do not intend to master or become any type of guru in Objective-C at this point. While there is market for an Objective-C programmer, writing drivers and such, that is not my end goal.

    I have an application in mind that I would like to see get developed that so far has been missing on the Apple platforms. Currently the application that use is a Windows only application and the creators have no interest in developing a comparable Mac version. Without giving out too much information, I would like to have a working alpha version of this application by October and the first production version in the app store in time for Christmas. This is a lofty goal, and one that I hope I am up too.

    In order to make this happen, I need more information. To this end I have purchased the book Programming in Objective-C (3rd Edition) (Developer's Library) Kindle Edition from Amazon. I am already on chapter three and working through the examples. I will keep you all posted on my progress and give the book a thorough review once I am done with it.