【】Objective-C for Java Programmers

yiyilanmei 2011-08-29

设计java的灵感源自于objective-c(简obj-c),但是很多学过java的朋友却难以掌握objective-c。在这个系列的第一部分,davidchisnall(程序开发人员手册的作者),从语言学分析和比较这两种编程语言的相似之处。

objective-c创立于1986,但是当时很小众。最主要的支持者是next公司,一个十年间仅卖出5万台电脑的公司。这很大程度限制了obj-c的发展。苹果公司收购next后,一切开始改变.objective-c变为mac开发的主要语言,使其占有5%至10%的桌面应用开发市场。givingitsomewhereuptoaround5-10percentofthedesktopapplicationdevelopmentmarketshare.尽管objective-c并不是macosx开发的唯一语言,很多开发者使用他们熟悉的语言,但是iphone,只允许使用obj-c开发第三方应用。

如果你是从某个java平台转移而来,你会看到惧怕。obj-c看起来比java复杂得多。幸运的是,只要你看看语法,就会发现熟悉的东西,你会发现十分容易。

一部分的java开发者有过objective-c的开发经验,包括一些在next工作过的朋友.很多java概念是从objective-c转变而来的,或者来自于smalltalk。但并不是说与objective-c相同.有一些重要的不同我将在下一篇文章中说明。

语言哲学

objective-c被设计为具有封装的支持,像smalltalk之于c一般,设计者称其为混血语言,方括号代表了c语言到面向对象的语言的进化。

java的目标是大众化的语言,这结合了类似smalltalk的语义和c++语法,c++主要是从市场考虑的.c++有巨大的市场(且仍然有,虽然原因不明。。。),而且看似想尽的语法使得人们觉得简单。

不幸的是,这也是java程序员转变为其他程序员的屏障。java看起来像c++,但是行为像objective-c.java和objective-c都有smalltalk-like语义,与此同时c++从c中添加了与simula相似的语义。java和c++分别代表着smalltalk和simula不同的语义,但是又具有相同的语法.

从c++到objective-c是简单的,语义变化伴随着语法变化.。从objective-c到java是困惑的.有巨大的语法变化,但是语义却是相似的。

目标的不同很明显.java目的在于c-like和对于c或c++程序员的简单易学,但是不介意破坏c的方式.;而objective-c是一个纯粹的c的超集。每一个c程序就是一个objective-c程序.。objective-c的目的在于创造一个语言封装c到易于重用的组件中。

objective-c原本没有很多标准库。而推荐使用c库。sunandnext的openstepapi,现在是objective-c的标准库,它的实现例如cocoa或者gnustep适用于多数平台.java并没有使原有的代码重用变得简单,所以它需要自己的库。

相关推荐