作者:SlickViral
流水的編程語言,鐵打的 Java、C/C++。
進行人工智能機器人研發(fā),應(yīng)該選擇哪種編程語言?
這是很多機器人專家在自身的職業(yè)生涯中都會存在的一個入門級思考。畢竟,在學習一門編程語言時,需要花費大量的時間及精力,如果掌握了這門語言卻又不發(fā)揮其真實的價值,又有什么用呢?但不幸的是,到目前為止,也沒有一個確切而直接的答案出現(xiàn)。
如果你在 Stack Overflow、Quora、Trossen、Reddit 或 Research Gate 等機器人專家或者社區(qū)論壇上提問“機器人最好的編程語言是什么?”,毋庸置疑,你將會收到不同的答案。
電子工程師會給予工業(yè)機器人技術(shù)人員不同的答復。大多數(shù)人都會相信的“最好的入門級編程語言”的答案是“這將取決于哪一領(lǐng)域”。其實最合理的答案,應(yīng)該是它取決于你想開發(fā)什么類型的軟件,以及你正在使用什么樣的系統(tǒng)。且對于機器人科學家來說,最關(guān)鍵的是建立“編程思維”,而不是用一種特定的語言來局限。在很多方面,首先學習哪種編程語言并不重要,重要的是在通過編程思維來不斷提高自身的技能。
而回歸本文主題,對于首選編程語言的選擇,沒有最佳的答案,但本文中,我們將介紹程序員在機器人編程中最流行的十大編程語言,并通過對比其優(yōu)缺點,希望可以給予開發(fā)者提供一定的參考方向,做出自己的最佳選擇。
世界上超過 1500 種編程語言可以學習。以下將會列出機器人中十種最流行的編程語言。每種語言都有不同的優(yōu)勢,本文根據(jù)作者自身的開發(fā)及實踐經(jīng)驗,優(yōu)先級從低到高所列舉了十大編程語言排行榜。
10. BASIC / Pascal
BASIC 和 Pascal 是我曾學過的兩種主要的編程語言,但這并不是我將其列入此排行榜的原因。事實上,它們可以很好地運用于工業(yè)機器人編程上。BASIC 針對初學者而設(shè)計,這使它可以成為開發(fā)者簡單的入門語言。
Pascal 旨在提高編程實踐,還引入了一些類似于指針這樣的構(gòu)建,這使得它成為從 BASIC 晉升到更高級的其他語言的一個奠基石。如今,這兩種語言對“日常應(yīng)用”的程序語言來說有些過時了。但如果你準備進行一定程度的底層編碼,或需要熟悉其他工業(yè)機器人語言時,那么了解它們會對你有所幫助。
9. 工業(yè)機器人語言
實際上,每一個機器人制造商都已經(jīng)建立了自己專有的限制性機器人編程語言,這一直是工業(yè)機器人領(lǐng)域的一個問題。通過學習 Pascal,你會熟悉它們中的一部分。但是,當你開始在另一個機器人平臺編碼時,還需要使用不同的編程語言。
如機械臂領(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)開始為程序員提供更加標準化的替代語言選擇。但是如果是一個技術(shù)人員,你仍然更可能不得不使用制造商的編程語言。
8. LISP
LISP 是世界上第二古老的編程語言(FORTRAN 更古老,但只差一年)。相比本文提到很多其它編程語言,它的應(yīng)用并不廣泛。不過在人工智能編程領(lǐng)域它還是相當重要的。ROS 的一部分是用 LISP 寫的,雖然你不需要掌握這個來使用 ROS。
7. 硬件描述語言(HDL)
硬件描述語言一般是用來描述電氣的編程方式。這些語言對于一些機器人專家來說是非常常見,因為他們習慣 FPGAs(FieldProgrammableGateArrays)編程。FPGAs 能讓你開發(fā)電子硬件而無需實際生產(chǎn)出一塊硅芯片,對于一些開發(fā)來說,這是更快更簡易的選擇。如果你沒有開發(fā)電子原型產(chǎn)品,你也許永遠不會用 HDLs。
即便如此,還是有必要了解一下這種編程語言,因為它們和其它編程語言差別很大。一個重點:HDLs 所有的操作是并發(fā)的,而不是基于處理器的編程語言的順序操作。
6.Assembly
Assembly 使你能夠在“1 和 0 級”程序中進行編程。 這是最底層的編程語言。在過去,大多數(shù)底層硬件需要在 Assembly 中進行編程。 隨著 Arduino 和其他類似微控制器的興起,你現(xiàn)在可以利用 C / C ++ 在底層進行有效的編程,這意味著 Assembly 對于一般的機器人科學家來說,顯然已不太重要。
5. MATLAB
MATLAB、及其相關(guān)的開源語言(例如 Octave),是一些著名的機器人科學家用于調(diào)查數(shù)據(jù)和創(chuàng)建控制系統(tǒng)常用的語言。
此外,還有一個非常有名的 MATLAB 機器人工具箱。如果你需要分析數(shù)據(jù),創(chuàng)建高級圖表或執(zhí)行控制系統(tǒng),那就需要學習 MATLAB。
4. C#/ .NET
C# 是微軟提供的一種限制性編程語言。這很大程度上是由微軟機器人工程師工作室(Microsoft Robotics Studio Studio)提供的,微軟機器人工程師工作室將其作為其基本語言。如果你使用這個框架,就必須學習 C#。盡管如此,想要長期地提高自身的編碼能力,首先學習 C / C ++ 不失為一個好的選擇。
3. Java
作為一個電子工程師,我經(jīng)常驚訝于一些軟件工程課程將 Java 作為他們的第一編程語言。
Java 對程序員“掩蓋”底層存儲功能,這使得 Java 對程序的要求要比 C 語言對程序的要求更低一些,但這意味著你對底層代碼的運行邏輯了解比較少。從軟件工程的基礎(chǔ)到探索機器人技術(shù)的未來,你很可能已經(jīng)學習了 Java。
像 C# 和 MATLAB 一樣,Java 是一種解釋性語言,這意味著它不會被編譯成機器代碼。相反,Java 虛擬機在運行時解釋指令。使用 Java,理論上讓你可以在不同的機器上運行相同的代碼,這得感謝 Java 虛擬機。在實踐中,這不總是可行的,有時會導致代碼運行緩慢。但是 Java 在一部分機器人學中非常流行,因此你也許需要它。
2. Python
近來,尤其是在機器人領(lǐng)域,Python 已經(jīng)有了翻天覆地的變化。其中一個原因是Python(和 C ++)是 ROS 中的兩種主要編程語言。
如同 Java 一樣,它也是一種解釋性語言。但與 Java 不同的是,Python 的重點是易用性。Python 不需要很多時間來做常規(guī)的事情,如定義和強制轉(zhuǎn)換變量類型。這些在編程里面本是很平常的事。另外,Python 還有大量的免費庫,這意味著當你需要實現(xiàn)一些基本的功能時不必“重新發(fā)明輪子”。而且由于它與 C / C ++ 代碼之間可以進行簡單的綁定,這就意味著代碼繁重部分的性能可以植入這些語言,從而避免性能損失。
隨著越來越多的電子產(chǎn)品開始支持“開箱即用”Python(與 RaspberryPi 一道),我們可能會在機器人中看到更多 Python。
1. C / C ++
機器人第一編程語言——C/C++!很多人都認為 C 和 C ++ 對新的機器人科學家來說是一個良好的開端。
為什么呢?
其主要原因是如今有大量的硬件庫都使用這兩種語言。它們適用于低級別的硬件,允許實時性能,是非常成熟的編程語言。現(xiàn)在,你可能會使用 C++ 遠超過 C,因為 C++ 具有更大的實用性。C ++ 是 C 語言的擴展,從基礎(chǔ)的 C 學起,你也會收獲很多,特別是當你發(fā)現(xiàn)一個硬件庫是用 C 編寫的。但是 C / C ++ 編寫的硬件庫不像 Python 或 MATLAB 那樣簡單易用。使用 C 來執(zhí)行類似的功能,可能需要相當長的時間,并且需要更多的代碼行。盡管如此,由于機器人極其依賴實時性能,所以 C 和 C ++ 是最接近機器人科學家心目中“標準語言”的編程語言。
總結(jié)
本文列舉了機器人十大熱門編程語言,但這并不意味著你需要全部掌握每一門。對于每位開發(fā)者而言,最重要的是要發(fā)現(xiàn)一種對自身來說很自然的語言,且適合你的機器人硬件。也需要一種語言,使你能夠快速而有效地創(chuàng)建程序。
我的個人建議先學習 Python。因為 Python 是一門非常簡單易懂的語言,有許多有效的庫可供學習,而且功能非常強大。我聽過也看過很多(官方經(jīng)驗豐富的)程序員可以在幾天內(nèi)學習會 Python,并且很快就應(yīng)用到大部分編程需求中。當你能明智地使用 Python 之后,我會建議學習 C,由 C ++ 來牽引。因為你需要將它與機器人硬件驅(qū)動程序的巨大主導接口進行交互。
- 蜜度索驥:以跨模態(tài)檢索技術(shù)助力“企宣”向上生長
- 長江存儲發(fā)布聲明:從無“借殼上市”意愿
- 泛微·數(shù)智大腦Xiaoe.AI正式發(fā)布,千人現(xiàn)場體驗數(shù)智化運營場景
- IDC:2024年第三季度北美IT分銷商收入增長至202億美元
- AI成為雙刃劍!凱捷調(diào)查:97%組織遭遇過GenAI漏洞攻擊
- openEuler開源五年樹立新里程碑,累計裝機量突破1000萬
- 創(chuàng)想 華彩新程!2024柯尼卡美能達媒體溝通會煥新增長之道
- 操作系統(tǒng)大會2024即將在京召開,見證openEuler發(fā)展新里程
- Gartner:AI引領(lǐng)歐洲IT支出激增,2025年將支出1.28萬億美元
- IDC:中國數(shù)字化轉(zhuǎn)型支出五年復合增長率約為15.6% 高于全球整體增速
- 2028年中國數(shù)字化轉(zhuǎn)型總體市場規(guī)模將超7300億美元
免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。