早在1986年创建的Objective-C,但是非常高效的语言。在过去十年出货量的总和只有50000台电脑的NeXT公司的影响下,大大限制了语言的发展。当苹果电脑买下了NeXT,这种状况开始有所好转。Objective-C在Mac上发展成为主要的语言,它占据5-10%左右的桌面应用开发的市场份额。Objective-C中没有OS X上虽然只支持的开发语言,和很多开发商使用的东西,他们比较熟悉。相比之下,iPhone的,不支持任何第三方开发除了Objective-C以外。
如果你来自一个Java背景两种平台,那么你可能会发现变化艰巨。Objective-C中看起来非常不同与Java。幸运的是,一旦你过了语法这关,语言是非常相似的,你会发现,过渡并不困难。
一些Java的设计者不得不使用Objective-C的经验,包括一些曾OPENSTEP规范“下一步工作。很多想法在Java的Objective-C直接被取消,或采取从Smalltalk,这激发了两种语言。这并不是说,一切是在Objective-C相同。有一些重要的差异,这在下一篇文章中,我将探讨。
语言哲学
Objective-C的设计带来Smalltalk中享有的C语言的封装支持。它的设计者之一,作为一种混合语言描述它作为一个指示从C代码过渡的标志的方括号语法,对象土地。“
Java的目标是使平均程序员可用的语言。这种结合的Smalltalk般的语义与C + +语法。后者决定了营销比技术的原因更多。C + +中有一个大的市场份额(现在仍然存在,一些奇怪的原因),它使开发人员切换到一种语言,看着看着不同的类似更容易。
不幸的是,这是一些人的重大问题交换或从Java开发的原因。Java的看起来像C + +,但这样的Objective-C的行为很多。Java和Objective-C的有像Smalltalk中的语义,而C + +增加了类似Simula的语义C. Java和C +涉及Smalltalk和Simula的语义之间切换,没有任何相应的变化在语法。
之间正在进行的C + +和Objective-C很容易在语法的变化,伴随着语义上的变化。之间的Objective-C和Java是有点混乱。在语法上有一个大的变化,但只有在小的语义变化。
在少数地方,在目标的差别是显而易见的。Java的目标是要成为隐约类似于C和容易为C或C + +程序员学习,但不介意打破东西时C方式做事不理想。的Objective-C是一个纯C的超集,每一个有效的C程序是一个有效的Objective-C程序。Objective-C的主要设计目标之一就是要制作成可重用的组件很容易parceling C库的语言。
Objective-C的最初并没有拿出一个标准库。您预计使用C库。现在作为一个Objective-C的标准库是常用的设计,的OPENSTEP规范,由Sun和NeXT,如可可或GNUstep的大多数平台上执行。的Java没有可以很容易地重用现有的代码,所以它从一开始就需要一个全面的标准库。