机器人研发热门语言:不死Java、不朽C/C ++、新贵Python

流水的编程语言,铁打的 Java、C/C++。

image

**  进行人工智能机器人研发,应该选择哪种编程语言? **

这是很多机器人专家在自身的职业生涯中都会存在的一个入门级思考。毕竟,在学习一门编程语言时,需要花费大量的时间及精力,如果掌握了这门语言却又不发挥其真实的价值,又有什么用呢?但不幸的是,到目前为止,也没有一个确切而直接的答案出现。

如果你在 Stack Overflow、Quora、Trossen、Reddit 或 Research Gate 等机器人专家或者社区论坛上提问“机器人最好的编程语言是什么?”,毋庸置疑,你将会收到不同的答案。

电子工程师会给予工业机器人技术人员不同的答复。大多数人都会相信的“最好的入门级编程语言”的答案是“这将取决于哪一领域”。其实最合理的答案,应该是它取决于你想开发什么类型的软件,以及你正在使用什么样的系统。且对于机器人科学家来说,最关键的是建立“编程思维”,而不是用一种特定的语言来局限。在很多方面,首先学习哪种编程语言并不重要,重要的是在通过编程思维来不断提高自身的技能。

而回归本文主题,对于首选编程语言的选择,没有最佳的答案,但本文中,我们将介绍程序员在机器人编程中最流行的十大编程语言,并通过对比其优缺点,希望可以给予开发者提供一定的参考方向,做出自己的最佳选择。

image

世界上超过 1500 种编程语言可以学习。以下将会列出机器人中十种最流行的编程语言。每种语言都有不同的优势,本文根据作者自身的开发及实践经验,优先级从低到高所列举了十大编程语言排行榜。

10. BASIC / Pascal

BASIC 和 Pascal 是我曾学过的两种主要的编程语言,但这并不是我将其列入此排行榜的原因。事实上,它们可以很好地运用于工业机器人编程上。BASIC 针对初学者而设计,这使它可以成为开发者简单的入门语言。

Pascal 旨在提高编程实践,还引入了一些类似于指针这样的构建,这使得它成为从 BASIC 晋升到更高级的其他语言的一个奠基石。如今,这两种语言对“日常应用”的程序语言来说有些过时了。但如果你准备进行一定程度的底层编码,或需要熟悉其他工业机器人语言时,那么了解它们会对你有所帮助。

9. 工业机器人语言

实际上,每一个机器人制造商都已经建立了自己专有的限制性机器人编程语言,这一直是工业机器人领域的一个问题。通过学习 Pascal,你会熟悉它们中的一部分。但是,当你开始在另一个机器人平台编码时,还需要使用不同的编程语言。

image

如机械臂领域实力强劲的 ABB 公司,用的语言系统叫做 RAPID;来自于德国的 KUKA,语言和公司名字一样也叫做 KUKA;Comau 利用 PDL2;Yaskawa 利用 Advise 和 Kawasaki 利用 AS。在这一点上,Fanuc 机器人利用 Karel,Staubli 机器人利用 VAL3 和 Widespread Robots 利用 URScript。

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

8. LISP

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

7. 硬件描述语言(HDL)

硬件描述语言一般是用来描述电气的编程方式。这些语言对于一些机器人专家来说是非常常见,因为他们习惯 FPGAs(FieldProgrammableGateArrays)编程。FPGAs 能让你开发电子硬件而无需实际生产出一块硅芯片,对于一些开发来说,这是更快更简易的选择。如果你没有开发电子原型产品,你也许永远不会用 HDLs。

即便如此,还是有必要了解一下这种编程语言,因为它们和其它编程语言差别很大。一个重点:HDLs 所有的操作是并发的,而不是基于处理器的编程语言的顺序操作。

6. Assembly

Assembly 使你能够在“1 和 0 级”程序中进行编程。 这是最底层的编程语言。在过去,大多数底层硬件需要在 Assembly 中进行编程。 随着 Arduino 和其他类似微控制器的兴起,你现在可以利用 C / C ++ 在底层进行有效的编程,这意味着 Assembly 对于一般的机器人科学家来说,显然已不太重要。

5. MATLAB

MATLAB、及其相关的开源语言(例如 Octave),是一些著名的机器人科学家用于调查数据和创建控制系统常用的语言。

image

此外,还有一个非常有名的 MATLAB 机器人工具箱。如果你需要分析数据,创建高级图表或执行控制系统,那就需要学习 MATLAB。

4. C#/ .NET

C# 是微软提供的一种限制性编程语言。这很大程度上是由微软机器人工程师工作室(Microsoft Robotics Studio Studio)提供的,微软机器人工程师工作室将其作为其基本语言。如果你使用这个框架,就必须学习 C#。尽管如此,想要长期地提高自身的编码能力,首先学习 C / C ++ 不失为一个好的选择。

3. Java

作为一个电子工程师,我经常惊讶于一些软件工程课程将 Java 作为他们的第一编程语言。

Java 对程序员“掩盖”底层存储功能,这使得 Java 对程序的要求要比 C 语言对程序的要求更低一些,但这意味着你对底层代码的运行逻辑了解比较少。从软件工程的基础到探索机器人技术的未来,你很可能已经学习了 Java。

像 C# 和 MATLAB 一样,Java 是一种解释性语言,这意味着它不会被编译成机器代码。相反,Java 虚拟机在运行时解释指令。使用 Java,理论上让你可以在不同的机器上运行相同的代码,这得感谢 Java 虚拟机。在实践中,这不总是可行的,有时会导致代码运行缓慢。但是 Java 在一部分机器人学中非常流行,因此你也许需要它。

2. Python

近来,尤其是在机器人领域,Python 已经有了翻天覆地的变化。其中一个原因是 Python(和 C ++)是 ROS 中的两种主要编程语言。

image

如同 Java 一样,它也是一种解释性语言。但与 Java 不同的是,Python 的重点是易用性。Python 不需要很多时间来做常规的事情,如定义和强制转换变量类型。这些在编程里面本是很平常的事。另外,Python 还有大量的免费库,这意味着当你需要实现一些基本的功能时不必“重新发明轮子”。而且由于它与 C / C ++ 代码之间可以进行简单的绑定,这就意味着代码繁重部分的性能可以植入这些语言,从而避免性能损失。

随着越来越多的电子产品开始支持“开箱即用”Python(与 RaspberryPi 一道),我们可能会在机器人中看到更多 Python。

1. C / C ++

机器人第一编程语言——C/C++!很多人都认为 C 和 C ++ 对新的机器人科学家来说是一个良好的开端。

为什么呢?

其主要原因是如今有大量的硬件库都使用这两种语言。它们适用于低级别的硬件,允许实时性能,是非常成熟的编程语言。现在,你可能会使用 C++ 远超过 C,因为 C++ 具有更大的实用性。C ++ 是 C 语言的扩展,从基础的 C 学起,你也会收获很多,特别是当你发现一个硬件库是用 C 编写的。但是 C / C ++ 编写的硬件库不像 Python 或 MATLAB 那样简单易用。使用 C 来执行类似的功能,可能需要相当长的时间,并且需要更多的代码行。尽管如此,由于机器人极其依赖实时性能,所以 C 和 C ++ 是最接近机器人科学家心目中“标准语言”的编程语言。

总结

本文列举了机器人十大热门编程语言,但这并不意味着你需要全部掌握每一门。对于每位开发者而言,最重要的是要发现一种对自身来说很自然的语言,且适合你的机器人硬件。也需要一种语言,使你能够快速而有效地创建程序。

欢迎加入学习交流群569772982,大家一起学习交流。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容

  • 前言 Python的创始人为Guido van Rossum。1989年圣诞节期间,在阿姆斯特丹,Guido为了打...
    依依玖玥阅读 3,539评论 6 37
  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,185评论 2 35
  • 我不会写诗 但好久以来 就想写一首给母亲的诗 我不知该如何开头,如何结尾 只知道心怀善念的写总归没错 妈妈,今天,...
    或许就在眼前阅读 575评论 14 15
  • 可写性如果你给属性加上了readonly的特性,编译器就不会自动生成setter访问器方法,属性也就变成了只读的。...
    _叫我小贱阅读 289评论 0 0
  • 38 6月底的一天,上班时,阿九对我说,“阿猫,给你介绍个对象吧?” “谁啊?”我笑了笑,只当他是开...
    路雨飞飞阅读 177评论 0 0