Dav*_*lle 20 lisp python embedded erlang robotics
嵌入式设备和机器人最需要的软件语言技能似乎是C,C++和LISP.为什么没有更多的近期语言进入这些应用程序?
例如,Erlang似乎特别适合机器人应用程序,因为它使并发编程更容易,并允许热交换代码. 如果没有其他原因支持多种编程范例,Python似乎是有用的.我甚至对Java没有涉足通用机器人编程感到惊讶.
我确信有一个论点是"一些较新的语言被解释,而不是编译" - 这意味着编译语言更快,并且使用更少的计算资源.在我们可以将Java虚拟机放在手机或SunSpot上的时候,情况仍然如此吗?(并不是LISP解释?)
amo*_*amo 49
我曾经建立了一个基于Java的机器人.垃圾收集到了墙上.
如果您要运行的流程无法进行微观管理(例如,基于Linux的系统),那么他们必须知道如何屈服于某些高优先级流程,如运动控制.所以要么你自己用C语言这样的低级语言,要么就是使用RTOS.
Ste*_*e S 27
正如其他人已经指出的那样,使用C和C++是因为它们是低级的.C流行的另一个原因是几乎每个架构都有一个针对它的C编译器.这对很多人来说已经足够了,所以额外的努力通常不会用于其他语言.这有点像说C很受欢迎,因为C很流行,但是嘿,这就是事情的运作方式.
LISP变体在机器人技术中很受欢迎,部分原因是LISP变体在AI研究中一直很受欢迎.AI是机器人技术的一个主要焦点,因此很多东西都会从这个领域转移.
据维基百科称,LISP已存在很长时间了 - 1958年.它比大多数其他高级语言有更多的历史,这有两个重要的含义:1)LISP比其他高级语言更稳固地建立(在它常用的领域)和2)LISP解释器已经制作在各种资源有限的硬件上运行(参见下一个要点).
对于LISP变体,解释器比许多其他高级语言更容易实现,并且它们可以合理地有效.例如,Scheme在概念上和在CPU中都是一种非常容易解析的语言.
要知道为什么其他语言都没有,在嵌入式编程站稳脚跟,只是采取的是C,C++和LISP的原因相反也有一个强大的立足点.
它们在这个领域尚未普及,因此不会付出努力来支持它们.
前几代人没有使用它们,因此不会教新手使用它们.
他们没有太多的历史(在这个领域).他们代表未知.未知是可怕的(而且很难).
他们对有限的硬件征税.
注意:当我谈论有限的硬件时,这就是我的意思:许多嵌入式工作仍然涉及具有256 字节和32千兆字节RAM的系统.具有128 MiB RAM的智能手机不是有限的系统.
小智 14
因为嵌入式设备大多数资源有限,不欢迎使用自动垃圾收集器等奢侈品.C/C++允许您在相当低的级别上工作并在机器附近编程,以便您在这些设备上获得非常需要的有效代码.
Java和.NET等高级语言不能很好地运行的另一个领域是实时操作.由于垃圾收集器在最糟糕的时刻刚刚开始,你不能突然停下来.
Cli*_*ord 12
在嵌入式系统的20年中(包括8年的商业机器人项目),我从未见过Lisp在任何地方使用过,也不会认为它是"普遍的".我见过更多的阿达.我会说这是一个利基,但如果你碰巧在那个利基市场工作,它可能看起来很普遍.
使用C和C++是因为它们是需要最少运行时支持的系统级语言.例如,它们可以在没有操作系统的情况下运行 - 实际上通常用于实现操作系统.
当开发新的处理器体系结构或设备时,C和C++通常是该平台可用的第一个"高级"语言工具(并且通常是唯一可用的) - 通常从第一天开始,并且越来越多地基于GNU GCC.其他语言的可用性不完整或不存在.C和C++技能几乎可以保证在项目和体系结构中可重用.
Jam*_*ack 11
您可以在Mindstorm机器人上使用Java进行机器人技术,MS可以推动机器人技术,但在很大程度上由于资源有限而使用C/C++,并且LISP用于AI,因为很长一段时间这是一个研究和研究人员是LISP的主要用户,因此他们使用了他们所熟悉的语言.
这就是为什么FORTRAN在物理学中如此普遍的原因,例如,人们使用他们所知道的语言,当项目变得商业化时,除非你想从头开始重写,否则你保留原始代码.
Tho*_*sen 11
我曾经在NASA上使用Lisp这个有趣的片段:http: //www.flownet.com/gat/jpl-lisp.html
1994年,JPL开始研究自动航天器控制系统Remote Agent(RA).RA完全是用Common Lisp编写的,尽管转向C++的政治压力不大.有一次尝试将系统的一部分(规划器)移植到C++.这种尝试必须在一年后放弃.基于这种经验,我认为可以说,如果不是Lisp,Remote Agent就会失败.
我的猜测是使用C/C++是因为它们更接近硬件并允许资源感知编程.这通常适用于所有嵌入式项目,而不仅仅是机器人.
然后我猜LISP经常被选中,因为它似乎仍然是人工智能研究中的主要语言.我想,LISP可能用于机器人的更高级别的工作.