8月編程語言排行榜:C語言助力火星登陸
原創【51CTO獨家特稿】2012年8月,Tiobe發布了2012年8月最新一期編程語言排行榜。C語言繼續其上升的趨勢,Java份額也在進一步下降。而C#、Python、Perl等語言保持原來的位置。今天我們要談到的是C語言,正是他幫助“好奇號”2012年8月6日登陸火星。
2012年8月編程語言排行榜單
美國東部時間2012年8月6日凌晨1時30分(北京時間6日13時30分),新型火星探測器“好奇”號計劃著陸火星表面。作為迄今為止設計最為復雜精密的火星探測器,好奇號探測車采用的是風河公司業界領先的VxWorks®實時操作系統(RTOS)。好奇號采用VxWorks系統完成被稱為EDL(進入火星大氣層、下降以及著陸)的復雜著陸過程。由于宇宙飛船安全著陸需要絕對的精確度,這一過程被稱為“恐怖七分鐘”。從2011年11月26日火箭離開地球那一刻起一直到任務完成,VxWorks作為火星探測車的核心操作系統,將在本次具有歷史意義的活動上發揮至關重要的作用。整個火星車里有50萬行程序代碼,運行在VxWorks操作系統上,精準無誤,以毫微妙計算。
好奇號傳回的火星圖像(來源:NASA)
VxWorks與C語言
VxWorks 是美國Wind River System 公司( 以下簡稱風河 公司 ,即 WRS公司)推出的一個實時操作系統。Tornado 是WRS 公司推出的一套實時操作系統開發環境,類似Microsoft Visual C,但是提供了更豐富的調試、仿真環境和工具。
Wind River和VxWorks相信很多嵌入式程序員都不會陌生。VxWorks支持C語言或者C++進行開發,并配備了叫Tornado的集成開發環境。Tornado缺省使用GNU編譯器,支持Ansiiso C, C++,以及AT&T語法匯編(非Intel)。由于C++很龐大,而且在不斷發展,所以有些標準C++的特征可能GNU不支持(基本沒有編譯器支持所有C++特征)。程序員一般只要掌握常用部分就能編出不賴的程序了。inb(),outb()是turbor cdos下的,不屬于標準C。Tornado在bsp中提供了相應的sysinbyte(),sysoutbyte()等函數,參考bsp下的sysalib.s。
Tornado II系統結構圖
Tornado 結構的專門設計為開發人員和第三方工具廠商提供了一個開放環境。已有部分應用程序接口可以利用并附帶參考書目,內容從開發環境接口到連接實現。
Tornado包括強大的開發和調試工具, 尤其適用于面對大量問題的嵌入式開發人員。這些工具包括C和C++遠程源級調試器, 目標和工具管理, 系統目標跟蹤, 內存使用分析和自動配置. 另外,所有工具能很方便地同時運行,很容易增加和交互式開發。
關于VxWorks組成部分,請參考《VxWorks組成部分》一文。
新一代開發工程助推器——Wind River Workbench
集成化的開發環境意味著一個開發工作團隊運用同一種語言和工具,不論在任何開發項目的任何工作階段,都可以共同為所有的開發項目做出貢獻。
Wind River Workbench提供了一種開放式、基于標準的集成化設備軟件開發環境。它使得企業能夠標準化它的整個設備軟件開發過程到一個公共平臺下,以其獨特的將可靠性, 功能性以及端對端集成性整合到一起方式,大幅優化了工程人員、項目團隊和企業的工作效率。
與VxWorks 6.x系列配套的IDE組件是Wind River Workbench,這也是Wind River GPP VxWorks版的重要組成部分之一。
比如Wind River Workbench 2.2可以最大限度地優化電子產品制造企業的人力資源并使他們做出最佳的表現。其中的訣竅在于把他們的時間、能力和經費都用于增加電子產品的特殊使用價值,而不是把這些資源浪費在低級、普通、一般的工作中。憑借在設備軟件開發領域多年積累的豐富經驗,風河平臺之中包括了功能齊全、相互兼容并且運行十分可靠的中間件,可以滿足許多不同行業標準的特殊需求。而且,由于多年來許多行業都在廣泛應用VxWorks實時操作系統,已經形成了一個穩定而良性的合作伙伴群體,這就使得Wind River GPP VxWorks版具有非常好的完備性,很快就可以得到開發項目所需的所有資源,從而可以更好地控制用戶的經費預算和產品上市時間??梢哉f,有了Wind River GPP VxWorks版,再加上Wind River的合作伙伴全體和專業的培訓以及針對用戶開發項目的指導方案,你就可以解決設備軟件開發的所有問題了。
登陸火星用了多少代碼?
根據51CTO記者了解到的情況,本次Curiosity好奇號登陸火星,其包含250萬行C語言代碼。這些代碼運行在BAE制造的RAD750處理器上,他們包括150個獨立模型,每個承擔不同的功能。高度耦合的模塊被抽象成組件,被置頂一個特定的功能或者行為。這些組件被進一步組合為層,整個火星登陸車包括不超過10個頂級層組織。
RAD750處理器
好奇號項目中的軟件開發經驗
浩大的好奇號項目其實美國創意產業和商業力量的結合,并且NASA的項目管理者自有一套創新和商業邏輯。在長達9年,高達25億美元的投資中,火星科學實驗室項目(好奇號火星登陸項目)其實是美國創意產業和商業力量的結合。好奇號的登陸模擬團隊同迪斯尼動畫公司保持密切聯系,從而使得3D登陸模擬更加精確。其它的一些系統解決方案有來自石油公司的,深海鉆探公司的,甚至是農業公司的技術。
這一浩大的工程是如何完成的? NASA的管理者自有其一套創新和商業邏輯。
允許在研發過程中的奇思妙想
一個典型的項目想法,可能是起源于一張餐巾紙上的草圖,然后變成3D模擬模型,然后再變成生產模型。
這一項目進行過程中,研發人員充滿了敏銳的直覺和想象力。有時候,他們會去想象在太空中移動登錄器的各個部件,構建想法。
沒有過于瘋狂的想法,真的!
在項目的最開始階段,沒有批評想法的習慣。研發人員,憑空想出任何點子,而其他人員不是去評價這個點子有多么的瘋狂甚至是批評,而是去思考如何去改進這個點子。
樂于從草案開始
就像好的想法經常來源于之前的錯誤和過去的經驗一樣,項目的研發人員更傾向于從過去的草案中起步,而不是從頭開始。
不要陷于復雜的事物,將其分解為可控的最小單元
因為有太多的復雜的、不同的系統在好奇號的平臺上。項目的工程師們都是在相互區別的區分的系統中完成他們的工作。他們將會把項目分成無數的子系統,子部件,一遍解決單獨的子問題。
保持開門策略
無論是管理層,還是基層員工,每個人之間都能保持一種坦誠的溝通,并且能就具體問題進行具體的分析。
不要重復發明輪子
火星登陸項目從現實商業項目中學到很多經驗,當研發人員發現某一部分的問題,已經有現成的解決方案的時候,他們要做的不是重復發明輪子,而是直接拿來用。
允許沒有傷害的小理由
在好奇號項目的軟件中,以為工程師曾經在軟件代碼中添加了一段幾年其過世的父親的代碼。這些沒有傷害的一些事情,被允許從而使得研發者對該項目充滿了感情。
#p#
下面是本期編程語言排行榜的其他排名數據和趨勢走向。
前10名編程語言走勢圖
20到50名語言排行
Position | Programming Language | Ratings |
---|---|---|
21 | Bash | 0.525% |
22 | SAS | 0.525% |
23 | Assembly | 0.502% |
24 | RPG (OS/400) | 0.476% |
25 | Logo | 0.441% |
26 | Fortran | 0.440% |
27 | R | 0.435% |
28 | COBOL | 0.432% |
29 | ABAP | 0.431% |
30 | Scheme | 0.424% |
31 | Prolog | 0.334% |
32 | Scratch | 0.332% |
33 | D | 0.322% |
34 | Haskell | 0.301% |
35 | NXT-G | 0.285% |
36 | JScript.NET | 0.267% |
37 | Erlang | 0.259% |
38 | Awk | 0.256% |
39 | Smalltalk | 0.241% |
40 | Scala | 0.241% |
41 | Common Lisp | 0.238% |
42 | Forth | 0.231% |
43 | APL | 0.223% |
44 | ML | 0.221% |
45 | ActionScript | 0.179% |
46 | OpenEdge ABL | 0.172% |
47 | Algol | 0.167% |
48 | C shell | 0.166% |
49 | Alice | 0.160% |
50 | PL/I | 0.158% |
下面是第50到100的編程語言排名
(Visual) FoxPro, Apex, bc, BETA, Boo, CFML, CHILL, CL (OS/400), Clean, Clojure, Curl, Dart, Dylan, Eiffel, Emacs Lisp, F#, Gambas, Go, Groovy, Icon, Inform, Informix-4GL, J, JavaFX Script, LabVIEW, LabWindows/CVI, Ladder Logic, Maple, Modula-2, MUMPS, NATURAL, Oberon, OCaml, Occam, OpenCL, Oz, PowerShell, Processing, REALbasic, REXX, S, S-PLUS, SPARK, SPSS, Tcl, VBScript, Verilog, VHDL, X10, xBase
下面給出了編程語言類別的一年變化趨勢
【2012年榜單回顧】
- 2012年1月編程語言排行榜:Objective-C成為年度語言
- 2012年2月編程語言排行榜:用圖形編程的LOGO語言
- 2012年3月編程語言排行榜:JavaScript語言的回歸
- 2012年4月編程語言排行榜:C語言榮歸寶座
- 2012年5月編程語言排行榜:從愛立信走出來的Erlang
- 6月編程語言排行榜:Objective-C非常“實際”的語言
- 2012年7月編程語言排行榜:Java的搶劫