機(jī)器人研發(fā)十大熱門編程語(yǔ)言:不死 Java、不朽 C/C ++、新貴 Python

大數(shù)據(jù)

作者:SlickViral

流水的編程語(yǔ)言,鐵打的 Java、C/C++。

進(jìn)行人工智能機(jī)器人研發(fā),應(yīng)該選擇哪種編程語(yǔ)言?

這是很多機(jī)器人專家在自身的職業(yè)生涯中都會(huì)存在的一個(gè)入門級(jí)思考。畢竟,在學(xué)習(xí)一門編程語(yǔ)言時(shí),需要花費(fèi)大量的時(shí)間及精力,如果掌握了這門語(yǔ)言卻又不發(fā)揮其真實(shí)的價(jià)值,又有什么用呢?但不幸的是,到目前為止,也沒(méi)有一個(gè)確切而直接的答案出現(xiàn)。

如果你在 Stack Overflow、Quora、Trossen、Reddit 或 Research Gate 等機(jī)器人專家或者社區(qū)論壇上提問(wèn)“機(jī)器人最好的編程語(yǔ)言是什么?”,毋庸置疑,你將會(huì)收到不同的答案。

電子工程師會(huì)給予工業(yè)機(jī)器人技術(shù)人員不同的答復(fù)。大多數(shù)人都會(huì)相信的“最好的入門級(jí)編程語(yǔ)言”的答案是“這將取決于哪一領(lǐng)域”。其實(shí)最合理的答案,應(yīng)該是它取決于你想開(kāi)發(fā)什么類型的軟件,以及你正在使用什么樣的系統(tǒng)。且對(duì)于機(jī)器人科學(xué)家來(lái)說(shuō),最關(guān)鍵的是建立“編程思維”,而不是用一種特定的語(yǔ)言來(lái)局限。在很多方面,首先學(xué)習(xí)哪種編程語(yǔ)言并不重要,重要的是在通過(guò)編程思維來(lái)不斷提高自身的技能。

而回歸本文主題,對(duì)于首選編程語(yǔ)言的選擇,沒(méi)有最佳的答案,但本文中,我們將介紹程序員在機(jī)器人編程中最流行的十大編程語(yǔ)言,并通過(guò)對(duì)比其優(yōu)缺點(diǎn),希望可以給予開(kāi)發(fā)者提供一定的參考方向,做出自己的最佳選擇。

世界上超過(guò) 1500 種編程語(yǔ)言可以學(xué)習(xí)。以下將會(huì)列出機(jī)器人中十種最流行的編程語(yǔ)言。每種語(yǔ)言都有不同的優(yōu)勢(shì),本文根據(jù)作者自身的開(kāi)發(fā)及實(shí)踐經(jīng)驗(yàn),優(yōu)先級(jí)從低到高所列舉了十大編程語(yǔ)言排行榜。

10. BASIC / Pascal

BASIC 和 Pascal 是我曾學(xué)過(guò)的兩種主要的編程語(yǔ)言,但這并不是我將其列入此排行榜的原因。事實(shí)上,它們可以很好地運(yùn)用于工業(yè)機(jī)器人編程上。BASIC 針對(duì)初學(xué)者而設(shè)計(jì),這使它可以成為開(kāi)發(fā)者簡(jiǎn)單的入門語(yǔ)言。

Pascal 旨在提高編程實(shí)踐,還引入了一些類似于指針這樣的構(gòu)建,這使得它成為從 BASIC 晉升到更高級(jí)的其他語(yǔ)言的一個(gè)奠基石。如今,這兩種語(yǔ)言對(duì)“日常應(yīng)用”的程序語(yǔ)言來(lái)說(shuō)有些過(guò)時(shí)了。但如果你準(zhǔn)備進(jìn)行一定程度的底層編碼,或需要熟悉其他工業(yè)機(jī)器人語(yǔ)言時(shí),那么了解它們會(huì)對(duì)你有所幫助。

9. 工業(yè)機(jī)器人語(yǔ)言

實(shí)際上,每一個(gè)機(jī)器人制造商都已經(jīng)建立了自己專有的限制性機(jī)器人編程語(yǔ)言,這一直是工業(yè)機(jī)器人領(lǐng)域的一個(gè)問(wèn)題。通過(guò)學(xué)習(xí) Pascal,你會(huì)熟悉它們中的一部分。但是,當(dāng)你開(kāi)始在另一個(gè)機(jī)器人平臺(tái)編碼時(shí),還需要使用不同的編程語(yǔ)言。

如機(jī)械臂領(lǐng)域?qū)嵙?qiáng)勁的 ABB 公司,用的語(yǔ)言系統(tǒng)叫做 RAPID;來(lái)自于德國(guó)的 KUKA,語(yǔ)言和公司名字一樣也叫做 KUKA;Comau 利用 PDL2;Yaskawa 利用 Advise 和 Kawasaki 利用 AS。在這一點(diǎn)上,F(xiàn)anuc 機(jī)器人利用 Karel,Staubli 機(jī)器人利用 VAL3 和 Widespread Robots 利用 URScript。

最近,像 ROS 行業(yè)已經(jīng)開(kāi)始為程序員提供更加標(biāo)準(zhǔn)化的替代語(yǔ)言選擇。但是如果是一個(gè)技術(shù)人員,你仍然更可能不得不使用制造商的編程語(yǔ)言。

8. LISP

LISP 是世界上第二古老的編程語(yǔ)言(FORTRAN 更古老,但只差一年)。相比本文提到很多其它編程語(yǔ)言,它的應(yīng)用并不廣泛。不過(guò)在人工智能編程領(lǐng)域它還是相當(dāng)重要的。ROS 的一部分是用 LISP 寫(xiě)的,雖然你不需要掌握這個(gè)來(lái)使用 ROS。

7. 硬件描述語(yǔ)言(HDL)

硬件描述語(yǔ)言一般是用來(lái)描述電氣的編程方式。這些語(yǔ)言對(duì)于一些機(jī)器人專家來(lái)說(shuō)是非常常見(jiàn),因?yàn)樗麄兞?xí)慣 FPGAs(FieldProgrammableGateArrays)編程。FPGAs 能讓你開(kāi)發(fā)電子硬件而無(wú)需實(shí)際生產(chǎn)出一塊硅芯片,對(duì)于一些開(kāi)發(fā)來(lái)說(shuō),這是更快更簡(jiǎn)易的選擇。如果你沒(méi)有開(kāi)發(fā)電子原型產(chǎn)品,你也許永遠(yuǎn)不會(huì)用 HDLs。

即便如此,還是有必要了解一下這種編程語(yǔ)言,因?yàn)樗鼈兒推渌幊陶Z(yǔ)言差別很大。一個(gè)重點(diǎn):HDLs 所有的操作是并發(fā)的,而不是基于處理器的編程語(yǔ)言的順序操作。

6.Assembly

Assembly 使你能夠在“1 和 0 級(jí)”程序中進(jìn)行編程。 這是最底層的編程語(yǔ)言。在過(guò)去,大多數(shù)底層硬件需要在 Assembly 中進(jìn)行編程。 隨著 Arduino 和其他類似微控制器的興起,你現(xiàn)在可以利用 C / C ++ 在底層進(jìn)行有效的編程,這意味著 Assembly 對(duì)于一般的機(jī)器人科學(xué)家來(lái)說(shuō),顯然已不太重要。

5. MATLAB

MATLAB、及其相關(guān)的開(kāi)源語(yǔ)言(例如 Octave),是一些著名的機(jī)器人科學(xué)家用于調(diào)查數(shù)據(jù)和創(chuàng)建控制系統(tǒng)常用的語(yǔ)言。

此外,還有一個(gè)非常有名的 MATLAB 機(jī)器人工具箱。如果你需要分析數(shù)據(jù),創(chuàng)建高級(jí)圖表或執(zhí)行控制系統(tǒng),那就需要學(xué)習(xí) MATLAB。

4. C#/ .NET

C# 是微軟提供的一種限制性編程語(yǔ)言。這很大程度上是由微軟機(jī)器人工程師工作室(Microsoft Robotics Studio Studio)提供的,微軟機(jī)器人工程師工作室將其作為其基本語(yǔ)言。如果你使用這個(gè)框架,就必須學(xué)習(xí) C#。盡管如此,想要長(zhǎng)期地提高自身的編碼能力,首先學(xué)習(xí) C / C ++ 不失為一個(gè)好的選擇。

3. Java

作為一個(gè)電子工程師,我經(jīng)常驚訝于一些軟件工程課程將 Java 作為他們的第一編程語(yǔ)言。

Java 對(duì)程序員“掩蓋”底層存儲(chǔ)功能,這使得 Java 對(duì)程序的要求要比 C 語(yǔ)言對(duì)程序的要求更低一些,但這意味著你對(duì)底層代碼的運(yùn)行邏輯了解比較少。從軟件工程的基礎(chǔ)到探索機(jī)器人技術(shù)的未來(lái),你很可能已經(jīng)學(xué)習(xí)了 Java。

像 C# 和 MATLAB 一樣,Java 是一種解釋性語(yǔ)言,這意味著它不會(huì)被編譯成機(jī)器代碼。相反,Java 虛擬機(jī)在運(yùn)行時(shí)解釋指令。使用 Java,理論上讓你可以在不同的機(jī)器上運(yùn)行相同的代碼,這得感謝 Java 虛擬機(jī)。在實(shí)踐中,這不總是可行的,有時(shí)會(huì)導(dǎo)致代碼運(yùn)行緩慢。但是 Java 在一部分機(jī)器人學(xué)中非常流行,因此你也許需要它。

2. Python

近來(lái),尤其是在機(jī)器人領(lǐng)域,Python 已經(jīng)有了翻天覆地的變化。其中一個(gè)原因是Python(和 C ++)是 ROS 中的兩種主要編程語(yǔ)言。

如同 Java 一樣,它也是一種解釋性語(yǔ)言。但與 Java 不同的是,Python 的重點(diǎn)是易用性。Python 不需要很多時(shí)間來(lái)做常規(guī)的事情,如定義和強(qiáng)制轉(zhuǎn)換變量類型。這些在編程里面本是很平常的事。另外,Python 還有大量的免費(fèi)庫(kù),這意味著當(dāng)你需要實(shí)現(xiàn)一些基本的功能時(shí)不必“重新發(fā)明輪子”。而且由于它與 C / C ++ 代碼之間可以進(jìn)行簡(jiǎn)單的綁定,這就意味著代碼繁重部分的性能可以植入這些語(yǔ)言,從而避免性能損失。

隨著越來(lái)越多的電子產(chǎn)品開(kāi)始支持“開(kāi)箱即用”Python(與 RaspberryPi 一道),我們可能會(huì)在機(jī)器人中看到更多 Python。

1. C / C ++

機(jī)器人第一編程語(yǔ)言——C/C++!很多人都認(rèn)為 C 和 C ++ 對(duì)新的機(jī)器人科學(xué)家來(lái)說(shuō)是一個(gè)良好的開(kāi)端。

為什么呢?

其主要原因是如今有大量的硬件庫(kù)都使用這兩種語(yǔ)言。它們適用于低級(jí)別的硬件,允許實(shí)時(shí)性能,是非常成熟的編程語(yǔ)言。現(xiàn)在,你可能會(huì)使用 C++ 遠(yuǎn)超過(guò) C,因?yàn)?C++ 具有更大的實(shí)用性。C ++ 是 C 語(yǔ)言的擴(kuò)展,從基礎(chǔ)的 C 學(xué)起,你也會(huì)收獲很多,特別是當(dāng)你發(fā)現(xiàn)一個(gè)硬件庫(kù)是用 C 編寫(xiě)的。但是 C / C ++ 編寫(xiě)的硬件庫(kù)不像 Python 或 MATLAB 那樣簡(jiǎn)單易用。使用 C 來(lái)執(zhí)行類似的功能,可能需要相當(dāng)長(zhǎng)的時(shí)間,并且需要更多的代碼行。盡管如此,由于機(jī)器人極其依賴實(shí)時(shí)性能,所以 C 和 C ++ 是最接近機(jī)器人科學(xué)家心目中“標(biāo)準(zhǔn)語(yǔ)言”的編程語(yǔ)言。

總結(jié)

本文列舉了機(jī)器人十大熱門編程語(yǔ)言,但這并不意味著你需要全部掌握每一門。對(duì)于每位開(kāi)發(fā)者而言,最重要的是要發(fā)現(xiàn)一種對(duì)自身來(lái)說(shuō)很自然的語(yǔ)言,且適合你的機(jī)器人硬件。也需要一種語(yǔ)言,使你能夠快速而有效地創(chuàng)建程序。

我的個(gè)人建議先學(xué)習(xí) Python。因?yàn)?Python 是一門非常簡(jiǎn)單易懂的語(yǔ)言,有許多有效的庫(kù)可供學(xué)習(xí),而且功能非常強(qiáng)大。我聽(tīng)過(guò)也看過(guò)很多(官方經(jīng)驗(yàn)豐富的)程序員可以在幾天內(nèi)學(xué)習(xí)會(huì) Python,并且很快就應(yīng)用到大部分編程需求中。當(dāng)你能明智地使用 Python 之后,我會(huì)建議學(xué)習(xí) C,由 C ++ 來(lái)牽引。因?yàn)槟阈枰獙⑺c機(jī)器人硬件驅(qū)動(dòng)程序的巨大主導(dǎo)接口進(jìn)行交互。

免責(zé)聲明:本網(wǎng)站內(nèi)容主要來(lái)自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁(yè)或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書(shū)面權(quán)利通知或不實(shí)情況說(shuō)明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開(kāi)相關(guān)鏈接。

2017-11-29
機(jī)器人研發(fā)十大熱門編程語(yǔ)言:不死 Java、不朽 C/C ++、新貴 Python
作者:SlickViral 流水的編程語(yǔ)言,鐵打的 Java、C C++。 進(jìn)行人工智能機(jī)器人研發(fā),應(yīng)該選擇哪種編程語(yǔ)言? 這是很多機(jī)器人專家在自身的職業(yè)

長(zhǎng)按掃碼 閱讀全文