请耐心等待:这不是语言辩论或火焰.这是对意见的真实要求.
偶尔,我必须帮助教育传统的文本编码器如何在LabVIEW(LV)中思考.通常在这个过程中,我会听到LV糟透了.除了"语言X好得多!"之外,这种见解很少伴随着理性的观察.虽然这句话令他们满意,但它并没有帮助我理解让他们感到沮丧的是什么.
那么,对于那些拥有LabVIEW 和文本语言经验的人来说,关于LV的具体事情会让你疯狂吗?
------总结-------
感谢所有的答案!下面的评论中回答了一些问题,其中一些问题存在于其他网站上,有些只是LV的真正问题.根据原始问题的精神,我不打算在这里回答所有这些:检查LAVA或NI的网站,你会惊喜地发现有多少这些东西可以克服.
无意的并发
无法访问传统的文本处理工具
仅二进制源代码控制
很难分支和合并
打开的窗户太多了
文本具有更清晰/更清晰/更具表现力的语法
清晰的编码需要大量的时间和操作
庞大,难以访问的API /调色板系统
需要鼠标
文件命名空间:内存中没有重复的同名文件
LV对象本身仅按值进行
需要dev环境才能查看代码
缺乏变焦
启动缓慢
记忆猪
"巨型"代码难以使用
UI锁定很容易
触控板和LV不能很好地混合
字符串操作图形化膨胀
有限的UI定制
"隐藏"原语(是的,这些存在)
缺乏官方的元编程能力(不过更长时间)
缺乏unicode支持
小智.. 12
LabVIEW中使得执行并发/并行编程更容易,真的.它并没有,但是,使调试,测试,或想约并发/并行变得更容易.您仍然可以在LabVIEW中编写错误的并发代码,并且(与任何语言,平台或工具集一样)没有银弹或魔术棒使并发"正常工作".
如果有的话,你必须更加小心并发,因为如果你没有明确地考虑(并声明)它,那么LabVIEW可能会使你不期望的并发事物.
其他牛肉:这不是文字.以有意义的方式表示数据流意味着图形语言,这意味着您无法使用我们几十年来操作文本的工具,从sed到emacs的所有内容.这也意味着源代码控制应用程序必须将您的代码视为不透明的二进制文件,而不是...源代码.反过来,这使得分支和合并运动变得痛苦.
LabVIEW中使得执行并发/并行编程更容易,真的.它并没有,但是,使调试,测试,或想约并发/并行变得更容易.您仍然可以在LabVIEW中编写错误的并发代码,并且(与任何语言,平台或工具集一样)没有银弹或魔术棒使并发"正常工作".
如果有的话,你必须更加小心并发,因为如果你没有明确地考虑(并声明)它,那么LabVIEW可能会使你不期望的并发事物.
其他牛肉:这不是文字.以有意义的方式表示数据流意味着图形语言,这意味着您无法使用我们几十年来操作文本的工具,从sed到emacs的所有内容.这也意味着源代码控制应用程序必须将您的代码视为不透明的二进制文件,而不是...源代码.反过来,这使得分支和合并运动变得痛苦.
我在很多方面都很欣赏LabView,特别是能够轻松驱动硬件(当然,当它是National Instruments的硬件时),以及并发编程功能.但是在代码导航中反对基于文本的编程语言:
当你浏览代码时,你最终会有大量打开的窗口,因为你一次又一次地连续打开subVis
因为单词比图标更具表现力,与文本语言相比,你在一个屏幕上看到的指令更少,特别是在表达式语法中,比如python
没有异常处理,因为我们在其他语言中知道它; 错误以结构表示,从一个VI传输到另一个VI,对于每个VI,您必须添加一个if error return; else do stuff
代码.
调试期间无法在出现错误时暂停
Labview非常适合控制硬件.我已经编写了几个Labview应用程序来收集数据(来自各种传感器的模拟电压)和控制硬件(主要是压电电机).Labview使得并行执行多个任务变得相当容易.
现在回答你的问题.我对Labview感到沮丧的是什么?
用于组织框图的时间
移动电线
组织节点
也许,因为我自学成才,我花了太多时间试图清理电线并试图跟踪它们,试图破译它们携带的数据和它的去向.
点击并单击工具箱,查找我想要放置在程序框图或前面板中的节点/功能.
我应该能够使用参数键入我需要的函数/方法的名称,而不是......
"嗯...我现在需要计算RMS vi在哪里?现在我需要一个AND操作.确定回到顶层,到逻辑函数,其中一个是AND哦,就是那个.下图把它连接起来测试!那只花了15分钟!"
但是可能有一种更有效的方式来使用Labview,我只是不知道它!
1.LabVIEW对象不通过引用传递.
2.没有其他观察者(特别是免费观看者)用于查看方框图.
3.需要打开大量的窗口来查看项目.希望它是MDI,以便减少窗口数量.
我最沮丧的是它把我的手从键盘上移开了.我是一个触摸打字员,可以用文本语言快速编写代码.LabVIEW强制您使用鼠标从菜单中选择VI和程序节点,并将节点连接在一起.虽然如果你是一名电气工程师,用于在图形环境中设计电路,这真的很快捷方便,如果你习惯输入你的代码,那将是一件痛苦的事.
披露:自从我上次使用LabVIEW以来已经有两年了,所以接下来的两个可能现在已经修复了.
下一个烦恼是源控制.您最常使用源代码控制存储库执行的操作之一是将当前版本与先前版本区分开来以查找更改.你不能用像LabVIEW这样的图形语言来做到这一点.流行的版本控制系统,如CVS和SVN,在幕后使用基于文本的差异工具.我希望NI为你们所有仍在使用LabVIEW的人提出自己的版本控制解决方案.
我遇到的最后一个烦恼是缺乏真正面向对象的语言功能.LabVIEW 6i,我使用的最后一个版本,最好是基于对象的.没有人能真正准确地宣称它是面向对象的.我无法使用继承创建真正的类层次结构,并且仅为少数内置类型保留了多态性.我意识到6i是两个版本的,所以我真的希望这是固定的.
GUI中缺乏Unicode支持
它使我们日本公司的发展变得困难.
更新:显然有8.6的支持.请参阅LabVIEW中使用Unicode的提示和工具列表.
几十个打开的窗户是一个明确的痛苦.
由具有更大显示器的人编辑的vi必须调整大小.
UI在处理其他东西时暂时锁定(也许我还没有弄清楚labview的多线程潜力)
用触控板在笔记本电脑上编辑是可怕的,(不要忘记小显示器问题).
复杂的字符串操作占用了大量的空间(方程有一个函数节点,为什么不是用于字符串操作的正则表达式节点?)
我有时在其他人的代码中找到原始的vi,我在菜单中的任何地方都找不到.
UI只能定制到一个点.
我想补充一点,我认为labview非常强大且设计精良.我很少遇到让我希望自己拥有不同语言的东西.