机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 3420|回复: 8
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2019-3-1 14:41:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
: P4 b8 ]4 I8 Z% m4 b4 I* X
机器人编程语言最早于20世纪70年代初期问世,到目前为止已有多种编程语言出现,在众多机器人编程语言中究竟哪种编程语言最好呢?这个问题困扰了很多新手学者,但遗憾的是,这是一个没有准确答案的问题,你问不同的人会得到不同的答案,对于机器人学者来说建立“编程思维“才是最关键的,而不是用一种特定语言去衡量,在很多方面,学习哪种机器人编程语言并不是最重要的,重要的是通过编程思维来不断提升自己的技能。5 Q7 d9 f( J2 ~. S7 f
回到本文主题,我们将为大家介绍机器人研发中比较主流的5种机器人编程语言,并对他们的优缺点进行分析。  b$ f% p3 }1 p0 l" M

! V, G4 C) @, I4 {! f: R9 I% v; C: I一、Python——一种动态的、面向对象的脚本语言/ k/ O* r3 c' f: n: b& w# G
在机器人研究领域,Python 占据了重要地位。其中一个原因很可能是 Python(和C ++)是ROS中的两种主要编程语言。像JAVA一样,它是一种解释性语言。但也不同于JAVA,Python 语言主要集中在可用性上。
- f4 f% ~$ R9 a; D# V/ J0 W! F% g' B+ c/ o: e
Python优点:
  A$ j, P- o5 v1 X1.更易入门- R2 b- F9 ]6 ^! m! }+ b9 A9 R
Python程序简单易懂,初学者学Python更易入门且深入下去可编写非常复杂的程序,且开发效率高,有非常强大的第三方库。0 b2 ]: z: D5 t" f# M- [. j! G
2.高级语言3 O& B6 D( a# K2 z, i# b+ g3 Z- k
当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节6 _5 F1 P7 R" g
3.可移植性
! o3 M( e1 o- Z5 M/ q" N. _; o% z由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行
: S  t2 i1 D# m6 c1 T4.可扩展性, U, q- s) S" S2 h
如果需要一段关键代码运行得更快或者希望某些算法不公开,就可将部分程序用C或C++编写,然后在你的Python程序中使用它们。) ?0 ^( K$ k' k  a% t) c

; ~4 b0 I/ d( s/ S( \8 y( SPython缺点:
3 j4 X: |0 H- H& Z/ P1.运行速度慢
# O( E* ]9 d' r+ TPython的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些。
& ]. W, N1 p6 B/ E2 ~6 B: ~2.线程不能利用多CPU问题
& ]9 j9 _5 \" l7 P% M这是Python被人诟病最多的一个缺点。* B8 B# v+ r; [( b. v1 d
/ Y, V( w: B& L% D# v# u
二、C /C ++——大多数中国程序员的第一个语言6 I! f5 z: y7 }  J
C++语言是从C语言发展过来的,是一门面向对象的语言,它继承了C语言的优势。很多人都认为 C 和 C ++ 对机器人科学家来说是一个很好的开端。因为大部分的硬件库使用这些语言,允许实时性能,是非常成熟的编程语言。" Y0 z& w) I% @, s2 L' f4 H
C /C ++优点:) n0 }  {! m: K, {1 Q5 ?( h
1.跨平台性好$ c) ^9 Q8 Z: G0 P1 l
C/C++可以潜入任何现代处理器中,几乎所有的操作系统都支持,跨平台性非常好。5 _, M- U! Y3 ?' k! P4 j; l; W
2.运行效率高7 H) a8 C. b0 V) I$ M4 z
C语言体型小巧,简洁高效并且接近汇编语言,C++功能在C的基础上增加面向对象的特点,代码可读性好,运行效率高。
2 _2 ?) U) |! R3.语言简洁,编写风格自由
5 W; r! d$ o  F! E) V1 D  X. z8 l兼有高级语言与汇编语言的优点,语言简洁、紧凑,使用方便、灵活丰富的运算符和数据类型,能访问内存地址和位操作等硬件底层操作,生成的目标代码质量高。
) ~" a  G" J, U6 h5 f( F
3 O$ C# u3 l( }* s6 ]9 H- h; @# eC/C++缺点:* Y/ a+ x7 ?: p) A3 j
1.无垃圾回收机制
% s" A$ C5 v& L" t4 |相对于JAVA来说,没有垃圾回收机制,容易引发内存泄露6 {+ I  ?/ t5 W4 x! L2 ?8 Y
2.学习较困难! O7 V1 W& y6 g+ q: c
从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些。
% A+ t8 q1 g$ Z/ C3.数据安全性上有缺陷/ D" L# b. L( g6 p8 C
C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。 
! K8 q" M& X# j1 [4 R
$ i% x& v1 ]3 l三、JAVA——世界上使用范围最广的语言/ W2 Q5 g9 O* p
JAVA语法规则和C++类似,从某种意义上来说,JAVA是由C和C++语言转变而来的。像C#和MATLAB一样,JAVA是一种解释性语言,这意味着它不会被合并到机器语言代码中。相反,JAVA虚拟机在运行时解释指令。理论上来说,基于JAVA虚拟机,使用JAVA可以在不同机器上使用类似的代码。但实际上,这并不普遍使用,有时会导致代码运行缓慢,但是JAVA编程语言在机器人研究中非常流行。
1 M; @  _9 Y1 r* }
JAVA优点:
5 `  m( t# c( u# Q  L7 U1.更易学习
! w9 }( u4 @: F! `3 G9 A由于JAVA语言与C语言和C++语言比较接近,使大多数程序员学起来更简单。' P- |/ ^% C- g8 C
2.支持动态绑定7 n6 ?9 N- N' b. V" o, H/ B) |. _$ g
JAVA语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。  j; n5 M6 X/ R8 {8 j, D
3.支持Internet应用开发
) t6 I' \, N: q7 F# tJAVA语言支持Internet应用的开发,在基本的JAVA应用编程接口中有一个网络应用编程接口(JAVA.net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。- R2 s$ l9 x& p+ o. D
4.更安全
7 ]' R3 E. W, H6 ?JAVA语言提供了一个安全机制以防止恶意代码的共计,相对来说更安全。
$ x( \* f/ Z: C/ o5.具有可移植性
7 p- G# q8 A3 Z5 {JAVA语言是可移植的,这种可移植性来源于体系结构中立性,另外,JAVA还严格规定了各个基本数据类型的长度。
1 ?6 ^6 t/ `' U( ?* S" M6 s; Y! n+ |" n5 q
JAVA缺点:
. e0 X; G+ K2 `6 r* b# X& H1.运行需要安装JAVA虚拟机
! b1 a) z) ?$ u0 \  j% O: uJAVA语言最大的缺点就是运行JAVA程序需要装JAVA虚拟机,就这一条严重的影响了JAVA应用程序的使用,基本看不到JAVA的应用程序。
. [5 m! T; a6 }# }1 c( o$ j, _2.运行成本较高, a; g8 e8 @  x
另外JAVA程序的运行成本比较高,过去机器配置不够高的时候,JAVA显得很慢现在随着JAVA本身的版本升级和电脑性能的强化这条基本已经不是问题了。" D5 W  H- c' C0 H  D8 d
0 F( S# ^9 L; b- ]8 c8 M
四、C#/.NET——微软提供的一种限制性编程语言
# `$ U. z5 G# B7 W; g8 D6 ~C#/ .NET很大程度上是为微软机器人工程师工作室提供的,微软机器人工程师工作室将其作为基本语言。如果使用这个框架,就必须学习 C#。- H7 A7 S# o1 A3 `8 [7 }
C#/.NET优点:
, Z3 G3 l0 b! P' h+ }1.强大的.Net Framework托管代码集合类- i% D* n+ P0 o. I' H& R
,封装了大多数windows上使用的技术组件类, 文件系统,UI界面,数据源访问,网络访问,COM互操作(图形图像多媒体,WPF图形系统),没有的可以通过.net的平台调用win API函数来得到。5 o2 m/ {) L/ h/ j( b
2.较简单的语言特性
: d/ z4 q2 x: h8 u9 `自动内存管理, 单继承,支持事件、委托、属性、Linq等一系列让业务开发更简单的功能。/ c: u" s( Z' u2 g
3.Web应用程序开发速度快/ d+ [* U- X4 x
Web应用程序开发速度快(.net框架的支持,控件可以拖拉(UI方便编辑和定位),添加事件(跳转到控制逻辑层),ADO.net数据源访问, xml 网络类库, windows服务)。6 q; D/ p4 y/ f. _$ [  T
4.和语言平台无关的编译机制及较快的运行速度6 E5 v( d/ r! W  g1 @4 v
和语言平台无关的编译机制,及较快的运行速度(ms不推荐, mono的 Xamarin, Unity还不错):编译成IL中间语言,CLR公共语言运行库托管代码,CLR根据运行时程序需要将IL中间语言用JIT即时编译方式编译为内部机器代码,对编译好的机器代码缓存起来,提高了程序速度。: C$ J6 j0 C/ V6 W  @& a" {) j
5.代码安全性  o$ p4 y3 P8 _9 C
window是基于角色的安全机制,.net提供了基于代码的安全机制,由于中间语言提供了类型安全性,CLR在运行前检查代码,确定是否有需要的安全权限,CLR没有权限则不能执行该代码。
! \" v" s0 O& n7 I7 o
1 @8 a0 H0 H. N# yC#/.NET缺点:
6 @# t% U* x& ]6 ?1 m  N: j: T1.底层和高性能不合适, Y. a2 D% N: e( C
不合适做时间性能很高(高速算法)或空间性能很灵活(内存立即释放)的程序,因为中间语言和编译过程,比C/C++Native类型的语言会慢一些,内存自动回收难以立即释放不需要的内存,不采用内联函数和析构函数(不建议)。
/ L- H; B# J) k/ N& ?. ^2.Windows平台以外支持有限
, ?8 y$ u1 }/ T4 C( U7 d" x  Mmono不够成熟好用,window以外Java,Python等是很强大和同样优秀的。
* n" H) R: n  y: o9 u  g' E! v) s0 ~( K0 t
五、MATLAB——一种面向数值计算的高级程序设计语言- G/ q- ~) i. k- G! `8 o
MATLAB和它的开源亲戚(例如Octave)在一些机器人专家中非常有名,是他们负责调查数据和创建控制系统常用的语言。还有一个非常有名的MATLAB机器人工具箱。使用MATLAB单独创建整个机器人系统的人员。如需要分解数据,创建高级图表或执行控制系统,那就很可能需要学习MATLAB。
+ G( O6 o5 G! Z! |. O/ Y' ]: ^
MATLAB优点:
" t4 i; C) C& ]( y/ f  X# r1.编程效率高
" [8 E7 N7 y" c% c; ^& FMATLAB语言为演算纸式科学算法语言,由于它编程简单,所以编程效率高,易学易懂。
3 E8 F5 y: R2 n: M" @) ^2.高效方便的矩阵和数组运算# g% _: ?4 S. u6 z
MATLAB语言像BASIC、C语言一样规定了矩阵的算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符,而且这些运算符大部分可以毫无改变的照搬到数组建的运算中。
: j2 I0 ]% P, h6 M! uMATLAB缺点:
5 o; Q* j- q  J1.循环运算效率低。0 q. P7 R- v/ \- [: f
MATLAB中所有的变量均为向量形式,这样一方面在对向量进行整体的计算时,表现出其他语言难以表现出的高效率,但是对于向量中的单个元素,或是将向量作为单个的循环变量来处理时,其处理过程相当的复杂。
5 ~+ z+ v) t) r  }% c5 L! n2.封装性不好。
* p- Q# H- V) u0 w: o* ^& n$ f一方面,所有的变量均保存在公共工作区中,任何语句都可以调用。另一方面,作为一个完备的软件,而不是实现算法的程序,编程人员在使用MATLAB时需要花相当多的时间考虑如何设计用户界面。: l3 t! Z" H1 j; q: h
本文为大家列举了机器人编程比较热门的5种语言,但这并不意味着需要全部掌握,对于开发者来说,发现一种对自身来说很自然的语言更为重要,且适合你的机器人硬件,使你能快速上手。在这里建议先学习Python,Python是一门相对简单易懂的语言,有许多有效的库可供学习,且功能非常强大。- V( t, i4 p0 H
5 T( E3 g( f% n

$ V4 e: @4 C. E+ t
回复

使用道具 举报

2#
发表于 2019-3-1 16:59:20 | 只看该作者
自问自答
回复

使用道具 举报

3#
发表于 2019-3-7 21:31:21 | 只看该作者
回复

使用道具 举报

4#
发表于 2019-3-7 21:31:59 | 只看该作者
楼主真厉害
回复 支持 反对

使用道具 举报

5#
发表于 2019-3-14 10:44:53 | 只看该作者
python感觉不适合新手,只能会用,但不知道为什么,只好转学c++了?
回复 支持 反对

使用道具 举报

6#
发表于 2019-4-22 12:24:56 | 只看该作者
C++和Python吧。
回复 支持 反对

使用道具 举报

7#
发表于 2019-4-23 18:02:18 | 只看该作者
大大的赞,就一个字
回复 支持 反对

使用道具 举报

8#
发表于 2019-4-24 13:52:24 | 只看该作者
个人比较喜欢Python
回复 支持 反对

使用道具 举报

9#
发表于 2019-4-25 18:39:02 | 只看该作者
; ^4 U$ g9 K; n1 F% v
楼主真厉害
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-12-25 02:05 , Processed in 0.047976 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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