南汇大学城在线's Archiver

博爱共梦想飞 发表于 2006-5-12 11:27

[编程娱乐小文章]程序设计语言擂台赛

程序设计领域中使用的编程语言种类繁多,有近千种,就是常用的也有几十种。如此多的语言究竟谁孰谁劣?一直以来是一个见仁见智的问题。

但正所谓"文无第一,武无第二",近有一好事者主办了一个擂台赛,大撒英雄帖,非要选出一个武林盟主来。一时间,各路群雄尽至,热闹非凡。

经过几*的淘汰,最后剩下四位英雄,是哪四位?他们分别是汇编,c,c++和java。

一通鼓声后,只听到司仪大喊"下面请四位选手进场~~~~~~~~~~~~~~~~~"。随着音乐的伴奏,四位选手雄赳赳,气昂昂地走进会场。台下顿时一阵雷动。

突然只听到有人喊“慢着!” 众人望去,原来是一个年轻人。司仪一愣,忙问道“这位兄台有何指教?”
只听到此人说,“c和c++本是同宗兄弟,他们二人为何各占一个参赛名额?”

“哦”,司仪说道“不错,从发展历史上说,他们二位是一个系出来的,不过在语法规则上还是有区别,在设计思想上以及实现上,更有很大的不同,从这个层次上说,他们是属于远亲了,呵呵”

“正是正是”,台下一片附和。

“咳咳”,司仪清了清嗓子,“下面,按姓氏笔画顺序,请各位选手自报家门。”

首先出场的是c语言。

“我叫c,1973年出生于贝尔实验室,是dennis ritchie发明出来的,最开始实现于dec pdp-11计算机上,这可是当时很有名的系统。大家不会不知道unix系统吧?那可是用我写的,当然了,还有汇编兄弟的友情协助。(汇编笑了笑)呵呵”

“前辈果然名不虚传,一出世就有大手笔”,司仪忙附和。

“一般般了”,c捋了捋胡须,得意地接着说“后来,在不同的硬件平台下出现了许多我的变形,为了有个统一的标准,ansi和国际标准化组织(iso)合作,于1990年推出了联合标准文档,称之为ansi/iso 9899:1990。自此,不再有以往那种各自为政的局面出现了。”

第二个出场的是c++。

“我的出生地也是在贝尔实验室,我是在c前辈的基础上扩展的,在语法规则的角度来说,是c的一个超集。何为超集?简单地说就是他有的我都有,我有的他没有。所以,我的发明人bjarne stroustrup给我取名叫c++。”(此时,c皱了皱眉,哼了一下)。

“从编程思想上来说,我是面向对象的设计语言,但是由于兼容了c的特性,所以也可以用我实现过程式编程。”

“应用上,多用于系统软件的设计,主要是大型软件的开发和维护。标准是由iso于92年发布,现在新的标准正在制订之中,在新标准里,我会有更好的表现,谢谢!”

“真是英雄出少年!佩服,佩服!”司仪媚笑。

c++斜了司仪一眼,心道“马屁精!”,转身回到队列中。

这个时候java走了出来,"我的年纪最小,即使是从1991年开始酝酿,到现在也不过10岁多一点,真正向业界公布是1995年。我是由美国sun公司的java开发小组开发,专门为互联网的发展而诞生的。跟c++大哥一样,也是属于面向对象的语言。"

"我的特点是突破了用户端机器环境和cpu结构的差异,通俗一点地说,就是跨平台,不管你是用什么样的系统架构,我都可以在你的机器上运行,当然了,前提是一定是电脑,如果是洗衣机或别的什么,暂时我可无能为力。"

台下引起一片笑声。

"下面最后一位出场的是汇编语言。"

"咳咳",汇编说话了,"论年纪呢,我是最老的了,算起来大概有四十多年了,应该说,我是第一代程序设计语言,那个时候,什么c啊,pascal啊都还没有出世呢。"

"我记得当时的情况是这样的,那个时候人们要在计算机系统上设计工作的程序,可是机器只认识0和1这两个字,如果要写程序的话,只能用二进制写,不然机器不认识啊,但是用二进制来表示的话,人太累,程序稍微大一点,看着都头昏脑胀,更别说查错和调试了。于是呢,工程师们就想了个办法,用助记符来代替操作指令,这样的话就比以前好多了。"

"别看我老,可是现在很多场合都少不了我,像很多系统程序的关键核心部分,如windows啊,unix什么的,它们内核中接触硬件的部分都用到我,刚才c老弟不也说了么。更不要说什么一些对时间和空间要求相当高的什么实时控制系统啦,智能化仪器仪表的控制部分了。呵呵"

"那是那是,姜还是老的辣,论资格,您说第二,没人敢自称第一!”旁边的司仪忙答腔。

下面进入正式比赛。


第一回合:底层操作性

先解释一下,何谓“底层操作性”。
所谓“底层操作性”,指的是对硬件的控制程度,就是说,使用某一设计语言在控制硬件的时候有多大的自由度,能做些什么事情。

回合牌一亮,除了汇编,另外三位顿时面面相觑。

我们知道,汇编格式指令是机器指令的符号表示,所以它跟机器有着密切的关系,自然,汇编语言也与机器有着密切的关系,确切一点地说,汇编语言与机器的cpu有着十分密切的关系,几乎它每一条指令都是针对cpu的寄存器和地址进行操作。

其实c和c++同样也可以直接操作硬件,如它们可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。但是,总的来说,比起汇编仍要逊色一些,因为只能对内存地址操作。而且,在很多系统下,由于操作系统的保护机制,使得其不能访问或改写某些地址的内容。

所以,这一个回合中,汇编胜出。

阿摸呢 发表于 2006-5-12 21:44

支持支持~~~~~~~~

法国梧桐 发表于 2006-5-12 21:45

[s:11]  [s:11]

博爱共梦想飞 发表于 2006-5-17 23:49

文章还是可以的~~~~~~~~~~~~~~~~嘻嘻~~~~~~~~~~~~~

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.