可视语言

科技工作者之家 2020-11-17

可视语言是一类用图形符号描述计算任务的处理对象和处理过程的语言。这种语言与传统程序语言的最大区别是:传统语言是由正文形式表示的一维字符串结构,而可视语言则是由图形符号的空间排列所表示的多维结构。可视语言的实现要求为它建立一个实现环境,称为可视程序开发环境。

简介语言是人类创造的,能将语素按照各种方式组合起来,传递信息的工具。随着人类文明的发展,语言扩展到人与人造工具之间的交流,最为典型的是人与计算机之间的交流语言—软件语言。软件语言可以定义为:语言是基于一组记号与一组规则,根据规则由记号构成的记号串的总体。规则构成语言的语法,记号则是反映语义和语用的最小单位—语素。语素形式的不同,语言传递信息的方式亦不相同。可视语言是以可视的形式表示计算过程中的对象、概念和过程的计算机语言。早期的研究仅限于软件可视化,即为软件开发过程的不同阶段提供静态的或动态的视图,如用图形表示程序的控制流程、数据结构、计算过程和计算结果等。后来发展成可视化编程,用可视对象的结构及它们之间的空间位置关系来表示程序。由于人类通过观察图形获得信息比读一长段正文获得同样的信息快得多,在信息的形象表示和抽象表示之间更倾向于前者,可视语言越来越受到欢迎。可视语言的实现要求为它建立一个实现系统,用一系列的工具来完成可视程序的编辑、语法分析、语义映射、代码生成等工作。

图符编辑程序负责编辑可视程序P的图符,经模式分析程序把空间结构的图形程序变换成模式串 ,语法分析程序由模式串产生P的分析树, 再经语义映射程序得P含义(程序的机内表示),再通过解释程序执行或经编译程序产生可执行代码。为了支持大型系统,环境中还应该有数据库、视图工具、浏览程序、项目管理程序等工具

可视语言的实现可视语言的实现,一般是指用这种可视语言写的程序可以在计算机上解释执行或生成可执行的目标语言代码。这要求对可视语言进行严格的语法描述和语义定义,并定义从语法结构到语义的映射。可视语言用可视对象的结构及它们的空间关系(相交,邻接,包含等)刻画程序结构。可视程序是二维的或多维的,不象正文语言程序在输入流中存在线性关系。定义可视语言的语法结构首先要定义构成该可视语言的基本图形元素集合和空间关系集合,然后再以这两个集合为基础用恰当的文法描述可视程序的语法单位。在这方面有两种比较有影响的方法,一种是基于ICON的Picture Grammar,它先把基于ICON的可视程序变换成模式串,再利LR分析法进行语法分析;另一种是对属性文法加以改造而得到的Picture Layout Grammar,这种方法可以描述复杂的可视语言,如StateCharts。可视语言的语义定义与其语法描述相关联,为可视程序的每个语法单位定义语义映象,从而使可视程序可以被解释执行或为生成可执行目标代码作准备1。

可视语言的必然性可能性人类书面语言从可视方式演化为抽象的符号方式,说明语言可视化方式存在着一定的缺陷。从人类语言发展史看,可视化语言主要有以下几个缺陷:①书写不便,用手工方式绘制图形来表述信息费时费力;②信息表述范围狭窄,许多抽象信息很难用图形方式表述;③存储量较大,在以纸介质为主情况下,不便携带;④不利于口头表述。由于这些缺陷,人类逐步用抽象语言代替了可视化语言。但人们并没有摒弃可视化语言,公共场所的标识、提示,对问题的分析所绘制的分析图等均保留着可视化语言的形式。这一点说明,可视化语言存在着其优点:①直观,信息的传递者和接收者可以直观地表述和接受信息;②便于理解,直观、形象的图符与有形事物更为接近,能较好地反映事物的特征,便于信息使用者的理解;③对行为过程的表述更为直接,形象。如工作流程图等。这些特点是抽象的符号语言所不具备的。

人们对抽象语言和形象语言的使用,取决于使用的场合,以及信息接收者的理解能力,在软件语言的抽象化和形象化的问题上,研究焦点亦在于此。第一、二代计算机主要用于科学计算,使用人群为高知识阶层,所涉及的问题域是抽象的数学,这一时期,抽象的软件语言形式与使用人群和问题域相吻合,使得以高级语言为代表的符号语言迅速发展。但随着计算机的普及,使用人群扩大到整个人类,问题域涉及到社会的各个行业,计算机的求解域不再局限于抽象的数学问题,而是愈来愈多地涉及到形象化的行为问题。这时,抽象的高级语言在某种程度上制约了计算机应用的发展,并且难以实现许多问题的求解需要。可视化的使用也成为必然。图形界面和地理信息系统就是可视化在计算机应用中的实例。

计算机用户要从简单使用计算机到操纵计算机,直接与计算机进行交流,就需要掌握软件语言。抽象的软件语言语素、苛刻的语法规则、晦涩的语义、复杂的算法往往使使用者难以适从。鉴于可视化形象、直观、便于理解的特点,软件语言的可视化研究成为必然。随着计算机性能/价格比的不断提高,以及计算机软件技术的提高,可视化形式的主要缺点逐步由计算机技术弥补。图形技术可以迅速生成规则的可视化语言语素,供信息传递者使用;利用封装技术,将复杂信息尤其是算法信息封装在可视化语素中,解决抽象信息的表达问题;高速大容量存储器的使用,信息存储问题已不再是制约计算机使用的主要问题,可视化技术在计算机中的使用成为可能。

可视化软件语言与人类远古时期的可视化自然语言存在着本质的区别。可视化自然语言是对实体的可视化描述,而可视化软件语言是在对现实世界抽象的基础上,对抽象后的数学模型进行可视化处理。是事物螺旋式发展过程中的上升性回归2。

发展现实生活中,图形和图表往往比文字更能形象地表达人们的思想意图,也更有助于思想的了解和交流。由此早在 20 世纪 50 年代计算机科学中就引入了描述计算过程的逻辑图概念, 以后又把它逐步规范化为流程图,用它们描述算法,作为进行程序设计的辅助工具。60 年代它就成了最早的可视语言 ,1966 年 W .R .Sutherland 第一个用逻辑图作为可视语言表示程序并给予解释性实现,开创了可视语言的先例。1969 年 T .O .Ellis 等人建立的 Grail 首次用流程图表示计算步骤并直接编译成执行程序。这可能是可视语言的最早编译实现,其中流程图框中内容是用机器语言陈述的。以后又建立了很多流程图和流程图变形 (如 N-S 图)式的可视语言。非流程图式可视语言的最早成果大约是 C .Christensen的 AMBIT/ G(1968 年)和 AMBIT / L(1971 年),它把程序和数据都表示成有向图。程序用模式匹配进行操作,相当复杂的算法 (如存储碎片收集)都可以生动地描述成图上的局部变换。第三类可视语言称为 HiGraphs,是 D .Harel 在 1988 年建立的,它允许结点中包含其它结点 ,它限制产生专用的可视语言 ,例如 Miro(1988 年)就是一种定义操作系统安全约束的 HiGraphs 语言 , StateMaster(1989 年)则是一种计算机用户界面的 HiGraphs 语言。第四类可视语言如 M .Zloof 等人建立的 QBE(1977 年) ,它允许用户用二维表格指出在关系数据库上的查询。1981年又把这种思想扩充到办公自动化领域建立 OBE。第五类是 Petri 网式语言。1981 年 T .Ae 等建立的MOPS-2 用带色 Petri 网按可视方式构造和模拟并发系统。VERDI(1987 年)是一个 Petri 网式可视语言的解释性系统。用户在这种程序执行时可以看到令牌在网上移动的程序动画。第六类是数据流图式可视语言,它们以 PROGRAPH (1983 年) 和LabVIEW为代表。第七类是自动生成用户界面的可视语言,例如 Peridot(1988 年)和 UIMS(1989 年)。此外,还有一些其它类型的可视语言。这些可视语言都体现了用图形来进行编程的特点。其图形符号大都是软件工作者所熟悉的。对其它(如商业营销、 企业管理)领域的对象图形和操作符号也进行了一些讨论,可以建立针对这些领域工作者所熟悉的图形符号的可视语言。G .TorTora 提出一种可视语言的形式描述:可视语言程序由基本图符的空间排列组成。基本图符分为基本对象图符和对这些对象的处理图符。可视语言的终结符号集包括基本图符和空间操作符两部分。最基本的空间操作符至少包含横向连接、纵向连接和空间覆盖等。一个可视语言表示成三元组(ID,Go,B),其中 ID 是基本图符字典,它刻画了每个基本图符的逻辑部分(含义),物理部分(显示图形)和类型(对象或处理)。Go 是上下文无关文法,它指出如何用空间排列基本图符构造合法的复合图符。每个图符,不论是基本的还是复合的,都具有逻辑部分和物理部分的对偶表示。一个可视程序也是一个复合图符。B 是知识库 , 它包含了为构造一个已给可视程序的含义所需的具体领域的信息。(ID,Go,B)构成一个可视属性文法 VAG,它以 Go 为基础。VAG的语义规则是与Go中的产生式相关联的,它指出已给派生树如何合成可视程序的含义。实际的语义规则由包含在 B 中的信息以具体例子说明每个规则的未定部分。

本词条内容贡献者为:

宋春霖 - 副教授 - 江南大学

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。