1/5页12345 跳转到查看:3787
发新话题 回复该主题
键盘左右键可以进行前后翻页操作
帮助

[转]为什么要学习LabVIEW?

点击关闭鉴定图章

[转]为什么要学习LabVIEW?

转自 LabVIEW7i 博客: http://labview7i.blog.sohu.com/
从“机器语言”抽象到“汇编语言”,又从“汇编语言”抽象到“高级语言”。那么问题是:“高级语言”是否还可以进一步进行抽象出“某种超级编程语言”呢? 从计算机语言的发展规律来看,回答是肯定的。并且,二十年前这种语言就已经出现,那就是:LabVIEW——一种图形化编程语言。


图形化编程语言:

LabVIEW发展到今天,我认为:LabVIEW是从“高级语言”中抽象提炼出来的超级编程语言(到目前为止我还没有从哪本中外LabVIEW书籍中看到这样的提法或概念)。
这种将“高级语言”传统的写代码的编程方式,抽象变为以“图形、节点、连线”方式的编程语言,的确具有超级编程语言的特点。
CC++编写的LabVIEW具有比CC++更明显得优点。
LabVIEW本身的易学易用、即学即用的特点也充分的证明了这个观点。

问题在于:图像化的编程方法是否真的就会比“高级语言”代码编程方法更高级?我的回答应该是肯定的。下面通过两个例子来进一步说明:

1

小时候,在我们刚刚开始会说话时,大人通常是用“看图说话”的方式来教我们认识什么是苹果?什么是梨?什么是香蕉?显然,利用图形或图像的概念使我们很快认识了这些水果。试想如果用文字或拼音来教我们认识这些水果,效果决不会好的。换句话说,图形或图像由于简洁明确,的确要比文字或拼音更适合初学者来认识和区分。事实上,编程语言也是具有相同的规律。
对于学习过某种高级语言的人来讲,对复杂的语法规则、指针、内存、类库等等的掌握根本谈不到轻松易学。

LabVIEW做到了这一点,用LabVIEW编程根本无需考虑什么:语法规则、指针、内存、类库等。LabVIEW这种图形化语言将许多复杂的事情抽象的极为简单明了。

2

时光倒退回二十多年前,那时人们对计算机的操作、控制还基于称为DOS的磁盘操作系统(Diskette Operating System),即便是一个很简单的操作人们也会噼噼啪啪的敲击一阵键盘,对于复杂操作人难免还要认真仔细的查阅DOS手册。那时的MicroSoft还是一个编写DOS的小公司。后来,Mac(苹果电脑)首先实现了计算机的图形化操作,点击鼠标、利用拖拽即可完成对计算机的一些操作控制。LabVIEW大概也是受到了图形操作系统的启发(不知是否真的如此),开始了LabVIEW的设计,并在Mac机上完成了LabVIEW1.0版的发布。直到MicroSoft也设计出图形化操作系统时,LabVIEW才发布了Windows版。这大概是LabVIEW2.0,到LanVIEW3.0发布时它已经全面支持跨平台使用了。

计算机操作系统的图形化无疑加快了计算机使用的普及和使用的大众化(当然也包含硬件发展的推动),使计算机由过去的专供专业人员操作使用,而真正变成了不分年龄、不分专业的大众工具。其中,真正起核心作用的还是图形化操作系统得简洁、方便和易学。

编程语言的图像化应该与操作系统图形化一样,给那些不善于使用代码编程的人带来了实现复杂程序设计的机会(我就是其中的一个受益者)。

其实许多学习过LabVIEW的人都回有这样的体会:图形化编程的确大大降低了程序设计的复杂度,LabVIEW的确是比那些“高级语言”更好的超级编程语言

LabVIEW的跨平台特点,以及在同一个平台下对FPGADSP及嵌入式微处理器的开发提供图形化编程的支持,难道不可以称之为:超级编程语言吗。

LabVIEW是从“高级语言”中利用图形化的抽象方法抽象出来的超级编程语言。那么,还能对它继续进行抽象处理,进一步提高它的简洁性和方便性吗?

Express VI
DAQ助手
仪器I/O助手
视觉助手
难道这些不是吗?

通过计算机编程语言的发展简要说明了LabVIEW是一种从高级语言抽象出来的超级编程语言。当然,称LabVIEW超级编程语言可能有些为过,因为它毕竟还不是通用的编程语言。但就自动化测试、测量方面的编程而言,LabVIEW的出现绝对是革命性、创造性的。原因就是它从根本上,改变了人们所习惯的、传统的撰写代码的编程方式,取而代之的是使用鼠标来点击、拖拽图形、图标、连线节点等方式来进行编程。而这些图形、图标所代表的“控件”或“函数(或方法)”是通过对高级语言进行高度抽象所得,所以使得整个编程的过程变得更加简单、方便、有效,从而彻底将编程人员从复杂的语法结构及众多的数据类型和不停的编写代码、编译、查找错误的过程中解放出来,使程序设计者能够更加专注于应用程序的设计,而不用担心语法、指针等是否使用的正确。这种编程方式大大降低了程序设计的复杂度。


除了图形化的编程方式简单、方便外,LabVIEW的优势还体现在以下几个方面:
跨平台特性:

LabVIEW支持WindowsMac OS XLinux等多种计算机操作系统,这种跨平台特性在当今的网络化时代是非常重要的。试想在Linux 操作系统下设计的VI,通过网络传递到其它平台上无需改变任何代码,即可使用或调试是一件多么爽快的事情。这大大改善了使用者之间的交流、沟通及评估的灵活性。同时,它还可以充分利用不同平台自身所具有的优异性能,例如:Windows系统的广泛性;Mac OS X系统的美观、时尚;Linux系统的安全性等等。

随着,计算机操作系统的不断升级和改进,使LabVIEW的开发环境也同样得以不断的改善。举一个简单的例子:我从网上下载升级了IE 7.0浏览器(英文版),它的界面风格变得更加美观、时尚。而它正是来自Microsoft 最新的操作系统Vista。可以想象的到,未来在新的操作系统上使用LabVIEW,它的GUI一定会同样美观、时尚。

对其它编程语言的支持:

尽管LabVIEW已是一个独立的图形化软件编程开发环境,但是为了照顾到已习惯使用其它的高级编程语言的编程者,它还提供了兼顾其它高级编程语言的开发环境,使已习惯于其它编程语言的使用者也能够充分利用LabVIEW的强大的自动化测试、测量及分析、处理能力。

LabWindows/CVI提供了对ANSI C 的支持。

Measurement Studio 提供了对Visual BasicVisual C# Visual C++的支持。

开放的开发平台:
LabVIEW还是一个开放的开发平台,提供广泛的软件集成工具、运行库和文件格式,可以方便的与第三方设计和仿真连接,例如:
DLL、共享库
ActivcXCOM.NET(微软)
DDETCP/IPUDP、以太网、蓝牙
CANDeviceNetModbusOPC
高速USBIEEE1394GPIBRS232/485
数据库(ADOSQL等)

对便携式及嵌入式开发:

LabVIEW PDA支持便携式手持系统PDA(个人数字处理器)的开发应用,支持Pocket PC OSs Windows CE。使用LabVIEW可以创建自定义的便携式测试分系统。

LabVIEW嵌入式开发模块支持对32位处理器的图形化开发。目标处理器如:PowerPCARMTI C6xx86架构;支持的嵌入式操作系统如:VxWorseCosWindows和嵌入式的Linux

LabVIEW DSP工具包还支持TIDSP设计开发。

LabVIEW FPGA 模块还支持FPGA设计。丰富了RIO系列模块的自定义功能。

图形化的强大的分析、处理能力:

LabVIEW提供了无比强大的分析、处理VI库及许多专业的工具包,例如:高级信号处理工具包、数字滤波器设计工具包、调制工具包、谱分析工具包、声音振动工具包、阶次分析工具包等(当然都是要花钱购买的),这是任何其它高级编程语言无法提供的。结合LabVIEW独特的数据结构(波形数据、簇、动态数据类型等)使得测量数据的分析、处理非常简单、方便、并且实用性很强。很难想象,如果使用代码编程进行数字滤波设计或功率谱分析会增加多少工作量,甚至能否设计完成都值得去考虑。


特别是:NI新近推出的LabVIEW MathScript,将面向数学的文本编程扩展加入到了图形化的LabVIEW中来,提供了除图形化数据流编程以外的另一种自定义开发应用系统的方法,为使用者提供了获得最佳方案设计选择的机会。



LabVIEW最大的优势就在于图形化的分析处理方法。从应用角度看,LabVIEW的分析处理能力绝对是超级的,它使得设计者会更加专注于应用项目的设计,而不是如何进行数据的分析、处理。从而给设计者带来更多的是工作中的快乐和工作中的成就感。这一点我的体会是极为深刻的。

LabVIEW的另一个优势就是仿真能力,在设计原型阶段可通过仿真来评估设计的合理性和正确性。由于使用的是图形化的编程方法,这样的工作很快就可以实施并及时得到真实的仿真结果。

编程效率极高:

最后,要谈谈图形化编程的最大特点。使用LabVIEW图形化编程的最大特点就是编程效率极高。关于图形化编程可以减少编程时间、缩短开发周期、降低开发成本等说法,已在很多介绍 LabVIEW的书中进行了表述,我不准备再进行复述。这里,从另外一个角度仅谈谈自己对这方面的体会。

作为应用项目的设计开发者,通常的关注点是:设计的合理性和最终结果的正确性。当然,他们也会注意到编程过程的效率。实际上,减少编程时间、缩短开发周期、降低开发成本等大多都是从整体经济利益方面来考虑的。我个人认为:在提高效率这方面,人们往往忽略了“人——设计者”的效率得到提高这个要素。由于LabVIEW采用的是图形化编程的方法,所以大大降低了编程过程的复杂度,请看下图1中一个有效值测量的程序框图。这里仅仅使用几个VI就可以非常简单、迅捷的完成程序设计,实现分析和对结果的处理。如果在此基础上还要进行其它分析,比如:谐波分析、频率测量、功率谱分析等,最多就是再添加三个图标(VI),以及连接到相应的图形指示器和数字指示器。对于多通道测试几乎无须添加任何分析,仅添加几个通道VI而已。
我的征途是星辰大海 ……
天下会: gsdzone.net/tianxia

TOP

 

关于最后的效率,谈一点个人的看法:
开始写程序的时候,LV的效率是高了。但是当程序大了之后,LV的执行效率问题就突显出来了。为了优化程序,这耗费的工作量可不小,而且,对于能力和经验的要求也不低。

TOP

 

可以参考一下 下面的链接: http://zone.ni.com/devzone/cda/tut/p/id/7198

里面有一些LabVIEW大型应用程序开发的资源

btw: 你也来了,呵呵
我的征途是星辰大海 ……
天下会: gsdzone.net/tianxia

TOP

 

回复 2# airpumpkin 的帖子

airpumpkin说的极是,是会有这样的潜在问题,但是针对这样的问题,NI推出了LabVIEW Unit Test Framework,LabVIEW Desktop Execution Trace toolkits和NI Requirements Gateway 1.1几个工具,他们可以帮助工程师们在利用LabVIEW软件开发大型或复杂应用时,可以利用这些工具包有效验证系统,以并根据需求改进软件性能和,并根据要求测试编码。
详情请通过下面链接查看这些工具包:http://www.ni.com/labview/family/zhs/software_dev_deploy.htm

NI 应用工程师

TOP

 

其实初学而来,我就觉得使用LabVIEW比较cool,跟一般的C语言相比更有意思。

其他特点我还没有体会出来,自勉!

TOP

 

个人认为关于LabVIEW是否好用,不能把它妖魔化。

所有关于LabVIEW如何如何易用、如何如何强大、只要花一两个礼拜即可怎样怎样的宣传都是不负责任的。 当然,上述的说法在某些场合下可以认为是确切的,比如用于解决一个较为简单的测试任务,采采信号,看看是否大于某个值或有没有某个频率成分。这种易用性对于非专业的人员(如工厂的测试人员)是非常有吸引力的。 他们甚至不需要有编程经验即可学习LabVIEW解决一些简单问题。 LabVIEW的这个优点是它区别于其他编程语言的重点之一,入门容易,非专业人士也可以用。 我所见过的这类典型的使用者是科研机构里的年纪较长者,他们一般没有受过编程训练,对编程语言可以说一点也不懂,但他们对科技和新事物很执着,拥有某个领域的专业知识和经验。我见过几个老工程师,他们学习新东西的热情都是甚至令我们这些晚辈都汗颜的。对于他们来说,LabVIEW的易用性确实起到了关键的作用。 他们能解决问题,还能体验“编程” 的乐趣。

现在有很多人抱怨LabVIEW其实并不好用,不适合开发大型应用程序。 这种说法其实也是不准确和不公平的。 当然,这种说法也是可以理解的,甚至可以说是能够引起很多LabVIEW使用者共鸣的。 为什么呢? 问题出在NI对LabVIEW的宣传上。 任何一个NI的宣传都是把重点放在易用性上,你看看NI的现场演示都是那么容易就能完成采集信号、分析和显示。 这样的宣传本身没错,LabVIEW确实易用。 但是,如果过分强调、一直强调、不分场合的强调就会给真正的LabIVEW用户或者潜在用户一个错误的期望值。 他们会认为LabVIEW真的是很简单就能解决任何问题的。 当他们开始使用LabIVEW时,前两个礼拜进展很快,做出了自己的第一个程序,感觉很满足。 接着,如果他们真的把LabVIEW当做工具开发实际的较为复杂的应用,马上会发现LabVIEW其实有很多问题,自己之前写的程序自己都不认识了、没法与同事协同工作、程序随着功能越来越多效率越来越低、很难增加新功能等等。  这时候他们就会得出前面的结论:"LabVIEW其实并不好用,不适合开发大型应用程序".

个人认为,如果你真的想学LabVIEW,首先,真正认识LabVIEW, 给他摆正位置,设定正确的期望值。 其次,花大量的时间去实践,至少做10个项目。 如果你做了10各项目还不能正确认识LabVIEW,我无语。。。。

怎样给LabVIEW定位呢? 个人认为他只不过是一种编程语言,一种我喜欢的编程语言,但不是因为他易用,而是我因为用了它10年。 如果你把他当一种编程语言,一种一般的语言,你就会给他一个正确的期望。 你会期望你学了一个礼拜的C语言就能编很复杂的程序吗? 我们在学校里可都是学了一学期,做了不少作业,结果还是只能编简单程序的。 工作了以后如果有幸使用C做项目,做了一段时间才会有心得,才能编复杂的程序。 如果你把LabVIEW当成一种编程语言,那么你就不用抱怨LabVIEW了,先问问自己花了多少时间使用LabVIEW,如果只是几个月而已,那你也别抱怨了,那没有意义。 如果你像使用其他语言一样频繁使用LabVIEW,我相信你的那些问题都会得到解决的。 如果你对LabVIEW把握得好,你照样可以开发很复杂的程序,照样可以多人协作,照样可以具有扩展性。 有100多个人用LabVIEW开发项目的。

当然,学习LabVIEW还是有和学习其他语言不一样的地方的。 个人认为最大的问题是,学习资源不如其他语言那么丰富。 学习其他语言,你可以找到很多很好的书,可以问师兄师姐。 LabVIEW则不然,很多东西要靠自己摸索。 但是从另一方面讲,也不是一点都没有。 NI网站上还是有很多好的文章可以参考一下。 掌握几个好的编程模式,然后就是多做了,没什么秘诀,你自己才是最主要的决定因素。 

相信如果你喜欢LabIVEW,花个一两年时间不断的实践,你会成为高手的。
本帖被评分 1 次

TOP

 

看了楼上写的长文,有一点感触。

首先,作为工程师的编程语言,LabVIEW想要做到的最重要一点就是简化复杂性。

从小的来说,就是上手容易,大多数的工程师并非专业的编程人员,而且其研究领域可能跟编程大相径庭,如果在他的研究项目中的30%时间都花在了底层的用C代码实现数据采集的话,那本身就是专业知识的一个浪费。而LabVIEW想要做到的,就是能够想尽办法将底层都帮工程师们铺设好(例如一个特定的FFT变换,就给你现成提供了一个VI就能实现,你只要现成拿结果数据就可以了),而帮助工程师将其主要的精力放在自己的研究项目中。

从大的来讲,简化复杂性还表示着如果你掌握了LabVIEW的编程方法,那么你可以通过LabVIEW去接触到以前可能根本无法利用的技术。比如FPGA技术,现在很多地方都用到了这个技术,但是你想用它首先就要学会VHDL语言,但这是个硬件语言,需要一定的学习曲线和专业知识;但是现在LabVIEW帮你做到了这一点,你还是用LabVIEW来编程,但通过LabVIEW开发人员为你做好的FPGA模块,就能自动将你的代码生成VHDL语言(当然,这种自动生成的效率会比VHDL低一点),从而让你也能享受到FPGA技术所带来的技术优势。

其次,楼上说的开发大型程序问题,应该分为两种:一种人会问,LabVIEW能不能驾驭大型应用程序?(这个有点类似Airpumpkin所说的观点),另一种人会问的是,开发大型应用程序会不会反而花了工程师更多的时间?

先看第一个问题,相信如果是用LabVIEW一定时间的开发者都能体会到,LabVIEW is only limited by your imagination。我之前做过一个Demo,它解释了一件事情,LabVIEW是否powerful?从采集、分析到显示来分别回答这个问题:在采集中,LabVIEW可以高效地采集到任何传感器带来的信号,不管是数据采集、PLC、传统示波器、射频仪器等,通过LabVIEW都可以直接touch到采集的原始数据;在分析中,LabVIEW提供了强大的信号处理以及分析功能,时域、频域、小波、声音振动、控制设计仿真、智能算法、图像处理等,应有尽有,让你能够得到最终你想要的结果;而显示中,LabVIEW的控件可以帮助你设计最美观的人机界面,报表自动生成,短信提醒,有效的数据表达。此外,世界上已经有很多工程师和科学家都用LabVIEW做了世界上最复杂的事情,比如欧洲极大望远镜、思维控制的轮椅等等。因此,我可以很自信地说,它并非一个所谓的组态软件,它能够做到powerful

关于第二个问题,在之前,由于LabVIEW面临的很多客户都是只做一些简单程序的,因此还没有问题,但目前随着很多工程项目的日益复杂,就出现了对大型的LabVIEW应用程序开发的需求。我之前听别人说过,有一个LabVIEW的项目程序文件大小达到了2-3G,这也是我所见过最大的LabVIEW程序了。但,可喜的是,现在LabVIEW也开始注意这方面的需求,从软件工程的角度对自己进行了优化,不管是之前你可以用状态机、生产者消费者循环这样的设计模式,现在你还可以用面向对象的编程方法,也可以实现软件在环的程序测试。具体的上面也已经给出了链接。

总之,简化复杂性(Abstract Complexitiy)和强大(Powerful)是同时存在于LabVIEW中的,也许你会说那不是会非常矛盾?但是我个人认为,世间万物都是矛盾的组合体。
楼上的高人已经说过,这是一个学习的过程。世界上任何事情如果想成为高手,都不可能一蹴而就的,LabVIEW也一样。
本帖被评分 1 次
最后编辑Zen 最后编辑于 2009-05-02 16:51:34

TOP

 

好吧,“简化复杂性”是个很好的主意。没错,LabVIEW可以帮助用户比较方便的实现一些目标,比较方便的使用最新技术。 我举两个例子,LabVIEW Real-Time和LabVIEW FPGA。 用LabVIEW RT就可以很容易地进行实时系统的开发,运行在Phalap和VxWorks的操作系统上。 用LabVIEW FPGA可以编写程序运行在FPGA上。  这些相对于其他编程语言,可以说是绝对的创新,绝对地Simplify the Complexity. 没有任何一种编程语言可以做到这一点。

但是,我在前一篇所想表达的是: 如果你想很好的使用LabVIEW,请花学其他语言一样的时间去实践LabVIEW,这样你才会成为真正的高手。 LabVIEW的这样那样的创新和易用性是很好的,但他只是一个编程语言,没有一种features可以方便所有的人所有的应用。 你只有真正地掌握了LabVIEW,才能实现你的应用。 不是因为LabVIEW powerful和易用,你才能解决问题,而是人的因素,是使用者花了多少力气的问题。

当你要解决一个复杂的应用时,它和你使用哪一种语言已经没有太大的关系。 我认为基本上是差不多的,LabVIEW不会真正地简化你的问题。 简不简化,还是跟人有关,你水平高了,自然就简单了。 比如,如果你有个项目需要有10个人来开发,你用C\C++一样也会碰到如何协作、如何定义接口、如何扩展等等问题,这些问题往往是软件工程和管理的问题,不是语言的问题。一般的情况下,C\C++能解决的问题,LabVIEW都可以解决,只是方法和思路不同。

总之,争论LabVIEW好不好用没意义,好好学习,天天向上才是正道。 存在的就是合理的,想想LabVIEW已经20多年了,必然有他的合理性。

TOP

 

嗯 nanxiong说得没错,其实这个LabVIEW社区也是想提供一个平台让全国的LabVIEW爱好者一起“好好学习,天天向上”。 :)
我的征途是星辰大海 ……
天下会: gsdzone.net/tianxia

TOP

 

嗯 支持一下 呵呵

TOP

 
1/5页12345 跳转到
发表新主题 回复该主题