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

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開始

搜索
查看: 3871|回復(fù): 8

機(jī)器人有哪些熱門編程語(yǔ)言?

[復(fù)制鏈接]
1#
發(fā)表于 2019-3-1 14:41:31 | 只看該作者 |倒序?yàn)g覽 |閱讀模式

' n) f. y7 r9 T" S9 f% r0 _  |機(jī)器人編程語(yǔ)言最早于20世紀(jì)70年代初期問(wèn)世,到目前為止已有多種編程語(yǔ)言出現(xiàn),在眾多機(jī)器人編程語(yǔ)言中究竟哪種編程語(yǔ)言最好呢?這個(gè)問(wèn)題困擾了很多新手學(xué)者,但遺憾的是,這是一個(gè)沒(méi)有準(zhǔn)確答案的問(wèn)題,你問(wèn)不同的人會(huì)得到不同的答案,對(duì)于機(jī)器人學(xué)者來(lái)說(shuō)建立“編程思維“才是最關(guān)鍵的,而不是用一種特定語(yǔ)言去衡量,在很多方面,學(xué)習(xí)哪種機(jī)器人編程語(yǔ)言并不是最重要的,重要的是通過(guò)編程思維來(lái)不斷提升自己的技能。
- X* a& t3 }. R: {* ]/ K3 ]  ], [回到本文主題,我們將為大家介紹機(jī)器人研發(fā)中比較主流的5種機(jī)器人編程語(yǔ)言,并對(duì)他們的優(yōu)缺點(diǎn)進(jìn)行分析。# y0 L4 x- `  T, z& p9 t

7 {2 @, E) t1 X: o) K$ r- h: z& T一、Python——一種動(dòng)態(tài)的、面向?qū)ο蟮哪_本語(yǔ)言! p6 k8 C. W+ y0 R6 {0 Z/ C9 P) s
在機(jī)器人研究領(lǐng)域,Python 占據(jù)了重要地位。其中一個(gè)原因很可能是 Python(和C ++)是ROS中的兩種主要編程語(yǔ)言。像JAVA一樣,它是一種解釋性語(yǔ)言。但也不同于JAVA,Python 語(yǔ)言主要集中在可用性上。
1 L5 X' P( V5 S5 F: I6 j2 [9 F" U3 z$ T& n4 C/ o  ~3 ]
Python優(yōu)點(diǎn):, z  c+ f0 K$ w2 g& ~+ X4 `
1.更易入門8 W/ }3 H5 r. z  T
Python程序簡(jiǎn)單易懂,初學(xué)者學(xué)Python更易入門且深入下去可編寫非常復(fù)雜的程序,且開發(fā)效率高,有非常強(qiáng)大的第三方庫(kù)。* y/ V$ j  t$ J- ]+ q4 e7 z, R
2.高級(jí)語(yǔ)言- f* ~. e5 n8 O
當(dāng)你用Python語(yǔ)言編寫程序的時(shí)候,你無(wú)需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細(xì)節(jié)& z6 C2 U* a4 C0 R$ n
3.可移植性4 G: Y4 G6 p% J1 Z
由于它的開源本質(zhì),Python已經(jīng)被移植在許多平臺(tái)上(經(jīng)過(guò)改動(dòng)使它能夠工 作在不同平臺(tái)上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么所有Python程序無(wú)需修改就幾乎可以在市場(chǎng)上所有的系統(tǒng)平臺(tái)上運(yùn)行
3 l% y) b3 [1 H% J3 A# u4.可擴(kuò)展性
" C" A) X: q4 `! d6 |1 U3 I7 p如果需要一段關(guān)鍵代碼運(yùn)行得更快或者希望某些算法不公開,就可將部分程序用C或C++編寫,然后在你的Python程序中使用它們。
1 K) a  q" S, U3 S
% P. Y% ?8 d$ S0 [4 T  cPython缺點(diǎn):) L$ Q& J  t- K: D- E, {1 ]
1.運(yùn)行速度慢
/ `) l. M. o$ ^6 XPython的運(yùn)行速度相比C語(yǔ)言確實(shí)慢很多,跟JAVA相比也要慢一些。
1 J0 F1 \- ~& Y  r& s2.線程不能利用多CPU問(wèn)題% g. u8 ^0 x# K3 o/ ?/ u7 J/ M$ ^
這是Python被人詬病最多的一個(gè)缺點(diǎn)。' w$ O# `' L& O

4 y# _  P. j+ o二、C /C ++——大多數(shù)中國(guó)程序員的第一個(gè)語(yǔ)言, C, x( g* s2 {: Y2 `9 z
C++語(yǔ)言是從C語(yǔ)言發(fā)展過(guò)來(lái)的,是一門面向?qū)ο蟮恼Z(yǔ)言,它繼承了C語(yǔ)言的優(yōu)勢(shì)。很多人都認(rèn)為 C 和 C ++ 對(duì)機(jī)器人科學(xué)家來(lái)說(shuō)是一個(gè)很好的開端。因?yàn)榇蟛糠值挠布?kù)使用這些語(yǔ)言,允許實(shí)時(shí)性能,是非常成熟的編程語(yǔ)言。
& |3 Z% Q/ ]) p* Q2 D8 a/ }
C /C ++優(yōu)點(diǎn):
! P( E) n) l9 R* k7 M- j( D1.跨平臺(tái)性好! W# p, o9 Y2 o6 o  l2 C
C/C++可以潛入任何現(xiàn)代處理器中,幾乎所有的操作系統(tǒng)都支持,跨平臺(tái)性非常好。
, h. G/ X' b& s0 ?- z: N2.運(yùn)行效率高' e1 w$ y3 s3 u* o0 D$ i0 ]
C語(yǔ)言體型小巧,簡(jiǎn)潔高效并且接近匯編語(yǔ)言,C++功能在C的基礎(chǔ)上增加面向?qū)ο蟮奶攸c(diǎn),代碼可讀性好,運(yùn)行效率高。) t+ P4 m! o/ @: v/ a) t
3.語(yǔ)言簡(jiǎn)潔,編寫風(fēng)格自由6 [$ a3 _, _. ?7 l2 [1 N/ S
兼有高級(jí)語(yǔ)言與匯編語(yǔ)言的優(yōu)點(diǎn),語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活豐富的運(yùn)算符和數(shù)據(jù)類型,能訪問(wèn)內(nèi)存地址和位操作等硬件底層操作,生成的目標(biāo)代碼質(zhì)量高。# v# _2 A8 \. a4 {9 e8 v  ?# q

5 f; n! Q: w! r$ lC/C++缺點(diǎn):
. b: T; b( a& u! Q1.無(wú)垃圾回收機(jī)制
4 I6 S7 h) a% k4 u" j: V; t相對(duì)于JAVA來(lái)說(shuō),沒(méi)有垃圾回收機(jī)制,容易引發(fā)內(nèi)存泄露) b$ O* i: @  Q
2.學(xué)習(xí)較困難) _5 w: i9 n- Y. n7 @9 ?
從應(yīng)用的角度,C語(yǔ)言比其他高級(jí)語(yǔ)言較難掌握。也就是說(shuō),對(duì)用C語(yǔ)言的人,要求對(duì)程序設(shè)計(jì)更熟練一些。$ V8 |6 }7 n1 G/ [# n
3.?dāng)?shù)據(jù)安全性上有缺陷9 d* a- s; W, m( K& t
C語(yǔ)言的缺點(diǎn)主要表現(xiàn)在數(shù)據(jù)的封裝性上,這一點(diǎn)使得C在數(shù)據(jù)的安全性上有很大缺陷,這也是C和C++的一大區(qū)別?!?br /> % N, X2 [4 F4 U8 I) R8 d- u1 }; a7 {' t0 q/ h' H0 I
三、JAVA——世界上使用范圍最廣的語(yǔ)言! O2 L) k( T- d7 H! ?, ^
JAVA語(yǔ)法規(guī)則和C++類似,從某種意義上來(lái)說(shuō),JAVA是由C和C++語(yǔ)言轉(zhuǎn)變而來(lái)的。像C#和MATLAB一樣,JAVA是一種解釋性語(yǔ)言,這意味著它不會(huì)被合并到機(jī)器語(yǔ)言代碼中。相反,JAVA虛擬機(jī)在運(yùn)行時(shí)解釋指令。理論上來(lái)說(shuō),基于JAVA虛擬機(jī),使用JAVA可以在不同機(jī)器上使用類似的代碼。但實(shí)際上,這并不普遍使用,有時(shí)會(huì)導(dǎo)致代碼運(yùn)行緩慢,但是JAVA編程語(yǔ)言在機(jī)器人研究中非常流行。
, T0 A& X8 o% G+ ?: D4 o3 r) ]$ g+ w
JAVA優(yōu)點(diǎn):
9 t" ]1 ~4 n$ H8 B1 h9 t# I1.更易學(xué)習(xí)! u" R' {5 n; r# j2 S
由于JAVA語(yǔ)言與C語(yǔ)言和C++語(yǔ)言比較接近,使大多數(shù)程序員學(xué)起來(lái)更簡(jiǎn)單。
; r% G. S5 j% |0 t/ p2.支持動(dòng)態(tài)綁定( u2 U+ s3 I; k+ ^2 ~
JAVA語(yǔ)言全面支持動(dòng)態(tài)綁定,而C++語(yǔ)言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定。
' I4 ~  K' o- Z0 k9 e5 Z6 ~3.支持Internet應(yīng)用開發(fā)
3 x6 s: d" C) K/ CJAVA語(yǔ)言支持Internet應(yīng)用的開發(fā),在基本的JAVA應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(JAVA.net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫(kù),包括URL、URLConnection、Socket、ServerSocket等。
1 E3 t& r* O- F% T% c4 B4 c6 V4.更安全
  l0 L* B& w9 ^+ H: eJAVA語(yǔ)言提供了一個(gè)安全機(jī)制以防止惡意代碼的共計(jì),相對(duì)來(lái)說(shuō)更安全。' Q/ C1 x0 Y; n( |9 {1 q4 Z
5.具有可移植性1 U* y& F  [$ t) P0 V- x
JAVA語(yǔ)言是可移植的,這種可移植性來(lái)源于體系結(jié)構(gòu)中立性,另外,JAVA還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類型的長(zhǎng)度。+ {, J+ N( Z! _( n$ v9 W

; s$ M9 [, b6 |" n0 D, t. jJAVA缺點(diǎn):
+ S* T( A. |! l; d2 ?3 P1.運(yùn)行需要安裝JAVA虛擬機(jī)# h# B  _- S3 s9 T3 V
JAVA語(yǔ)言最大的缺點(diǎn)就是運(yùn)行JAVA程序需要裝JAVA虛擬機(jī),就這一條嚴(yán)重的影響了JAVA應(yīng)用程序的使用,基本看不到JAVA的應(yīng)用程序。
6 K$ j! X- H# t' q; D; D2.運(yùn)行成本較高: |% C% N) O6 b
另外JAVA程序的運(yùn)行成本比較高,過(guò)去機(jī)器配置不夠高的時(shí)候,JAVA顯得很慢現(xiàn)在隨著JAVA本身的版本升級(jí)和電腦性能的強(qiáng)化這條基本已經(jīng)不是問(wèn)題了。  m. E7 b* w" [5 C" ?

. j' G- I! C* A& ]3 d! O& R/ M四、C#/.NET——微軟提供的一種限制性編程語(yǔ)言0 r) M7 k- h" n) h( s
C#/ .NET很大程度上是為微軟機(jī)器人工程師工作室提供的,微軟機(jī)器人工程師工作室將其作為基本語(yǔ)言。如果使用這個(gè)框架,就必須學(xué)習(xí) C#。8 _' ]% n0 \- X8 M! }! \0 U( y
C#/.NET優(yōu)點(diǎn):9 L0 T5 v/ ?+ s1 k4 D& O4 s
1.強(qiáng)大的.Net Framework托管代碼集合類" W, f; \0 I3 }- K
,封裝了大多數(shù)windows上使用的技術(shù)組件類, 文件系統(tǒng),UI界面,數(shù)據(jù)源訪問(wèn),網(wǎng)絡(luò)訪問(wèn),COM互操作(圖形圖像多媒體,WPF圖形系統(tǒng)),沒(méi)有的可以通過(guò).net的平臺(tái)調(diào)用win API函數(shù)來(lái)得到。" g6 n: ?8 X+ b9 A
2.較簡(jiǎn)單的語(yǔ)言特性" l/ }; k2 V$ m) {! U
自動(dòng)內(nèi)存管理, 單繼承,支持事件、委托、屬性、Linq等一系列讓業(yè)務(wù)開發(fā)更簡(jiǎn)單的功能。
2 W% E; e1 ?. i) [3.Web應(yīng)用程序開發(fā)速度快" X" x2 V, F6 J6 A# J2 a/ Q
Web應(yīng)用程序開發(fā)速度快(.net框架的支持,控件可以拖拉(UI方便編輯和定位),添加事件(跳轉(zhuǎn)到控制邏輯層),ADO.net數(shù)據(jù)源訪問(wèn), xml 網(wǎng)絡(luò)類庫(kù), windows服務(wù))。
2 |- g* F2 p" M/ k: M4.和語(yǔ)言平臺(tái)無(wú)關(guān)的編譯機(jī)制及較快的運(yùn)行速度0 ]4 F( t' n4 _6 m
和語(yǔ)言平臺(tái)無(wú)關(guān)的編譯機(jī)制,及較快的運(yùn)行速度(ms不推薦, mono的 Xamarin, Unity還不錯(cuò)):編譯成IL中間語(yǔ)言,CLR公共語(yǔ)言運(yùn)行庫(kù)托管代碼,CLR根據(jù)運(yùn)行時(shí)程序需要將IL中間語(yǔ)言用JIT即時(shí)編譯方式編譯為內(nèi)部機(jī)器代碼,對(duì)編譯好的機(jī)器代碼緩存起來(lái),提高了程序速度。
+ k& m8 G' `1 }  V- D/ u7 L5.代碼安全性
# p0 t0 K( [5 u, vwindow是基于角色的安全機(jī)制,.net提供了基于代碼的安全機(jī)制,由于中間語(yǔ)言提供了類型安全性,CLR在運(yùn)行前檢查代碼,確定是否有需要的安全權(quán)限,CLR沒(méi)有權(quán)限則不能執(zhí)行該代碼。
9 N/ X$ b0 E8 m0 c) H4 _( @
4 _2 Z3 E: `" B% HC#/.NET缺點(diǎn):( m$ A8 B2 N7 ^. s
1.底層和高性能不合適- V" i, z" H$ O/ t' F
不合適做時(shí)間性能很高(高速算法)或空間性能很靈活(內(nèi)存立即釋放)的程序,因?yàn)橹虚g語(yǔ)言和編譯過(guò)程,比C/C++Native類型的語(yǔ)言會(huì)慢一些,內(nèi)存自動(dòng)回收難以立即釋放不需要的內(nèi)存,不采用內(nèi)聯(lián)函數(shù)和析構(gòu)函數(shù)(不建議)。8 ]& C1 w8 i* R8 L+ O
2.Windows平臺(tái)以外支持有限9 f1 w1 Z' f& N% v
mono不夠成熟好用,window以外Java,Python等是很強(qiáng)大和同樣優(yōu)秀的。. q. d+ V: v. H

1 M0 y) C7 }: P6 }' D( N五、MATLAB——一種面向數(shù)值計(jì)算的高級(jí)程序設(shè)計(jì)語(yǔ)言
1 i  {& `9 ?: L* t! zMATLAB和它的開源親戚(例如Octave)在一些機(jī)器人專家中非常有名,是他們負(fù)責(zé)調(diào)查數(shù)據(jù)和創(chuàng)建控制系統(tǒng)常用的語(yǔ)言。還有一個(gè)非常有名的MATLAB機(jī)器人工具箱。使用MATLAB單獨(dú)創(chuàng)建整個(gè)機(jī)器人系統(tǒng)的人員。如需要分解數(shù)據(jù),創(chuàng)建高級(jí)圖表或執(zhí)行控制系統(tǒng),那就很可能需要學(xué)習(xí)MATLAB。
' z+ Z* N( B# s5 q6 k6 m+ L
MATLAB優(yōu)點(diǎn):
7 y! _; ]; Y% @5 z1.編程效率高; m2 W# ]4 `* N. C6 E/ I
MATLAB語(yǔ)言為演算紙式科學(xué)算法語(yǔ)言,由于它編程簡(jiǎn)單,所以編程效率高,易學(xué)易懂。
8 G6 Z% q, L% e+ B3 g% i2.高效方便的矩陣和數(shù)組運(yùn)算5 }' g& C0 e3 L2 T! p; v; a
MATLAB語(yǔ)言像BASIC、C語(yǔ)言一樣規(guī)定了矩陣的算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、條件運(yùn)算符及賦值運(yùn)算符,而且這些運(yùn)算符大部分可以毫無(wú)改變的照搬到數(shù)組建的運(yùn)算中。
: k7 W5 j6 P% `1 ?% GMATLAB缺點(diǎn):
9 Y. l+ r+ l. U1.循環(huán)運(yùn)算效率低。
. g" V, J7 m) X8 lMATLAB中所有的變量均為向量形式,這樣一方面在對(duì)向量進(jìn)行整體的計(jì)算時(shí),表現(xiàn)出其他語(yǔ)言難以表現(xiàn)出的高效率,但是對(duì)于向量中的單個(gè)元素,或是將向量作為單個(gè)的循環(huán)變量來(lái)處理時(shí),其處理過(guò)程相當(dāng)?shù)膹?fù)雜。
8 M8 }! I0 {* d9 Z- C+ S2.封裝性不好。  I+ I! S. [9 f% U9 t$ }
一方面,所有的變量均保存在公共工作區(qū)中,任何語(yǔ)句都可以調(diào)用。另一方面,作為一個(gè)完備的軟件,而不是實(shí)現(xiàn)算法的程序,編程人員在使用MATLAB時(shí)需要花相當(dāng)多的時(shí)間考慮如何設(shè)計(jì)用戶界面。: }" m; I9 ^* }; Y8 A, R  I7 r
本文為大家列舉了機(jī)器人編程比較熱門的5種語(yǔ)言,但這并不意味著需要全部掌握,對(duì)于開發(fā)者來(lái)說(shuō),發(fā)現(xiàn)一種對(duì)自身來(lái)說(shuō)很自然的語(yǔ)言更為重要,且適合你的機(jī)器人硬件,使你能快速上手。在這里建議先學(xué)習(xí)Python,Python是一門相對(duì)簡(jiǎn)單易懂的語(yǔ)言,有許多有效的庫(kù)可供學(xué)習(xí),且功能非常強(qiáng)大。/ |* y, k" Y- G& V
4 S+ n0 v7 A3 T5 _* y

6 a1 d1 z4 x: z' r
2#
發(fā)表于 2019-3-1 16:59:20 | 只看該作者
自問(wèn)自答
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感覺(jué)不適合新手,只能會(huì)用,但不知道為什么,只好轉(zhuǎn)學(xué)c++了?
6#
發(fā)表于 2019-4-22 12:24:56 | 只看該作者
C++和Python吧。
7#
發(fā)表于 2019-4-23 18:02:18 | 只看該作者
大大的贊,就一個(gè)字
8#
發(fā)表于 2019-4-24 13:52:24 | 只看該作者
個(gè)人比較喜歡Python
9#
發(fā)表于 2019-4-25 18:39:02 | 只看該作者
( y- }1 P+ j& d, k3 J' s
樓主真厲害

本版積分規(guī)則

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

GMT+8, 2025-7-14 02:55 , Processed in 0.076181 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復(fù) 返回頂部 返回列表