【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版具有非常好的完备性,很快就可以得到开发项目所需的所有资源,从而可以更好地控制用户的经费预算和产品上市时间。可以说,有了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的抢劫