### Full Circle... back to xCode?

The Romans used numbers, the Roman Numbers which are represented as I, II, III, IV, V, and so on and the number system that we use today is the one which Indians (the ones that reside in Asia, not the native Americans) shared with the ancient Arabs and Persians the knowledge of the number Zero (which strangely is called the Arabic Number system because the Europeans did not know the origins and they attributed the Arabs from North Africa with it's discovery). The number Zero is such an important discovery, because not only did it complete the numeric system, but also provide the concept of decimals. The Roman numbers were always Integers.

With this started the age of mathematics, geometry, astronomy and a whole lot of other sciences could be managed better. There are texts that describe ways on how to calculate. Plus these methods are found to be faster and better than the way we learned math. So in a way we are going back to the ancient ways, Look up something called Russian Peasant multiplications which deals with halving one side and doubling the other, or the Chinese multiplication which looks interesting but a bit too involved. We are coming full circle back to where we started from.

Let us discuss Software Development (as in programming using a computing language), we have gone from Assembly (Low Level) to High Level and fluctuating in-between. That is how we have had languages like Visual Basic, Java, Ruby, Python, etc For the purists and others there has always been C, C++ and then dotNet C# or Objective-C. For the academically inclined there is Pascal and it's variants with Delphi. Then when Mobile became a household name with every other person having a mobile device (namely the iOS ones) Objective-C was suddenly propelled into the limelight as it was the only way to develop for the iOS devices. Given it's syntax has similarities to C/C++ (apart from it being based on Small Talk) many developers started to shy away from it.

After the drama from Apple about not allowing any alternative other than just XCode and Objective-C subsided, there was a sudden boost in frameworks like Game Salad, Unity, and many Lua based ones. The biggest challenge that every developer faced was to target as many platforms as possible. This meant deploying for iOS, Android and hopefully Windows Phone, Blackberry and so on while maintaining a single source.

While most of the devices like Nook, Kindle Fire, Google/HTC/Samsung, Blackberry etc were powered by Android in some way or the other, it was easier to target these platforms and create for them. The only problem that existed was the myriad resolutions and specifications available. Even worse was that there were couple of Base OS versions in use. With Apple, it was smooth sailing as Apple has one set of specifications and resolutions. Microsoft surprisingly managed to shoot itself in every place possible with Windows Phone 7, the first thing they did was cut out the developers that wanted to develop using any other language than C# or any technology other than DirectX / XNA. So while Android and iOS allowed for use of C++ and OpenGL, a couple of frameworks soon became popular. While the alternatives that did bank on HTML5 like PhoneGap, etc are as good as being OpenSource as the javascript source is human readable text and can be extracted easily.

While Android phones were cheaper in comparison to the Apple and could suit every budget possible, there were cheap Androids so the potential market for Andriod apps seems like a real potential, however what I have heard from many developers is that Android market is not for everyone. The majority of emails from GooglePlay are about users purchasing an app, downloading it and then requesting a refund. Mainly not because it is not compatible with their device, but because they have tried it and changed their mind or worse, if they are pirating it. So of the three base Markets that are available for users is only the Apple iOS App Store which has responsive devices not sluggish slow and outdated ones.

If the only thing we are left with is the iOS market place, then why even bother with the stress of cross platform applications? For the desktop there are still plenty of Windows users, kids at schools are getting netbooks with Windows, parents get them laptops with windows, so there is a large market for windows users out there. Making a software cross platform for both Mac OS X and windows makes perfect sense, not for iOS and Androids, kids have iPod touches, iPads and the parents iPhones, iPads.

If the development has to be only for the iOS platform, then why be limited by the frameworks inability to provide all of the features that iOS has to offer? You want to write Newstand applications, Passbook applications, iCloud integration, etc then the best tool for all of that *IS* XCode and Objective-C.

This brings us back to square one, developers started looking for alternatives because they did not want to orient themselves with the complexities of Objective-C but it seems that the only alternative is to move back to XCode and Objective-C.

There are a couple of frameworks, surprisingly FREE, either a free license or OpenSource that allow the users to create applications while compiling the project using xCode. With a few users this has been extended further where the entire iOS library is available for use in the frameworks thereby granting a bridge to Objective-C.

A developer cycle will bounce between these steps where there will be time looking for alternatives and times working with the original choice of language/framework.

It seems that in some form or the other Objective-C and the underlying iOS API's cannot be disregarded and will need to be invoked either directly or through some form of a bridge as no framework offers complete access (natively) to these functionalities. A little advice, brush up on the iOS API, it will always help just in case the circle turns and you are in a situation to use xCode. Till then there are plenty of other options to try.