20

这被标记为一个主观问题,我希望我不会得到太多的反对票。

LV 似乎为传统的基于文本的编程提供了一个不错的图形替代方案。据我了解,它不仅仅是一种虚拟化/数据采集编程语言。尽管如此,它似乎将这种范式与其创造者的名字挂钩。

我的问题出现了,因为它似乎没有被广泛用于多用途应用程序。我不是任何类型的 LV 专家,我更像是一个学习者。我还是习惯了LV。

4

14 回答 14

28

如果您拥有 National Instruments 硬件,并且想要执行诸如采集、绘图和记录数据之类的操作,那么 Labview 非常棒。

当您开始连接到自定义设备时,模块之间的接线变得复杂,必须为设备的输入和输出执行所有字符串操作工作。

在我的工作地点,我们发现我们对必须制作大量复杂的 VI 来连接设备感到恼火,并开始用 .NET 编写它们并将它们连接到 Labview。

最后,我们最终放弃了 Labview,并使用 NI Measurement Studio for Visual Studio 为我们提供了所有漂亮的 NI 控件(波形图、坦克、仪表、开关等)以及 C# 的灵活性。

总而言之,即使有几个 24" 屏幕,有时 Labview 代码的接线也会变得过于复杂,无法评论、调试和扩展以适应未来的任何变化。我建议看看 Measurement Studio for Visual Studio 和使用您最喜欢的 .NET 语言和漂亮的 NI 控件。

于 2009-08-04T08:05:56.160 回答
19

我在“传统基于文本的编程的图形替代方案”方面的两次经历非常糟糕。我发现这样的语言使用起来很慢,难以编辑,而且缺乏表达力。调试它们是一场噩梦。而且它们没有提供真正的优势。

确实,我已经很久没有看一个了,但是我问过其他人的意见只是不冷不热,所以我再也没有花时间再看。欢迎再次查看的理由,并将被采纳...

于 2009-08-04T03:05:42.653 回答
13

Labview 可用于创作大型、复杂的软件项目。Labview 无疑比基于语法的语言更有趣。我使用labview编写了数学密集的动态模拟程序。较新版本的 Labview 包含许多令人兴奋的功能,尤其是在使用多个处理器方面。我非常喜欢 Labview。但我不推荐给任何人。

不幸的是,除了简单的采集和显示之外,这绝对是一场噩梦。有朝一日,它可能会得到充分发展,被视为基于文本的语言的可行替代方案。然而,NI 的开发人员一直选择忽略困扰 labview 的三个基本问题。

1)它不稳定并且充满了错误。有数以千计的 bug 已发布到 labview 支持论坛尚未修复。其中一些是相当严重的,例如内存泄漏,或基本函数中的数学错误。

2)文档很糟糕。通常情况下,当您在本地帮助文件中查找有关 labview 功能的帮助时,您会找到一个句子,该句子仅重述了您要查找某些详细信息的项目的名称。例如,用户查找有关纹理过滤器模式设置的帮助文件,帮助文件中唯一写的是“纹理过滤器模式-选择用于纹理过滤的模式”。哎,谢谢。这样就可以解决问题了,不是吗?问题在这方面要深得多。很多时候,当您要求国家仪器的技术代表提供有关 labview 功能或数学函数特定行为的关键细节时,他们根本不知道他们自己的库中的函数是如何工作的。这听起来可能有些夸张,但相信我,事实并非如此。

3) 虽然保持图形代码干净和有据可查并非不可能,但 Labview 旨在使这些任务既困难又低效。为了防止你的代码变得混乱、混乱,你必须经常(每隔几个操作)使用像集群这样的结构,以及 sub-vis 和巨型类型定义的控件(在大型项目中可以跨越多个屏幕)。这些结构通过迫使labview在内存中制作多个数据副本并执行无偿操作来消耗内存并破坏性能——所有这些都是为了防止图形图看起来像彩虹色的意大利面条,在任何地方都看不到任何评论或文本。在labview 中编程就像和魔鬼玩图画一样。想象一下你的大型软件项目写成一个墙壁大小的流程图,上面根本没有任何文字。现在想象一下,所有的线相互交叉一千次,因此完全不可能追踪数据流。您刚刚设想了在labview 中最自然、最有效的编程方式。

Labview很酷。Labview 的每一个新版本都会变得更好。如果 National Instruments 不断改进它,有一天它会成为一种通用的编程语言。现在,作为大型或逻辑复杂项目的软件开发平台,这是一个非常糟糕的选择。

于 2009-12-29T00:40:11.497 回答
9

我**已经用 LabVIEW 编写了将近 20 年了。我开发自动化测试系统。我开发了 RF、Vison、高速数字和许多不同风格的混合信号测试系统。在切换到 LabVIEW 之前,我是一名“C”程序员。

的确,您可以在 LabVIEW 中快速构建一些程序,但就像任何其他语言一样,需要大量培训才能学习构建一个干净且易于使用可重用代码维护的大型应用程序。20 年来,我从未遇到过 LabVIEW 错误阻止我完成项目。

过去,NIWEEK 每年都会举办一场软件大战。LabVIEW 和 LabWINDOWS(NI 的“C”版本)程序员都会遇到同样的问题,并且会竞相看哪一组先完成。每一年,所有的 LabVIEW 程序员都在第一个 LabWINDOWs 人完成之前完成。我曾向我的许多专门的基于文本的编程朋友发起挑战,他们都承认他们没有机会,即使我让他们定义软件问题。

所以,我觉得LabVIEW是一个很棒的编程工具。如果您要与任何类型的 NI 硬件连接,这绝对是您的最佳选择。它不是万能的答案,但我敢肯定有很多人不使用它只是因为他们不认为 LabVIEW 是一种“真正的编程语言”。毕竟,我们只是将一堆块连接在一起,对吗?我确实觉得有趣的是,有多少基于文本的程序员对此嗤之以鼻,因为他们为自己创建的混乱的文本代码感到自豪,只有他们才能理解。任何语言的优秀程序员都应该编写其他人可以轻松阅读的代码。编写无法理解的过于复杂的代码并不能使程序员成为天才。这意味着程序员是一个“compliator”(可以把一个简单的问题复杂化的人)。我相信 KISS 原则(保持简单愚蠢)。

无论如何,我的两分钱值得!**

于 2010-12-31T01:30:40.920 回答
6

我认为 LabVIEW 是 FPGA 编程的梦想。独立的可执行块只是......工作。一般来说,我使用 LabVIEW 来完成与我的 DAQ 和 FPGA 硬件交互的各种任务,但仅此而已。似乎(在我看来)这是 LabVIEW 的强项,也是构建它的原因,但在这个领域之外,它感觉“麻烦”。就完成工作而言,它就像任何其他具有学习曲线的语言一样——一旦你弄清楚它对完成工作来说并不算太糟糕。之前我看到有几个人放弃了,认为学习曲线是永久性的。

拿起一个 30 英寸的显示器会产生巨大的变化。

我知道人们不喜欢的一件事是版本控制集成。

编辑:LabVIEW/硬件对于“只是为了好玩”的使用来说非常昂贵我在他们的硬件(学生价格)上投入了 1 万美元,并从学校免费获得了用于在房子周围制作玩具的软件。

于 2009-08-04T03:08:31.450 回答
6

在过去的 10 年里,我们公司一直在使用 LabVIEW 来测量、监控和报告我们的主题(火车)。
最近我们开始使用 LabVIEW 作为包含大量数据的数据库的 GUI,LabVIEW 的强大功能以及最近的新功能(类、XControls)允许使用其他平台上的一小部分开发成本来创建这些类型的 GUI。虽然我们不需要顾问费率的外部程序员。

于 2009-08-08T08:37:54.477 回答
3

我第一次在大学物理实验室开始使用 Labview。最初,我认为与其他基于文本的语言相比,它既慢又麻烦。创建复杂的逻辑太难了,代码变得非常草率(到处都是电线)。

然后,几年后,我学会了使用 sub-vi 和 bundles。有什么不同!在这一点上,我正在使用 labview 来实现非常高级的功能。我从相机获取原始输入,使用各种图像过滤器和处理最终解析出道路上的线条,这样车辆就可以在没有司机的情况下沿着这条道路行驶——这是为了 DARPA URBAN CHALLENGE。我还从文本航点数据生成地图,制作高级解析功能,以及大量与处理来自输入设备的数据无关的其他应用程序。这真的很有趣。和快。

离开大学后,我现在又开始使用基于文本的语言了。我一直在使用:PHP、Javascript、VBA、C#、VBscript、VB.net、Matlab、Epson RC+、Codeigniter、各种 API,我相信还有其他一些。为了以任何显着的速度进行编程,我经常对必须记住的大量语法感到非常沮丧。我发现不得不根据我使用的语言转换思想流派很烦人......当所有编程语言基本上都做同样的事情时!我需要第二台显示器来随时获得帮助,这样我就可以找到不同语言中相同功能的语法。我非常想念 Labview,可惜它太贵了,否则我什么都会用它。

我认为基于图形的编程具有巨大的潜力。通过不受语法的限制,您可以专注于逻辑而不是代码。Labview 本身在支持和调试方面可能仍处于起步阶段,但我相信它在概念上击败了竞争对手。这是一种更简单、更直观的编程方式。

于 2012-06-14T18:23:37.270 回答
2

我们使用 LabVIEW 来运行我们的终端测试设备,它是数据采集和控制的理想选择。通常测量 15 到 80 个差分电压并控制环境室、质量流量控制器和各种串行设备,LabVIEW 的功能绰绰有余。

通过使用 NI 仪器驱动程序向导创建可重用的 VI,可以大大简化与自定义设备的接口,如果需要,可以与自定义 dll 接口。在许多项目中,我们已经为定制硬件创建了此类驱动程序,并且一旦创建,就可以在未来的项目中重复使用而无需修改。

使用事件驱动结构的用户界面具有响应性,我们经常使用 LabVIEW 应用程序与数据库进行交互。

无论您选择何种编程环境,最重要的是设计应用程序的过程。我同意您可以在 LabVIEW 中创建一些非常糟糕且不可读的框图,但是您也可以在 Visual Studio 中创建不可读的代码。只需稍加思考和规划,即可制作出适合单个 24" 显示器的 LabVIEW 框图,并有足够的空间添加注释。

对于大多数项目,我会使用 LabVIEW 而不是 Visual Studio。

于 2009-08-04T09:21:48.813 回答
2

但人们确实将 LabView 用于数据采集和虚拟化以外的目的。当然,LabVIEW 主要用于实验室和生产环境,因为它是(或曾经是)NI 的主要客户目标之一。

但是,您可以使用 LabVIEW 做很多不同的事情,例如编写一个执行大量图像分析的机器人,然后发布结果。在 youtube 上观看 2009 年 NI Week 的视频,您将了解该工具的强大功能。例如,可以编写代码并将其部署到 ARM MCU(参见 2009.08.10 的这篇Dev Monkey 文章)。

最后检查这个LabVIEW DIY 组

于 2009-08-19T21:50:17.257 回答
1

几十年来我一直在思考这个问题(是的,从 1989 年开始......)

与所有编程语言一样,LabVIEW 是一种用于操纵电子流的高级工具。除非你是一个纯粹主义者并且拒绝使用除面包板和电线以外的任何东西;如果您希望构建具有任何意义的东西,晶体管、集成电路和编程语言可能是一件好事。

但是像所有高级工具一样,仅仅使用一个并不能使您成为专业的工匠。回到烙铁、运算放大器和 UART 的时代,您需要进行大量的仔细研究才能创建一个实际运行的系统。基于文本的语言的现代领域被语法过度支配,程序员必须在编译和运行之前获得它。为了编写有效的代码,程序员必须提高他们的技能水平来创建比“Hello World”更大的系统。

LabVIEW不是由语法支配,而是由数据流支配。回到过去,找到您的流程图模板并开发一个平衡良好的信息系统的图表是这项工作的艺术和美感部分。只有在你手头有审查过的流程图之后,你才会考虑苦苦完成编写代码的苦差事。(是的……打孔卡)

LabVIEW是一个开发系统,允许程序员使用流程图工具绘制完整的信息系统,然后按“运行”...... LabVIEW“打出代码”并为您编译。无需通过文本语言 A 或语言 B 的语法进行斗争。

有了这样一个强大的工具,新手可以快速构建大型的工作程序——这意味着某种程度的专业工艺,因为它完全可以运行。但是,如果系统运行不优雅,或者源代码图乱七八糟,都不是LabVIEW的错。

人们经常指出“LabVIEW只适用于开发大型数据采集系统”。也许这些人应该考虑从事数据采集工作的科学家和工程师的专业性。如果他们足够了解传感器和换能器的实际接线,那么他们也是开发 LabVIEW 接线图的专家可能是一个不错的选择。

于 2009-09-16T12:28:18.830 回答
0

家里使用 LabView ,因为它是我儿子喜欢的 Lego Mindstorms 的一部分。我真的很喜欢这样组合系统的方式。

但是,在我的工作(嵌入式系统)中,它通常是限制性的。但也在这里,我试图提升抽象: - 控制和状态行为:基于模型的设计(即 Rhapsody) - 数据算法等 Simulink

有时,图形模型可能需要比一段代码更多的点击次数。但这也包括优秀程序员在设计和文档方面需要做的工作;不仅仅是代码输入。如果工具足够强大,可以应对手头的复杂性,图形符号会省去很多麻烦,而且通常会更快。因此,我预计随着这些工具的成熟和人们对它们的熟悉,这些工具将在未来几年内获得更多的欢迎。

于 2009-08-04T07:59:53.830 回答
0

我已经使用 LabVIEW 大约两年来开发自动化。如果给予应有的注意和适当的设计,我们肯定可以在 LabVIEW 中开发可维护且非常漂亮的应用程序。我认为这对于所有其他语言都是一样的。我在 LabVIEW 中看到过同样糟糕的代码,主要来自那些只使用它来开发快速而肮脏的工作自动化的人。恕我直言,如果正确完成,图形编程更容易编码和理解。但这就是说我觉得基于文本的编程“感觉”更强大!LabVIEW 主要面向工业自动化销售,对许多 NI 硬件具有固有的支持,您可以很快让第三方硬件使用它。我认为这就是你只在自动化领域看到它的原因。

于 2009-08-06T10:27:29.880 回答
0

我已经使用 LabView 大约 10 年了。它非常适合科学编程,例如 Matlab 或 Simulink,但要好 10 倍。如果你有问题,那么你做错了什么。学习任何语言都需要时间。至于改用.Net - 这些人甚至在同一个星球上吗?当您可以说拉起 FFT 等并使用已编写的代码时,为什么还要麻烦从头开始编写所有内容。.NET 适用于简单程序,但不适用于科学处理。是的,你可以做到这一点,但并非没有大量的图形附加组件等。在 G 中编程比基于文本的科学问题要容易得多。如果您正在接口并使用 dll,您当然可以在 c 中编程。现在有些事情我不会使用 LabView - 例如,语音识别目前可能有点混乱。更重要的是,当有一个简单的替代方案时,为什么人们喜欢以过时的文本形式编程。就好像人们想让事情变得复杂,以便以某种方式证明他们的工作是正当的。简化简化!

于 2010-05-29T03:54:55.107 回答
0

有人说 LabView 只是在自动化领域被起诉。根本不写。它在数字信号处理、控制系统、通信、基于Web、数学、图像处理等方面都有应用。它最初是一种数据采集方法,他们发明了虚拟仪器这个名字,但现在已经远远超出了这个范围。它是一种具有首屈一指的图形界面的科学编程语言。它远远超出了 Simulink,如果您喜欢 Matlab,那么它为那些喜欢这种编程方式的人内置了一种 Matlab 脚本。它一直在发展。我发现困难的一件事是为 Compact Rio 编写代码 - 棘手但比替代方案容易得多。它很贵,但您会得到优质的产品。我个人在普通编程中没有发现任何错误。

于 2010-05-29T05:53:17.007 回答