找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3978|回复: 8

机器人有哪些热门编程语言?

[复制链接]
发表于 2019-3-1 14:41:31 | 显示全部楼层 |阅读模式

/ N' {; d0 K) k1 [* t机器人编程语言最早于20世纪70年代初期问世,到目前为止已有多种编程语言出现,在众多机器人编程语言中究竟哪种编程语言最好呢?这个问题困扰了很多新手学者,但遗憾的是,这是一个没有准确答案的问题,你问不同的人会得到不同的答案,对于机器人学者来说建立“编程思维“才是最关键的,而不是用一种特定语言去衡量,在很多方面,学习哪种机器人编程语言并不是最重要的,重要的是通过编程思维来不断提升自己的技能。7 X% `! M" t- u4 W0 Q
回到本文主题,我们将为大家介绍机器人研发中比较主流的5种机器人编程语言,并对他们的优缺点进行分析。4 _9 x& o/ Q* x; V0 x$ X1 U& A
- B. P) X' X, a; d' w2 T% ^1 B; {" j
一、Python——一种动态的、面向对象的脚本语言
. z+ q1 ~  E, r2 H( A, W  b在机器人研究领域,Python 占据了重要地位。其中一个原因很可能是 Python(和C ++)是ROS中的两种主要编程语言。像JAVA一样,它是一种解释性语言。但也不同于JAVA,Python 语言主要集中在可用性上。
1 i5 ~2 M) F( h! O& J4 N. }  c0 U1 n6 Y( W9 g6 ]; \
Python优点:2 h* t& b7 v! j( e7 |
1.更易入门4 p$ @8 i- z9 s: S6 B5 T! k( T
Python程序简单易懂,初学者学Python更易入门且深入下去可编写非常复杂的程序,且开发效率高,有非常强大的第三方库。9 N9 N( R+ h" a3 o8 @( b- h$ M% f
2.高级语言
: e. W( ?. z! g. r; W9 |8 s* Q当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节4 Z3 \! Z* U  ]' X9 i
3.可移植性- S8 I* J; ?5 `) S% c( B( \, P
由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行/ z3 p, e# ~; Y8 Z6 f. {
4.可扩展性/ c, W% a: H( U. O
如果需要一段关键代码运行得更快或者希望某些算法不公开,就可将部分程序用C或C++编写,然后在你的Python程序中使用它们。
9 O4 {/ R. W6 {2 U& Q: [
- k! ~* S7 y2 Z1 m2 r3 U* _0 x) I9 HPython缺点:# R( F6 W* }6 H9 ^: C; n- r& q7 h9 Y- I
1.运行速度慢( i+ A7 I3 u6 @4 W) H
Python的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些。+ Y. p# O, J0 k8 c" s& R
2.线程不能利用多CPU问题$ ^7 I% t0 G% @, I! i9 U+ Y
这是Python被人诟病最多的一个缺点。( T9 ~) J6 g4 V: I

5 b. [9 j7 E) M4 y二、C /C ++——大多数中国程序员的第一个语言
$ o% G; p- ]. T! k/ R# X5 [, aC++语言是从C语言发展过来的,是一门面向对象的语言,它继承了C语言的优势。很多人都认为 C 和 C ++ 对机器人科学家来说是一个很好的开端。因为大部分的硬件库使用这些语言,允许实时性能,是非常成熟的编程语言。3 r0 r4 o" P! N2 o( y8 P, C/ R! t
C /C ++优点:
* a5 c( p& P" |( G; s1.跨平台性好
# t+ m4 g4 Z9 P" \9 h" O+ PC/C++可以潜入任何现代处理器中,几乎所有的操作系统都支持,跨平台性非常好。3 T0 C& Y1 v* ^# I
2.运行效率高
1 x4 w- o/ r! z$ B8 g, |* RC语言体型小巧,简洁高效并且接近汇编语言,C++功能在C的基础上增加面向对象的特点,代码可读性好,运行效率高。% S9 V: r" `: T4 d) o+ c
3.语言简洁,编写风格自由
& n/ X. j- e2 B& U兼有高级语言与汇编语言的优点,语言简洁、紧凑,使用方便、灵活丰富的运算符和数据类型,能访问内存地址和位操作等硬件底层操作,生成的目标代码质量高。
4 R4 c% T- [1 U- \9 a
! m' X' |# y) O/ w8 cC/C++缺点:- U0 R8 i- K5 v3 t7 q  C# c* P- y
1.无垃圾回收机制
3 j  ]" `( R) i7 O相对于JAVA来说,没有垃圾回收机制,容易引发内存泄露# b8 d& a0 Z8 F' ^/ B9 B
2.学习较困难8 @  N9 ?/ s; M' G
从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
( M9 k, J" a& z0 o; K* ]  `. G3.数据安全性上有缺陷  m  B+ U6 [8 L7 A1 f5 R9 ^
C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。 
3 J: y1 Z2 w. i+ m- E: W4 o5 ]5 H
3 X) l3 r3 G7 Y/ X. J/ r三、JAVA——世界上使用范围最广的语言+ M; S, o" [! {$ F% J/ B0 E
JAVA语法规则和C++类似,从某种意义上来说,JAVA是由C和C++语言转变而来的。像C#和MATLAB一样,JAVA是一种解释性语言,这意味着它不会被合并到机器语言代码中。相反,JAVA虚拟机在运行时解释指令。理论上来说,基于JAVA虚拟机,使用JAVA可以在不同机器上使用类似的代码。但实际上,这并不普遍使用,有时会导致代码运行缓慢,但是JAVA编程语言在机器人研究中非常流行。8 V5 @( c) r2 O
JAVA优点:
0 [% O' ]- F5 F. @- _1.更易学习
. i0 y6 \; o% b" [" p6 t5 w由于JAVA语言与C语言和C++语言比较接近,使大多数程序员学起来更简单。1 W2 l; N* L. [1 E. E& F8 c
2.支持动态绑定
8 S% d' E9 L  d+ S5 {: IJAVA语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。
  G8 s% |3 _; M5 d3.支持Internet应用开发& g9 U2 H- q; x: Y- ^/ j5 I
JAVA语言支持Internet应用的开发,在基本的JAVA应用编程接口中有一个网络应用编程接口(JAVA.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。9 R: y; F, Y8 b6 v
4.更安全( a  {* P0 h0 L0 p
JAVA语言提供了一个安全机制以防止恶意代码的共计,相对来说更安全。! [2 J8 \6 T0 u& A" o
5.具有可移植性
8 T6 T1 r+ j0 r2 K6 s0 |JAVA语言是可移植的,这种可移植性来源于体系结构中立性,另外,JAVA还严格规定了各个基本数据类型的长度。
9 u- ~/ k, a  J
& H" X! d) a. p, rJAVA缺点:
1 J3 V2 F- W  g' Z) W1.运行需要安装JAVA虚拟机
" {" m5 n2 ^: K- A5 c8 e3 t* n, I7 fJAVA语言最大的缺点就是运行JAVA程序需要装JAVA虚拟机,就这一条严重的影响了JAVA应用程序的使用,基本看不到JAVA的应用程序。
0 v4 Y  Q$ d, M- |' x4 f( P$ S) |2.运行成本较高
4 C" l+ N9 U7 z9 Y9 C* x另外JAVA程序的运行成本比较高,过去机器配置不够高的时候,JAVA显得很慢现在随着JAVA本身的版本升级和电脑性能的强化这条基本已经不是问题了。1 r# ^; m% q  S2 K* u1 b

2 M0 @& {, j7 ^3 [四、C#/.NET——微软提供的一种限制性编程语言0 S* x, n8 a$ m* G
C#/ .NET很大程度上是为微软机器人工程师工作室提供的,微软机器人工程师工作室将其作为基本语言。如果使用这个框架,就必须学习 C#。! ^1 a7 P# [& l% R$ t# ^
C#/.NET优点:
: N) G/ m/ D( w1.强大的.Net Framework托管代码集合类
" V: _9 ]" ]2 ~& e" O,封装了大多数windows上使用的技术组件类, 文件系统,UI界面,数据源访问,网络访问,COM互操作(图形图像多媒体,WPF图形系统),没有的可以通过.net的平台调用win API函数来得到。
2 J& I8 d$ r. m$ R6 A: t( T+ P% v9 I2.较简单的语言特性1 @' Y6 j7 @9 c7 o% t
自动内存管理, 单继承,支持事件、委托、属性、Linq等一系列让业务开发更简单的功能。
% k0 {# C0 F+ I/ P* \- d( V7 v- Q- A3.Web应用程序开发速度快
; E. I8 {: d' T% c: j* C0 \- `8 FWeb应用程序开发速度快(.net框架的支持,控件可以拖拉(UI方便编辑和定位),添加事件(跳转到控制逻辑层),ADO.net数据源访问, xml 网络类库, windows服务)。
! I/ i* s9 p, o$ A$ y! V- r4.和语言平台无关的编译机制及较快的运行速度. g* y, `( u5 k- ?+ \% Z+ ]2 `
和语言平台无关的编译机制,及较快的运行速度(ms不推荐, mono的 Xamarin, Unity还不错):编译成IL中间语言,CLR公共语言运行库托管代码,CLR根据运行时程序需要将IL中间语言用JIT即时编译方式编译为内部机器代码,对编译好的机器代码缓存起来,提高了程序速度。
- r0 ?" C/ O. b& s, V# M; ?5.代码安全性. b* i7 ]- V' p* A6 }) I; q/ w! f
window是基于角色的安全机制,.net提供了基于代码的安全机制,由于中间语言提供了类型安全性,CLR在运行前检查代码,确定是否有需要的安全权限,CLR没有权限则不能执行该代码。; R* w9 B9 Z  g# P) B5 ~& H1 B" ^1 J  {
1 L- M+ X% y2 a4 a- T' M7 s0 C
C#/.NET缺点:
  V. h  B# h/ X: c1.底层和高性能不合适! V6 C/ f9 V/ {$ \- C' Z
不合适做时间性能很高(高速算法)或空间性能很灵活(内存立即释放)的程序,因为中间语言和编译过程,比C/C++Native类型的语言会慢一些,内存自动回收难以立即释放不需要的内存,不采用内联函数和析构函数(不建议)。
* T' ]* R% b0 ]) G2.Windows平台以外支持有限
- h7 e( e( D- S& q: c3 Q( Z" Qmono不够成熟好用,window以外Java,Python等是很强大和同样优秀的。
" U  |! L3 v2 F
- l0 ~, ?/ m# q# E: V. E1 I五、MATLAB——一种面向数值计算的高级程序设计语言
2 Z" c0 E2 M4 q, P: T6 W# nMATLAB和它的开源亲戚(例如Octave)在一些机器人专家中非常有名,是他们负责调查数据和创建控制系统常用的语言。还有一个非常有名的MATLAB机器人工具箱。使用MATLAB单独创建整个机器人系统的人员。如需要分解数据,创建高级图表或执行控制系统,那就很可能需要学习MATLAB。, I  q7 {7 [& s6 S) G8 Q. O! U" N5 `
MATLAB优点:- G; d. G! X6 h) l  w  q( b, Y$ A
1.编程效率高7 p& N0 @% J; i- z( _
MATLAB语言为演算纸式科学算法语言,由于它编程简单,所以编程效率高,易学易懂。6 U( [3 y: m) y& z0 e
2.高效方便的矩阵和数组运算& ]3 L8 g4 ^: A0 c
MATLAB语言像BASIC、C语言一样规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以毫无改变的照搬到数组建的运算中。
1 [& J; h' S% x4 Y0 |, |MATLAB缺点:
  c" m2 |( ^; {! ?" B6 S1.循环运算效率低。# R2 Q) U- p5 ?! r! w% `6 J/ T
MATLAB中所有的变量均为向量形式,这样一方面在对向量进行整体的计算时,表现出其他语言难以表现出的高效率,但是对于向量中的单个元素,或是将向量作为单个的循环变量来处理时,其处理过程相当的复杂。
0 N! N' h- C8 ]0 ^2.封装性不好。
; {$ r5 [2 D% _( t4 r一方面,所有的变量均保存在公共工作区中,任何语句都可以调用。另一方面,作为一个完备的软件,而不是实现算法的程序,编程人员在使用MATLAB时需要花相当多的时间考虑如何设计用户界面。
! Y/ j: b0 j; \: T5 Q本文为大家列举了机器人编程比较热门的5种语言,但这并不意味着需要全部掌握,对于开发者来说,发现一种对自身来说很自然的语言更为重要,且适合你的机器人硬件,使你能快速上手。在这里建议先学习Python,Python是一门相对简单易懂的语言,有许多有效的库可供学习,且功能非常强大。
$ {) V; s: [$ A: f; E" ~) _( B
) Y. s# e: s8 }3 ?( [, U+ v7 g; p" {$ U5 J' d* j
回复

使用道具 举报

发表于 2019-3-1 16:59:20 | 显示全部楼层
自问自答
回复

使用道具 举报

发表于 2019-3-7 21:31:21 | 显示全部楼层
回复

使用道具 举报

发表于 2019-3-7 21:31:59 | 显示全部楼层
楼主真厉害
发表于 2019-3-14 10:44:53 | 显示全部楼层
python感觉不适合新手,只能会用,但不知道为什么,只好转学c++了?
发表于 2019-4-22 12:24:56 | 显示全部楼层
C++和Python吧。
发表于 2019-4-23 18:02:18 | 显示全部楼层
大大的赞,就一个字
发表于 2019-4-24 13:52:24 | 显示全部楼层
个人比较喜欢Python
发表于 2019-4-25 18:39:02 | 显示全部楼层
; x4 B6 X! T; k8 m6 q6 I
楼主真厉害
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Archiver|手机版|小黑屋|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2025-9-20 08:11 , Processed in 0.065664 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表