编程语言object-c,6月编程语言排行榜:Objective-C非常“实际”的语言

【51CTO独家特稿】TIOBE近日公布了2012年6月份的编程语言排行榜,本月排名前两位的仍是C和Java,呈较好上升趋势的依旧是Objective-C。依旧排在第四的位置,并且近一步拉近了与C++的距离。C++虽依旧排在老三的位置,相比之下,还是有少量的减少。由此可见Objective-C具有很大的发展空间。

Objective-C流行的主要原因可能是它是***一种可以为iPhone和iPad等基于iOS系统编程的语言。但单从编程语言的角度来看,诞生于1986年的Object-c并没有表现出多少新意。然而Objective-C却又是非常“实际”的语言。

大家先看看2012年6月的编程语言排行榜的榜单

5d39068fa4613a865657eadb001f933f.png

Objective-C是非常“实际”的语言

它使用一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反。ObjC写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。

Objective-C的最初版本并不支持垃圾回收。在当时这是争论的焦点之一,很多人考虑到Smalltalk回收时有漫长的“死亡时间”,令整个系统失去功用。Objective-C为避免此问题才不拥有这个功能。虽然某些第三方版本已加入这个功能(尤是GNUstep), Apple在其Mac OS X 10.3中仍未引入这个功能。不过令人欣慰的是在Apple发布的xCode4中已经支持自动释放啦,我不敢冒昧地说那是垃圾回收,因为两者机制不同,在xCode4中的自动释放,也就是ARC(Automatic Reference Counting)机制,是不需要用户手动去Release一个对象,而是在编译期间,编译器会自动帮你添加那些以前你经常写的[NSObject release]。

虽然Objective-C是C的母集,但它也不视C的基本型别为***级的对象。

和C++不同,Objective-C不支援运算子多载(它不支持ad-hoc多型)。亦与C++不同,但和Java相同,Objective-C只容许对象继承一个类别(不设多重继承)。Categories和protocols不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。

Objective-C和C++的比较

单一继承:Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。

动态:Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。

C++ 跟从面向对象编程里的Simula 67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。

在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objecive-C来说,由动态类型来决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。 而Smalltalk学派更灵活,比如一些Smalltalk 看来无误的程序拿到Simualr 67那里就无法通过。

从很多方面来看,C++和Objective-C的差别,与其说时技术上的, 不如说是思维方式上的。你是否想更安全而舍弃灵活性?Simular67学派的支持者声称既然程序设计出色何必再要灵活性(谎话!),而Smalltalk学派则辩称为了灵活可以容忍运行时多出错(也是谎话!)

前10名编程语言走势图

5ac8c89ec721e2bd097a4c2f7a773376.png

20到50名语言排行

779bed366d5a71fbd4138e69501655dd.png

下面是第50到100的编程语言排名

ABC, bc, Boo, C shell, cg, CHILL, CL (OS/400), Clean, Clojure, Cobra, cT, Curl, Dylan, Eiffel, Euphoria, F#, Factor, Gambas, Go, Groovy, Icon, Informix-4GL, J, JavaFX Script, JScript.NET, LabVIEW, Lingo, Magic, Modula-2, MUMPS, NATURAL, Oberon, OCaml, Occam, OpenCL, OpenEdge ABL, Oz, PL/I, Q, REXX, S, SPARK, Standard ML, SuperCollider, Tcl, VBScript, VHDL, X10, xBase, XSLT

下面给出了编程语言类别的一年变化趋势

e16c6d65f45957986f710d57fb10d079.png

【2012年榜单回顾】

【责任编辑:张伟 TEL:(010)68476606】

点赞 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值