我正在学习使用 LabVIEW 作为我的荣誉项目的一部分,并且想知道图形编程语言比文本编程语言有什么好处?
7 回答
对我来说,LabVIEW 的好处不在于图形与文本。
这是数据流与命令。
数据流编程有助于并发,因为您的执行被建模为黑盒,当它们的输入有效时执行,其输入/输出连接在一起。这与带有有关如何修改它的指令列表的隐式状态相反。(松散地解释'kipedia,上面链接的文章更好。)
每个黑匣子都可以在单独的核心/处理器/节点上运行,如果您以数据流方式组织程序,这可以有效地为您提供免费的并发性。
不幸的是(这通常是数据流编程的一个严重缺点)可视化和编辑数据流程序的最佳方法是图形,而不是文本。这使得使用诸如修订控制和代码生成器之类的工具变得非常困难。
问题是:对您和您的项目而言,数据流的利大于弊吗?
使用 LabVIEW 进行图形化编程的主要优点之一是源代码与电路图非常相似,因此对于电气/电子工程师来说它是一种非常容易上手的语言。这是 LabVIEW 在数据采集和自动化领域如此流行的原因之一,在这些领域,EE 非常丰富。
我发现的另一个优势是原始开发速度。您从可用前面板控件的调色板中组装您的 GUI,这与您在 Visual Studio 中的操作非常相似。源代码以类似的方式编写,具有许多预定义的组件,您可以从菜单中放入这些组件并连接在一起。
第三个优点是与硬件的兼容性。National Instruments 的主要业务是数据采集硬件,他们竭尽全力确保他们的所有产品都可以直接与 LabVIEW 软件进行通信。数据采集和自动化控制行业的许多其他硬件供应商也在做同样的事情。
我之前使用 labview 来计算参数以调整 nMRI 机器。它们的存在是因为理论上对于没有编程语言经验的人来说更容易创建程序。控制流和决策结构可以以图形方式排列,他们可以在他们想要的地方输入公式。
对于教授和实验室助理......很有帮助。对于真正的软件开发人员......用另一种语言编写会更容易。
一切都与设备驱动程序和用户能力有关。NI (Labview) 拥有一套支持良好的实验室设备驱动程序,易于连接。测试操作员(不是开发人员)需要一个带有绿色/红色通过/失败大按钮的 gui。我在 cygwin 中通过 python 实现了复杂的自动化。Labview 开发人员能够调用 cygwin/python 系统并对日志文件进行数据挖掘。所以你可以两者都做。python 系统是可移植的、可维护的、可扩展的、可用的,最重要的是,它是免费的。
我过去使用过 LabView,用于数据采集、虚拟仪器等 - 没有比这更好的了。我最后一次使用它是在 10 年前,从那以后我所见过的一切都与 90 年代中期的情况相提并论。
在我看来,LabVIEW的一些优点是:
内置的用户界面组件,如按钮、图形等,实际上不需要任何编程;您只需将它们放在前面板上,数据终端就会出现在程序框图上。
有一个用于数据采集硬件和测试仪器的大型驱动程序库。如果您的任务基本上是从这些数据中获取数据并在其上放置用户界面,那么您几乎无需编程即可实现它。
自动处理多个任务的并行执行 - 在图表上放置两个独立的循环,它们将同时执行。这通常是数据采集和控制应用中的要求。
许多人,包括“真正的软件开发人员”,认为图形范式比文本范式更适合他们思考和可视化软件的方式。毫无疑问,文本语言在某些方面比 LabVIEW 更好(在本网站的另一个讨论中有所介绍),但 LabVIEW 在适合的地方非常擅长完成工作。
对我来说,这取决于您对什么感到满意,如果您对基于文本的语言感到满意,您可能会发现 Labview 只是引入了另一个学习曲线。除非您有学习和使用 Labview 的特定目标,否则我认为您的项目没有意义。
另一方面,如果你对基于文本的语言不是特别熟悉,我倾向于认为 Labview 更容易上手和学习,特别是对于非软件工程师。
我经常使用基于文本的语言进行测试工程以及 Labview 和 TestStand,对我来说,更多的是关于还有谁会使用我的软件,而不是关于我。一些公司有几个受过 Labview 培训的人员,而其他公司则更喜欢用基于文本的语言写作。在整个公司范围内,另一种语言的培训成本可能非常高,并且它改变了公司内职位的招聘要求,因此一些公司实际上“锁定”在一种范式或另一种范式上。如果你打算在这个行业工作,我会说你最好的选择是精通两者,这样你就很灵活。如果是这种情况并且您有时间学习,我会说在您最不喜欢的领域工作并扩展您的知识广度,这就是学校的目的,对吗?