G 语言
    G 语言是图形化编程语言(Graphical Programing Language)的缩写。LabVIEW 有的时候也被叫做 G 语言。我们可以这样理解:LabVIEW 是一个开发环境(类似的如 Visual Studio 也是一个开发环境),在这个环境下编写的代码就是 G 语言代码(类似的如在 Visual Studio 下写出的C代码)。
    目前在中国,很多工程师认为 LabVIEW 是一个应用在工业测控领域的应用软件,并不理解他是一个编程语言。原因有两个,首先是因为它和以往其它的编程语言差距太大,第一次看到它的人倒是更容易联想到电路板布线、工业总线配置软件等;其次是因为 LabVIEW 在中国使用的年头不多,大多数用户仅用到了 LabVIEW 的一小部分功能,还没有真正体验到 LabVIEW 的强大。
    既然是一门编程语言,在使用 LabVIEW 的时候,就应该按照程序设计的思想来解决问题。举一个例子来说明如果用程序设计的思想来解决问题:
    我们需要解决的问题是求两个正整数的最大公约数,这是一个非常常见的编程例子。
    LabVIEW 来解决这个问题,应当与用其他语言求解这个问体的思路是一致的。按照程序
设计的一般方法,解决这个问题可以三个步骤:
    第一:确定问题的需求,给出需求的详细说明。对于这个求最大公约数的问题,我们在这一步需要做的就是写出程序输入输出的详细定义。如果是用普通的文本语言编程,你至少应该以文档的方式吧问题需求记录下来。但是 LabVIEW 程序员在这一步有个更方便的设计方法——直接在 VI 的前面板上定义程序输入输出:程序需要两个输入值(a, b),用 Numeric control 代表,一个输出(x) indicator 代表。输入要求是正整数,我们可以把 Numeric control 的数据类型设置为 U32,并在这个控件的属性中设置最小值为1。再为 VI 和它每个控件添加上帮助信息,VI 的前面板就可以用户提供一个详细的 VI 的功能描述以及接口定义。
    第二:设计解决问题的算法。一个问题通常不只会有一种解决方法(算法),比如说我们的求最大公约数问题,你可以采用穷举算法,把1a之间所有的整数都试一遍,然后到那个最大的公约数;也可以使用。
    多数情况下这一步骤和具体的语言环境无关,比如说我们的问题不论采用哪种语言编写,g.c.d.算法的效率都高于穷举法。但是某些时候可能要考虑 G 语言不同与文本语言的特性,
G 语言下使用不同于其他语言的算法。比如要遍历一棵树,可以使用递归的算法,也可以使用循环的算法。在C语言下,一般会选择递归的算法,因为递归算法的思维方式更自然,更容易掌握,实现起来也比较方便;但是在 G 语言下,递归的实现并不那么容易,效率也比较低,所以在 G 语言中,选择循环的算法更加适合。
    对于我们要解决求最大公约数问题,我们还是选用g.c.d.算法,它的运算过程如下:
        Step1: If (a mod b == 0) goto Step3; else goto Step2;
        Step2: (a, b) = (b, a mod b); goto Step1;
        Step3: x=a; return;
    第三:在 LabVIEW 下实现设计好的算法。G 语言之所以被称之为图形化的编程语言,并不仅仅是因为它的程序又图形化的界面(前面板),最本质的原因是因为它的代码也是通过画图的方式来编写的(程序框图)。
    程序员和编程员的区别针对本例,可以使用 while 循环,a b 分别用循环上的两对移位寄存器表示。在循环体内首先判断 a 是否被 b 整除,如果是,结束循环;否则把 b a mod b 赋给两个移位寄存器,进入下一次循环。
    图形化编程语言是数据流驱动(以后再解释)的,与一般文本编程语言的过程驱动机制有很大差别,因而在程序设计的思路上也与文本编程语言有所区别。尤其是有过文本编程经验的程序员开始使用 LabVIEW 的时候,会感觉 LabVIEW 缺失了很多文本语言常用的功能,比如使用局部变量、跳出循环等等,因而 LabVIEW 用起来不是太方便。另外 LabVIEW 编写出来的的代码连线乱七八糟,造成程序阅读和维护的困难。不过这些问题其实不能算是 LabVIEW 本身的问题,主要是由于编程者还没有掌握 G 语言的编程思想造成的。
    LabVIEW 虽然不能覆盖所有文本语言的优点,但它具有自己的特。在编写与工业领域设计、测量、控制等相关的程序或系统时,其开发效率大大高于其它语言。
    LabVIEW 中可以为代码添加图文并茂的注释,再加上人类对图形的识别速度远远超过对文本的分析速度,一个优秀程序员编写的 G 语言代码的可读性要高于文本语言一个层次。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。