sta*_*zel 34 labview robotics graphical-language
我是高中机器人团队的一员,对于使用哪种语言来编程机器人存在争议.我们在C(或C++)和LabVIEW之间进行选择.每种语言都有优点.
C(++):
LabVIEW的
这对我们来说是一个非常困难的决定,我们已经讨论了一段时间.基于每种语言的专业知识,以及您获得的经验,您认为更好的选择是什么?请记住,我们不一定要追求纯粹的效率.我们也希望为程序员的未来编程做好准备.
也:
感谢您的建议!
编辑:我想更多地强调这个问题:团队队长认为LabVIEW更易于学习和教学. 真的吗? 我认为C可以很容易地教授,初级水平的任务仍然可以用C.我真的很想听听你的意见. 是否有任何理由在{}之前打字比创建"while box"更困难? 是不是直观的程序逐行流动,只是由ifs和循环修改,因为直观的程序流过电线,只是由ifs和循环修改!?
再次感谢!
编辑:我刚才意识到这属于"语言辩论"的主题.我希望它没关系,因为它是针对具体目标的特定编程分支的最佳选择.如果不是......我很抱歉......
Bre*_*dan 32
在我到达之前,我们的小组(博士科学家,几乎没有编程背景)一直试图实现LabVIEW应用程序开启和关闭近一年.代码不整洁,太复杂(前端和后端),最重要的是,没有用.我是一名敏锐的程序员,但从未使用过LabVIEW.借助LabVIEW大师的帮助,他可以帮助翻译我熟悉LabVIEW概念的文本编程范例,可以在一周内编写应用程序代码.这里的要点是仍然需要学习基本的编码概念,语言,甚至像LabVIEW这样的语言,只是表达它们的一种不同方式.
LabVIEW非常适合用于最初设计的内容.即从DAQ卡中获取数据并将其显示在屏幕上,或许可以在其间进行一些小的操作.但是,编程算法并不容易,我甚至认为它更难.例如,在大多数过程语言中,执行顺序通常是逐行跟随,使用伪数学符号(即y = x*x + x + 1),而LabVIEW将使用一系列VI来实现它,这些VI不一定相互跟随(即从左到右)在画布上.
此外,编程作为一种职业不仅仅是了解编码的技术性.能够有效地寻求帮助/搜索答案,编写可读代码并使用遗留代码都是关键技能,这在LabVIEW等图形语言中无疑是比较困难的.
我相信图形编程的某些方面可能成为主流 - 子VI的使用完美地体现了编程的"黑盒子"原理,也用于其他语言抽象,如Yahoo Pipes和Apple Automator - 也许还有一些未来的图形语言将彻底改变我们编程的方式,但LabVIEW本身并不是语言设计的大规模转变,我们仍然有while, for, if流控制,类型转换,事件驱动编程,甚至是对象.如果未来真的将用LabVIEW编写,C++程序员将不会遇到太多麻烦.
作为后记,我会说C/C++更适合机器人技术,因为学生们无疑必须在某些时候处理嵌入式系统和FPGA.低级编程知识(位,寄存器等)对于这种事情是非常宝贵的.
@mendicant实际上LabVIEW在工业中被广泛使用,特别是对于控制系统.授权NASA不太可能将它用于机载卫星系统,但随后太空系统的软件开发是一个完全不同的球类游戏 ......
onn*_*odb 11
我在目前正在研究的研究小组中遇到过类似的情况.它是一个生物物理小组,我们正在使用LabVIEW来控制我们的仪器.这非常有用:可以轻松组装UI来控制仪器的各个方面,查看其状态并保存数据.
现在我不得不停止写5页咆哮,因为对我来说,LabVIEW一直是个噩梦.让我试着总结一些优点和缺点:
免责声明我不是LabVIEW专家,我可能会说有偏见,过时或只是错误的东西:)
(最后两点让一个项目的团队工作变得困难.这在你的案例中可能很重要)
至于你的"我应该编写自己的模块"问题:我不确定.取决于你的时间限制.如果你不需要,不要花时间重新发明轮子.花太多时间编写低级代码然后意识到你已经没时间了.如果这意味着你选择LabVIEW,那就去吧.
如果有简单的方法将LabVIEW与C++结合起来,我很乐意听到它:这可能会给你两全其美,但我怀疑它有.
但请确保您和您的团队花时间学习最佳实践.看着对方的代码.互相学习.编写可用,易懂的代码.玩得开心!
并请原谅我听起来前卫,也许有点迂腐.只是LabVIEW 对我来说真是个噩梦:)
我认为LabVIEW的选择取决于你是否想要学习用常用语言编程作为一种有市场的技巧,或者只是想完成这些工作.LabVIEW使您能够非常快速有效地完成工作.正如其他人所观察到的那样,它并没有神奇地让你不必理解你正在做的事情,如果不这样做,很可能会造成一种不圣洁的混乱 - 虽然有趣的是,LabVIEW中糟糕的编码风格最糟糕的例子是通常由具有文本语言经验并且拒绝适应LabVIEW工作方式的人员执行,因为他们已经知道如何编程,该死的!
当然,这并不意味着LabVIEW编程不是一种适销对路的技能; 只是它不像C++那样大众市场.
LabVIEW可以非常轻松地管理并行执行的各种操作,在机器人控制情况下您可能会遇到这种情况.应该是顺序的代码中的竞争条件也不应该是一个问题(即如果它们是,你做错了):有一些简单的技术可以确保在必要时以正确的顺序发生事情 - 链接子VI使用错误连线或其他数据,使用通知程序或队列,构建状态机结构,甚至在必要时使用LabVIEW的序列结构.同样,这只是花时间了解LabVIEW中可用的工具以及它们如何工作的情况.我不认为必须制作子VI图标的抱怨非常有针对性; 你可以非常快速地创建一个包含几个文字的文字,也许带有背景颜色,
"图形语言是未来的方式"是基于错误二分法的红色鲱鱼.有些东西非常适合图形语言(例如并行代码); 其他东西更适合文本语言.我不希望LabVIEW和图形编程要么消失,要么接管世界.
顺便说一句,如果NASA 没有在太空计划中使用LabVIEW ,我会非常惊讶.最近有人在Info-LabVIEW邮件列表中描述了他们如何使用LabVIEW开发和测试波音787上由电动机驱动的飞行表面的闭环控制,并给人的印象是LabVIEW在飞机的开发中被广泛使用.它也用于大型强子对撞机的实时控制!
除了National Instruments自己的网站和论坛之外,目前获取更多信息和帮助LabVIEW的最活跃的地方似乎是LAVA.