类自然语言程序设计分享 http://blog.sciencenet.cn/u/yinpu 博主开发开蒙语言。具备自然语言主要特征:语言表达知识;无限词汇量

博文

连通知识的孤岛

已有 1571 次阅读 2020-2-13 14:32 |个人分类:类自然语言程序设计|系统分类:科研笔记

连接知识的孤岛

注:我在以前的文章使用中文“类自然语言”和英文“Quasi_Natural Language”称呼本人提出的新一代程序设计语言,因有人在百度上建立了“类自然语言”词条。这个语言不再使用这个称谓,暂用“统语言”代替。

语言的表达能力

语言由词汇组成,每个词汇代表的意义称为语义。一种语言的所有词汇构成该语言的词汇集。词汇集的不同和语义的不同使不同的语言表达能力也不同。如某个语言的一个词只能表示一个数,另一个语言一个词能表示一张照片,显然后者表达能力强于前者。用前者表示照片需要很多数。或者某个语言的词汇只能进行四则运算,而另一个语言的词汇能完成傅里叶变换,后者表达能力也强于前者。用前者实现傅里叶变换需要用四则运算设计很多步骤。

更强的表达能力是编程语言追求的目标,以期用最少的文字表达最复杂的事物,最少的命令完成最繁重的任务。

蕴含知识的语言

现有的程序设计语言,不管是采用编译的方式还是采用解释的方式,语言的内容是由语言处理软件(编译器或解释器)预设的,如ANSI C定义了32个保留字和44个运算符,这里将之统称词汇。语言处理器设计完成之后,词汇集就完全固定了,其词汇的数量和每个词汇的含义都不可改变。这些词汇的功能往往非常简单,如定义一个简单的数据,象整数。完成一个简单操作,如加法。这些语言的单个词汇对现实需求几乎没有意义,要实现具有宏观意义的任务,必须从这些词汇出发编写复杂的程序。如表现一所房屋可能需要很多数据,究竟需要多少数据,每个数据的含义,数据之间的关系等,我们称为知识。要显示房屋的效果图,需要根据这些数据,从程序语言的简单操作出发,设计繁复的步骤,计算出房屋形成的图像,究竟需要哪些操作,以什么顺序进行,重复多少次等,也称为知识。如果能用一个词表示房屋,而不需要了解其具体的数据,用一个词显示房屋效果图,而不需要搞清获得图像的每个具体步骤,显然就提高了语言表达能力,具有类似宏观意义的词汇我们称为蕴含知识的词汇。

传统编程语言一般都象C语言一样不蕴含知识,称之为二代语言,不具有表达宏观概念的能力。要表达宏观的意义,词汇就必须蕴含知识。

知识的孤岛

从以上论述可知二代语言本身不能表示知识,不能用少量词汇和语句完成宏观的任务,因此没有接受过训练的普通用户无法直接使用这些语言,只能通过用二代语言编写的应用程序享受计算机的便利。即在二代语言时代,知识蕴含在应用程序之中,而不在语言的词汇集中。每个应用程序都要设计自己的数据结构,处理方法,响应机制等一整套规则,形成一个知识体系。我们有很多好的应用系统,每个应用构成独自的知识体系,但要用一个应用的部分功能和其它应用的功能对接却几乎不可能,很难从一个完整的应用程序中分离出所需部分。如一个警用监控系统中包含人脸识别功能,一个无人机操纵系统中具有自动跟踪功能,但要实现无人机跟踪指定的人时,却无法从第一个应用中分离出人脸识别部分,从第二个应用中分离自动跟踪部分,形成一个新的功能,只能把两个应用中已经完成的代码设计重复一遍。因此,采用传统方法编写的每一个应用都是一个知识孤岛,彼此没有沟通渠道,无法共享知识成果。

统语言设计了知识表示规范,按照统语言规范开发的系统可以为他人直接利用,共享成果。

知识表示的解决方案

虽然没有从知识的角度看代码共享的问题,软件开发人员早就意识到知识共享的意义。面向对象程序设计(OOP)实际上就是企图实现知识共享,其对软件设计能力的推动有目共睹。但这个方法还不是最终解决方案,从Tiobe Index可以看出,OOP的语言依然占据很大比重。同时,支持OOP这些语言门槛依然较高,需要专业知识才能使用,特别是设计类的过程更为繁琐。

另一种方案是在基本词汇集之外提供大量的库函数,如Python,将知识蕴含于这些库函数和随之提供的数据结构中。这种方法解决不少问题,但仍然有高的门槛,先要学会一种二代语言才能利用这些知识。

统语言采用接近自然语言的表达方式,将知识直接蕴含于词汇中,其文字形式和语法接近自然语言。具有高的表达能力,易为大众接受。

开放的语言

词汇集固定不变的语言称为封闭语言,词汇集可以改变的语言称为开放语言。传统编程语言囿于其语言处理器的实现方式,都是封闭语言,只能识别数量有限(如数十个)的词汇。即使设计成蕴含知识的词汇,也只能针对一个能用有限词汇表示的特定范畴。显然有限词汇不足以涵盖所有应用领域,蕴含知识的通用程序设计语言必须是开放的语言。而传统语言处理器不能接受无限词汇量,必须设计新的语言处理器。

统语言的解释器和语言的主要词汇集是分离的,除了极少决定句型的保留字,统语言的词汇都在不依赖于解释器的字典中定义。修改字典就修改了词汇集,而语言的解释器不需要任何更动。因此统语言可以作为通用编程语言应用于任何领域。

文字不限的语言

由于统语言词汇集和字典的分离,其词汇可以方便地以任何形式出现。原则上计算机接受的任何字符串都可以作为词汇,因此英文、中文甚至阿拉伯文都是等价的,可以用任何一种文字甚至多种文字混合构成词汇。容易实现国际化。

可进化的语言

由于词汇集可独立修改,语言可以从外延和内涵两方面进化。可以增加新的词汇,以扩展应用领域。也可以更改一个词汇的语义,比如一个动词原本是用统语言编写的程序实现,效率较低,以后改用C语言编写的高效函数实现,只需在字典中更改这个词汇部分属性,而使用这个动词的其它程序无需变动。

应用前景

作为人机交互的界面。当下人机交互界面有两类:命令行界面和图形用户界面(GUI)。前者需要记忆很多不合于习惯的命令,对计算机的工作方式也要有较深入的理解,门槛较高。后者使用方便但受空间限制,功能有限,效率也较低。统语言可以兼二者之长,比命令行方式更容易使用,比GUI方式功能更丰富,效率更高。如果结合语音识别,可获得更为友好的用户界面。

甚至可以设想一种新的软件架构,由一个简约的系统核心再加统语言,现在操作系统外壳和应用软件全部纳入统语言的词汇集中。

作为机间通信的界面。用统语言实现智能设备之间的通信可以高效传递信息和指令。如果两个设备有共同的知识,可以用简单消息传递庞大信息。如人脸识别系统的前台识别每个顾客后将一个入住名单传给后勤服务,不需要把每个人的视频截图和面部特征传过去,因为后勤服务也有识别能力。或者用一条简单消息通知一个车站的监控系统对体温过高的旅客报警,至于如何区分旅客个体,如何测体温,如何报警等,则在监控系统的知识中,无需传递。

编程工具。除了用简单的语句操纵计算机,也可以用统语言编写复杂程序。由于统语言的词汇蕴含知识,具有强表达能力,其程序是从高的起点出发,程序编写效率将提高。




https://wap.sciencenet.cn/blog-271176-1218323.html

上一篇:下载地址
收藏 IP: 182.129.131.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-20 04:01

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部