機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 3248|回復: 8
打印 上一主題 下一主題

機器人有哪些熱門編程語言?

[復制鏈接]
跳轉到指定樓層
1#
發(fā)表于 2019-3-1 14:41:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

5 ~' O: H- ~+ M" j" |4 d  W4 ~機器人編程語言最早于20世紀70年代初期問世,到目前為止已有多種編程語言出現(xiàn),在眾多機器人編程語言中究竟哪種編程語言最好呢?這個問題困擾了很多新手學者,但遺憾的是,這是一個沒有準確答案的問題,你問不同的人會得到不同的答案,對于機器人學者來說建立“編程思維“才是最關鍵的,而不是用一種特定語言去衡量,在很多方面,學習哪種機器人編程語言并不是最重要的,重要的是通過編程思維來不斷提升自己的技能。. I  t6 T) o# F* _3 F5 k
回到本文主題,我們將為大家介紹機器人研發(fā)中比較主流的5種機器人編程語言,并對他們的優(yōu)缺點進行分析。
4 P8 {& C9 U2 n. m: p0 o+ _) u+ E, y, z4 O1 A$ T5 x
一、Python——一種動態(tài)的、面向對象的腳本語言
1 b) j% V, ?0 Z+ |5 F在機器人研究領域,Python 占據(jù)了重要地位。其中一個原因很可能是 Python(和C ++)是ROS中的兩種主要編程語言。像JAVA一樣,它是一種解釋性語言。但也不同于JAVA,Python 語言主要集中在可用性上。/ ?/ e' |5 j# [. H9 n
% }1 E* |7 h, l+ r% h) s
Python優(yōu)點:
8 S. ^. R  C$ z; V; p+ e1.更易入門
, V2 L3 Y# W# V1 H/ WPython程序簡單易懂,初學者學Python更易入門且深入下去可編寫非常復雜的程序,且開發(fā)效率高,有非常強大的第三方庫。
) e) R! E/ w% o1 W/ @/ U" K& n2.高級語言
7 ]( a% G  X. F, [  D當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節(jié). ]! Y% N+ \2 K0 g
3.可移植性+ K# b% Z/ E. M9 L% i# I: |4 A
由于它的開源本質,Python已經(jīng)被移植在許多平臺上(經(jīng)過改動使它能夠工 作在不同平臺上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么所有Python程序無需修改就幾乎可以在市場上所有的系統(tǒng)平臺上運行" _1 P3 P* }$ e6 _
4.可擴展性) o- U+ j& `% _$ i4 o7 E
如果需要一段關鍵代碼運行得更快或者希望某些算法不公開,就可將部分程序用C或C++編寫,然后在你的Python程序中使用它們。
, `# n$ [$ y# H) `7 m. O6 ]- H
7 ]/ R, r% }4 R" i; V; h' FPython缺點:
% q! }! D/ K. C& I* H; Z1.運行速度慢
! ^4 @: |- w- S6 Y' F2 x: R7 `Python的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些。- f$ B7 U7 z% b+ g5 J* [
2.線程不能利用多CPU問題
8 S: W. m% M% u  g  }這是Python被人詬病最多的一個缺點。
' C6 ~. u/ P6 j$ k
& r  p0 U% ]4 I4 t二、C /C ++——大多數(shù)中國程序員的第一個語言- y2 m7 A+ g3 x& x3 J$ ~  F
C++語言是從C語言發(fā)展過來的,是一門面向對象的語言,它繼承了C語言的優(yōu)勢。很多人都認為 C 和 C ++ 對機器人科學家來說是一個很好的開端。因為大部分的硬件庫使用這些語言,允許實時性能,是非常成熟的編程語言。
; [$ {" e+ W) y' R
C /C ++優(yōu)點:
$ F% V, P; A9 f1 e1.跨平臺性好- l3 k9 F9 H8 {3 \
C/C++可以潛入任何現(xiàn)代處理器中,幾乎所有的操作系統(tǒng)都支持,跨平臺性非常好。6 ~# P6 H' S0 y1 k0 F8 U; f* n
2.運行效率高
9 V7 u3 Z% O9 w% p2 D4 _7 ~# AC語言體型小巧,簡潔高效并且接近匯編語言,C++功能在C的基礎上增加面向對象的特點,代碼可讀性好,運行效率高。
- t  r: Z6 o$ f2 F3.語言簡潔,編寫風格自由0 X0 U; J: J4 [/ f+ u2 x; H# m: v0 z5 x
兼有高級語言與匯編語言的優(yōu)點,語言簡潔、緊湊,使用方便、靈活豐富的運算符和數(shù)據(jù)類型,能訪問內存地址和位操作等硬件底層操作,生成的目標代碼質量高。; f+ {9 N; H- y2 l6 U! K/ e

8 U. b9 [# A' k' W3 v3 hC/C++缺點:
5 v% [* g- J* i# s1.無垃圾回收機制
4 y/ \: v: P8 M/ M相對于JAVA來說,沒有垃圾回收機制,容易引發(fā)內存泄露, Y3 p$ q7 ~/ {" Z. W9 i
2.學習較困難+ N( m& K% [, m, C8 J& d! m
從應用的角度,C語言比其他高級語言較難掌握。也就是說,對用C語言的人,要求對程序設計更熟練一些。
' ?4 p: e) x5 |( S2 h' y% `3.數(shù)據(jù)安全性上有缺陷1 s8 n1 e% P; F& ?
C語言的缺點主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C++的一大區(qū)別!' F" y) h. W5 r, K  e

/ Z( `! V6 R9 U3 _/ p) ]: Z三、JAVA——世界上使用范圍最廣的語言/ k1 x7 E7 P" E& i
JAVA語法規(guī)則和C++類似,從某種意義上來說,JAVA是由C和C++語言轉變而來的。像C#和MATLAB一樣,JAVA是一種解釋性語言,這意味著它不會被合并到機器語言代碼中。相反,JAVA虛擬機在運行時解釋指令。理論上來說,基于JAVA虛擬機,使用JAVA可以在不同機器上使用類似的代碼。但實際上,這并不普遍使用,有時會導致代碼運行緩慢,但是JAVA編程語言在機器人研究中非常流行。& I8 M+ A3 g* I# D1 e
JAVA優(yōu)點:4 g% q( f4 J' H) m$ v8 E
1.更易學習
, R# {8 U  s6 a% t+ M1 ^) a由于JAVA語言與C語言和C++語言比較接近,使大多數(shù)程序員學起來更簡單。4 i9 K5 s/ g3 _; Q
2.支持動態(tài)綁定; W& m! ^: f# O
JAVA語言全面支持動態(tài)綁定,而C++語言只對虛函數(shù)使用動態(tài)綁定。9 n8 b/ q* M# A/ t. r2 {
3.支持Internet應用開發(fā)
0 R4 h5 D0 c" o* s$ Q# l) y  WJAVA語言支持Internet應用的開發(fā),在基本的JAVA應用編程接口中有一個網(wǎng)絡應用編程接口(JAVA.net),它提供了用于網(wǎng)絡應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。
0 R2 x! J9 S: ]7 K4.更安全
3 r9 |, y+ x* L$ S  KJAVA語言提供了一個安全機制以防止惡意代碼的共計,相對來說更安全。
' `3 s' S& S$ |  B5.具有可移植性
/ X0 @/ u0 Y; m* iJAVA語言是可移植的,這種可移植性來源于體系結構中立性,另外,JAVA還嚴格規(guī)定了各個基本數(shù)據(jù)類型的長度。
" f9 N# ]5 N4 T' v9 n2 y# U7 W8 }* I/ |$ b, k
JAVA缺點:
; j1 n# ?7 B4 {! x: U5 K5 w0 Z1.運行需要安裝JAVA虛擬機
$ l7 ^! g; N6 V% m- w9 }JAVA語言最大的缺點就是運行JAVA程序需要裝JAVA虛擬機,就這一條嚴重的影響了JAVA應用程序的使用,基本看不到JAVA的應用程序。! \6 b; H& X# s0 R% F* ]% f" d
2.運行成本較高
! X; P/ s& J/ R) j8 F2 o. h另外JAVA程序的運行成本比較高,過去機器配置不夠高的時候,JAVA顯得很慢現(xiàn)在隨著JAVA本身的版本升級和電腦性能的強化這條基本已經(jīng)不是問題了。; E# i) e0 ~* g, F) m& l6 }
' o! G. e8 \6 Z  {; M: I
四、C#/.NET——微軟提供的一種限制性編程語言
6 n7 c4 B( J: @4 u$ M! t! F; jC#/ .NET很大程度上是為微軟機器人工程師工作室提供的,微軟機器人工程師工作室將其作為基本語言。如果使用這個框架,就必須學習 C#。
6 V! S$ x! f+ D& p6 w. I4 X
C#/.NET優(yōu)點:9 h; Z: Z3 X" _) p
1.強大的.Net Framework托管代碼集合類
8 r+ w, c; }: h& s, R' Z,封裝了大多數(shù)windows上使用的技術組件類, 文件系統(tǒng),UI界面,數(shù)據(jù)源訪問,網(wǎng)絡訪問,COM互操作(圖形圖像多媒體,WPF圖形系統(tǒng)),沒有的可以通過.net的平臺調用win API函數(shù)來得到。
3 b* d: N# T6 @$ z: U9 W; v- s2.較簡單的語言特性
3 s8 s6 z% P$ V& m- |* M  ^自動內存管理, 單繼承,支持事件、委托、屬性、Linq等一系列讓業(yè)務開發(fā)更簡單的功能。% b( q! `& {# d, ~
3.Web應用程序開發(fā)速度快* E! E$ K; t! c' J/ }. T
Web應用程序開發(fā)速度快(.net框架的支持,控件可以拖拉(UI方便編輯和定位),添加事件(跳轉到控制邏輯層),ADO.net數(shù)據(jù)源訪問, xml 網(wǎng)絡類庫, windows服務)。; H  S2 f3 _! U& G  h
4.和語言平臺無關的編譯機制及較快的運行速度/ R! P: \/ ]: W$ T3 n; G4 Z7 v
和語言平臺無關的編譯機制,及較快的運行速度(ms不推薦, mono的 Xamarin, Unity還不錯):編譯成IL中間語言,CLR公共語言運行庫托管代碼,CLR根據(jù)運行時程序需要將IL中間語言用JIT即時編譯方式編譯為內部機器代碼,對編譯好的機器代碼緩存起來,提高了程序速度。
1 `7 T* h/ J2 R( p& c: B- W5.代碼安全性
  Q8 M2 u& u& D% W6 R5 d; `7 Mwindow是基于角色的安全機制,.net提供了基于代碼的安全機制,由于中間語言提供了類型安全性,CLR在運行前檢查代碼,確定是否有需要的安全權限,CLR沒有權限則不能執(zhí)行該代碼。3 @: B6 ?6 b" O" I2 N3 C

. I4 b3 `& H" T/ u6 P% RC#/.NET缺點:
! t! |- a7 e# u) d# ]1.底層和高性能不合適
; G7 D$ [( @2 l不合適做時間性能很高(高速算法)或空間性能很靈活(內存立即釋放)的程序,因為中間語言和編譯過程,比C/C++Native類型的語言會慢一些,內存自動回收難以立即釋放不需要的內存,不采用內聯(lián)函數(shù)和析構函數(shù)(不建議)。0 O1 i* p8 K- E
2.Windows平臺以外支持有限
: o: d7 p, G, ymono不夠成熟好用,window以外Java,Python等是很強大和同樣優(yōu)秀的。1 n- B+ P+ n5 v1 S3 h2 P' n
$ E5 l0 e! g. b. a9 K" p
五、MATLAB——一種面向數(shù)值計算的高級程序設計語言
* M( B# s4 \6 V# j2 |- w" X! DMATLAB和它的開源親戚(例如Octave)在一些機器人專家中非常有名,是他們負責調查數(shù)據(jù)和創(chuàng)建控制系統(tǒng)常用的語言。還有一個非常有名的MATLAB機器人工具箱。使用MATLAB單獨創(chuàng)建整個機器人系統(tǒng)的人員。如需要分解數(shù)據(jù),創(chuàng)建高級圖表或執(zhí)行控制系統(tǒng),那就很可能需要學習MATLAB。  k7 ~/ }& y0 R! j. m
MATLAB優(yōu)點:4 F! n. Y  U9 T% `
1.編程效率高; U% a) R6 f. x% M7 _5 l2 q
MATLAB語言為演算紙式科學算法語言,由于它編程簡單,所以編程效率高,易學易懂。
3 J" R: r9 e6 s) g9 d4 p. `2.高效方便的矩陣和數(shù)組運算
) _0 a- |, c5 S& E: x; sMATLAB語言像BASIC、C語言一樣規(guī)定了矩陣的算術運算符、關系運算符、邏輯運算符、條件運算符及賦值運算符,而且這些運算符大部分可以毫無改變的照搬到數(shù)組建的運算中。
& c, Q+ b" I- }/ w9 U2 j1 dMATLAB缺點:
$ P) o, _& M/ h, I2 T6 t1.循環(huán)運算效率低。
- e* i0 Y  t+ uMATLAB中所有的變量均為向量形式,這樣一方面在對向量進行整體的計算時,表現(xiàn)出其他語言難以表現(xiàn)出的高效率,但是對于向量中的單個元素,或是將向量作為單個的循環(huán)變量來處理時,其處理過程相當?shù)膹碗s。! h$ Y1 u& w, _  N+ M
2.封裝性不好。
1 a% b6 W3 |9 ~! R  K一方面,所有的變量均保存在公共工作區(qū)中,任何語句都可以調用。另一方面,作為一個完備的軟件,而不是實現(xiàn)算法的程序,編程人員在使用MATLAB時需要花相當多的時間考慮如何設計用戶界面。
7 X0 `! }+ W0 ^+ Y3 v本文為大家列舉了機器人編程比較熱門的5種語言,但這并不意味著需要全部掌握,對于開發(fā)者來說,發(fā)現(xiàn)一種對自身來說很自然的語言更為重要,且適合你的機器人硬件,使你能快速上手。在這里建議先學習Python,Python是一門相對簡單易懂的語言,有許多有效的庫可供學習,且功能非常強大。
4 N. g9 {8 o) _
+ {+ y& \% P, [% r! N0 S- k3 ~1 v7 D. W
回復

使用道具 舉報

2#
發(fā)表于 2019-3-1 16:59:20 | 只看該作者
自問自答
回復

使用道具 舉報

3#
發(fā)表于 2019-3-7 21:31:21 | 只看該作者
回復

使用道具 舉報

4#
發(fā)表于 2019-3-7 21:31:59 | 只看該作者
樓主真厲害
回復 支持 反對

使用道具 舉報

5#
發(fā)表于 2019-3-14 10:44:53 | 只看該作者
python感覺不適合新手,只能會用,但不知道為什么,只好轉學c++了?
回復 支持 反對

使用道具 舉報

6#
發(fā)表于 2019-4-22 12:24:56 | 只看該作者
C++和Python吧。
回復 支持 反對

使用道具 舉報

7#
發(fā)表于 2019-4-23 18:02:18 | 只看該作者
大大的贊,就一個字
回復 支持 反對

使用道具 舉報

8#
發(fā)表于 2019-4-24 13:52:24 | 只看該作者
個人比較喜歡Python
回復 支持 反對

使用道具 舉報

9#
發(fā)表于 2019-4-25 18:39:02 | 只看該作者
) R0 Z3 z! A7 n+ O* r) I9 O
樓主真厲害
回復 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

小黑屋|手機版|Archiver|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2024-9-23 01:31 , Processed in 0.057154 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表