机器人行业,10大流行编程语言对比

这是一个许多新入行的机器人专家在他们职业生涯中至少会问一次的问题。不幸的是,这也是一个没有简单答案的问题。在本文中,我们将会审视在机器人学中最流行的10种编程语言,深入探讨它们各自的优缺点以及使用和弃用它们的原因。

这实际上是个很有道理的问题——毕竟,如果你从不付诸实践,那为什么要花大量的时间和精力去学习一种新的编程语言呢?如果作为一名机器人学新人,你当然会想学习一种确实对你的职业生涯很有用的编程语言。

为什么“这个取决于。。。”是个毫无用处的回答

不幸的是,如果你去问一屋子的机器人学专家或者在像Stack Overflow、Quora,Trossen,Reddit、 Research Gate这样的论坛上问“什么是机器人学中最好编程语言?”,你永远不会得到一个直接的答案。

电气工程师会从工业机器人技术这个角度给出不同的答案。计算机视觉程序员给出的答案会跟认知机器人专家给出的不一样。而且,每个人都会对什么是最好的编程语言有自己的看法。最终,大多数人都会赞同的答案就是”这个取决于。。。“。对于一个新入行正在试图决定要先学哪种语言的机器人学者来说,这是一个相当无用的答案。即使这是最现实的回答——因为它的确取决于你想要开发的应用程序和你在使用的系统。

◆ ◆ ◆

我究竟应该先学哪种编程语言?

也许更恰当的问题应该是先从哪种编程语言开始学起?你仍然会得到不同的看法,但是许多机器人专家会同意从关键编程语言开始学。

正如在我们的《机器人必备技能》一文中所讨论的,对于机器人专家来说,最重要的事情是开拓你的”编程思维”,而不是精通一种特定的编程语言。从很多方面来说,从哪种编程语言开始学习真的无关紧要。你学习的每种语言提升了你的编程思维,拥有了这种思维,去学习一种新编程语言的时候会容易不少。


◆ ◆ ◆

机器人学中最流行的10种编程语言

世界上有1500多种编程语言,都要学的话是太多了。目前,在机器人学中有这10种最流行的编程语言——如果你喜欢的不在这里,请在留言区告诉大家。对于机器人学,每种编程语言有不同的优点。我只是部分地按照重要程度从低到高对它们进行了排序。

10. BASIC / Pascal

BASIC和Pascal是我最早学过的两种编程语言。不过这并不是我把它们列在这里的原因。对于几种工业机器人语言,它们是基础,下面说明一下。BASIC是为初学者设计的(BASIC是缩写,Beginners All-Purpose Symbolic Instruction Code),它让初学者可以从一种非常简单的编程语言开始学习。Pascal旨在鼓励好的编程习惯,还引入了结构,例如指针,这让Pascal成为从BASIC到更复杂语言的一块“敲门砖”。如今,这两种语言如果要说是好的“日常使用”程序语言,那是有点过时了。不过如果你准备做很多底层编码或是想要熟悉一下其它工业机器人编程语言,学习一下还是有用的。

9.工业机器人编程语言

几乎每一个机器人制造商都开发了他们自己专有的机器人编程语言,这成了工业机器人行业中的一个问题。通过学习Pascal,你会熟悉它们中的一部分。但是每次开始使用新的机器人时,你还得学习一种新的编程语言。

最近几年, ROS行业已经开始提供更标准化的替代语言给程序员。但是如果是一个技术人员,你仍然更可能不得不使用制造商的编程语言。

8. LISP

LISP是世界上第二古老的编程语言(FORTRAN更古老,但只早了一年)。相比今天提到很多其它编程语言,它的应用并不广泛。不过在人工智能编程领域它还是相当重要的。ROS的一部分是用LISP写的,虽然你不需要掌握这个来使用ROS。

7.硬件描述语言(HDLs)

硬件描述语言一般是用来描述电气的编程方式。这些语言对于一些机器人专家来说是相当熟悉的,因为他们习惯FPGAs(Field Programmable Gate Arrays)编程。FPGAs能让你开发电子硬件而无需实际生产出一块硅芯片,对于一些开发来说,这是更快更简易的选择。如果你没有开发电子原型产品,你也许永远不会用HDLs。即便如此,还是有必要了解一下这种编程语言,因为它们和其它编程语言差别很大。一个重点:HDLs所有的操作是并发的,而不是基于处理器的编程语言的顺序操作。

6. Assembly

Assembly让你能在0和1数位上进行编程。基本上这是最底层的编程语言。就在最近,最底层的电子需要Assembly进行编程。随着Arduino和其它如微控制器的崛起,现在你可以使用C/C++在底层方便地编程了。这意味着Assembly对于大多数机器人专家来说也许会变得更不必要了。

5. MATLAB

MATLAB以及和它相关的开源资源,比如Octave,一些机器人工程师特别喜欢,它被用来分析数据和开发控制系统。还有一个非常流行的机器人工具箱——MATLAB。我知道一些仅仅使用MATLAB就能开发出整个机器人系统的专家。如果你想要分析数据,产生高级图像或是实施控制系统,你也许会想学习MATLAB。

 

4. C#/.NET

C#是微软提供的专用编程语言。我把C#/.NET放在这里,主要是因为微软机器人开发员工作包(Microsoft Robotics Developer Studio),这个包的主要开发语言是C#。如果你准备用这个系统,那么你很可能必须要用C#。

3. Java

作为一位电子工程师,我总是对一些计算机科学学位课程将Java作为第一种编程语言让学生们学习感到惊讶。Java对程序员隐藏了底层存储功能,这让它比起一些语言(如C语言)来说,编写要容易些,但这也意味着你会更少地理解底层代码的运行逻辑。如果你有计算机科学背景并转到机器人学(很多人是这样的,特别是在研究领域),你也许已经学过Java 。像C#和MATLAB,Java是一种解释性语言,这意味着它不会被编译成机器代码。相反,Java虚拟机在运行时解释指令。使用Java,理论上让你可以在不同的机器上运行相同的代码,这得感谢Java虚拟机。在实践中,这不总是可行的,有时会导致代码运行缓慢。但是Java在一部分机器人学中非常流行,因此你也许需要它。

2. Python

近年来,学习Python的人有一个巨大的回潮,特别是在机器人领域。其中一个原因可能是Python(和C++)是ROS中两种主要的编程语言。与Java不同,Python的重点是易用性,Python不需要很多时间来做常规的事情,如定义和强制转换变量类型。这些在编程里面本是很平常的事。另外,Python还有大量的免费库,这意味着当你需要实现一些基本的功能时不必“重新发明轮子”。而且因为Python允许与C / C++代码进行简单的绑定。这就意味着代码繁重部分的性能可以植入这些语言,从而避免性能损失。随着越来越多的电子产品开始支持 “开箱即用” Python(与Raspberry Pi一道),我们可能会在机器人中看到更多Python。

注:The Raspberry Pi Foundation:英国一个小型的慈善组织,成立的宗旨在于推广科技,而非以销售技术来营利。

1. C/C++

最后我们到了排名第1的机器人编程语言!许多人认为C和C++对新入行的机器人学家是一个很好的起点。为什么?因为很多硬件库都使用这两种语言。这两种语言允许与低级别的硬件进行交互,允许实时性能,是非常成熟的编程语言。现如今,你可能会使用C++比C多,因为前者具有更多的功能。C++基本上是C的一种延伸。首先学一点C会很有用,特别是当你发现一个硬件库是用C编写的。C/ C++并不是像Python或MATLAB那样简单易用。同样用C来实现相同的功能会需要大量时间,也将需要更多行代码。但是,由于机器人非常依赖实时性能,C和C++是最接近我们机器人专家“标准语言”的编程语言。


◆ ◆ ◆

你应该遵循何种顺序来学习他们?


尽管我们在这里列举了10种语言,但这并不意味着你必须全部都要学。最重要的是找到一种感觉自然且适合机器人硬件的语言。你需要一种可以轻松快速地开发程序的语言。这样一来,你就可以更专注于开发功能。有鉴于此,我建议你首先学习Python。当然,这只是我个人的观点。如果另一种语言对你来说更具意义,那你就选择那种语言。然而,Python是一种非常简单易学的语言。得益于其大量、便捷的库,Python功能非常强大。我听说过很多有编程经验的程序员在短期学习Python之后就能立即将其用于所有编程需求中。正如有人所说:我可以在Python中快速输入有用的代码。当你已经相当熟练地使用Python后,我个人推荐你先学习C再学习C++,你将在绝大多数的机器人硬件驱动接口编程时需要它。

原文发布时间为:2016-03-19

时间: 2024-09-15 14:07:54

机器人行业,10大流行编程语言对比的相关文章

十大流行编程语言和它们的创造者

软件开发领域里有许许多多编程语言.在这里,不断有新的编程语言在诞生,如Scala.Go. Closure等,也不断有老的编程语言慢慢消亡.它们中的许多都曾为软件开发作出了巨大贡献.作为软件开发领域中最重要的事物,编程语言从一诞生起就会 经历人们的议论.批评与改进.这些编程语言的创造者是编程世界的标志人物,当我看到某些人在使用某种编程语言却不知道这门语言从何而来的时候,会感到一种 淡淡的忧伤.对于最为流行的编程语言,出现这种情况的情况较少,比如Java,几乎所有人都知道Java之父的名字James

2009年网络视频行业10大预言

中介交易 SEO诊断 淘宝客 云主机 技术大厅 近日,网络视频平台提供商Delve Networks首席执行官Alex Castro在科技博客Mashable上撰文,展望了2009年互联网视频行业的发展,并提出了10大预言. 1.视频观看量将创历史记录 互联网视频消费量正在以惊人的速度增长.今年10月,互联网视频的观看量达到135亿次,同比增长45%.网络带宽的增长和高清视频的发展未来将吸引更多用户观看网络视频. 2.市场细分导致Youtube占有率下降 2009年,Youtube在整个互联网视

GitHub公布10大热门编程语言:Java好猛

美国代码管理服务GitHub周三公布了该平台上最热门的10大编程语言,以及自2008年GitHub成立以来,热门编程语言的变化趋势. GitHub基于Git的分布式版本控制和代码管理功能,而Git是一款命令行工具.GitHub提供了基于网页的图形化界面,并对桌面端和移动端进行了整合. 尽管并不能准确反映当前市面上最热门的编程语言,但由于GitHub正越来越受欢迎,因此这在一定程度上可以体现出编程语言近几年的发展趋势. 以下为GitHub上当前最热门的10大语言: 1.Javascript 2.J

2016年物联网行业10大趋势解析

还有33天2016年就要过去了,回顾过去一年物联网和大数据有了很大的发展,明年又有哪些新趋势我们需要跟进呢? 1.物联网架构师的崛起 物联网架构师将代替数据科学家成为HR部门最珍惜的人才,物联网的浪潮将带来边缘计算和物联网运行设计的激增. Teradata的物联网技术市场专家Dan Graham认为,一夜之间,成千上万的简历将被更新,此外, 少于10%的公司意识到他们需要一个物联网分析架构师,一种特殊的物联网系统架构职务.未来可以设计分布式和物联网中心的软件设计师会升值. 2.向混合架构的迁移会

域名鲜事:10大行业之“最”称号的域名

中介交易 SEO诊断淘宝客 站长团购 云主机 技术大厅 名交易场一年来易主的域名非常多,国内各大行业上也是竞先展示出强劲方式,有些新兴网站力图通过域名达到"一鸣惊人"效果来吸引公众,有些大站不惜重金买下好域名来升级网站,10大行业选择的域名各具魅力,下面来简单了解下,2011年国内10大行业"最"称号的域名. 1.电商行业2011年最短域名z.cn 去年10月份卓越亚马逊总裁王汉华宣布,卓越亚马逊正式更名为"亚马逊中国",并启动短域名z.cn,一

iPhone五年为用户和移动行业做出的10大贡献

6月29日消息,据eWeek网站发表的一篇分析文章称,苹果的iPhone现在已经五岁了.在这五年里,iPhone显著改变了消费者和企业用户使用智能手机的体验.iPhone还迫使整个手机行业重新思考需要用什么制作高质量的智能手机.下面是iPhone手机五年来给用户和移动行业带来的10大贡献. 1. 一个新的触控屏世界 在iPhone出现之前,备配置触控屏的设备很少.然而,这些触控屏缺少苹果iPhone的响应速度和整体质量.自从iPhone出现以来,触控屏在继续改进.我们都要为此感谢苹果. 2. 企

IDC:中国医疗行业IT市场2014年10大预测

IDC中国行业研究与咨询服务部高级研究经理肖宏亮说:"预计2014年医疗卫生信息化将会继续保持高速的发展,移动医疗和临床数据中心成为医院信息化建设的热点,大数据临床决策支持系统将会开始尝试应用:医师多点执业将促使区域卫生信息化再次掀起建设热潮,区域卫生信息化的发展也将带动云计算在医疗行业的应用.民营医院快速发展,公立医院试点转制重组." 基于此,IDC对2014年中国医疗行业IT市场做出如下10大预测: 1.移动医疗系统在大型医院快速普及,提高医护人员工作效率.移动医疗不仅是医疗信息化

物流业通信业等10大行业人才将受宠

日前,中华英才网有关专家预测:2010年,物流业.通信业和房地产业等10大行业人才将走俏,其中,物流师的需求有望成为2010年人力市场上最值得关注的职位之一. 据中华英才网的统计资料显示,房地产.汽车业.环境工程.制药保健和金融业领域的人才需求一直居高不下. 1.房地产行业.中华英才网专家认为:房地产从2009年底近乎疯狂的巅峰逐渐转入常态,但巨大的市场需求驱动依然使之成为2010年最稳健发展的行业之一.其中,房地产策划师扮演着及其重要得角色,其主要工作内容是对楼盘项目进行研究与策划工作,撰写和

IDC:2010年中国制造行业IT市场10大预测

2009年的中国制造业可谓"危""机"并存.全球金融危机的余波还未散尽:美国和欧盟不断加大对中国设置贸易壁垒的力度:中国政府十大产业振兴规划陆续出台:工业与信息化融合的步伐提速:中国政府大力发展中西部经济:东北地区经济发展进入实质性阶段. 截至2009年底,虽然从GDP.CPI/PPI.进出口贸易总额等宏观经济指标以及制造业采购经理人指数(PMI)等关键行业指标的走势来看,中国制造业整体呈现全面复苏的迹象,但是中国经济和制造业仍未真正走出困难时期,2010年仍然充满