诺基亚的Symbian为什么这么让人讨厌

从iPhone和Android开始流行以后,Symbian背负的骂声就开始越来越多。Symbian这个一开始就不算太成功的系统,依仗着诺基亚手机而占据了智能手机第一位的位置。其实早在iPhone流行之前,一直都有开发人员在辱骂Symbian,但声音都很小,不成主流。在那个时候,网络上描写Symbian为何能够成功的文章远比批驳Symbian的文章要多得多,这里头也就是三个原因:

一则有很多依仗做Symbian开发成功而赚钱的早期成功开发者的支持;

二则是初学者们对于对于Symbian第一的地位的仰慕,从而选择性的放大它的优点;

三则是太多外行完全不了解Symbian,而受于诺基亚市场成功的影响而大肆吹捧

 

Symbian到底有多少问题,它又为何如此让开发者讨厌?如果读者朋友同时做过多个智能手机平台的开发,体会会更加深刻。所以在这里就以各平台间的开发状况的比对来说明问题。从开发智能手机程序的几大要素说起:1、开发环境IDE 2、模拟器 3、编译调试 4、API与文档

 

1、开发环境IDE
要开发Symbian,需要安装 J2RE,ActivePerl, 对应版本的SDK, CodeWorrior或者VC6.0等等。 装这么多程序还不算麻烦,麻烦的是,它们的安装是有顺序的,顺序错误会导致最终无法编译程序,必须按特定的顺序来,这对于初学者来说非常的繁琐,因为没人任何官方文档说明了需要安装顺序,尤其是在早期还没有网友将这些问题总结出来发到网上的时候,最早的Symbian开发者们是吃尽了苦头。这一堆程序卸载完又重装可能就过去半天的时间了。但是,这还没完,他们安装的盘符是有影响的,你不能把CodeWorrior跟SDK一个装C盘,一个装D盘,他们必须在同一个盘而且最好是C盘,而很多人的C盘空间可能根本就不够用。而这些,都还是Symbian在后来改进过他们的安装环境搭建之后的成果。05年以前就开始做Symbian开发的开发者体会是最深刻的,那个时候很多人为了让第一个Symbian上的Hello World程序运行起来,运气不太好的情况下需要一周甚至更多的时间。当然现在在大量网友分享经验的情况下要好得多了,但仍然让开发者难受。


而和Symbian在同一时期的Windows Mobile是什么状况呢?搭建Windows Mobile的开发环境要做的工作很简单,安装两个程序:VS 2005+对应版本的SDK。不用修改任何环境变量,不用担心目录的问题,实际上,没什么可担心的,就这么装上就完了。装完以后,要运行第一个Hello World程序,从编程到看见运行界面,你只需要不到10分钟。

 

而最受开发者欢迎的iPhone呢? 安装一个XCode+SDK就行了,就这个,什么都不用管,不用配置,甚至都不用关心升级,它以后会自动升级版本。而Android的环境虽然需要稍微配置一下,但也还算很简单,远好于Symbian。

 

在几大智能平台的开发环境的比较中,Symbian以绝对的劣势完败~

 

2、模拟器

模拟器是智能手机终端软件开发的必备工具,它的仿真程度,稳定性和速度很大程度上影响着我们开发软件的效率和质量。 虽然MTK的模拟器情况很也糟糕,但是我觉得MTK不算是智能手机系统,不在比较之列。

 

这几大智能手机平台中,模拟器的优劣状况也是各有高下。我个人评分最高的模拟器是iPhone模拟器,仿真程度很高,甚至提供了模拟多点触摸的测试手段,启动速度是各大智能平台模拟器中最快的,使用和调试都非常顺畅,崩溃与出错几率极低。

 

第二名的应该的Windows Mobile的模拟器,Windows Mobile又分PPC模拟器和Smartphone模拟器,仿真程度一样很高,不在iPhone模拟器之下。而启动速度比之iPhone则慢了不少,调试使用的顺畅度也差一些,但大抵也还不错,也很少会崩溃出错。

 

Android的模拟器给我的唯一印象就是启动速度慢,非常慢,因为我对Android使用不多,还不方便评价它的使用感受,就不给Android排名了。

 

所以,这里剩下来的最后一名,还是Symbian,Symbian模拟器的启动速度介于Windows Mobile和Android之间,不过启动速度不是最关键的,关键还是使用感受,Symbian模拟器的仿真程度最低,程序在模拟器上和真机上表现不一致的情况常常发生。这还不是最糟的,最糟的是Symbian模拟器常常在你调试程序到最关键的时候,崩溃了!!或者造成死机。为什么有些程序员会突然疯了一样的砸键盘,因为他很可能就是Symbian程序员。

 

3、编译调试

说到编译调试,曾经最痛苦的印象倒不是Symbian, 而是03以前的Windows Mobile,因为EVC和Windows XP的不兼容问题,导致单步调试异常困难。常常是在断点的情况下按一下单步执行下一句之后,我可以慢慢的喝一口水,然后再等一会,程序才真的走到了下一步。还好,这一切都已经过去了,05之后弃用EVC,启用Visual Studio 情况改观很多。现在的Windows Mobile应该是各平台中调试最便捷的平台了。不过这一点上,部分iPhone程序员可能会有异议,毕竟XCode也很方便好用。可能是因为我用Windows还是比Mac熟练很多的原因吧。总体来说,Windows Moblie和iPhone开发的编译调试情况都很不错,编译速度都很快,单步调试,内存调试都很方便。尤其是XCode提供的内存检查工具Instruments更是iPhone程序员的利器。Android调试我的经验不多,但起码我知道,Android的编译速度还是不错的。

 

而Symbian呢,编译速度之慢可以用夸张来形容。就以手机QQ的编译情况来比较,以我那台老PC做载体,WM QQ的编译时间大概在3分钟以内,iPhone QQ则只需要2分钟,而Symbian则在15分钟以上。试想一下,我为了将一个界面元素放到合适的位置,需要反复修改代码重新编译查看运行效果的时候,会是什么状况,假如我要修改10次才能满意,那么开发iPhone程序的话,我需要半个到1个小时,而开发Symbian程序的话,这一天就不用干别的了,就调这个了。

 

4、API与文档

说到API与文档,不得不大赞iPhone,做得非常漂亮。只要读英文的能力过关,几乎可以在无需预先学习和老师指导的情况下顺利的掌握iPhone开发的方法。当然,你读英文困难,那是另外一回事。况且这几大平台都是没有完善的中文的文档的。使用iPhone的文档之前,我和多数程序员一样,深信微软的MSDN是最好的文档,当然也的确不错,不过iPhone文档就更胜了,在对各API的描述上,结构分明,首先是概述,然后是各参数描述,然后是简单的代码示例,如果还不够,还能搜到完整的可编译运行的程序的示例。在编程过程中,从XCode中也可以随时方便的跳转到帮助文档查看当下用到的API。那Symbian是什么状况呢? 文档混乱,描述不清,找不到示例代码。API的使用方法也比较复杂,而且隐藏部分潜规则。

 

写到这里,回头看,几乎都是在列Symbian的罪状,好吧,俗话说:坏人做到底。就再列最后两条它的罪状吧:

 

5、栈空间少,不够用,程序员不得不尽可能多的使用堆的方式获取内存,这徒增了Symbian开发的难度,而我在Windows mobile的开发中使用栈空间是很少会出状况的。

6、二次构造。这是Symbian的独创,在Symbian独大的年代里,它甚至被宣称为Symbian的一大优点。为了内存安全?多写一点程序,仔细想一下,比对一下。二次构造给程序只是带来了更复杂的编写难度和更多的隐藏Bug,毫无优点,这是一个失败的创新。

 

先写到这里吧,写得比较快,没有多想,部分内容难免带有些许主观感情,不一定客观,但基本事实方向还是不会误导读者的。有时间再来慢慢谈更多的移动开发的故事~

posted @ 2010-10-24 21:42  猫咪  阅读(848)  评论(6编辑  收藏  举报