汉语编程与C 语言

 

                   作者: 金山

 

摘要:在信息社会的今天,中国的软件业畸形发展,从编程语言到操作系统、数据库系统等系统级、核心层技术无一例外的都是“外商独资”,而语言上障碍、思维方式的差异正是制约中国软件发展的“瓶颈”所在。政府上网、企业上网的呼声一浪高过一浪,安全漏洞、预留后门更是层出不穷,国内的软件人员只能焦急的等待一个个补丁程序的产生和升级版的发布,在这等待的时间里他们唯一能做的就是准备大把大把的钞票……(中国每年光进口软件和为软件支付的费用就达几百亿人民币之巨,不包括D版)。要摆脱这一恶性循环,标本兼治,必须从“娃娃”抓起 —— 研制完全符合国人思维习惯和表达方式的中文编程语言,并在此基础上,编写出真正属于自己的中文操作系统,而不是“XXX 中文版”。

    汉语程序设计语言的产生实现了几代人的梦想,也让亿万华人看到了希望,它以精巧的内核、高效的执行效率、很小的资源占用广泛应用于各行各业。本文从多个角度将汉编语言与现代操作系统的“开国元勋”C语言进行对照,让大家见识一下IT领域的“精武英雄”。

关键词:汉语程序设计语言(以下简称汉编语言)、C语言、操作系统、信息安全

    在软件界C语言家族的知名度不亚于世界首富比尔·盖茨。它从一产生就与操作系统结下了不解之缘,它的“孪生兄弟①”—— Unix② 现在正运行于众多昂贵的工作站和服务器上③;它“亲手抚养长大的”微软公司的Windows操作系统大家族④更是风靡全球;它的“小侄子”——现在传媒的焦点Linux⑤也炒得沸沸扬扬。因此,C语言家族在国内外得到了迅速推广,不但得到了计算机专业工作者普遍使用,而且为广大计算机应用人员所喜爱和使用。然而于国人来说,这是个不得已而为之的选择,“人在矮檐下,怎能不低头”呢?国人只能被动地去理解那些似懂非懂的关键词、复杂的概念、繁杂的规则以及“一着不慎、满盘皆输”的错误提示,这也让众多的初学者望而却步。目前国内人才市场上“学过C语言的人多如牛毛、可真正精通或者说掌握C语言的人却凤毛麟角,这不得不引起国人的深思?   

一、相提并论(汉编语言和C语言共同的优点)

用汉编语言和C语言编写的程序语言简洁、紧凑,使用方便、灵活,既给程序设计人员提供了一个自由发挥的编程空间,也给用户提供了很多便利。此外,两者都提供了丰富的运算符、完善的流程控制、友好的操作界面等。二者的共同优点还表现在:

  注:

    ①、在C语言产生以前,操作系统等系统软件主要是用汇编语言编写(包括Unix操作系统在内),后来人们为了描述和实现UNIX操作系统而设计了C语言,在此基础上用C语言改写了Unix操作系统,从这以后,两者相互促进、互相完善、补充,因此,一般将二者称为孪生兄弟。

    ②、Unix版本很多,几乎各大IT厂商都开发出了自己的Unix操作系统,比较著名的有Sun公司的Solaris、惠普公司的UX、IBM公司的AIX等);

    ③、国内电信、银行、金融等领域几乎无一例外的采用Unix操作系统;

    ④、Windows大家族包括: Windows 9X、Windows ME、Windows NT各版本、Windows 2000各版本以及最新的Windows XP,它们都是用C/C++语言编写出来的。

    ⑤、 Linux是UNIX的完整实现,同时也是UNIX的完整开发平台,通俗的说Linux是运行于PC机上的精巧的UNIX,同时,Linux也带来了一场自由软件与商业软件的革命,比较著名的版本有Red Hat Linux 、Turbo Linux ,国内有红旗Linux、Xteam Linux 等版本。

    1、都适合于编写操作系统和系统软件:操作系统或系统软件一般都需要直接对硬件进行操作,如对内存地址的操作、位操作、串口操作等,通常情况下,这些功能的实现都是通过汇编语言来实现,然而汇编语言依赖于计算机硬件,程序的可读性和可移植性都非常差,为了提高可读性和可移植性,最好改用高级语言,但一般高级语言都很难实现汇编语言的功能。汉编语言不但提供了各种简单明了的汇编操作,而且自含了一个完整的汉编独有的汇编程序。读者可在汉编编译解释环境下键入:

汇编枝  <Enter>

看词    <Enter>

读者将能看到熟悉的各种汇编指令,同时能够轻松的编写各种汇编程序。此外,在程序运行、调试等过程中,我们能够通过诸如内存地址、寄存器状态等操作从最底层对程序进行维护和控制。同时,汉编语言程序的执行效率非常高,这正是系统软件和操作系统语言的必备特征。因此,它非常适合于编写操作系统和系统软件。(关于C语言适合于编写操作系统和系统软件已经是众所周知的事实,在此不再赘述。)

    2、可移植性强:C语言自1978年后,已先后移植到大、中、小、微型机上,独立于Unix。汉编语言也不例外,不仅先后移植到各种大、中、小、微型计算机上,而且还应用于各种嵌入式设备、掌上电脑、PDA等各种平台,此外,从MS-DOS3.1开始到Windows 9X/ME,Windows NT/2000乃至最新的Windows XP操作系统,都能正常运行和自由扩展,同时,汉编Unix/Linux版本也正在开发之中,在不久的将来,汉编语言作为中国人自己的“Java①”语言必能真正实现——“一次编写,到处运行”。

    3、数据结构丰富,具有现代化语言的各种数据结构。C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。汉编语言则提供了更为丰富的数据类型,它不但具备C语言的绝大部分数据类型,而且具备诸如日期型、货币型、备注型、字符串型、图片型、日期时间型等现代面向对象程序设计所必需数据类型,所以能实现各种复杂的数据结构(如链表、树、图等)的运算。同时,汉编语言各种数据类型之间转换较为方便,还提供了动态数据类型,增强了程序设计的灵活性。例如:在汉编语言中定义变量时无需声明变量的类型,变量的类型根据所赋值的类型而定,而且和一个变量名绑定的数据对象的类型在程序执行时可以按需改变。它是程序员从数据类型中摆脱出来。

二、一决雌雄(汉编语言所独有的优势)

    从广义上讲任何描述算法及数据结构的符号都可以构成一种程序设计语言,与此同时,任何一种程序设计语言所设计程序的正常运行离不开操作平台的支持,因此,操作平台的千差万别制约了众多软件的发展。汉语程序设计语言从一开始就采用自己独有的汉编虚拟机结构,程序员不必考虑很多繁杂冗余的细节工作,图1表示了一个呈现在程序员面前的汉编虚拟机层次结构图:

 注:

    ①、Java语言是SUN microsystem公司开发出的一种网络编程语言。由于internet的普及,电子商务成了当今的热门话题,然而传统的编程语言难以胜任电子商务系统,电子商务要求程序代码具有基本的要求:安全、可靠、同时要求能与运行于不同平台的机器的全世界客户开展业务。Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。同时Java语言的出现真正实现了程序“一次编写、到处运行”的愿望。

 

   输入数据           输出结果

 




汉语编程应用计算机

(用汉编语言实现)
 
汉语编程序虚拟计算机

(由与编译/解释后的程序一起装入运行库实现)
 
操作系统虚拟机

(由在固件虚拟计算机上执行的机器语言程序实现)
 
固件虚拟计算机

(由实际计算机上执行的机器语言指令实现)
 
实际硬件计算机

                 (由物理设备实现)
 

 

图1  一个汉编应用程序的虚拟机层次

                                                       

    正是采用了汉编独特的虚拟机结构,汉编语言表现出一系列无与伦比的优越性,主要表现在以下几个方面:

     1、 近年来各种媒体对印度软件业的异军突起纷纷进行报道:“世界上有一个连地铁和高速公路都没有的国家竟建起了发达的“信息高速公路”,这个国家就是印度。”(摘自《人民日报》 (2000年06月04日第四版)  ),来自互联网上的资料表明,近年来,印度软件出口每年以60%的速度增长,2000年出口总额达到46亿美元,占印度国内生产总值增长部分的1/4,印度软件业雄踞全球第二,把日本和欧洲远远甩在后面,与此同时形成鲜明对比的是它落后的各种基础设施和低下文化素质(全国10亿人有4亿是文盲,城乡差别很大,贫富差异悬殊)。透过种种现实,我们不难发现,得天独厚的语言优势是印度软件“亢奋式”发展的最根本原因(英语是印度的官方语言和通用语言,世界第二大使用英语的国家(仅次于美国),几乎所有的科研人员,尤其是受过良好教育的各类软件人才,都具备极强的英语能力,因此在语言上几乎没有障碍,容易熟悉和了解西方国家的种种信息)。这也正是中国软件业“小作坊式”发展的最根本原因(英语是摆在众多国内程序设计人员的“珠穆朗玛峰”)。然而,汉语是世界上使用最广的语言,全世界每四个人中就有一个懂中文,因此,中文编程语言的产生和推广符合亿万华人的心愿。汉编语言正是采用完全符合中文表达方式和思维习惯的汉语来编写各种程序,让程序员彻底告别那费涩难解英文语法和莫名其妙的西方习惯,轻轻松松的编写出自己心中的各种软件。

    2、数摞是汉编语言独有的概念,它是在内存中开辟出的一个空间,它不仅是汉编程序运行中数据处理的场所,也是数据临时存储的场所,还是各模块间参数传递的场所。数摞结构的引入既统一了程序中各参数的临时存储场所和格式,也让程序员能够同步跟踪并调试程序的运行。而在C语言中所有这些工作只能交给编译器,一旦出现错误,调试工作只能从零开始。(诚然,在C语言中提供了所谓的Debug程序,然而效果却……)。

    3、汉编语言是编译解释合一的语言:一般地,高级语言编写的程序并不能直接在计算机上运行,而需要先“转换”为某种“可识别”的方式,通常情况下,有两种不同的途径:编译(翻译)、解释(软件模拟),也因此,我们将语言分为编译型语言、解释型语言两类。C、C++、FORTRAN属于编译型语言,编译型语言所编写的程序在执行前需先转化为目标代码(扩展名为.obj),然后再生成可执行程序(扩展名为.exe)。编译型语言所编写的程序执行效率高,然而程序的调试难,而且编译器非常复杂、庞大;用解释型所编写的程序在执行过程中并不产生机器代码,程序逐行读入,逐行解释,逐行执行。解释型语言程序的可读性强,调试程序容易,但是程序的执行效率很低,因此也限制的它的应用。汉编语言融合了两种语言的优点,内建编译解释合一环境,为程序员提供了一个非常自由的编程空间,也为汉编程序应用于各行各业提供了有利的保障,有着非常广阔的市场前景。

    4、 对于C语言初学者来说,最头痛的莫过于那15层的优先级,即使是熟练的程序员也不得不将C语言的优先级作为“工具书”,以便查阅。而C语言编译器在编译程序时,碰到优先级只能按照后缀表示法逐层取消优先级,因此,优先级的使用不仅增加了初学者的难度,而且影响了C语言程序的执行效率。汉语程序设计语言彻底的取消了“鸡肋式”的优先级,直接采用逆波兰表示法(俗称后缀表示法),提高了程序的执行效率(程序的执行效率实时领域是最关键的因素),也降低了初学者的难度。

    5 、 学过C语言的人都知道,设计一个C程序的第一步就是定义若干变量,然后围绕变量进行各种“黑箱”的处理,而各种中间状态对用户“保密”。汉编语言对变量的采用比较谨慎,变量并非程序设计的“必要条件”,而是把选择权交给程序员,同时,一个普通的汉编程序完全可以在不定义任何变量的情况下胜任各种工作,此外,对于变量,使用起来也非常灵活,跟踪调试也很方便。

    6、 汉编语言应用面非常广。

    7、 在C语言中,那32个关键词是绝对保留的“紫禁城”,编译系统绝对禁止任何程序(哪怕是临时的)修改关键词,关键词的含义和表达习惯或许符合研制者的思维习惯,但它不一定符合大多数人的习惯,所以,用户只能被动的去理解和使用也许并不符合自己习惯的语言。而汉编语言非常“谦虚、大方”的赋予了用户这个权力,不但允许用户临时修改任意一个关键词,而且允许用户将修改过的结果保存到整个系统。这样,用户可以根据自己的需要和特点“量体裁衣”的“定制”相应的汉编系统,“海阔凭鱼跃,天高任鸟飞”也许正是汉编程序员的贴心感受。(前提条件是遵守汉语语言程序设计最终用户许可协议,参见《汉语编程系统用户许可协议》)。

    8、汉编语言能够兼容多种流行软件,同时,支持各种文本编辑器来编写汉编程序,可扩展性强,同时采用独特的内核结构,有着很好的安全性和稳定性。

    9、完全结构化的程序设计思想:绝大部分程序设计语言保留了goto语句(C语言也不例外)来扩充自身的功能,受到了人们的长期指责。越来越多的人接受并理解结构化程序设计思想,而且结构化程序设计和取消goto语句几乎成了“同义词”(goto语句破坏了程序的结构,使程序变得费涩难解)。汉编语言完全摒弃了goto语句和类goto语句等影响程序结构的成分,并以其精巧的内核轻松实现那些传统语言需借助goto语句才能实现的算法和结构。因此说汉编语言是一种真正的结构化程序设计语言。

    10、汉编语言采用了多种先进的编程思想,最值得一提的是有汉编特色的面向对象编程思想,在大型程序的编制过程表现出非常明显的优势。

www.hybcw.com
QQ;779112612
010-82894650  商老师