Prologue: In Motion
In The Beginning
Over the past five years, the amount and variation of products created on iOS has exceeded everyone's expectations; however, the process of iOS development has remained fundamentally unchanged. There have been welcome improvements to the Objective-C language (blocks, ARC, literals), but it's clear that Apple intends to stick with it for the long haul.
And that's not a bad thing at all. Objective-C is fantastic for what it wants to be: a dynamic, object-oriented superset of C. It can do compile-time type-checking while still providing introspection and reflection at runtime, which lets you do some magical yet stable tricks with your code.
But despite its strengths, many programmers balk at the prospect of learning a niche and odd-looking language just to make iOS software. Instead, they turn to familiar yet non-native technologies like HTML5, which ultimately produce a substandard user experience. Wouldn't it be wonderful if there was a more accessible language with which we could write native, performant iOS apps? dun dun dun
And Then There Was Motion
RubyMotion is such a solution. It allows you to write iOS apps in Ruby with no penalty to user experience. And it preserves the iOS SDK exactly as intended by Apple, so all existing code examples and tutorials are perfectly translatable.
How does that work? Well, technically it's a variant of Ruby; you can't use some of Ruby's extremely dynamic methods like
eval, and it adds some new features like
functions.with(some, named: parameters). This allows your Ruby code to be compiled to machine code identical to Objective-C; in other words, the device can't tell the difference between RubyMotion and normal iOS apps.
If you just don't like Ruby, RubyMotion won't change your mind. But if you aren't totally anti-Ruby, or you're just a developer who wants to write apps in a language farther away from the metal, I highly recommend you give RubyMotion a chance.