奇书网

奇书网>语言学分析语言现象 > 二语言分析方法与计算机理论问题(第2页)

二语言分析方法与计算机理论问题(第2页)

本质上,Ada属于串行程序并行化的编程语言,采用自底向上和自顶向下的分级开发模式,具有很强的逻辑性。为了提高程序的可移植性和可靠性,Ada将数据表征与数据操作相分离,并采取了“强类型”设置,不允许在不同的数据类型之间进行混合运算。这就防止了在不同的概念之间产生逻辑混淆的可能性。Ada也几乎不允许任何隐式转换,违反类型匹配要求的部分都会在编译和运行阶段被发现,这就避免了子程序调用的多义性,从而增强了程序的可靠性。也就是说,对于一段看上去没有表达错误和逻辑错误的程序,如果它没有定义数据类型,或者对不同类型的数据进行数值运算,都将不能通过编译程序的检验。对于不同类型的派生数据,即使其母类型相同也不能通过编译。此外,Ada提供的类型限制还可用于精确表明数据类型,以解决程序中存在的各种歧义。

这种表征方式只是告诉编译器确切的数据类型,并没有改变值的类型就解决了歧义问题。可以说,明确的表征方式是Ada语言的一大优势。

对于现代软件设计而言,软件的维护费用往往超过其开发费用。因此,可读性是降低软件后期维护费用的关键性能之一。为了增强可读性和可维护性,Ada采用接近于英语结构的语法形式,具有很强的表征能力,便于程序的开发和维护。

Ada95中规定的基本字符分为图形字符、格式控制符和其他控制符等三类,其书写格式尽量接近英语书写的习惯。对于数字,Ada支持二进制到十六进制之间所有实数型和整数型的任何进制的数字表征,其格式为:Base#Number#,Base表示指定的进制,Number为该进制所表示的数字。

在控制指令(Statement)方面,相比别的程序语言,Ada95只是增强了其可读性。总之,Ada避免过多使用复杂句型,并以较少的底层概念来实现程序的简便性。

以程序包为例,Ada将对象模块的语法定义为:packagePKG-NAMEisendPKG-NAME

为了便于生成大型复杂程序,Ada对模块实行分别编译。但Ada对于可靠性和可读性的要求,使得其在编译过程十分注重静态检验,从而导致程序代码较长且执行速度减慢。①

作为并行软件,Ada把任务作为最小单元,每个任务中的语句采取串行表征方式,任务间通过共享变量来实现并发性。这种结构适用于多处理机系统的程序设计。此外,Ada提供基于硬件的低级输入输出程序包,通过共享变量来实现嵌入式编程,可用于所有的嵌入式计算机系统。

(2)Occam程序的表征特征

并行语言最大的特点,就是采用了不同于串行语言的用于表征进程和线程的功能。由于并行系统建模的相关数学基础理论问题还没有解决,Occam语言的通信理论是建立在通信系统演算(CCS)和通信顺序进程(的并行关系主要体现为多个进程之间的并行执行,利用关键字PAR来描述进程之间的同时性。进程之间的通信不同于Ada,Occam不允许通过共享变量来实现进程之间的通信,而是采用通道通信的方式。这是一种单向自同步的通信方式,当发送方和接收方都准备好时,才在进程之间单向传递信息,不能既发送信息又接收信息。因此,通信在Occam中是同步的。但两个进程不能同时处于等待对方发送信息或接收信息的状态,否则就会出现死锁。

Occam语言最大的特点在于它是真正与硬件相匹配的并行程序,可以直接控制各处理器对并行进程的执行,还专门针对硬件定位设计了PLACED语句。根据程序运行的硬件基础,Occam中的多个进程有可能是运行在一个处理器上的软件模拟,也可能真正运行在多个处理器上。因此,Occam语言中区分并发(cy)和并行(Parallel)的概念。前者意指有可能是并行的,而后者则强调真正的硬件层面上的并行。

同所有的高级语言一样,Occam需要对程序中用到的数据类型、表达式、操作运算符、数组、字符串等各种表征方式进行事先约定,此外,还要对并行通信的表征方式进行说明。

Occam在原处理的基础上构建程序结构和流程,最终形成完整的程序。原处理是Occam程序中最简单的可执行动作。与其他程序语言不同的是,原处理只有输入、输出和赋值三种,用以表征其在整个程序结构中是并行还是串行。

&ri网的表征特征

&ri网是佩特里(CarlAdamPetri)提出的一种网状结构模型理论,并逐步发展出以并发论、同步论、网逻辑、网拓扑为主要内容的通用网论(geheory)理论体系。Petri网的革命性在于,它摒弃了基于冯·诺依曼机的全局控制流,更关注于过程管理,因而没有中央控制,也不存在固有的控制流。全局控制的问题在于,在系统相对复杂的情况下全局状态不仅实时不可知,甚至连某个瞬间状态也不可知。因此,Petri网用局部确定的方式来表征客观实在。②

&ri网适用于描述分布式系统中进程的顺序、并发、冲突、同步等关系,尤其在真并发方面具有独特优势。作为建模和分析工具,Petri网擅长用网状图形表征离散的并行系统的结构及其动态行为,其最大的表征特征是既可以使用严格的数学表征方式,也可以使用图形表征方式。尤其是独特的图形表征方式,可以形象地描述异步并发事件,这来源于其独特的网状结构。“Petri网以尊重自然规律为第一要义,以确保其描述的系统都是可以实现的”③。

作为网状信息流模型,Petri网主要用于表征网系统。长久以来,Petri网一直尝试寻找一种基于某种公认交换格式(i)的协议,提供可以在Petri网模型之间进行明确交流的方式。然而,人们很快便认识到,如果这种协议遵从一种公认的Petri网形式定义,将会取得更好的效果。而Petri网的明确表述,必然是形式定义中抽象句法被精确定义后的具体语法。研究者们公认,提出这样一个标准规范的好的方式,就是建立一套定义标准规范的标准化过程。Petri网标记语言(PetriMarkupLanguage,PNML)便是这样一种被认可的规范协议,它的制定促进了Petri网的快速发展以及大规模的应用需求。

&ri网标记语言是一种基于可扩展标记语言(ExtensibleMarkupLanguage,XML)的交换格式。作为国际标准,Petri网标记语言在其第一部分就定义了Petri网的语义模型(semanticmodel),并给出了相应的数学定义。当前,经过扩充的“Petri网成为系统规范和程序系统语义描述的工具。”①

&ri网表征的优势在于对复杂系统并发过程的精确描述,而缺点也恰恰在于此。如果对细节的描述过于精确,系统的烦琐程度会呈指数级剧增,即出现所谓的“节点爆炸”。因此,必须要恰当地屏蔽细节。

如今,基于Petri网的应用已遍布计算机的各个领域,其模拟能力已被证明与图灵机是等价的。由于Petri网的类型非常丰富,不同类型的Petri网以及建模工具之间的信息交换成为Petri网标记语言标准化过程中的首要因素。而工作流网(WF_)以及诸多技术层面的研究则成为Petri网20年来取得的最主要成就。

3。并行程序表征的语义发展趋势

事实上,计算机学界对于并发和并行这两个概念并没有明确区分,常常在同一个意义上使用。对于并发的理解,需要强调的是,并发不是同时发生,而是没有秩序(disorder)。比如说,在Petri网中没有全局时间概念,每个进程依照各自的时间顺序执行。对Petri网来说,讨论进程之间执行的先后顺序没有意义,因为没有可参照的全局概念去确定进程执行的次序。同一个程序运行多次,对于相同的输入,不仅每一次的运行次序不确定,每一次的运行结果也不确定。也就是说,并行程序的运行结果由其具体运行的语境决定。这就使得并行程序的语义具有了不确定性。为了使并行程序在执行过程中能产生与程序语义相符合的效果,就必须弄清楚程序语言各成分的含义。因此,在语境中考察并行程序的语义问题就成为并发研究不可或缺的内容。

符号主义者认为,符号算法实现“从符号到符号的转换,给定这些符号的意义,这样的转换就具有意义”。形式步骤和算法是保真的:“如果我们从真符号开始,算法只会将我们带向真符号”,而且算法可以通过符号的形式性质保持其语义性质。①这似乎表明,形式系统由于我们的规定而获得意义。而塞尔的“中文屋”表明,“符号的语义性质并不附随于它们的句法关系”②。而经过形式计算和逻辑推理之后,这种基于分解的形式语义能否保真?尤其是在过程和结果都不确定的并行计算中,我们应如何确保语义信息的真?

计算机形式系统中,数据都是结构化了的信息。也就是说,所有的数据都具有特定的表征形式,并且数据之间有一定的关系。当大量数据进入并行程序处理系统之后,数据必定会发生形式变化。这种变化过程中,数据所蕴含的语义信息是如何转换的,这种转换能否确保大量数据信息被具有高度不确定性的并行程序处理后语义信息实现正确转换,是并行程序研究的重点。并行系统已不是图灵机意义上的计算系统。对并行表征的语义考察也不能局限在语义分解的层面。对并行程序表征语义的研究,应该考虑表征系统与特定的硬件结构、具体并行计算过程的运行特征等因素,区别对待不同并行模式中的语义表征的模糊性和歧义性问题,尤其是程序运行中整体语义的保真问题。

从20世纪50年代起,程序语言的形式语法研究取得了较大发展,而在形式语义方面一直没有取得较为理想的成果。表征如何获得意义是并行形式系统面临的首要难题。近年来,并行程序的形式语义研究越来越受到重视。对于并发过程的不同理解产生不同的并发计算范式,不同的并行程序语言就是基于这些范式开发出来的。对于并行程序语言的开发者而言,不仅要为不同的应用目标设计该语言的基本结构,还必须定义其语法形式和语义。为了适应不同的计算机硬件体系和开发需求,并行程序语言往往在语法上并不规范。通常,并行程序涉及在局部语法即上下文无关语法层面存在较少歧义,而涉及上下文相关语法即静态语义关系、甚至更深层次问题时,则存在诸多问题。对程序语义进行定义,不仅要定义所有基本元素的意义,还要赋予语法结构以明确的意义。

已有的操作语义学、指称语义学、公理语义学分别从程序的执行过程、数学语义以及逻辑正确性等角度形成了研究程序语言语义的三条主线,但一直不能很好地融合,从而也无法体现在具体的程序语言中。理论界通常认为,这三种类型的语义彼此之间是相对独立的。但温斯克尔(GlynnWinskel)认为,这三种类型的形式语义之间是高度依赖的,它们之间很有可能实现统一,并给出了操作语义和指称语义等价的完整证明。①

程序员编写并行程序,最重要的就是通过程序建立关于现实世界的模型。现实世界的并行性往往体现在过程而非结果中,对并行过程的模拟与控制是并行程序应用的价值所在。并行程序语言的表征力直接决定了所构造的模型对事件过程的模拟能力。语义是程序赋予的,程序的一个主要作用就是表征分解的语义及其集合。②Ada语言、Occam语言和Petri网作为并行程序语言,首先应具有对某个特定应用领域的并行问题进行形式表征的能力,因而必然要具有特定的句法和语义。其句法不仅要适合相应的并行硬件执行系统指令,而且要具有恰当表征分解语义和程序整体语义的表征力。尤其是对各并行事件的状态和过程的准确描述以及事件发生条件及其相互联系的描述,是研究并行表征语义的难点所在。

程序语义学研究形式表征与意义的关系以及形式系统与命题真值之间的关系问题。但它同时指出,语义网格、语义分解等理论只是在符号层面以及词与词的关系层面探讨意义问题,并不涉及语言与世界的关系这一层面。因而不是真正的语义学。①而Petri网的语义基底正是语义网格理论,并且,几乎所有基于形式系统的语义研究都是基于分解的。也就是说,无论是基于冯·诺伊曼机的串行计算系统还是基于非冯·诺伊曼机的并行计算系统,都是离散的自动形式系统,它们按算法规则操作带有语义信息的符号。可采取的算法由形式系统的表征性质决定。给定形式系统的符号语义,相应的算法要保证经过一系列转换之后的符号依然具有可操作层面的意义。而这种形式语义并不是真正意义上的语义学,它最多涉及表征与心理的关系,但无法关涉语言与世界的层面。

程序语义学研究的关键问题是没有涉及意义问题,而这才是语义学的核心问题。②显然,按照这个标准,现阶段的并行程序设计语言研究才刚刚涉及表征的形式语义问题,离整个程序的语义研究还有很大距离。过去的研究大都关注数据所蕴含的语义信息,而忽视了程序动态运行过程中的语义传递及转换问题。

计算机的信息系统,最主要的特征就是信息流动。并行进程中流动的信息主要是各种变量以及变量的值。变量值的变化意味着信息的改变。当一个进程将其变量值传递给另一个变量或进程时,信息流动就产生了。而信息流动也是产生并行程序语义不确定的一个主要原因。

并行进程或线程在运行中,一个非常重要的问题就是进(线)程之间的通信问题。通信是并行程序运行过程中最重要的机制。是进(线)程之间通过通信交换信息,而信息所传递的语义是如何被表达的、以及表达力如何,是当代并行表征需要研究的主要课题。并行系统要确保通信的有效性,必须保证信息表征的一致性。例如,在Occam语言中,由于所有的进程都是同时执行,且进程内变量名和通道等名称的命名和赋值具有局部性——即不同的进程可以拥有相同的变量名和通道名,因此,为了保证通信过程中语义的确定性,Occam不允许通过共享变量来实现进程之间的通信,而是采用单向自同步的通道通信方式,并要求对并行通信的表征方式进行说明。

此外,并行程序的不确定性以及验证方式也需要形式语义学的介入,而这方面的理论研究还很滞后。“语义信息的概念是基于如下的假设而被考察的,即事实信息是最重要的和最有影响力的概念,在这个意义上信息本身‘能够被表达’”①。例如,Petri网中的工作流语义(work-flowsemantic)模型,就是利用语义信息去消解冲突。而语义信息的给出与具体处理的任务有关。语义模型的任务只是用于消解冲突,并不考虑工作流任务完成的质量问题。任务完成情况属于工作流管理的范畴。需要注意的是,很多“管理操作都是由语义引起的”②,例如skip和re-turn。只有明确区分工作流逻辑和工作流语义,才能简化工作流模型。否则,不仅增加模型的复杂程度,甚至无法做出正确的描述,以致当程序出现运行错误时,无法找到错误的原因。

总而言之,与并行程序表征的语法定义相比较,语义定义要复杂得多。尤其是并行程序的不确定性等因素,使得相关研究一直无法取得有效进展,至今没有一种较为公认的定义方式。这是因为,并行程序的语义不仅取决于静态语义表征,更依赖于程序运行的动态环境。而并行程序的不确定性是其语义表征的难点所在。确切地说,并行程序的语义就是程序运行过程中的语义,即语境中的语义。语境不确定,程序表征的语义就无法确定。而这种不确定是不可预测和不可避免的。除了程序自身的不确定性,使用计算机的人和并行程序的互动也是不确定性产生的原因。而如何严格表征这种语境的变化对于程序语义的影响,成为并行程序表征的核心问题。因此,关于并行程序表征的语义理论及应用研究,将成为未来并行程序研究的主要发展趋势。

(二)不确定性与计算机模型思维变革

互联网在人们的经济、政治以及日常生活中所占的比重越来越大,不仅为计算机之间进行数据传输提供高效、便捷的通道,更为使用计算机的人提供了一种全新的交流平台。当前,Web2。0之前那种单方主导数据的时代已一去不复返,迎接我们的是多元化、且实时更新的大数据时代。一方面,网络极大地推动了人类知识的拓展途径,同时,也极大地困扰着人类知识的发展。而互联网自身的不统一性与不规则性,也一定程度上加剧了人们所获取数据的不确定性。以经济活动为中心的网络数据泛滥,使得人们对有效数据的渴求与对垃圾数据的厌弃同样不可避免,这种爱恨交织的矛盾情感亦变得越来越凸显。如何提升人们获取有效数据的效率,同时减少垃圾数据带来的困扰,已不仅仅是一个技术问题,而是“一场生活、工作与思维的大变革”,“大数据开启了一次重大的时代转型”①,“信息爆炸已积累到了一个开始引发变革的程度”②,已从一个学术概念转为人们每天都在切身体验的真实感受,从而变革着我们对世界的理解方式。大数据已然不仅仅是一个计算机科学的研究领域,而被认为是一个即将来临,甚至是已经到来的时代的标签。

在这样一种大数据时代的预设之下,传统数据处理模型,即以精确模拟和结构化的数据库为主要特征的数据处理思维,已无法适应网络社会化发展的现实需求。这使得关于大数据的研究不再局限于计算机学科领域,而是以一种时代转型的重要特征出现在大众的视野之中。

1。计算机模型的确定性之殇

第一,计算机模型的类型及其确定性基础。

热门小说推荐

最新标签