人妻暴雨中被强制侵犯在线,亚洲国产欧美日韩精品一区二区三区,四虎影免看黄,国产无人区二卡三卡四卡不见星空

機械社區(qū)

標題: 機器人有哪些熱門編程語言? [打印本頁]

作者: SLAMTEC思嵐科技    時間: 2019-3-1 14:41
標題: 機器人有哪些熱門編程語言?

5 R5 i) r4 B) t9 @3 k- o# j機器人編程語言最早于20世紀70年代初期問世,到目前為止已有多種編程語言出現(xiàn),在眾多機器人編程語言中究竟哪種編程語言最好呢?這個問題困擾了很多新手學(xué)者,但遺憾的是,這是一個沒有準確答案的問題,你問不同的人會得到不同的答案,對于機器人學(xué)者來說建立“編程思維“才是最關(guān)鍵的,而不是用一種特定語言去衡量,在很多方面,學(xué)習哪種機器人編程語言并不是最重要的,重要的是通過編程思維來不斷提升自己的技能。3 z! W# H5 E/ g: S% N8 o9 Q
回到本文主題,我們將為大家介紹機器人研發(fā)中比較主流的5種機器人編程語言,并對他們的優(yōu)缺點進行分析。( ?8 ?8 y  t+ Z+ a
" _  p# }' M2 a3 T
一、Python——一種動態(tài)的、面向?qū)ο蟮哪_本語言( |% E) l; @7 t  T* d
在機器人研究領(lǐng)域,Python 占據(jù)了重要地位。其中一個原因很可能是 Python(和C ++)是ROS中的兩種主要編程語言。像JAVA一樣,它是一種解釋性語言。但也不同于JAVA,Python 語言主要集中在可用性上。
1 m* x. i" B& G; T  A% Y1 S5 p! S( d' H3 b2 c  v
Python優(yōu)點:( l! H5 O; D* B# }& U% t7 t
1.更易入門; g8 u$ I* a5 |  I% u) g3 M) e
Python程序簡單易懂,初學(xué)者學(xué)Python更易入門且深入下去可編寫非常復(fù)雜的程序,且開發(fā)效率高,有非常強大的第三方庫。+ T, Y$ }# ?; [- J' X! N
2.高級語言
. V( t# `4 |) A4 l4 b當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細節(jié)" F/ f7 B6 R1 f- h9 ~  B5 R
3.可移植性
5 r* _. C2 z$ \. i1 B由于它的開源本質(zhì),Python已經(jīng)被移植在許多平臺上(經(jīng)過改動使它能夠工 作在不同平臺上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么所有Python程序無需修改就幾乎可以在市場上所有的系統(tǒng)平臺上運行
  ^' |7 }% ^( P5 c( E+ L4.可擴展性
8 @5 m7 k: x1 Q9 a: Y. e如果需要一段關(guān)鍵代碼運行得更快或者希望某些算法不公開,就可將部分程序用C或C++編寫,然后在你的Python程序中使用它們。0 c! K9 `2 f9 ]+ p

2 }+ E( ~1 p- m9 k) Z' L* l" j) `Python缺點:, w5 H, W  m: O5 `% _* m" I
1.運行速度慢
  _/ Q1 q) \* z9 W: @9 JPython的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些。
& O# w% a* @! Z& U2 H2.線程不能利用多CPU問題
* e1 |1 L' i9 s0 _! }  S  V這是Python被人詬病最多的一個缺點。* ?3 s. g9 i, A* I1 H$ j; z7 U

9 c6 z$ q5 `7 K二、C /C ++——大多數(shù)中國程序員的第一個語言2 f6 r2 B% ^7 i5 x2 H/ U. J- k: F9 G" [
C++語言是從C語言發(fā)展過來的,是一門面向?qū)ο蟮恼Z言,它繼承了C語言的優(yōu)勢。很多人都認為 C 和 C ++ 對機器人科學(xué)家來說是一個很好的開端。因為大部分的硬件庫使用這些語言,允許實時性能,是非常成熟的編程語言。6 {- o; V2 r4 k
C /C ++優(yōu)點:( x1 F( v) g2 H  D
1.跨平臺性好
1 G$ k" C3 }" s% A: z- K% wC/C++可以潛入任何現(xiàn)代處理器中,幾乎所有的操作系統(tǒng)都支持,跨平臺性非常好。+ \. G0 @. r( w3 o) W
2.運行效率高
/ F( Z( w) p7 K$ nC語言體型小巧,簡潔高效并且接近匯編語言,C++功能在C的基礎(chǔ)上增加面向?qū)ο蟮奶攸c,代碼可讀性好,運行效率高。
/ f! E# l! V* K4 G3.語言簡潔,編寫風格自由. S0 X7 t# g5 v  G
兼有高級語言與匯編語言的優(yōu)點,語言簡潔、緊湊,使用方便、靈活豐富的運算符和數(shù)據(jù)類型,能訪問內(nèi)存地址和位操作等硬件底層操作,生成的目標代碼質(zhì)量高。
. [0 L; k' U# |' R  a5 _
  C  {3 r2 b8 h  m: Q7 _2 {; G* ^C/C++缺點:- c. r" |4 v7 b# p
1.無垃圾回收機制
. ?4 y2 l/ j/ B相對于JAVA來說,沒有垃圾回收機制,容易引發(fā)內(nèi)存泄露9 `4 _( [4 S- p6 ^5 ?
2.學(xué)習較困難
, D9 q" O2 m. c4 P" K( Q# G從應(yīng)用的角度,C語言比其他高級語言較難掌握。也就是說,對用C語言的人,要求對程序設(shè)計更熟練一些。, \2 k* w* I" O9 W
3.數(shù)據(jù)安全性上有缺陷) Y# O# n/ z. r7 D. @, Y: d1 j
C語言的缺點主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C++的一大區(qū)別。 
$ c! C: h3 g' P
+ Y  c. Y$ `+ O2 G% D三、JAVA——世界上使用范圍最廣的語言3 S  C, }8 a! ]) B% l* G$ c
JAVA語法規(guī)則和C++類似,從某種意義上來說,JAVA是由C和C++語言轉(zhuǎn)變而來的。像C#和MATLAB一樣,JAVA是一種解釋性語言,這意味著它不會被合并到機器語言代碼中。相反,JAVA虛擬機在運行時解釋指令。理論上來說,基于JAVA虛擬機,使用JAVA可以在不同機器上使用類似的代碼。但實際上,這并不普遍使用,有時會導(dǎo)致代碼運行緩慢,但是JAVA編程語言在機器人研究中非常流行。0 ]& h2 m% G" w1 i9 ^5 {
JAVA優(yōu)點:
. U3 t3 l$ t" a& }; n1.更易學(xué)習
6 a5 U/ {9 }2 i% d( `由于JAVA語言與C語言和C++語言比較接近,使大多數(shù)程序員學(xué)起來更簡單。
3 t6 b0 D4 b/ F- _( F& [% ^2.支持動態(tài)綁定
5 ?, P1 B, W" z) k6 ?JAVA語言全面支持動態(tài)綁定,而C++語言只對虛函數(shù)使用動態(tài)綁定。5 j3 w; w) {6 k* `) u' Q: U, N2 F" N
3.支持Internet應(yīng)用開發(fā)# l$ @5 D1 m3 R! w) @1 s
JAVA語言支持Internet應(yīng)用的開發(fā),在基本的JAVA應(yīng)用編程接口中有一個網(wǎng)絡(luò)應(yīng)用編程接口(JAVA.net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。$ ], f3 I* _! l- v$ \3 j3 V6 h
4.更安全
1 \- f. w" @! ^JAVA語言提供了一個安全機制以防止惡意代碼的共計,相對來說更安全。
( s/ O2 G; B) t5 E6 z0 u- A5.具有可移植性" U. k! k6 i& H$ G" V/ R4 {3 U6 d
JAVA語言是可移植的,這種可移植性來源于體系結(jié)構(gòu)中立性,另外,JAVA還嚴格規(guī)定了各個基本數(shù)據(jù)類型的長度。* r$ t& u! W$ I
. ~% o) i; L$ n- q5 W
JAVA缺點:
( Y. B1 }1 m5 x1 c& {* L8 q9 `  h1.運行需要安裝JAVA虛擬機9 d/ _3 v1 j( i* j& M
JAVA語言最大的缺點就是運行JAVA程序需要裝JAVA虛擬機,就這一條嚴重的影響了JAVA應(yīng)用程序的使用,基本看不到JAVA的應(yīng)用程序。
. c$ p% c- ^9 m# N2.運行成本較高
' p3 Q. J& V# s8 y3 w; s另外JAVA程序的運行成本比較高,過去機器配置不夠高的時候,JAVA顯得很慢現(xiàn)在隨著JAVA本身的版本升級和電腦性能的強化這條基本已經(jīng)不是問題了。; W  |' [( |% W8 Y1 m, C+ z
! _! \: G8 Z0 P
四、C#/.NET——微軟提供的一種限制性編程語言
0 Z0 L+ a9 C, o* kC#/ .NET很大程度上是為微軟機器人工程師工作室提供的,微軟機器人工程師工作室將其作為基本語言。如果使用這個框架,就必須學(xué)習 C#。6 e, t4 Q2 u) ^* t8 }- m
C#/.NET優(yōu)點:/ v1 \1 l. z0 ?( z8 k4 C
1.強大的.Net Framework托管代碼集合類/ }: O7 F  ^( D: m2 E/ l, G, {  x+ ?- J
,封裝了大多數(shù)windows上使用的技術(shù)組件類, 文件系統(tǒng),UI界面,數(shù)據(jù)源訪問,網(wǎng)絡(luò)訪問,COM互操作(圖形圖像多媒體,WPF圖形系統(tǒng)),沒有的可以通過.net的平臺調(diào)用win API函數(shù)來得到。" t: \) y8 x7 g/ @) m$ v; t+ H
2.較簡單的語言特性
2 p: E" ^, E6 j自動內(nèi)存管理, 單繼承,支持事件、委托、屬性、Linq等一系列讓業(yè)務(wù)開發(fā)更簡單的功能。
. r; S# b- C3 i9 s5 C5 T* u3.Web應(yīng)用程序開發(fā)速度快! N/ b, K/ e0 [, c8 D- S
Web應(yīng)用程序開發(fā)速度快(.net框架的支持,控件可以拖拉(UI方便編輯和定位),添加事件(跳轉(zhuǎn)到控制邏輯層),ADO.net數(shù)據(jù)源訪問, xml 網(wǎng)絡(luò)類庫, windows服務(wù))。; M* a6 O; b. K* s3 Y: o. l0 h7 f& B
4.和語言平臺無關(guān)的編譯機制及較快的運行速度
$ A7 b4 P7 P6 j* h; S, y和語言平臺無關(guān)的編譯機制,及較快的運行速度(ms不推薦, mono的 Xamarin, Unity還不錯):編譯成IL中間語言,CLR公共語言運行庫托管代碼,CLR根據(jù)運行時程序需要將IL中間語言用JIT即時編譯方式編譯為內(nèi)部機器代碼,對編譯好的機器代碼緩存起來,提高了程序速度。3 F. ~* ~6 M- g+ U, n) _0 L6 C; x
5.代碼安全性. {/ M' T8 o4 e6 B
window是基于角色的安全機制,.net提供了基于代碼的安全機制,由于中間語言提供了類型安全性,CLR在運行前檢查代碼,確定是否有需要的安全權(quán)限,CLR沒有權(quán)限則不能執(zhí)行該代碼。' u6 z: l' j/ R; [8 O) g

7 _. O# s( q3 W0 {. G1 SC#/.NET缺點:5 S% ^) @2 q& `' L
1.底層和高性能不合適
$ q+ m! c# D4 S7 }( f不合適做時間性能很高(高速算法)或空間性能很靈活(內(nèi)存立即釋放)的程序,因為中間語言和編譯過程,比C/C++Native類型的語言會慢一些,內(nèi)存自動回收難以立即釋放不需要的內(nèi)存,不采用內(nèi)聯(lián)函數(shù)和析構(gòu)函數(shù)(不建議)。  w& f' c  N  x
2.Windows平臺以外支持有限
+ u5 c) J* w2 m& j* K  ymono不夠成熟好用,window以外Java,Python等是很強大和同樣優(yōu)秀的。
# r% {# V' K" ?0 \) e! y3 A, n' x3 V4 J) I% j
五、MATLAB——一種面向數(shù)值計算的高級程序設(shè)計語言
) \. X5 k. P- c( x/ pMATLAB和它的開源親戚(例如Octave)在一些機器人專家中非常有名,是他們負責調(diào)查數(shù)據(jù)和創(chuàng)建控制系統(tǒng)常用的語言。還有一個非常有名的MATLAB機器人工具箱。使用MATLAB單獨創(chuàng)建整個機器人系統(tǒng)的人員。如需要分解數(shù)據(jù),創(chuàng)建高級圖表或執(zhí)行控制系統(tǒng),那就很可能需要學(xué)習MATLAB。
9 Y4 `, Z9 w" }5 Q/ j3 _5 U9 `
MATLAB優(yōu)點:* u6 F% i- I8 c6 a. \: i) a) j
1.編程效率高
2 p. E6 ~$ t: n2 ~5 y( M: w" QMATLAB語言為演算紙式科學(xué)算法語言,由于它編程簡單,所以編程效率高,易學(xué)易懂。
* T7 p, d6 }% d( f$ O2 ^! v: w9 f2.高效方便的矩陣和數(shù)組運算
1 y; e4 |0 P( ~' y* F/ iMATLAB語言像BASIC、C語言一樣規(guī)定了矩陣的算術(shù)運算符、關(guān)系運算符、邏輯運算符、條件運算符及賦值運算符,而且這些運算符大部分可以毫無改變的照搬到數(shù)組建的運算中。
( f2 {; |  I2 K! nMATLAB缺點:
( V" B  I7 L# r1 r6 t( V1.循環(huán)運算效率低。% p) m  r  ]  _/ B' T
MATLAB中所有的變量均為向量形式,這樣一方面在對向量進行整體的計算時,表現(xiàn)出其他語言難以表現(xiàn)出的高效率,但是對于向量中的單個元素,或是將向量作為單個的循環(huán)變量來處理時,其處理過程相當?shù)膹?fù)雜。! d: \3 u9 l. S: n% y! {/ {
2.封裝性不好。
7 X/ j( M) U; @; K0 _一方面,所有的變量均保存在公共工作區(qū)中,任何語句都可以調(diào)用。另一方面,作為一個完備的軟件,而不是實現(xiàn)算法的程序,編程人員在使用MATLAB時需要花相當多的時間考慮如何設(shè)計用戶界面。1 D/ a9 w' M  R8 K7 c( _
本文為大家列舉了機器人編程比較熱門的5種語言,但這并不意味著需要全部掌握,對于開發(fā)者來說,發(fā)現(xiàn)一種對自身來說很自然的語言更為重要,且適合你的機器人硬件,使你能快速上手。在這里建議先學(xué)習Python,Python是一門相對簡單易懂的語言,有許多有效的庫可供學(xué)習,且功能非常強大。# @, c' I- j. }/ m
* H8 z2 U4 h) t( j2 q
) g& n" k8 W6 H" H+ |

作者: 前景錢    時間: 2019-3-1 16:59
自問自答
作者: KingL    時間: 2019-3-7 21:31

作者: KingL    時間: 2019-3-7 21:31
樓主真厲害
作者: 風中不眠的燭火    時間: 2019-3-14 10:44
python感覺不適合新手,只能會用,但不知道為什么,只好轉(zhuǎn)學(xué)c++了?
作者: 鄧技師    時間: 2019-4-22 12:24
C++和Python吧。
作者: 奔跑run    時間: 2019-4-23 18:02
大大的贊,就一個字
作者: 咚咚嚨咚嗆    時間: 2019-4-24 13:52
個人比較喜歡Python
作者: jhon891    時間: 2019-4-25 18:39

) u. @9 d3 H2 R" z3 N$ l樓主真厲害




歡迎光臨 機械社區(qū) (http://www.xa-space.com/) Powered by Discuz! X3.5