Monday, April 09, 2007

What's Wrong With Symbian

In short: Crippled C++. C++ is already quite a low-level language. Symbian has plenty of coding conventions and classes, which make this even worse. There is cleanup stack to prevent memory leaks; leave mechanism to simulate exceptions; and RArrays and RPointerArrays to simulate std::vector. Finally, there are active objects to simulate threads or message passing or callbacks or whatever, I'm still not quite sure despite using them for years.

Nowadays Symbian phones have as much memory as late 486s or early Pentiums, although the memory is slower. So is it really worth it to save miniscule amounts of memory and make programming harder?

The era of mobile Java isn't here yet. I mean, the era when the operating system consists of Java VM, device APIs, and some core high-performance units like phone calls, video codecs, OpenGL, etc. Java is still too slow. Therefore, C++ is still a necessary evil.

In addition to crippled C++, also APIs are less-than-perfect. Java developers who have used entity beans or Hibernate may feel schadenfreude from this fact: Symbian has an internal database in every device, but you can only access it with SQL. No object/relation mapping tools for you. In general, there aren't any helper APIs which wrap the functionality to an easier form. 2.5 years ago when I last programmed Symbian, the APIs also has stupid bugs, but I hope that is fixed now.

No comments: