我正在学习使用LabVIEW作为我的荣誉项目的一部分,并且想知道这种图形编程语言相对于文本编程语言有哪些优势?
对我而言,LabVIEW的好处不在于图形与文本。
它在于数据流与命令式。
数据流编程更适合并发,因为您的执行被建模为黑盒子,它们在其输入有效时执行,其输入/输出连接在一起。相对于具有修改指令列表的隐式状态。(引用自'kipedia,上面链接的文章更好)。
如果您以数据流方式组织程序,则每个黑盒子都可以在单独的核心/处理器/节点上运行,这为您提供了免费并发。
不幸的是(这是数据流编程普遍存在的一个致命缺陷),最佳的可视化和编辑数据流程序的方法是图形化而非文本化。这使得使用诸如修订控制和代码生成器等工具非常困难。
问题是:对于您和您的项目来说,数据流的优点是否超过了缺点?
我之前使用过LabVIEW来计算参数以调整nMRI机器。这种软件存在的目的在于,在理论上,即使是对编程语言经验有限的人也能轻松创建程序。其控制流和决策结构可以以图形方式排列,并且他们可以在需要的位置输入公式。
对于教授和实验室助手而言...非常有帮助。 对于真正的软件开发人员而言...使用其他编程语言更容易。
这一切都与设备驱动和用户能力有关。NI(Labview)拥有一套良好支持的实验室设备驱动程序,易于接口。测试操作员(非开发人员)需要一个带有大型绿色/红色通过/失败按钮的GUI界面。我已经通过Cygwin中的Python实现了复杂的自动化。Labview开发人员能够调用Cygwin/Python系统并数据挖掘日志文件。因此,两者都可以使用。Python系统是便携、可维护、可扩展、易于使用,最重要的是免费的。
我过去曾经使用过LabView,在数据采集、虚拟仪器等方面,没有比它更好的了。我最后一次使用它是在10年前,自那以后我没有看到任何东西能够与90年代中期的水平相匹配。
内置用户界面组件(如按钮、图形等)完全不需要编程;只需将它们放在前面板上,数据终端就会出现在块图中。
有大量的数据采集硬件和测试仪器驱动程序库。如果你的任务基本上是获取和传输这些数据,并为其提供用户界面,则几乎可以不用编程。
自动处理多个任务的并行执行-在图表上放置两个独立的循环,它们将同时执行。这通常是数据采集和控制应用程序的要求。
许多人,包括“真正的软件开发人员”,认为图形范式比文本范式更适合他们思考和可视化软件。毫无疑问,文本语言比LabVIEW更擅长某些方面(在本站的另一篇讨论中涵盖),但在适当的情况下,LabVIEW非常擅长完成工作。
对我来说,这取决于你自己的舒适程度。如果你习惯使用基于文本的语言,那么你可能会发现Labview只是另一个需要学习的曲线。除非你有特定的目标要学习和使用Labview,否则在你的项目中使用它没有任何意义。
另一方面,如果你不太熟悉基于文本的语言,我倾向于认为Labview更容易上手和学习,尤其是对于非软件工程师。
我经常在测试工程中使用基于文本的语言以及Labview和TestStand,对我来说更重要的是谁会使用我的软件,而不是我自己。一些公司有几个接受过Labview培训的人员,而其他公司则更喜欢使用基于文本的语言进行编写。在公司范围内为另一种语言进行培训可能非常昂贵,并且会改变公司内部职位的招聘要求,因此一些公司实际上“被锁定”在一种范式或另一种范式中。如果你打算在这个行业工作,我建议你最好两种都精通,这样你就很灵活了。如果是这种情况,并且你有时间学习其中一种,我建议你选择你最不熟悉的那种,并扩展你的知识广度,毕竟这就是学校的目的吧?