机械必威体育网址
标题:
机器人有哪些热门编程语言?
[打印本页]
作者:
SLAMTEC思岚科技
时间:
2019-3-1 14:41
标题:
机器人有哪些热门编程语言?
$ @) l2 X8 ]8 t
机器人编程语言最早于20世纪70年代初期问世,到目前为止已有多种编程语言出现,在众多机器人编程语言中究竟哪种编程语言最好呢?这个问题困扰了很多新手学者,但遗憾的是,这是一个没有准确答案的问题,你问不同的人会得到不同的答案,对于机器人学者来说建立“编程思维“才是最关键的,而不是用一种特定语言去衡量,在很多方面,学习哪种机器人编程语言并不是最重要的,重要的是通过编程思维来不断提升自己的技能。
7 G; L. _3 T+ V; E$ ^" G
回到本文主题,我们将为大家介绍机器人研发中比较主流的5种机器人编程语言,并对他们的优缺点进行分析。
2 }' x" }4 q6 ]& K \" Q2 }7 g$ G
$ S- G3 J( }$ E2 z: b
一、Python——一种动态的、面向对象的脚本语言
( _% P4 C) C) J% h2 T% ^
在机器人研究领域,Python 占据了重要地位。其中一个原因很可能是 Python(和C ++)是ROS中的两种主要编程语言。像JAVA一样,它是一种解释性语言。但也不同于JAVA,Python 语言主要集中在可用性上。
. U5 [3 {" _: Q8 P+ M, h
/ q4 W7 F/ q+ v6 O E9 m
Python优点:
8 ]7 p. Q2 }' s, V
1.更易入门
4 ]4 n3 ^2 C1 b( Y
Python程序简单易懂,初学者学Python更易入门且深入下去可编写非常复杂的程序,且开发效率高,有非常强大的第三方库。
" g' [* S$ a: |4 Y6 O
2.高级语言
2 t: T' |3 l8 r1 Y4 K
当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节
: W4 Q* |! h' n" p$ H
3.可移植性
+ T p- [7 S2 M" E
由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
$ e& ?% Y' ?0 ~' G9 _
4.可扩展性
) F, \, y9 X/ g1 b5 R4 [: L
如果需要一段关键代码运行得更快或者希望某些算法不公开,就可将部分程序用C或C++编写,然后在你的Python程序中使用它们。
4 s- k% m* r5 v1 _$ C" ]7 k; x
# g4 ~% C$ M3 a2 }3 e! C
Python缺点:
6 P) y( U% Q0 d! [2 n" U
1.运行速度慢
$ |2 F# d+ s) O3 i6 ^1 `) w
Python的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些。
3 O% _6 p5 I. D4 n, h2 H: R
2.线程不能利用多CPU问题
! F% ?1 H! o1 @) z6 ?/ Q8 ?
这是Python被人诟病最多的一个缺点。
& L( w9 ^0 D; Y- }1 \, m: y
% |3 G, G1 c# i7 i# W, j
二、C /C ++——大多数中国程序员的第一个语言
9 B8 {/ s( i$ [: f4 R6 Q
C++语言是从C语言发展过来的,是一门面向对象的语言,它继承了C语言的优势。很多人都认为 C 和 C ++ 对机器人科学家来说是一个很好的开端。因为大部分的硬件库使用这些语言,允许实时性能,是非常成熟的编程语言。
2 \; v( N1 i4 H
C /C ++优点:
8 o( O8 Z' j7 u* q+ c
1.跨平台性好
+ |5 X7 ]' w' g" Y* E) m
C/C++可以潜入任何现代处理器中,几乎所有的操作系统都支持,跨平台性非常好。
$ E8 @+ o$ H1 w; p5 n0 L
2.运行效率高
) V! z0 i9 H1 c
C语言体型小巧,简洁高效并且接近汇编语言,C++功能在C的基础上增加面向对象的特点,代码可读性好,运行效率高。
4 `! g8 S. Y/ G! _
3.语言简洁,编写风格自由
6 i9 }0 w% C: k6 l- s6 O
兼有高级语言与汇编语言的优点,语言简洁、紧凑,使用方便、灵活丰富的运算符和数据类型,能访问内存地址和位操作等硬件底层操作,生成的目标代码质量高。
+ H T) }$ M+ ?5 r1 Z
* V4 i4 @9 a* H, p5 e. ^
C/C++缺点:
D# z, o ~+ n6 `" X% r" D
1.无垃圾回收机制
( ]& V! p/ J7 u0 a
相对于JAVA来说,没有垃圾回收机制,容易引发内存泄露
( s: Y+ M8 h+ X! d7 w0 T1 @ T
2.学习较困难
) h ^! L2 u) R8 b3 o
从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
! @" C" |/ ?. n* _/ w8 V; ?- f5 d
3.数据安全性上有缺陷
8 K* j) _% N& A3 ^' S$ J9 B3 c* n( }
C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
; f0 c/ K. O" N+ ]* Z5 L2 b/ y! {
G7 J- q* j) H& U: l
三、JAVA——世界上使用范围最广的语言
3 m: {) b, K; U* P; w
JAVA语法规则和C++类似,从某种意义上来说,JAVA是由C和C++语言转变而来的。像C#和MATLAB一样,JAVA是一种解释性语言,这意味着它不会被合并到机器语言代码中。相反,JAVA虚拟机在运行时解释指令。理论上来说,基于JAVA虚拟机,使用JAVA可以在不同机器上使用类似的代码。但实际上,这并不普遍使用,有时会导致代码运行缓慢,但是JAVA编程语言在机器人研究中非常流行。
4 k' ?; L; A9 ~# q. ]" D
JAVA优点:
3 T: Z. N6 s, R5 H
1.更易学习
: I1 Y8 N+ m% H# U6 ], X) Z
由于JAVA语言与C语言和C++语言比较接近,使大多数程序员学起来更简单。
5 g' \# _+ s, ?4 z+ V
2.支持动态绑定
- R2 o+ T! L5 f. s: }0 Y
JAVA语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。
0 N4 ]" j0 a, W# e W8 t
3.支持Internet应用开发
3 }: v! d: B' `9 E1 e2 T- \
JAVA语言支持Internet应用的开发,在基本的JAVA应用编程接口中有一个网络应用编程接口(JAVA.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。
8 n9 R* R$ R: {
4.更安全
3 F4 {; u1 X1 ~6 n w8 I
JAVA语言提供了一个安全机制以防止恶意代码的共计,相对来说更安全。
3 i' l/ i$ p* o8 \
5.具有可移植性
& a) B" Q8 t8 c
JAVA语言是可移植的,这种可移植性来源于体系结构中立性,另外,JAVA还严格规定了各个基本数据类型的长度。
u& D/ Z5 h9 g, i1 ~: \. g
# S( q# ^+ W! o% Q0 a |
JAVA缺点:
/ n& d3 X Y( D! C' Q
1.运行需要安装JAVA虚拟机
2 D/ `7 F' K u+ G) G# B+ t
JAVA语言最大的缺点就是运行JAVA程序需要装JAVA虚拟机,就这一条严重的影响了JAVA应用程序的使用,基本看不到JAVA的应用程序。
% N' O& _+ G* H& {0 A' i
2.运行成本较高
5 |' b0 |) N) V
另外JAVA程序的运行成本比较高,过去机器配置不够高的时候,JAVA显得很慢现在随着JAVA本身的版本升级和电脑性能的强化这条基本已经不是问题了。
2 ^, U) v. w! }8 b+ D5 i2 @
# h: M9 E$ z6 V3 P
四、C#/.NET——微软提供的一种限制性编程语言
! N$ j- [, t+ D! o/ i/ G# V
C#/ .NET很大程度上是为微软机器人工程师工作室提供的,微软机器人工程师工作室将其作为基本语言。如果使用这个框架,就必须学习 C#。
) j: G& T; T4 K, H% S7 m
C#/.NET优点:
6 a5 b' v* f! }0 c- z1 {2 E
1.强大的.Net Framework托管代码集合类
2 c$ L% y3 z( z; A6 Z
,封装了大多数windows上使用的技术组件类, 文件系统,UI界面,数据源访问,网络访问,COM互操作(图形图像多媒体,WPF图形系统),没有的可以通过.net的平台调用win API函数来得到。
: u: b: ^- F0 O9 Z
2.较简单的语言特性
. V$ U- U9 e+ v
自动内存管理, 单继承,支持事件、委托、属性、Linq等一系列让业务开发更简单的功能。
5 A, q. p% r6 X, t0 d2 Z
3.Web应用程序开发速度快
_9 U7 K% P) J0 `$ B. G/ L2 j
Web应用程序开发速度快(.net框架的支持,控件可以拖拉(UI方便编辑和定位),添加事件(跳转到控制逻辑层),ADO.net数据源访问, xml 网络类库, windows服务)。
3 R- h. p4 K1 w" _$ V
4.和语言平台无关的编译机制及较快的运行速度
* ?& l) Y0 s% S( a
和语言平台无关的编译机制,及较快的运行速度(ms不推荐, mono的 Xamarin, Unity还不错):编译成IL中间语言,CLR公共语言运行库托管代码,CLR根据运行时程序需要将IL中间语言用JIT即时编译方式编译为内部机器代码,对编译好的机器代码缓存起来,提高了程序速度。
" G) k: M3 S5 h! s( Y4 S
5.代码安全性
1 e3 Z: G. B2 ]; \( q( L; E; n2 X
window是基于角色的安全机制,.net提供了基于代码的安全机制,由于中间语言提供了类型安全性,CLR在运行前检查代码,确定是否有需要的安全权限,CLR没有权限则不能执行该代码。
' B# [* k4 j( H. A' o! e( K
# F9 G/ Q p% E
C#/.NET缺点:
' C+ R9 n- ^2 @) l3 P1 W! S! F1 \- H
1.底层和高性能不合适
( T, s3 I$ n, a, a# l% X1 o
不合适做时间性能很高(高速算法)或空间性能很灵活(内存立即释放)的程序,因为中间语言和编译过程,比C/C++Native类型的语言会慢一些,内存自动回收难以立即释放不需要的内存,不采用内联函数和析构函数(不建议)。
4 O3 [+ w5 D+ ]9 ~# }3 b
2.Windows平台以外支持有限
3 \) `. u3 f" {
mono不够成熟好用,window以外Java,Python等是很强大和同样优秀的。
9 `. e4 M+ {5 ?2 O
) e/ _. g2 y1 Q+ y9 S- }4 R$ M
五、MATLAB——一种面向数值计算的高级程序设计语言
. J2 Y3 W8 e' }8 V q. w# M4 {
MATLAB和它的开源亲戚(例如Octave)在一些机器人专家中非常有名,是他们负责调查数据和创建控制系统常用的语言。还有一个非常有名的MATLAB机器人工具箱。使用MATLAB单独创建整个机器人系统的人员。如需要分解数据,创建高级图表或执行控制系统,那就很可能需要学习MATLAB。
1 e: c6 [" Z, E8 y/ l% w
MATLAB优点:
% T' B2 U" N; t; r, k t- c% k
1.编程效率高
$ p3 M7 R+ l! E: L. @' H
MATLAB语言为演算纸式科学算法语言,由于它编程简单,所以编程效率高,易学易懂。
* T' \9 T! W" \; q) |. _
2.高效方便的矩阵和数组运算
1 _+ y K! ]* z4 x9 Y5 Q7 ~
MATLAB语言像BASIC、C语言一样规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以毫无改变的照搬到数组建的运算中。
8 J h( A6 T; [- o8 {" C
MATLAB缺点:
^' }" @" b: V' t8 a+ G9 j
1.循环运算效率低。
. B3 j4 q0 U9 s) L
MATLAB中所有的变量均为向量形式,这样一方面在对向量进行整体的计算时,表现出其他语言难以表现出的高效率,但是对于向量中的单个元素,或是将向量作为单个的循环变量来处理时,其处理过程相当的复杂。
$ |, M. V! E$ ]5 p
2.封装性不好。
) P3 V8 y# c. C: c+ Y# Z0 k
一方面,所有的变量均保存在公共工作区中,任何语句都可以调用。另一方面,作为一个完备的软件,而不是实现算法的程序,编程人员在使用MATLAB时需要花相当多的时间考虑如何设计用户界面。
5 ^5 C* l! ^. a. s- w+ x$ X
本文为大家列举了机器人编程比较热门的5种语言,但这并不意味着需要全部掌握,对于开发者来说,发现一种对自身来说很自然的语言更为重要,且适合你的机器人硬件,使你能快速上手。在这里建议先学习Python,Python是一门相对简单易懂的语言,有许多有效的库可供学习,且功能非常强大。
8 j, p9 |: a* w" ]
2 W. V9 E/ l2 Q4 F
5 R; ^, q1 h% c# }# @# @
作者:
前景钱
时间:
2019-3-1 16:59
自问自答
作者:
KingL
时间:
2019-3-7 21:31
作者:
KingL
时间:
2019-3-7 21:31
楼主真厉害
作者:
风中不眠的烛火
时间:
2019-3-14 10:44
python感觉不适合新手,只能会用,但不知道为什么,只好转学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
( r6 f: R8 v4 Z/ N; l& a: S
楼主真厉害
欢迎光临 机械必威体育网址 (//www.szfco.com/)
Powered by Discuz! X3.4