【編者按】在本文中厅驼,我們將會(huì)審視在機(jī)器人學(xué)習(xí)中最流行的10種編程語言骄熟,深入探討它們各自的優(yōu)缺點(diǎn)以及使用和棄用它們的原因。這實(shí)際上是個(gè)很有道理的問題——畢竟华孙,如果你從不付諸實(shí)踐炭刺,那為什么要花大量的時(shí)間 ...
在本文中,我們將會(huì)審視在機(jī)器人學(xué)習(xí)中最流行的10種編程語言娜食,深入探討它們各自的優(yōu)缺點(diǎn)以及使用和棄用它們的原因煮落。
這實(shí)際上是個(gè)很有道理的問題——畢竟,如果你從不付諸實(shí)踐踊谋,那為什么要花大量的時(shí)間和精力去學(xué)習(xí)一種新的編程語言呢蝉仇?如果作為一名機(jī)器人學(xué)新人,你當(dāng)然會(huì)想學(xué)習(xí)一種確實(shí)對(duì)你的職業(yè)生涯很有用的編程語言殖蚕。
不幸的是轿衔,如果你去問一屋子的機(jī)器人學(xué)專家,“什么是機(jī)器人學(xué)中最好編程語言睦疫?”害驹,你永遠(yuǎn)不會(huì)得到一個(gè)直接的答案。
電氣工程師會(huì)從工業(yè)機(jī)器人技術(shù)這個(gè)角度給出不同的答案蛤育。計(jì)算機(jī)視覺程序員給出的答案會(huì)跟認(rèn)知機(jī)器人專家給出的不一樣宛官。而且,每個(gè)人都會(huì)對(duì)什么是最好的編程語言有自己的看法瓦糕。對(duì)于一個(gè)新入行正在試圖決定要先學(xué)哪種語言的機(jī)器人學(xué)者來說底洗,這是一個(gè)相當(dāng)無用的答案。即使這是最現(xiàn)實(shí)的回答——因?yàn)樗拇_取決于你想要開發(fā)的應(yīng)用程序和你在使用的系統(tǒng)咕娄。
對(duì)于機(jī)器人專家來說亥揖,最重要的事情是開拓你的”編程思維”,而不是精通一種特定的編程語言柏咳。從很多方面來說绰瘾,從哪種編程語言開始學(xué)習(xí)真的無關(guān)緊要。你學(xué)習(xí)的每種語言提升了你的編程思維柄倒,擁有了這種思維蚜雏,去學(xué)習(xí)一種新編程語言的時(shí)候會(huì)容易不少。
世界上有1500多種編程語言暴艘,都要學(xué)的話是太多了稀崔。目前,在機(jī)器人學(xué)中有這10種最流行的編程語言——如果你喜歡的不在這里柬沾,請(qǐng)?jiān)诹粞詤^(qū)告訴大家泉剔。對(duì)于機(jī)器人學(xué),每種編程語言有不同的優(yōu)點(diǎn)。我只是部分地按照重要程度從低到高對(duì)它們進(jìn)行了排序假却。
10钧失、BASIC/Pascal
BASIC和Pascal是我最早學(xué)過的兩種編程語言。不過這并不是我把它們列在這里的原因夏跷。對(duì)于幾種工業(yè)機(jī)器人語言哼转,它們是基礎(chǔ),下面說明一下槽华。BASIC是為初學(xué)者設(shè)計(jì)的(BASIC是縮寫壹蔓,BeginnersAll-PurposeSymbolicInstructionCode),它讓初學(xué)者可以從一種非常簡單的編程語言開始學(xué)習(xí)猫态。Pascal旨在鼓勵(lì)好的編程習(xí)慣佣蓉,還引入了結(jié)構(gòu),例如指針亲雪,這讓Pascal成為從BASIC到更復(fù)雜語言的一塊“敲門磚”勇凭。如今,這兩種語言如果要說是好的“日常使用”程序語言义辕,那是有點(diǎn)過時(shí)了虾标。不過如果你準(zhǔn)備做很多底層編碼或是想要熟悉一下其它工業(yè)機(jī)器人編程語言,學(xué)習(xí)一下還是有用的灌砖。
9璧函、工業(yè)機(jī)器人編程語言
幾乎每一個(gè)機(jī)器人制造商都開發(fā)了他們自己專有的機(jī)器人編程語言,這成了工業(yè)機(jī)器人行業(yè)中的一個(gè)問題艺滑。通過學(xué)習(xí)Pascal右木,你會(huì)熟悉它們中的一部分。但是每次開始使用新的機(jī)器人時(shí)跳犹,你還得學(xué)習(xí)一種新的編程語言。
最近幾年标增,ROS行業(yè)已經(jīng)開始提供更標(biāo)準(zhǔn)化的替代語言給程序員玻冗。但是如果是一個(gè)技術(shù)人員,你仍然更可能不得不使用制造商的編程語言杠卜。
8逐枢、LISP
LISP是世界上第二古老的編程語言(FORTRAN更古老,但只早了一年)坠屹。相比今天提到很多其它編程語言遍跌,它的應(yīng)用并不廣泛。不過在人工智能編程領(lǐng)域它還是相當(dāng)重要的兵扭。ROS的一部分是用LISP寫的哑立,雖然你不需要掌握這個(gè)來使用ROS。
7、硬件描述語言(HDLs)
硬件描述語言一般是用來描述電氣的編程方式杰捂。這些語言對(duì)于一些機(jī)器人專家來說是相當(dāng)熟悉的舆床,因?yàn)樗麄兞?xí)慣FPGAs(FieldProgrammableGateArrays)編程。FPGAs能讓你開發(fā)電子硬件而無需實(shí)際生產(chǎn)出一塊硅芯片嫁佳,對(duì)于一些開發(fā)來說挨队,這是更快更簡易的選擇。如果你沒有開發(fā)電子原型產(chǎn)品蒿往,你也許永遠(yuǎn)不會(huì)用HDLs盛垦。即便如此,還是有必要了解一下這種編程語言瓤漏,因?yàn)樗鼈兒推渌幊陶Z言差別很大腾夯。一個(gè)重點(diǎn):HDLs所有的操作是并發(fā)的,而不是基于處理器的編程語言的順序操作赌蔑。
6俯在、Assembly
Assembly讓你能在0和1數(shù)位上進(jìn)行編程⊥薰撸基本上這是最底層的編程語言跷乐。就在最近,最底層的電子需要Assembly進(jìn)行編程罗迎。隨著Arduino和其它如微控制器的崛起泊宴,現(xiàn)在你可以使用C/C++在底層方便地編程了。這意味著Assembly對(duì)于大多數(shù)機(jī)器人專家來說也許會(huì)變得更不必要了秒足。
5钱图、MATLAB
MATLAB以及和它相關(guān)的開源資源,比如Octave寿伊,一些機(jī)器人工程師特別喜歡撩怀,它被用來分析數(shù)據(jù)和開發(fā)控制系統(tǒng)。還有一個(gè)非常流行的機(jī)器人工具箱——MATLAB揽此。我知道一些僅僅使用MATLAB就能開發(fā)出整個(gè)機(jī)器人系統(tǒng)的專家双竣。如果你想要分析數(shù)據(jù),產(chǎn)生高級(jí)圖像或是實(shí)施控制系統(tǒng)艘赂,你也許會(huì)想學(xué)習(xí)MATLAB渤尚。
4、C#/.NET
C#是微軟提供的專用編程語言听誓。我把C#/.NET放在這里催杆,主要是因?yàn)槲④洐C(jī)器人開發(fā)員工作包(MicrosoftRoboticsDeveloperStudio),這個(gè)包的主要開發(fā)語言是C#瑞你。如果你準(zhǔn)備用這個(gè)系統(tǒng)酪惭,那么你很可能必須要用C#希痴。
3、Java
作為一位電子工程師撞蚕,我總是對(duì)一些計(jì)算機(jī)科學(xué)學(xué)位課程將Java作為第一種編程語言讓學(xué)生們學(xué)習(xí)感到驚訝润梯。Java對(duì)程序員隱藏了底層存儲(chǔ)功能,這讓它比起一些語言(如C語言)來說甥厦,編寫要容易些纺铭,但這也意味著你會(huì)更少地理解底層代碼的運(yùn)行邏輯。如果你有計(jì)算機(jī)科學(xué)背景并轉(zhuǎn)到機(jī)器人學(xué)(很多人是這樣的刀疙,特別是在研究領(lǐng)域)舶赔,你也許已經(jīng)學(xué)過Java。像C#和MATLAB谦秧,Java是一種解釋性語言竟纳,這意味著它不會(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
近年來,學(xué)習(xí)Python的人有一個(gè)巨大的回潮疫橘,特別是在機(jī)器人領(lǐng)域袜簇。其中一個(gè)原因可能是Python(和C++)是ROS中兩種主要的編程語言。與Java不同癌玩,Python的重點(diǎn)是易用性钢墩,Python不需要很多時(shí)間來做常規(guī)的事情,如定義和強(qiáng)制轉(zhuǎn)換變量類型楞播。這些在編程里面本是很平常的事。另外肢簿,Python還有大量的免費(fèi)庫靶剑,這意味著當(dāng)你需要實(shí)現(xiàn)一些基本的功能時(shí)不必“重新發(fā)明輪子”。而且因?yàn)镻ython允許與C/C++代碼進(jìn)行簡單的綁定池充。這就意味著代碼繁重部分的性能可以植入這些語言桩引,從而避免性能損失。隨著越來越多的電子產(chǎn)品開始支持“開箱即用”Python(與RaspberryPi一道),我們可能會(huì)在機(jī)器人中看到更多Python坑匠。
注:TheRaspberryPiFoundation:英國一個(gè)小型的慈善組織血崭,成立的宗旨在于推廣科技,而非以銷售技術(shù)來營利厘灼。
1夹纫、C/C++
最后我們到了排名第1的機(jī)器人編程語言!許多人認(rèn)為C和C++對(duì)新入行的機(jī)器人學(xué)家是一個(gè)很好的起點(diǎn)设凹。為什么舰讹?因?yàn)楹芏嘤布於际褂眠@兩種語言。這兩種語言允許與低級(jí)別的硬件進(jìn)行交互闪朱,允許實(shí)時(shí)性能螟衍,是非常成熟的編程語言。現(xiàn)如今冕泡,你可能會(huì)使用C++比C多佩捎,因?yàn)榍罢呔哂懈嗟墓δ堋++基本上是C的一種延伸刑评。首先學(xué)一點(diǎn)C會(huì)很有用哑辐,特別是當(dāng)你發(fā)現(xiàn)一個(gè)硬件庫是用C編寫的。C/C++并不是像Python或MATLAB那樣簡單易用惑膀。同樣用C來實(shí)現(xiàn)相同的功能會(huì)需要大量時(shí)間唐肩,也將需要更多行代碼。但是贼么,由于機(jī)器人非常依賴實(shí)時(shí)性能穗掘,C和C++是最接近我們機(jī)器人專家“標(biāo)準(zhǔn)語言”的編程語言。
聲明:本網(wǎng)站所收集的部分公開資料來源于互聯(lián)網(wǎng)介她,轉(zhuǎn)載的目的在于傳遞更多信息及用于網(wǎng)絡(luò)分享称啸,并不代表本站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé),也不構(gòu)成任何其他建議疾就。本站部分作品是由網(wǎng)友自主投稿和發(fā)布澜术、編輯整理上傳,對(duì)此類作品本站僅提供交流平臺(tái)猬腰,不為其版權(quán)負(fù)責(zé)鸟废。如果您發(fā)現(xiàn)網(wǎng)站上所用視頻、圖片姑荷、文字如涉及作品版權(quán)問題盒延,請(qǐng)第一時(shí)間告知,我們將根據(jù)您提供的證明材料確認(rèn)版權(quán)并按國家標(biāo)準(zhǔn)支付稿酬或立即刪除內(nèi)容鼠冕,以保證您的權(quán)益添寺!聯(lián)系電話:010-58612588 或 Email:editor@mmsonline.com.cn胯盯。
- 暫無反饋
編輯推薦
- 2025新年特刊:打造新質(zhì)生產(chǎn)力相满,智啟未來新篇章
- 定義制造業(yè)未來的數(shù)控加工中心技術(shù)專題
- 航空航天及交通領(lǐng)域先進(jìn)制造技術(shù)應(yīng)用專題
- 解碼消費(fèi)電子產(chǎn)品生產(chǎn)的數(shù)字化之路技術(shù)專題
- 精密智能機(jī)床桦卒,助力制造升級(jí)技術(shù)專題
- 汽車輕量化驅(qū)動(dòng)下的零部件加工應(yīng)用專題
- 高性能銑刀實(shí)現(xiàn)高精加工生產(chǎn)技術(shù)專題
- 航空航天發(fā)動(dòng)機(jī)解決方案專題
- 高效齒輪加工生產(chǎn)技術(shù)方案專題
- 金屬加工液的性能不止?jié)櫥夹g(shù)應(yīng)用專題