电脑技术学习

歪批:XCode之外的选择?

dn001

  从火星来的地球人都知道,苹果提供了一个非常漂亮的免费开发平台XCode,目前最新版本是3.1 beta,里面甚至包含了iPhone的SDK。它支持Objective-C、Objective-C 2.0、C++、Java、Ruby、Python……很多很多语言。

  当然,它的界面需要熟悉,如果你要了解Cocoa框架,那么需要看大量英文文档;你需要了解MVC架构,这些同样要花去你不少时间;而且你还要习惯Obj-C有点怪怪“的语法。如果你上大学英文课的时候经常逃课去泡了网吧或是妹妹,你可能会更难受些―-因为像样一点的中文苹果开发资料网站几乎没有,可能还是有的,就是你现在正在看的这个CocoaChina……也许你只能借助残存在记忆中的那么点英文知识去搜索google了。

  不过当然有一点好处,有了Cocoa,你可以扔掉Codewarrior,也不需要使用Carbon去写大量代码实现简单的功能了。再提一句,XCode的自动代码提示让人非常难受。

  我们这里不谈和微软的东西比较优劣,我们是苹果的粉丝,死忠。虽然从内心里我不想却不得不承认最新的Visual Studio本身(不是Windows)要比XCode人性化那么一点点,好吧,要人性化很多。

  一切还是习惯,习惯就好。人很难摆脱旧的思维和旧的习惯,当你摆脱了旧的习惯,好比―-你习惯了微软的.net,现在需要转到Cocoa上来,也许你会有些抗拒:就是我们上面提到的那些东西;当然可能有更大的诱惑:你爱苹果,你想在苹果上写程序,你想发财,好吧不是发财,是你想做出一番事业……哦对了,还有iPhone也是你最爱的新鲜水果。

  那你可能也曾经想过,除了XCode之外,我是否还有其他的选择?别的语言?比如我深爱的VB for MAC?更好用一点的IDE?这虽然不是你可以真正放弃XCode的理由,不过值得我们发掘发掘。


  RealBASIC

  这家德国公司历史深远,这颗软件意义重大。1998年,第一个版本发布,从此,就像石头扔进了马桶,一波激起千层浪,波澜壮阔,龙腾虎跃,一波未平一波又起……至今过了十个年头,RealBASIC依然阴风阵阵,巍然不倒。靠得是什么?靠得就是它的大无畏的国际主义精神。

  那什么是国际主义精神呢?因为它不光支持Mac,不光支持Windows,也不光支持Linux―它全支持!所以叫跨平台的国际主义精神。试想,你写出一套程序,按一个钮,一下子生成了三个二进制代码,拷贝到相应操作系统就能跑起来,你什么感觉?趾高气昂啊!不麻烦不累,写一套程序仨平台跑,那叫一个舒坦。

  这款开发平台软件最猛的其实还不是它的跨平台功能,最猛的是他的名字,因为他是BASIC。为啥这个最猛?因为我们从小学的就是BASIC呗。从小妈妈就教导我们,学好BASIC,走遍天下都不怕,学好BASIC,老师高兴同学夸……因为它好学,因为它易懂,因为它最傻瓜化。当年啤酒盖子就是靠BASIC发的家,所以严谨的德国人秉承了这一传统,做了个更真的BASIC,取名真・BASIC无双!

  如果你对VB熟悉,那么你会在这套开发软件上隐隐约约发现大量VB的影子,为什么不叫它Visual Basic for MAC呢?界面很好懂,拽个按钮,拽个文字框。做什么Hello World,我们能做十个HHHeeelllooo WWWooorrrlllddd……

  用RB编写简单的程序,你会发现一如VB般简单,生成的苹果二进制代码,界面都是源生mac的样子,速度也蛮快。还有一个很棒的地方,它支持自己的组件,而且有很多人在写RB的组件,拿来就可以用。

  用RB编写复杂点的程序,你同样会发现一如VB般思绪如乱麻般难缕,列表中的一百个方法可以让你找得头昏眼花,嵌入的一百个图片让你想用棒子砸死老板卖掉涨价肉换块大硬盘。调用的一百个carbon声明让你从近视镜换成老花镜,而最最让你恼羞成怒的是老板说你要写跨平台的软件,你还要同样定义一百个win32的api……你蹲在厕所里边大边想,那linux咋办捏?

  Future BASIC

  在未来,我们还有一个BASIC……这个叫Future BASIC的东西可以看看。这东西不跨平台,有几个亮点。我看过没玩过,有些地方不太敢乱说。

  
  一个亮点是,你不用花五百美刀去获取一个苹果下的BASIC解决方案,对于预算不多而且惯用免费和OOXX软件的你,无疑要舒服的多。还一个亮点是通吃,从System 7到Leopard,从intel mac到68k,是苹果的机器就能跑。

  还有个蛮有意思的东西,它提供了一个FB to C的程序,也就是说你写出了Future Basic的代码,拿这个程序一转换,biu~变成c代码编译了。

  那到底啥是Future Basic?开发者说得清楚,开发工具无非就是两块,一块是编辑器,给你拿去写代码;再一块是编译器,编译成机器能执行的二进制程序。就跟揉面一样,弄点面粉弄点水,揉一揉就成面团了。

  Objective-Basic

  再来个Basic,也是苹果平台的。号称是能够使用所有Cocoa库,面向对象的Basic。而所有这些有一个前提,你得熟悉Cocoa。

  说白了Objective-Basic就是一个转换器,把你写的半Objective-C,半BASIC的代码,转换成真・Objective-C,再用苹果的编译器编译成可执行程序。这种方式你可以说它烂,也可以说它强,但是存在即为合理,不是所有人都能看明白Objective-C,但是几乎所有人都能看明白Basic。

  看了Objective-Basic提供的例子你会发现,真的就是Objective-C的Basic版,所有的框架调用,声明都和Objective-C那么相像,甚至―-它的UI编辑器就是苹果的Interface Builder。

  可是麻烦就麻烦在这里,Objective-Basic没有很好的把IDE和界面编辑揉在一起,你得想办法自己搞定。而最让人痛心疾首的是,要建立一个自己的工程,你得把它提供的例子复制一个,在它的基础上改……否则的话有你好看,因为你会立刻得到一个(或是几个)错误提示。

  而Objective-Basic超好的地方也是它的语法转换。你如果真的非常熟悉Basic,看看例子,里面甚至带有一个俄罗斯方块,也许你还能写出基于Core Animation的动画界面。它会自动帮你从basic文件中生成同名的.m文件,这些.m文件还算容易读,你都可以把生成好的源代码加到你的XCode项目里。对于Objective-C新手来说,它可以当做一个从Basic到Objective-C的教学工具来用,真的。

  好或是不好,自己来衡量,而衡量标准是用了才知道。今年中旬Objective-Basic又要发行一个新版本,如果它在易用性上多下点工夫,也许真会是一个值得一用的东西。

  Mono

  史书记载:啤酒盖子说要有DOS,于是就有了DOS,他说要有Windows,于是就有了Windows,他说要有.net,于是就有了.net……

  如果你爱.net更爱苹果,你也许需要一个Mono,作为一个跨平台的.net解决方案,mono提供了差强人意的苹果支持。正如Cygwin在Windows所做的一样,很多聪明人始终通过极为复杂的手段将自己变成懒人。Mono也一样,因为它把.net弄到了unix平台上。

  为什么聪明人聪明?因为他们喜欢偷懒。他们不想写重复的代码,而仅仅为了在不同平台上跑,于是他们多写了很多代码去实现成为懒人的梦想。Mono里面自带的Cocoa#就是这么一个玩意,它甚至连取名字都体现了慵懒的聪明,聪明地把Cocoa和#放在了一起。

  这套开发框架里面还懒惰地包括了一个界面看起来像windows的苹果可执行程序,是一个不那么好用的MonoDevelop。不要指望它能帮你做太多事情,如果你希望在苹果中编写.net程序,最终结局还是要用XCode。

  在苹果中使用Mono还是有一点好处的,你在分发程序的时候,其实可以不用附带那么大的Mono安装包,而可以仅仅把自己需要的库打包一起放进执行程序的目录里。

  KDE for Mac

  你们向往自由,所以你们喜欢Linux。我们喜爱优雅,所以我们选择苹果。那么KDE for Mac是不是真的能让你享受优雅的自由呢?

  其实KDE并不是一个开发工具,而是一整套桌面函数库。自由的世界往往是很多人向往的,所以KDE上的桌面程序很多。KDE for Mac可以让你把从前Linux上的程序搬到苹果上,而且界面看起来和Mac一样。这其实很棒,真的。

  可是最无聊的事情是他们提供了KDE for Mac却没提供KDevelop for Mac。这可能意味着大部分情况下你需要用vi或是别的什么编辑器去编写代码了。如果你想用KDevelop干点什么坏事,你还得弄个Linux。

标签: