汉语程序设计语言,简称“汉语言”,或者“
汉编”, 即沈志斌教授发明的一种计算机程序设计语言。它是一种采用汉民族语言文字进行电脑编程的语言系统,支持基于汉语字、词编程,符合计算机符号语言规范,并继续向自然语言发展。它已经取得国家专利,国家发明专利号: ZL 94 1 07330.0
国际专利主分类号:G06F 17/00。 中国是个多民族的国家,语种众多,有:汉语,
藏语,
满语等;中文字体也非常多,如篆书、金书、隶书、楷书等。严格来说称“汉语编程”而不称之为“
中文编程”。因为,汉语是中国的官方语言,所以,但一般情况下,称中文编程时,也特指汉语编程。 汉语程序设计语言,是
中文编程语言的一个分支,但由于研发时间比较早,当时中国大陆少有其它中文编程语言面世,所以,发明者也称其为“汉语编程”。 在当今中文编程语言发展多样化的情况下,我们一般简称沈志斌教授在二十世纪九十年代实研发的汉语程序设计语言为“
汉编”,简称吴涛先生在二十一世纪初研发的易语言汉语编程为“
易语言”。
定义
汉语程序设计语言,简称“汉语言”,或者“
汉编”, 即沈志斌教授发明的一种计算机程序设计语言。它是一种采用汉民族语言文字进行电脑编程的语言系统,支持基于汉语字、词编程,符合计算机符号语言规范,并继续向自然语言发展。它已经取得国家专利,国家发明专利号: ZL 94 1 07330.0
国际专利主分类号:G06F 17/00。 中国是个多民族的国家,语种众多,有:汉语,
藏语,
满语等;中文字体也非常多,如篆书、金书、隶书、楷书等。严格来说称“汉语编程”而不称之为“
中文编程”。因为,汉语是中国的官方语言,所以,但一般情况下,称中文编程时,也特指汉语编程。 汉语程序设计语言,是
中文编程语言的一个分支,但由于研发时间比较早,当时中国大陆少有其它中文编程语言面世,所以,发明者也称其为“汉语编程”。 在当今中文编程语言发展多样化的情况下,我们一般简称沈志斌教授在二十世纪九十年代实研发的汉语程序设计语言为“
汉编”,简称
吴涛先生在二十一世纪初研发的易语言汉语编程为“
易语言”。
编译原理
特点
汉编系统是一个交互式的程序设计环境,最初是为程序员在小型和微型计算机上开发应用程序而设计的。主要应用于科学计算和工业控制,比如仪器、机器人、过程控制、图形和图像处理、人工智能和商业应用。 汉编语言的主要优点是软件开发快速、交互式、计算机硬件的高效使用等。
汉编语言与传统语言最大的不同是它的可扩展性。 汉编语言的编程过程就是定义新的词,词实际上就是语言的新命令。词可以用一系列以前定义的词来定义,这个过程与教育孩子的过程相似:我们总是用孩子们以前理解的概念来教给孩子们新的概念,而这些词被称为“高级定义”。同样,新的词也可以用汇编代码定义。
可扩展性的结果是我们在开发一个应用的同时,也间接地开发了一个特殊的、针对这一类应用的“面向应用的模块,它可以用于或者经过修改之后被用于相似的应用。
汉编语言的可扩展性并不仅仅是为语言自身增加新的命令,所以不要把定义词与传统高级语言定义函数、过程等同。
汉编系统还能对定义词(建词)进行扩展,创建一个可以定义其它词的词,这种词被称为“定义词”。在创建这样一个定义词的时候,程序员能够指定它所创建的词在编译时间、运行时间或者这两种状态下的特殊行为。这个能力允许我们定义特殊的数据类型,并对其行为和结构实施完全的控制。又由于这种词的运行时行为可以用高级语言或者汇编语言来定义,所以由定义词创建的词将具有与其它汉编词一样的性能。系统也允许我们增加一个新的“编译指示符”以实现特殊类型的循环或者其它的控制结构。 比如,汉语言定义一个程序变量的 词:给,其代码大概如下:
编 给 ( 32位数 -<变量名>- ) \u3000编译时
( --- 32位数 ) \u3000运行时
建词 可用地址 4 字节空出 写
动作 读
。
定义变量时
5 给 变量一
则 5 被自动写入 变量一的实体域中
运行“变量一”时
变量一
则 变量一 实体域中的数字 5 被自动读取,放到
数摞上
编程
汉编词可以使用以前定义的词或者汇编代码来定义,它们与其它语言的子程序相似,也与其它语言的命令等效。 汉编系统允许我们在键盘上打入一条指令的词名,这个词将被立即执行。然而,如果我们把功能的词名放到定义中,将编译成对于这个词的引用。
高级词是由其它词的集合来定义的,我们可以把这个过程想象成是其它语言的宏。新的词被加入到它们可以使用的存储器中,其定义被加入到词典中。在一个汉编词的命名规则中,只有很少的几个字符不能作为词名使用。
当遇到一个词的时候, 汉编系统就通过词典搜索希望找到这个词的定义,如果找到这个词定义的功能,或者被立即执行,或者作为引用而被编译到新的定义中。然而,如果在词典中没有找到这个词,系统就试着把它转换成一个数。如果转换成功,就把它放在
数摞上。如果不能转换成数字,就显示这个未定义的词名并打印出一个错误的信息来报告这个词是系统所不知道的。
汉编词的执行流程大概可以用一个词来模拟如下:
编 查词测试
{ \u8bcd名串 -- }
255个字节空给 词名串
词名串 255填0
词名串 字串传送
词名串 (查词)
0=
就
计字节
串>数
就
♀
否则
词名串 计字节
回车 印字串
全复位
然后
否则
执行
然后
。 ★
看数摞 [1] 123456 ★.
显 123456 ★
看方法未定义
· 词必须在引用之前被定义;
· 逻辑流限制只有顺序、条件和循环,有专门的词用于实现常用的程序控制结构;
· 程序员使用许多小的、独立的模块(词)来实现最大的可测试性和可靠性;
这种方法有两个明显的优点
· 新的词总是用以前定义和测试过的词来构造,所以调试更容易。模块可以单独执行以测试它的功能;
· 固有的模块性使汉编语言成为一个“设计性语言”,允许自顶向下的设计同时保持自底向上的测试。一个词可以在不同的程序中使用,但是它的功能只需要定义一次;
这些都保证了汉编软件能够快速和有效地被开发,同时,如果管理得当,也可以作为自身文档的基础。
· 一个词典;
· 两个
数摞,一个是参数摞,另一个是用于
嵌套的返回摞;
· 一个编译器;
词典
词典是汉编定义词的数据和代码存储空间,也为编译建立了词的索引。词典中的词包括汉编程序代码词、常数定义词、变量定义词、不定量定义词,
面向对象部分还有模板、对象、对象事件、消息。
汉编代码存储在词典中。词典占据了系统
存储器的很大部分,它由一个串线链接的可变长度的项目组成,每个项目定义了一个词。每个定义的内容根据词的类型(
数据项、常数、操作序列等)而有所不同,词典是可扩展的。
词是由“定义词”加入词典的,最常用的定义词是“ 编 。”当“编”执行的时候,马上就把后面的词名扫描,建立一个词典项,然后进入“编译”模式。有许多不同的编译方法,最常用的是“串线编码”,这种方法把定义编译成一系列以前定义词的地址引用。词的定义由“。”(句号)结束。下面就是一个词的定义:
编 平方 ( -- ) ♂ * 显 。
当一个词名项被编译到词典中的时候(称为定义的首部),它包含一个指向词典中前一个首部的指针。新词的词名加入词典(这里就是 平方 ),接着一个指向词名为“( 编 )”子程序调用的指针编译到词典中作为定义的第一部分,这个指针指向一段在解释定义体时需要执行的代码。当然,这里所说的不是唯一的编译技术,但它的应用最为普遍,这种技术称为间接串线编码,因为定义中的第一个项目是一段代码的引用,这段代码知道如何解释定义的其它部分。
定义的其它部分称为这个定义的体。在编译模式下,系统将依次寻找每个词的首部。每个首部地址依次放到定义体中,这样就产生了一个地址列表。最后在到达“。”时,词名为“。”的子程序地址被编译进词典。“ 。”
子程序用来将控制返回到调用词,就像一个子程序返回一样。
发展历程
汉编的发展早于 1993 年,看起来像
Forth,是中国人自己研发的完全以汉语为描述语言的
计算机程序设计语言,它完全具有中国自主知识产权。作为一种计算机语言,它和现在流行的大部分计算机语言具有一些共同的特点,都是
人机对话必须的工具语言。但该语言绝非曾流行过的任何一种计算机语言的简单汉化,或是为某种软件制造一个中文环境。这是一个完全由中国人自行开发,由中国人自我掌握全部
源代码,从形式到内容全面符合中国人的思维方式,使用汉文字表达的
面向对象、
面向问题计算机程序设计语言。“汉语编程”具有自成平台、面向对象、面向问题、
所见即所得、高度安全性、强大的繁衍功能、高度兼容性以及资源占用少、速度快等特点,开辟了计算机语言发展的新纪元。
1984年-1989年:汉语编程的基础构想和基础算法及其基本功能验证阶段九十年代,沈志斌的汉语编程初步推出。并申请了“汉语编程单片机”专利。
1990年-1994年:汉语编程嵌入式系统的开发及应用的阶段;
1994年《汉语程序设计语言》一书由电子出版社出版,为汉语编程技术建立了基础标识。
1995年-1999年:汉语编程嵌入式系统,在多种行业中应用及windows平台,汉语编程系统发展阶段;随着世界信息技术的发展,汉语编程技术在与新技术的对接和兼容上的灵活性已独具特点。
2000年-今 :汉语编程嵌入式系统、汉语程序设计语言、汉语编程数据库开发环境、软件工程整体发展阶段;这期间,用汉语编程开发出具有广泛应用价值的民族计算机技术体系,在教育及软
硬件开发领域广泛应用。
自2003年以后只见推广,虽未见新版
编译器发布,但允许学习者自己向
指令集(词典)里面,扩充更多的命令词!
异同
编程实例
制作简窗口
1、在编译器上输入如下(不包括实心五角星)代码
2、运行结果如下:
3、上面程序代码结构如下:
扩展对象 <用户自定义窗口名称> 继承自 窗口对象模板
对象。
启动: <用户自定义窗口名称>
新词编写
汉语言的窗口编程还是好理解的,初学者往往
对数摞不太容易理解,主要是 数据运算比较抽象了,传统编程语言的参数都用变量来标识,而
汉编语言的指令参数可以直接通过
数摞来提供,这样就造成了抽象性加强。当然,初学者,可以不使用数摞来传递参数,比如,平方的编写。
1、使用变量 来传递参数 如下:
编 平方
底数 底数 *
。
双括号里边的内容为解释
2、使用数摞直接传递参数如下:
编 平方
♂ *
。
双括号里边的内容为解释
平方的计算过程为:
数1 * 数1在汉编中,用后缀表示法表示 为:
数1 数1 *
简化为:
数1 ♂ *
♂ 的功能是 复制数摞顶层的一个数,这里即复制 数1
我们在编写平方这个词的时候,就要考虑到,平方的功能,平方,这个词必须能计算所有数字的平方值,所以,底数不能放在 词(指令 或 函数)里边,必须通过参数提供,因此,就有如下形式:
编 平方
♂ *
。
这样,在初学才看来,就显得抽象了,我们看到这个词的时候,第一感觉就是要想到,这个词,有一个参数,而 ♂ 复制的 数字正是参数,这样才能理解 平方 这个词的含义。
有人会说,假如,有些新词参数有多个,非常复杂,用户无法判断参数是什么,有多少,又怎么办呢,其实,
汉编中,也有标准的参数 解释法则,上面的平方 新诩编写, 规范的形式如下:
编 平方 ( 数字1 --- )
♂ *
。
注 参数注释采用 ( 输入参数 --- 返回结果 ) 的形式,当然,这只是注释而已,这里产没有定义任何变量、字符串之类的。
数摞操作
汉编与传统编程语言的不同:引入了
数摞概念;汉语言中,数摞可以用来存放数字,进行各种运算。
示例代码如下(下面是在编译器上输入的汉语言代码,不含实心五角星和“看数摞”、“显”后面的内容):
同义词 复制 ♂ ★
5 ★.
看数摞 [1] 5 ★.
复制 ★..
看数摞 [2] 5 5 ★..
摞初始 ★
编 平方
复制 * 。 ★
2 平方 显 4 ★
3 平方 显 9 ★
从上面代码可以看出,汉语言代码和
C语言在表达形式和
编译方式上是有本质的不同的,下面通过对上面发出的小代码注释,来体验数摞操作:
示例代码如下(下面是在编译器上输入的汉语言代码,不含实心五角星和“看数摞”、“显”后面的内容,斜杠后面为,为代码解释):
汉编语言中,用
反斜杠来表示单行解释,用双
括号表示多行解释。
汉编采用词典式架构,因此,汉编指令,即汉编词,汉编词分为编译器已有的系统词和用户新编的新词。
在汉编编译器上,输入一条指令 按回车键后执行,★ 号表示执行成功。
同义词 复制 ♂ ★
看数摞 数摞已空! ★
数摞上的数的,现在,查看结果:数摞已空,说明数摞上没有数
5 ★.
看数摞 [1] 5 ★.
中括号内的数为数摞上数的总个数,中括号后面为数摞上所有数字的显示
复制 ★..
摞初始 ★
编 平方
复制 * 。 ★
汉编中,一个指令(词)的编写以 编 开头,以 。 结尾
2 平方 显 4 ★
3 平方 显 9 ★
摞初始
2 平方 看数摞 [1] 4 ★.
3 平方 看数摞 [2] 4 9 ★..
(( 注意:显 这个词 仅仅是显示
数摞上的一个数,而看数摞,是查看数摞上的所有数;显 这个系统词显示数摞上的数的时候,同时会清除在数摞上显示的该数,而 看数摞 这个词仅仅是查看数摞上的所有数字,而不会清除数摞上的数字。 ))
发明者简介
沈志斌 1956年9月8日生于南京,1974年12月入伍。1983年曾因发明“发动机不解体测功仪” 而获全军科技成果进步奖, 并荣立一等功, 并破格保送到解放军
南京工程学院本科班深造, 毕业后分配到北京军区
指挥自动化工作站任工程师。
汉语编程的基础构想和基础算法及其基本功能验证, 便始于此。1995年
沈志斌离开部队后, 曾分别就职于航天工业部和信息产业部, 后到国家汉语编程研究院和北京国之经典汉语编程科技总公司任总工程师。沈志斌之于汉语编程就当相比尔·盖茨之于
windows操作系统。沈志斌和他的团队历经20多年的研发,终于让汉语成为一种新型的计算机语言, 并广泛应用在编程中。其成果有:《汉语程序设计语言》、《汉语编程基础教程》﹑汉语编程数据库开发环境、汉语编程单片机的计算机系统(专利)、
非接触式IC卡可编程读写器(专利)等等。 但是任何一项影响较大的发明都不应该是一个人的功劳,而应该归功于人类历史的进步,就像汉语编程的发明就是根源于中国五千年的灿烂文明,中国具有世界上最多人口的语言民族,汉语编程是必然应该被开发出来也必然应该被广泛利用的。