第2.3节 LabVIEW图形化编程语言
在讨论LabVIEW图形化编程语言的特点之前,还是要先回顾这样几个基本概念:
2.3.1 什么是语言?
语言是一种符号系统(文字和语音),是用来表达我们的思想及进行相互交流和沟通的一种手段或着说是:一种工具。
语言是人类创造的,人类也创造了一些没有语音的语言系统,比如:手语、旗语等等。
即使是网络时代的到来,亦被人们称之为:信息化时代或信息化革命(网络起到沟通桥梁的作用)。其本质上还是关注的人际间的交流和沟通,而交流和沟通的关键仍是语言,所有语言最核心的作用就是起着人类间相互交流和沟通的作用。
2.3.2 什么是计算机语言?
当计算机出现后,人类又创造出能够与计算机进行沟通的语言,称为:程序语言。计算机语言的演变和发展,完全是为了更好的指挥计算机为人类工作。
程序语言是用来指挥“冷冰冰的计算机”表达我们的想法(意念)并能够被计算机执行的程序代码。
计算机程序语言历经几代的发展演变:
机器语言(Machine language)
最初的程序语言(直接面对物理层的程序语言,与处理器有关)我们称之为:机器语言。
机器语言,也就是人们通常所说的:机器码。 机器码是可被中央处理器(CPU)加载并执行的由0和1组成的序列。由于硬件处理器的不同,所以机器码序列也会是不一样的。可以讲,机器码是处理器 (CPU)可识别的唯一语言,并且是执行速度最高的语言。它也是与计算机的硬件(CPU)有着最为直接的关系的一种语言。
但是,当人们看到机器码时,由0和1组成的序列(程序),实在是感到毫无任何规律、枯燥无味,并且无法理解和记忆。特别是,当计算机处理器的性能不断提高 时(位数增加),机器语言可能被视为世界上最无法读懂和难以记忆的语言。试想一下,由64位0和1组成代码,如何记忆和理解它们。
为了解决这个问题,使更多的人、更方便的使用计算机,并提高编程效率充分发挥计算机的作用,人们对机器语言进行了抽象处理,从而导致了较高一级的汇编语言的诞生。
在处理复杂事物时,采用抽象处理的方法是降低事物复杂度的最好方法。
汇编语言(Assembly language)
汇编语言,是从机器语言中抽象提炼出来的使用缩写或助记符进行编程的低级编程语言,并且提供较少的控制指令和数据类型,其中的每一条语句都对应于一条相应 的机器指令(代码)。通过汇编程序开发环境,可以将汇编语言翻译成机器语言,汇编语言同样与给定的处理器相关。
在早期,包括操作系统在内的许多系统软件都是用汇编语言编写的(比如:UNXI操作系统)。使用汇编语言的好处在于可以提高执行速度,并且程序员还可以直 接访问系统硬件。但是,汇编语言由于其开发环境和汇编程序都依赖于给定的处理器,并且其指令和数据类型很少,同时程序的可读性和可移植性都很差无法广泛使 用。于是人们再次对汇编语言进行抽象处理,从而导致了更高一级计算机程序语言的诞生。
高级语言
高级语言,是从低级的机器语言抽象而来的更高级计算机程序语言。高级语言通常使用和英文单词类似的关键词,这些关键词可以被翻译成多条机器指令。实际上,比汇编语言高级的计算机语言都是高级语言。
C语言是目前最为广泛使用的高级语言。它既具有一般高级语言的特性,同时又具备了一些低级语言特性(某些汇编语言的特点)。
当然,高级语言还有很多种比如像我们所熟悉的:面向对象的C++、Java及具有可视化编程环境的VC、VB、Delphi等等。这些高级编程语言的存在和发展说明,除了各自的特点不相同,应用领域不同外,还有编程方式的不断改进的推动。
比如:Basic演变到Quick Basic然后又演变到Visual Basic。
C演变到C++然后又演变到Java(号称没有指针和头文件的C++)及后来的VC。
这些已不在我们讨论的范围内,有兴趣者可以看相关的书籍来了解。这些高级语言的程序设计方式都是基于文本代码的。
还有没有比高级语言更好的计算机程序语言呢?有,那就应该是图形化编程语言。
图形化编程语言
我们前面谈过,人类在解决、处理复杂问题时,往往采用的是抽象处理的方法,比如:从“机器语言”抽象到“汇编语言”,又从“汇编语言”抽象到“高级语言”。
那么现在的问题是:“高级语言”是否还可以进一步进行抽象出“超级编程语言”呢? 从计算机语言的发展规律来看,回答应该是肯定的。并且早在二十多年前,这种语言的雏形就已经出现,那就是LabVIEW图形化编程语言。
为什么说:图形化编程语言比高级语言还要好呢?那就要从图形本身的特点谈起:
1、因为使用图形,可以直观的表达比较复杂的事情。
比如:路口的交通指示牌,就是用最简单的图形来诠释通行规定。象:禁止通行、禁止停靠、禁止鸣笛、限速XX等等....。因为我不会开车,所以可能会比喻不得当,见谅!
2、图形表现的是一种视觉语言
这种视觉语言具有简单、明了的作用和功能。
比如:十字路口的交通信号灯,只使用三种颜色,依靠不同的状态可以表示出:停止通行、准备通行、正常通行和准备停止通行等多种状态。此时采用语音和文本对于驾驶车辆都不适合。
手语、旗语也是视觉语言。
3、图形因为形象化所以容易记忆和理解
学习过程本身就是:记忆加理解。越简单的表述就越容易记忆,越形象化的东西越容易理解。
比如:禁烟的标识、危险品的标识、卫生间的标识等等...。
从高级语言抽象出来的图形化编程语言,基本上也具有上述图形特点。
下面通过几种高级语言的程序代码,来看看基于代码的高级语言与基于图形的编程语言的各自特点。
2.3.3 几种高级语言和图形化语言的代码展示
在许多计算机程序语言的教科书中,都是通过介绍“Hello-world”程序来向读者展示出第一个程序示例作为开场白。我搜集了一些语言的该程序代码示例,但未经编译运行,在这里仅作为展示和比较用。
在如此重多的语言中,你更喜欢哪一种呢?我喜欢LabVIEW——一种图形化的编程语言。
C程序代码
# include<stdio.h>
int main ()
{
Printf (“Hello , World! \n”);
Return 0;
}
C++程序代码
# include <iostream>
Int main()
{
Std::cout<<’Hello , World !\n’;
return 0;
}
C# 程序代码
class ConsoleHelloWorld
{
public static void main ()
{
System.Console.WriteLine(“Hello , World !”) ;
}
}
JAVA程序代码
public class HelloWorldCommandLine{
public static vold main (String[ ] args){
System.out.printLn(“Hello,World!”);
}
}
Windows程序代码
# include <windows.h>
Int WINAPI WinMain (HINSTANCE hinstance,HINSTANCE hPrevlnstance,
PSTR szCmdLine,int iCmdShow)
{
MessageBox(NULL,TEXT(“Hello, World !”),TEXT(“HelloMsg”,0);
returm 0;
}
VB程序代码
Dim ny As Integer
Private Sub Form_Load ()
Ny=0
Text1.Text=”Hello , World !”
Text1.ForeColor=RGB(255,0,0)
End Sub
LabVIEW(图形化)程序代码
LabVIEW图形化程序代码见右图,LabVIEW图形化程序本身还提供了一个漂亮的前面板见左图。一看就清楚,那种语言更简单、更高效。
2.3.4 计算机语言的发展关键是不断的进行抽象处理
从上一节几种编程语言的简单对比中,我们不难看出:图形化编程语言的确简单、明了。更可贵的是:LabVIEW还提供了一个前面版,而其它高级语言基本上还是在“控制台”上输出、显示。如果使用基于文本的编程方式,仅一个前面版可能就要编写很多行的程序代码。
下面在通过两个例子来做进一步的说明:
例1:
小时候,在我们刚刚开始会说话时,大人通常是用“看图说话”的方式来教我们认识什么是苹果?什么是梨?什么是香蕉?显然,利用图形或图像的概念使我们很快认识了这些水果。试想如果用文字或拼音来教我们认识这些水果,效果决不会好的。
换句话说,图形或图像由于简洁明确,的确要比文字或拼音更适合初学者来认识和区分。事实上,编程语言也是具有相同的规律。
对于那些学习某种高级语言的人来讲,高级语言复杂的语法规则、指针、内存、类库等等掌握根本谈不到轻松易学。
而LabVIEW确是做到了这一点,使用LabVIEW图形化的编程方法,根本无需考虑什么:语法规则、指针、内存、类库等。LabVIEW这种图形化语言将许多复杂的事情抽象的极为简单明了。
例2:
如果时光倒退回二十多年前,那时人们对计算机的操作、控制还是基于被称为:DOS的磁盘操作系统(Diskette Operating System),即便是一个很简单的操作人们也会噼噼啪啪的敲击一阵键盘,对于复杂操作人难免还要认真仔细的查阅DOS手册。那时的MicroSoft还是一个编写DOS的小公司。
后来,Mac(苹果电脑)首先实现了计算机的图形化操作设计,点击鼠标、利用拖拽即可完成对计算机的一些操作控制。LabVIEW大概也是受到了图形操作系统的启发(不知是否真的如此),从1983年开始了LabVIEW的设计,并于1986年在Mac机上完成了LabVIEW1.0版的发布。直到 MicroSoft也设计出图形化操作系统时,LabVIEW才发布了Windows版。这大概是LabVIEW2.0,到LabVIEW3.0发布时它已经全面支持跨平台使用了。
计算机操作系统的图形化,无疑加快了计算机使用的普及和使用的大众化(当然也包含硬件发展的推动作用),这是无可争辩的事实,使计算机由过去的专供专业人 员操作使用工具,而真正变成了不分年龄、不分专业的大众工具。其中,真正起核心作用的还是图形化操作系统得简洁、方便和易学。
编程语言的图像化应该与操作系统图形化一样,给那些不善于使用代码编程的人带来了实现复杂程序设计的机会(我就是其中的一个受益者)。
其实许许多多学习过LabVIEW的人都应该有这样的体会:图形化的编程方法的确大大降低了程序设计的复杂度,在测试、测量领域LabVIEW的确是比那些“高级语言”更好的“超级编程语言”。
当LabVIEW真的成为通用编程语言时,它一定可以被称为:超级编程语言。
LabVIEW是图形化的编程语言。那么,还能对它继续进行抽象处理,进一步提高它的简洁性和方便性吗?
Express VI
DAQ助手
仪器I/O助手
视觉助手
难道这些不是吗?
对上述这些"快速VI"和"小帮手"(国语)还能再抽象吗?
Signal Express不是吗?
使用Signal Express甚至于无需编写任何代码即可实现测量、分析、处理。