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