Cross-Platform begins with C

There’s always talk in the development community about the next greatest thing. A couple of years ago it was Ruby. Before that it was Erlang. Then Python was being heralded as a cross-platform power house and, even earlier, tools like Delphi promised the latest thing in RAD (Rapid Application Development) programming for Windows.

There are so many languages considered “modern” which are available, you may be surprised to learn that at Voxygen we still, for the most part, develop in C (created in 1969 at Bell Labs) and sometimes C++ (created in 1979 also at Bell Labs).

Here’s why.

We live in a new world of application mobility. To be taken seriously, any new software product launch has to be available on Windows, Mac OS X and iOS (iPhone/iPad) / Android / Blackberry. Launching on one of these platforms alone isn’t really considered a full launch any more, and being on at least one desktop and one mobile device is a minimum basecamp position.

C, and C++, remain the most portable languages. They will compile on iOS, Mac OS, Windows, QNX (for BlackBerry Playbook) and using a JNI wrapper can be built for Android. Voxygen leverages this portability in order to create applications with a single core code base which is fully cross platform across all four devices and operating systems. This is a powerful paradigm which enables a single development team to build the product, rather than four, greatly reducing development time and cost.

By using a single cross-platform core, we leave only the design and build of a user-interface layer on top as being specific for each operating system. Start-up company Appcelerator jumped on this opportunity and created a tool, Titanium, which allows for cross-platform user-interface development to be done using HTML, JavaScript and CSS. This means that we can develop UI’s using our web team and standard components. And, again, means design and develop once, deploy everywhere.

To bring all of these ideas together we have created our own “glue-layer” library which exposes JavaScript/JSON based API’s to lower level C or C++ core code functions. This means that we can develop a product UI in a browser, iterate it rapidly, hook it up to a core module when ready and then deploy it to four different platforms. And maintaining all four products becomes really easy, too.

Our clients are also impressed with our ability to rapidly develop, test and iterate UI’s – using HTML for this is a very compelling proposition.

We believe there’s a right tool for every job. It’s not always C or C++, and modern languages like Ruby absolutely have their place (Ruby in particular is great for rapid prototyping). But if you want to launch a new software application and don’t want the headache and expense of maintaining four development teams and product lines, there is still only one choice, and that choice is C/C++.