進行人工智能機器人研發(fā),應(yīng)該選擇哪種編程語言?
用哪種語言進行人工智能機器人研發(fā)?這個問題大多數(shù)新的機器人專家在他們的職業(yè)生涯中至少會思考一次。不幸的是,這也是一個沒有直接答案的問題。
如果你在 Stack Overflow、Quora、Trossen、Reddit或 Research Gate 等機器人專家或者社區(qū)論壇上提問“機器人最好的編程語言是什么?” 你會得到不同的答案。正如我們在文章中討論的基本機器人技能一樣,對于機器人學(xué)家來說最關(guān)鍵的是建立“ 編程思維 ”,而不是用一種特定的語言來衡量。在很多方面,你首先學(xué)習(xí)哪種編程語言并不重要,重要的是在通過編程思維來不斷提高自身的技能。
回歸主題,在本文中,我們將介紹機器人研發(fā)中使用的十大最流行的編程語言。我們將討論他們的缺點和優(yōu)點,以及使用或者不使用它們的理由。世界上有超過1500種編程語言你可以學(xué)習(xí)。下面列出的是目前機器人中十種最流行的編程語言。每種語言都有不同的優(yōu)勢,作者根據(jù)自身經(jīng)驗,按照優(yōu)先級從低到高排序。
10.BASIC / Pascal
BASIC和Pascal是我曾經(jīng)學(xué)過了的兩種主要的編程語言。但這并不是我把它們放在榜單上的原因。相反,它們是運用于工業(yè)機器人編程上很好的語言。BASIC 針對初學(xué)者設(shè)計,這使它可以成為開發(fā)者簡單的入門語言。
Pascal的目的是提高編程實踐,并提出像指針這樣的構(gòu)建,這使得它成為一個從 BASIC 到更多編程語言的奠基石。如今,這兩種語言對于“日常運用”來說有些過時了。但是普通情況下,您要進行相當(dāng)程度的底層編碼,或者需要熟悉其他工業(yè)機器人語言,那么了解它們會對您有所幫助。
9.工業(yè)機器人語言
實際上,每一個機器人制造商都已經(jīng)建立了自己特定的限制性機器人編程語言,這一直是工業(yè)機器人領(lǐng)域的一個問題。通過學(xué)習(xí)Pascal,你會熟悉他們的一部分。但是,當(dāng)你開始在另一個機器人平臺編碼時,都必須使用另一種語言。
如機械臂領(lǐng)域?qū)嵙妱诺?ABB 公司,用的語言系統(tǒng)叫做 RAPID;來自于德國的 KUKA,語言和公司名字一樣也叫做 KUKA;Comau 利用 PDL2;Yaskawa 利用 Advise 和 Kawasaki 利用 AS。在這一點上,F(xiàn)anuc 機器人利用 Karel,Staubli 機器人利用VAL3 和 Widespread Robots 利用URScript。
最近,像 ROS 這樣的行業(yè)已經(jīng)開始為程序員提供更加標(biāo)準(zhǔn)化的語言選擇。盡管如此,作為一個技術(shù)人員,你仍需要使用制造商的編程語言。
8.LISP
LISP是世界上第二古老的編程語言(FORTRAN更為古老,但只差一年)。相比與其他語言,它使用得并不是很廣泛,但是在人工智能編程領(lǐng)域還是很最重要的。ROS的一部分是用 LISP 編寫的,事實上,你并不需要知ROS是怎么編寫的。
7.硬件描述語言(HDL)
硬件描述語言基本上是描繪電氣的編程方法。這些語言對于一些機器人專家來說是非常普遍的,因為他們習(xí)慣用 FPGAs(Field Programmable Gate Arrays)編程。FPGA可以不用硅芯片便能開發(fā)出電子硬件,這使得它們成為一種開發(fā)的更快,更低要求的改進選擇。如果你不模擬硬件,你可能永遠不會使用HDL。
存在即是合理,你還是需要了解一下HDL的,并且它們和其他編程語言也不太一樣。HDL的所有的操作都是并行完成的,而不是像基于處理器的語言那樣順序操作。
6.Assembly
Assembly 可以讓你用“0和1”進行編程,這是最底層的編程。在過去,大多數(shù)底層硬件需要在 Assembly 中進行編程。隨著 Arduino 和其他類似微控制器的興起,你現(xiàn)在可以利用C / C ++在底層進行有效的編程,這意味著 Assembly 對于一般的機器人專家來說可能會不那么重要。
5.MATLAB
MATLAB和它的開源親戚(例如Octave)在一些機器人專家中非常有名,是他們負責(zé)調(diào)查數(shù)據(jù)和創(chuàng)建控制系統(tǒng)常用的語言。還有一個非常有名的MATLAB機器人 工具箱。我知道使用MATLAB單獨創(chuàng)建整個機器人系統(tǒng)的人員。所以,如果您需要分解數(shù)據(jù),創(chuàng)建高級圖表或執(zhí)行控制系統(tǒng),那就很可能需要學(xué)習(xí)MATLAB。
4.C#/.NET
C#是微軟提供的一種限制性編程語言。C#/ .NET很大程度上是為微軟機器人工程師工作室(MicrosoftRobotics Studio Studio)提供的,微軟機器人工程師工作室將其作為基本語言。如果你將使用這個框架,你就必須學(xué)習(xí) C#。盡管如此,首先學(xué)習(xí)C / C ++,也可以提高自身的編碼能力。
3.Java
作為一個電子設(shè)計工程師,我很驚訝一些軟件工程學(xué)院將 JAVA 作為他們第一個學(xué)習(xí)的編程語言。
Java把對程序員的底層存儲功能“隱藏了”,這使得對Java程序的要求不那么高,而且也意味著你對代碼的處理方式了解得不多。從軟件工程的基礎(chǔ)到探索機器人的未來,你很可能已經(jīng)學(xué)習(xí)了Java。
像C#和MATLAB一樣,Java是一種解釋性語言,這意味著它不會被合并到機器語言代碼中。相反,Java虛擬機在運行時解釋指令。理論上來說,基于Java虛擬機,使用Java可以在不同機器上使用類似的代碼。但實際上,這并不普遍使用,有時會導(dǎo)致代碼運行緩慢。但是Java編程語言在機器人研究中非常流行,所以你可能需要它。
2.Python
在機器人研究領(lǐng)域,Python 占據(jù)了重要地位。其中一個原因很可能是 Python(和C ++)是ROS中的兩種主要編程語言。像Java一樣,它是一種解釋性語言。但也不同于Java,Python 語言主要集中在可用性上。Python不需要花大量的時間來做常規(guī)的事情,例如定義和強制轉(zhuǎn)換變量類型。此外,還有大量免費的庫,這意味著當(dāng)你不得不實現(xiàn)一些基本的功能時,你不需要“重新造輪子”。而且由于它允許與C /C ++代碼之間可以進行簡單的綁定,這意味著執(zhí)行代碼繁重部分的性能可以植入這些語言,從而避免性能損失。隨著越來越多的電子產(chǎn)品開始使用“開箱即用”的Python(像Raspberry Pi那樣),我們可能會在機器人中看到更多的Python。
1.C/C++
機器人研發(fā)第一編程語言—c++。許多人都認為 C 和 C ++ 對機器人科學(xué)家來說是一個很好的開端。為什么?因為相當(dāng)多的硬件庫使用這些語言。它們適用于低級別的硬件,允許實時性能,是非常成熟的編程語言。
現(xiàn)在,你可能會更多地使用C ++,因為C++具有更強大的實用性。C ++是C的一個擴展。從基礎(chǔ)的C學(xué)習(xí),你也可以得到很多收獲,尤其是當(dāng)你發(fā)現(xiàn)一個硬件庫是用 C 編寫的時候。C / C ++不像Python或MATLAB那么容易學(xué)習(xí)的。使用C來執(zhí)行類似的功能可能需要相當(dāng)長的時間,并且需要更多的代碼。盡管如此,但機器人極其依賴實時性能,所以它們?nèi)匀皇菣C器人科學(xué)家心中的“標(biāo)準(zhǔn)”機器人編程語言。
那學(xué)習(xí)哪一個比較好呢?
我列舉了機器人十大熱門編程語言,并不意味著你每一個都需要去學(xué)習(xí)。最重要的是發(fā)現(xiàn)一種適合你的語言,當(dāng)然,也適用于你的機器人硬件。您需要一種可以讓你快速有效地創(chuàng)建程序的語言,你可以更專注于實用性。
因此,我建議先學(xué)習(xí)Python。這是我根據(jù)自己的自身經(jīng)驗來說,當(dāng)然你也可以先學(xué)習(xí)適合你的語言。無論如何,Python是一門簡單易學(xué)的語言它有許多有效的庫可供學(xué)習(xí),而且功能非常強大。我聽過很多經(jīng)驗豐富的程序員在幾天內(nèi)就學(xué)會了Python,并且很快就運用到了大部分編程需求里面。在你學(xué)會了 Python 之后,我會建議學(xué)習(xí) C,再由C ++來牽引。因為你需要將它與機器人硬件驅(qū)動程序的巨大主導(dǎo)接口進行交互。