本文源自本人的学习记录整理与理解,其中参考阅读了部分优秀的博客和书籍,尽量以通俗简单的语句转述。引用到的地方如有遗漏或未能一一列举原文出处还望见谅与指出,另文章内容如有不妥之处还望指教,万分感谢。
TOP10编程语言的走势图.png
不可否认,近10年来iPhone
在移动设备领域改变了人们的生活,也改变了整个行业的设计和发展方向。iPhone之所以好用,硬件是一方面,比如精美的机身、高性能的内核,出色的摄像头等。而接近完美的iOS系统则是另一方面。
这里主要来聊一聊Objective-C
的发展历程
1980
年初,布莱德·确斯
( Brad Cox)发明了Objective-C,它是基于Smalltalk-80
而发展起来的。Objective-C建立在C语言之上,意味着它是在C语言基础上添加了扩展而创造出来的能够创建和操作对象的一门新的程序设计语言。对Objective-C最主要的描述是1986年出版的Object-orientedProgramming,An Evolutionary Approach
1988
年,NeXT Sofiware公司开发出了Objective-C的语言库,并且开发了一个名为NEXTSTEP的开发环境。
1996
年,苹果公司收购了NeXT Sofiware公司,然后把NEXTSTEP/OPENSTEP环境变成苹果操作系统下一个主要发行版本OS X的基础,这个开发环境的该版本被苹果公司称为Cocoa。
2006
年,苹果公司发布了Objective-C 2.0,该版本增加了现代的垃圾收集语法改进、运行时性能改进和64位支持等功能。
2007
年10月发布的Mac OS X v10.5中包含了Objective-C 2.0的编译器。
-
Objective-C是
GCC
的一个前端,它可以编译混合了C++
与Objective-C语法的源文件。 -
Objective-C是非常“实际”的语言。它用一个很小的、用C写成的运行库,使得应用程序的大小增加很少,与此相比,大部分OO系统需要极大的虚拟机来执行。
-
Objective-C写成的程序通常不会比其源代码和函式库(通常无须包含在软件发行版本中)大太多,不会像Smalltalk系统,即使只是打开一个窗口也需要占用极大的内存。由于Objective-C的动态类型特征,Objective-C不能对方法进行内联(inline)一类的优化,使得Objective-C的应用程序一般比类似的C或C++程序更小。
-
Objective-C较强的编译器适应性。Objective-C可以在现存C编译器基础上实现,而不需要编写一个全新的编译器。这个特性使得Objective-C能利用大量现存的C代码、库、工具和编程思想等资源。现存C库可以用Obj ective-C包装器来提供一个Objective-C使用的00风格界面包装,这些特性极大地降低了进入Objective-C的门槛。
-
Objective-C独有个性。虽然Objective-C是C的严格超集,但它也不视C的基本类型为第一级的对象。和C++不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许物件继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,如额外执行时间过重和二进制不兼容。
-
由于Objective-C使用动态运行时类型,而且所有的方法都是函数调用(有时甚至连系统调用如syscalls也如此),很多常见的编译时的性能优化方法都不能应用于Obj ective-C(例如,内联函数、常数传播、交互式优化、纯量取代与聚集等),这使得Objective-C性能劣于类似的对象抽象语言(如CH)。不过Objective-C的拥护者认为既然Objective-C运行时消耗较大,Objective-C不该应用于C++或Java常见的底层抽象。
自2008
年后,国内开始涌现出Objective-C的开发者,到2020年已经过去了十几年的时间!我个人是在15年开始Objective-C语言开发移动端项目的,至今Objective-C给我的感觉很棒 !是一门很值得学习的语言 !但是在Swift语言被提出之后,逐渐的有替代Objective-C的趋势了,前几年国内的Swift使用率还不是很高,因为Swift
的ABI
还没有稳定,频繁的更新迭代会很痛苦 ,因此很多公司并没有采用;主要的使用还是国外的开发者居多!
网友评论