6月編程語言排行榜:Objective-C非常“實(shí)際”的語言
原創(chuàng)【51CTO獨(dú)家特稿】TIOBE近日公布了2012年6月份的編程語言排行榜,本月排名前兩位的仍是C和Java,呈較好上升趨勢(shì)的依舊是Objective-C。依舊排在第四的位置,并且近一步拉近了與C++的距離。C++雖依舊排在老三的位置,相比之下,還是有少量的減少。由此可見Objective-C具有很大的發(fā)展空間。
Objective-C流行的主要原因可能是它是***一種可以為iPhone和iPad等基于iOS系統(tǒng)編程的語言。但單從編程語言的角度來看,誕生于1986年的Object-c并沒有表現(xiàn)出多少新意。然而Objective-C卻又是非常“實(shí)際”的語言。
大家先看看2012年6月的編程語言排行榜的榜單
Objective-C是非常“實(shí)際”的語言
它使用一個(gè)用C寫成、很小的運(yùn)行庫,只會(huì)令應(yīng)用程序的大小增加很小,和大部分OO系統(tǒng)使用極大的VM執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反。ObjC寫成的程序通常不會(huì)比其原始碼大很多。而其函式庫(通常沒附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來開啟一個(gè)窗口的情況相反。
Objective-C的最初版本并不支持垃圾回收。在當(dāng)時(shí)這是爭論的焦點(diǎn)之一,很多人考慮到Smalltalk回收時(shí)有漫長的“死亡時(shí)間”,令整個(gè)系統(tǒng)失去功用。Objective-C為避免此問題才不擁有這個(gè)功能。雖然某些第三方版本已加入這個(gè)功能(尤是GNUstep), Apple在其Mac OS X 10.3中仍未引入這個(gè)功能。不過令人欣慰的是在Apple發(fā)布的xCode4中已經(jīng)支持自動(dòng)釋放啦,我不敢冒昧地說那是垃圾回收,因?yàn)閮烧邫C(jī)制不同,在xCode4中的自動(dòng)釋放,也就是ARC(Automatic Reference Counting)機(jī)制,是不需要用戶手動(dòng)去Release一個(gè)對(duì)象,而是在編譯期間,編譯器會(huì)自動(dòng)幫你添加那些以前你經(jīng)常寫的[NSObject release]。
雖然Objective-C是C的母集,但它也不視C的基本型別為***級(jí)的對(duì)象。
和C++不同,Objective-C不支援運(yùn)算子多載(它不支持ad-hoc多型)。亦與C++不同,但和Java相同,Objective-C只容許對(duì)象繼承一個(gè)類別(不設(shè)多重繼承)。Categories和protocols不但可以提供很多多重繼承的好處,而且沒有很多缺點(diǎn),例如額外執(zhí)行時(shí)間過重和二進(jìn)制不兼容。
Objective-C和C++的比較
單一繼承:Objective-C不支持多重繼承,(同Java和Smalltalk),而C++語言支持多重繼承。
動(dòng)態(tài):Objective-C是動(dòng)態(tài)定型(dynamicaly typed)所以它的類庫比C++要容易操作。Objective-C 在運(yùn)行時(shí)可以允許根據(jù)字符串名字來訪問方法和類,還可以動(dòng)態(tài)連接和添加類。
C++ 跟從面向?qū)ο缶幊汤锏腟imula 67(一種早期OO語言)學(xué)派,而Objecive-C屬于Smalltalk學(xué)派。
在C++里,對(duì)象的靜態(tài)類型決定你是否可以發(fā)送消息給它,而對(duì)Objecive-C來說,由動(dòng)態(tài)類型來決定。Simula 67學(xué)派更安全,因?yàn)榇蟛糠皱e(cuò)誤可以在編譯時(shí)查出。 而Smalltalk學(xué)派更靈活,比如一些Smalltalk 看來無誤的程序拿到Simualr 67那里就無法通過。
從很多方面來看,C++和Objective-C的差別,與其說時(shí)技術(shù)上的, 不如說是思維方式上的。你是否想更安全而舍棄靈活性?Simular67學(xué)派的支持者聲稱既然程序設(shè)計(jì)出色何必再要靈活性(謊話?。?,而Smalltalk學(xué)派則辯稱為了靈活可以容忍運(yùn)行時(shí)多出錯(cuò)(也是謊話?。?/p>
#p#
前10名編程語言走勢(shì)圖
20到50名語言排行
下面是第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
下面給出了編程語言類別的一年變化趨勢(shì)
【2012年榜單回顧】