Add a Comment (Go Up to OJB's Blog Page)
Below the Surface
Entry 1294, on 2011-05-06 at 14:33:52 (Rating 1, Computers)
A couple of weeks ago I completed a 3 day programming course which covered writing iPhone and iPad apps. I have been a programmer for many years and have written hundreds of real programs - some of them even worked - but recently I have mainly done web programming, created dynamic web sites, and built databases using the PHP language and MySQL as the underlying data source.
Writing web programs certainly has some challenges but to me it seems simple compared to writing an iPhone application. On the other hand I do remember having problems when I first started programming on various new platforms. To write a program for the classic Mac for example (I'm talking about pre-Mac OS X days now!) took about 1,000 lines of code just to provide the basic functions (a window, menu bar, editing functions, etc) before you could even start on the real functionality.
With the iPhone you get all of that, plus a lot more, for free. You can "write" a simple web browser with about 10 lines of code for example. Sure, that's because Apple provides the core browser functions for you just to connect in to your app, but it's still impressive. To write one for the classic Mac would probably take about 100,000 lines!
The problem I have is those 10 lines. In some ways 1000 lines of simpler low-level code is easier than 10 lines of very obscure code. Actually I should clarify that. Objective C code is easy to read (it's very verbose) once you understand some of its odd syntax, but not necessarily easy to write. I find that I'm not sure why some code is there even though I can tell what it does!
But, as I said, that could be just because of lack of familiarity. The programming course I did (or didn't do because I never turned up to lectures because I already knew it all!) when I was a student for the extremely simple and clear language Pascal went for months. This course for a language with 100 times the functions was just 3 days. That's a fairly intense learning curve!
But enough of this geeky stuff, what is my real point here? I am just contemplating the complexity that lies beneath the surface of modern computing equipment. It's not limited to the iPhone and iPad of course: the Mac has a very similar system underlying it, and so do devices based on other operating systems. In fact the iPhone system is based on the Mac system, with a touch layer instead of a mouse and keyboard layer on top (roughly speaking).
Programming the iPhone is challenging because Apple provide so much functionality in the operating system and allow access to those functions through an elegant and extremely rich development environment, so there's just a lot you need to know.
So although the iPhone is a beautiful piece of hardware there would be a case to say that the software it runs is even more beautiful and valuable. After the course this is more apparent because when I use apps on my iPhone and iPad now I have a better idea of what's really happening in the background. That complexity, elegance, speed, and reliability really is an impressive achievement (one which other companies are yet to match in my opinion).
Hardware, no matter how good it is, is only useful if it can be easily accessed by the user. That's where the operating system software becomes important. But many people don't see that layer. They think they are accessing the hardware directly. Let me give an example here. The iPhone's GPS only gives an instantaneous reading of its current position. But the system is smart enough to change that into a speed and direction. It also provides an estimate using cell tower triangulation and other techniques if the GPS isn't available or the device doesn't have one. And it does a lot of other stuff as well. Without the software the GPS would be just like the early handheld devices which simply displayed latitude and longitude.
People should remember these points when they try to criticise the price of Apple's products. The effort that goes in to the software is probably several times greater than what goes into the hardware (although, again I don't want to detract from the brilliance of the hardware design) and that is rarely considered by many critics. People just don't understand that there's a lot more to the iPhone (and iPad and Mac) than what they see on the surface.
There are no comments for this entry.
You can leave comments about this entry using this form.
To add a comment: enter a name and email (both optional), type the number shown above, enter a comment, then click Add.
Note that you can leave the name blank if you want to remain anonymous.
Enter your email address to receive notifications of replies and updates to this entry.
The comment should appear immediately because the authorisation system is currently inactive.