冒号和他的学生们(连载3)——语言选择

语言选择

尺有所短,寸有所长                        ——《楚辞》

问号觉得自己的问题并未解决,追问:“这么多种语言,仅凭流行度就能分出主次优劣吗?”

“流行度当然不是唯一的指标。”冒号答道,“语言的主次优劣因人而异,答案在你们自己身上。还是刚才那句话,唯一的老师是你自己。”

期待的目光如风中之烛般开始黯淡。

冒号接着说:“评书里名师授艺时,常常要徒弟自己挑选称手的兵器。威武的刀,灵活的枪,飘逸的剑,浑厚的棍,粗犷的斧,霸道的锤,诡异的鞭,无不谙合武者的个性。评判语言优劣,如同争论兵器高下,倘若撇开使用的主体和对象,皆为空泛之谈。”

句号若有所悟:“所以好的语言就是适合编程者和解决对象的语言。”

“非常正确!”冒号赞许道:“这就是问号同学要的答案。”

引号并不满足:“可我记得评书里经常描述高手的一句话-:十八般兵器样样精通。”

冒号一笑:“兵器虽多,其理相通,高手精通多种兵器何足为奇?但如果让赵云使锤,李元霸使枪,武力恐怕还是要大打折扣吧?”

逗号依然困惑:“我们如何判断一种语言是否适合自己,是否适合解决对象呢?”

冒号看出大家共同的疑惑,不紧不慢地说:“要想从中选择,自然先得了解,不然怎知兵器称不称手,合不合用?现在进入正题,我们先对计算机语言作个简要的回顾。”

大伙均想,总算要挠着痒处了。

“计算机语言是人用来指挥计算机的语言,按其发展历程通常分为五代。”冒号说完在黑板上写下——

第一代语言(1GL):机器语言

第二代语言(2GL):汇编语言——IA-32 Assembly,SPARC Assembly等

第三代语言(3GL):高级语言——Fortran,Pascal,C,Java,VB等

第四代语言(4GL):面向问题语言-——SQL,SAS,SPSS等

第五代语言(5GL):人工智能语言——Prolog,Mercury,OPS5等

冒号补充道:“也可简单地将前两代统称为低级语言,其他的统称为高级语言。语言从低级到高级,离机器语言更远,离人类语言更近,因而更易读写、调试和维护,安全性、通用性和可移植性更强,开发效率更高,更加抽象和宏观;但同时运行速度和效率下降,用法和功能上局限性更大。如果拿兵器作比,高级语言好比长兵器,威力强大却难免滞重,长于大型应用,可谓‘一寸长,一寸强’;低级语言好比短兵器,轻便灵活却难免风险,长于底层应用,可谓‘一寸短,一寸险’。”

大伙心里话,敢情来这儿不是学编程,是学武术的。

叹号说道:“我看还是高级语言好,现在谁还学低级语言啊?”

冒号纠正道:“低级语言并不低级,只是随着高级语言的出现,计算机硬件性能的提高,渐渐有些边缘化了。虽然几乎没有人用机器语言编程了,汇编语言仍有其用武之地。常见的有:包括嵌入式系统在内的系统开发,如操作系统、编译器、驱动程序、无线通讯、DSP、PDA、GPS等;其他对资源、性能、速度和效率极为敏感的软件开发;以信息安全、软件维护与破解等为目的的逆向工程等等。即使你不打算从事系统开发,也不想作红客、黑客或骇客,掌握汇编语言对你深入了解计算机内部运行机制、调试软件和改进程序中某些关键代码的算法也是有帮助的。”

引号提出:“好像有些书上把C语言称为中级语言。”

冒号答道:“这是因为C兼具高级语言和低级语言的特征。一方面它提供了高层抽象和可移植性,使程序员更多地专注问题逻辑而不是机器逻辑;另一方面它也提供诸如指针、位字段(bitfield)等工具进行底层操作,甚至可直接内嵌汇编代码。C语言既简洁灵活又高效强大,是迄今为止最具影响力的语言。几乎所有的操作系统和大多数高级语言都用它来实现,C家族的语言C、C++、Java、C#、D、Objective C等占据主流语言的半壁江山。如果再拿兵器作比,C语言就是一把剑,轻灵飘逸、锐利快捷。一名武将无论擅用什么兵器,往往都会腰悬宝剑。不会C的程序员正如不会使剑的武将,无论如何都是一种缺憾。相比之下,汇编语言就像小刀匕首,而机器语言则近乎赤手空拳了。”

句号灵光一闪:“我明白了——西门吹雪的西来一剑,那是C语言;李寻欢的小李飞刀,那是汇编语言;陆小凤的灵犀一指,那是机器语言。”

大家会心地笑了。

引号冷不防冒出一句:“我会跆拳道哦!”

句号一乐:“哈哈,等你打赢了陆小凤,就封你为机器语言。”

冒号也笑言:“这位是古龙的粉丝吧?武侠小说里的侠客多轻功高绝且喜单打独斗,故使用轻、短兵器居多;而历史小说里的战将多骑马进行大规模作战,故除了佩剑外,使用重、长兵器居多。这就是前面提到的,中低级语言更适合中小型或底层应用,高级语言更适合大型应用。”

众人活跃起来,开始议论纷纷。冒号放耳听去,净是些古龙金庸、三国水浒里的人物,暗想:通俗小说到底比编程吸引人啊。

时间: 2025-01-27 07:41:09

冒号和他的学生们(连载3)——语言选择的相关文章

冒号和他的学生们(连载20)——前台语言

20.前台语言 运用之妙,存乎一心 --<宋史·岳飞传> 稍事休息后,冒号切换了话题:"接下来简单聊聊Visual Basic和Delphi." 叹号略带得色:"Visual Basic最好用了,建个窗体,从工具箱中拖些控件,再定义一下它们的属性和行为,搞定!" 冒号点点头:"VB最大的优点就是易学易用.上手快开发快,对非计算机专业人士尤其具有吸引力." 引号咬文嚼字:"言外之意,VB对于专业人士就不那么合适了?"

冒号和他的学生们程序员提高班纪事系列

冒号和他的学生们(连载27)--接口服务 冒号和他的学生们(连载26)--访问控制 冒号和他的学生们(连载25)--软件应变 冒号和他的学生们(连载24)--对象封装 冒号和他的学生们(连载23)--数据抽象 冒号和他的学生们(连载22)--抽象思维 冒号和他的学生们(连载21)--后台脚本 冒号和他的学生们(连载20)--前台语言 冒号和他的学生们(连载19)--平台语言 冒号和他的学生们(连载18)--系统语言 冒号和他的学生们(连载17)--语言讨论 冒号和他的学生们(连载16)--动态语

C++学生信息管理系统_C 语言

本文实例为大家分享了C++学生信息管理系统源码,供大家参考,具体内容如下 1. tea_list.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include"teacher.h" int sq_tea ; PTEA head = NULL ; FILE *fp ; int tea_llopen(const char* path)//打开文件 { fp=fopen(path,&q

冒号和他的学生们(连载9)——泛型范式

泛型范式 算法是脊,数据是肉:思想是鸡,结论是蛋 --题记 冒号重新开讲:"你们会不会经常遇到这种情景:一遍又一遍地写着相似的代码,有心将其归并,却因种种原因无法践行." 逗号心有戚戚焉道:"是啊,有时明明两个函数的实现几乎一模一样的,就因为某些参数不匹配,无法合而为一." "有一种编程范式可以解决这个问题,它打破了不同数据结构之间的壁垒,让你的代码不再臃肿,这--就是泛型编程."冒号的语调和说辞不免令人联想到电视上的减肥广告,"Gen

冒号和他的学生们(连载1)——开班发言

开班发言 授人以鱼不如授人以渔 --古语 冒号开了个程序员提高班,今天迎来了首期学员,他们是问号.句号.逗号.引号和叹号,皆为IT业的新兵.望着台下洋溢着青春与渴望的脸庞,冒号开始了他的开班发言-- 大家好!先自我介绍一下,本人姓冒名号字解之.诸位不必叫我老师,就叫老冒好了.比在座各位痴长几岁,"老"是担得的,"师"却不敢妄言.在下编程多年,自觉小有所成,不敢专藏,特开此班与众共享.虽系一家之言.一孔之见,若能抛砖引玉,又何惧方家之哂?疏谬之处,还望海涵斧正,不致自

冒号和他的学生们(连载2)——首轮提问

首轮提问 敬畏老师莫如敬畏真理 --题记 众人面面相觑,一阵沉默后开始窃窃私语,显然有些不太习惯这种教学方式--笔记本上还没写两个字呢,老师就把球给踢回来了. 冒号也不说话,只是微笑地望着大家. 还是问号打破僵局,开始发问:"老师--" 冒号扬手打断他:"这里没有老师,唯一的老师是你自己.本班的一个特色是:师生角色模糊,大家自主学习,相互启发,教学相长." 问号顿了顿:"老冒--"全班哄堂大笑,"学软件开发,当然得先学语言,计算机语言这

冒号和他的学生们(连载27)——接口服务

27.接口服务 律己宜严,待人宜宽 --<洪应明·菜根谭> 叹号幡然反省:"以前我们做OOP编程时,总是专注于如何利用其他类来解决问题,而较少考虑自己设计的类对其他类的影响." 引号翻开以前的笔记:"前面提过,OOP的世界是民主制的,所有对象都是独立而平等的公民,有权利寻求服务,也有义务提供服务.看来我们是光惦着权利而忘了义务了." 冒号继而提出:"作为服务的提供者,最重要的是讲诚信.首先,服务要有可靠性,不能阳奉阴违--即接口必须履行它的承诺

冒号和他的学生们(连载26)——访问控制

26.访问控制 夫轻诺必寡信,多易必多难 --<老子·德经> 问号提问:"信息隐藏是否专指用private来控制访问?" "这正是我们的下一个焦点."冒号微颔,"访问修饰符(access modifier)除了可以应用于类成员外,在Java和C#中还能应用于整个类.public类自然是公开的,而缺省的类在Java 和C#中分别仅对同一package和assembly开放." 逗号不觉有异:"这有什么讲究吗?" &q

冒号和他的学生们(连载25)——软件应变

25.软件应变 潜其心能观天下之理,定其心能应天下之变 --<吕坤·呻吟语> 第七课刚一开堂,冒号就提了一个问题:"如果把一个Java程序中所有的private关键字换成public,请问该程序还能工作吗?" "应该还能工作,除非--此前不能工作."问号小心翼翼地回答. 冒号接着问:"既然如此,何必费事区分它们呢?" 叹号嘴一撇:"当然是为了信息隐藏啰." 冒号步步紧逼:"隐藏什么信息呢?又为什么要隐藏?