请按Ctrl+D收藏本站!我的书架

夜半鬼入梦- 第十九章 克苏鲁神话(14/20)

文/莫道梦魂遥
夜半鬼入梦 | 本章字数:1935  | 夜半鬼入梦txt下载 | 夜半鬼入梦手机阅读
推荐阅读:暖婚蜜爱:谢少,宠妻太高调!重生之官场鬼才无限逆推吸血鬼伯爵那年那片星空玄门秘术魔鬼的学徒木兰灵异事务所无限时空幻想沉潭棺如何做一名成功的鬼修阴阳引渡人
个世纪计算机科学早期那些先驱们所面对的问题。给自己一个奖励吧,点击文章末尾的“赏”就会看到编程学习大礼包!额,你说你没有通关?没关系,最后几关是比较难,而且这个游戏只是为了让你体验一下汇编编程的感觉。

现在你会发现,汇编语言其实没有多复杂,而且比起那些0011的代码,真是太好识别了。但是那还不够,比如我要计算一个:

*z+(q/10.5)+p-2

这个自然的表达式人人都能看懂吧?但是用汇编语言写出来就不那么好看了:

ul  y,  z

div  q,  10.5

add  y,  q

sub  p,  2

add  y,  p

一眼看上去不知道是在干嘛。而且汇编语言也不够“自然”,比如我要做一个赋值操作:

上面这种写法很自然,我们在学数学的时候就是这么写的,但是在汇编语言中它是这么写的:

mov  x, y

直译就是:把y移动到x的存储位置(这是计算机硬件能够实现的操作)。再比如:

if  x

这几行命令,我们用自然语言就能读懂它在干嘛:比较两个数的大小,然后把大的数赋值给小的数。用汇编语言写就是这样:

cmp x,y

jle lep aaov x,y

ov y,x

用自然语言写很简单的三行命令,用汇编写就需要这么多行才能实现。

还记得当初我们为什么需要汇编吗?因为机器只能识别0和1构成的指令,但是那种数字指令对我们人类来说很难识别和记忆,所以我们用英文单词来一一对应那些数字指令,那些英文单词构成的指令集合就成为了汇编语言。新的知识点:当我们写出汇编代码后,在真正交给cpu运行之前,我们得把汇编代码翻译成机器码,因为cpu只认识0和1构成的机器语言。(因为机器指令和汇编指令是一一对应的,所以翻译过程很简单,就像把简体字翻译成繁体字)。

先驱们尝试把汇编语言简化的过程中,想到:既然要翻译,那么我们能不能创造一种更简洁的语言,然后把它翻译成相对复杂的汇编呢?就像把文言文翻译成语素成分更复杂的现代文。

“私见张良,具告以事“———翻译为———>“私下会见张良,把事情详细地告诉了他“

从这个想法出发,c语言诞生了。(实际上c语言是在b语言的基础发展出来,b语言是在bcpl的基础上发展出来的,的基础上发展出来的。在cpl之前还有个十几种其他编程语言。不要管辣么多,静静听我吹就好。)

c语言

你们看,汇编语言多复杂,因为它和机器硬件实现的指令一一对应,所以光改造它而不改造机器指令的话毫无意义。所以我们不如创造一种新的语言,然后把它翻译成汇编吧!语言有许多强大的优点。但是在此,(顶着老师和同行们的压力)我想让新手知道的是:函数。

函数是什么?当我们在写代码的时候,可以想象为我们写的每一行都是一个指令。我们写十几行指令来实现一个乘法运算,用二十几行写一个排序操作。程序猿是世界上最懒的物种,他们不想每次要做乘法时都写十几行代码。能不能用一行指令代表十几行指令?就像:

指令集a和指令集b所描述的就是完全同样的事情。但是a用了7个指令,b用了5个指令。如果你要在这件事件上偷懒,你是愿意以a的形式还是b的形式来写这个指令集呢。我不知道你的选择是什么,但是作为世界上最懒的物种来说,程序猿在编程的时候,能少写一行就不会多写,能少敲一个字母就绝对不会敲两个。所以在碰到上面这个问题时,采用b的写法无疑。那么如何实现呢?假设指令集a中的每条指令都是计算机能够识别的指令,指令集b中的第3条“把大象装进冰箱”是计算机不能识别的,是我们自己虚构的。但是我们要使用这条指令,因为它对于我们来说很省事。现在很简单,只要规定:我们每次写“把大象装进冰箱”这条虚构指令,就自动把它翻译成“打开冰箱、把大象塞进去、关上冰箱”这三条原生指令。翻译过程不用担心,前人们已经写好了各种翻译器能够现实这种效果。

那么,上面我们虚构出来的那条指令:把大象装进冰箱。其实就是我们所谓的函数!下面展示的是在c语言中创建一个函数的形式。

把大象装进冰箱(大象x)

{

打开冰箱;

把 大象x 塞进去;

关上冰箱;

}

下次想干这件事件的时候,就只要写一句:把大象装进冰箱(大象巴拉)。括号里写哪头大象,就装哪头。 那么把大象装进冰箱就是一个函数。

有了函数这个东西,世界上任何复杂的任务都可以被拆分成最简单的单个任务。当我们学c语言的时候,一定要把函数的用法学好。我认为这也是新手学习c语言的主要任务。

更高级的编程语言

按照学院派的编程学习路线,计算机专业基本都是先学c语言,然后学c++,(然后学数据结构),然后学on/js....,然后回去再学汇编呀、电路呀什么的。想必大家都熟悉这套方案。

其实学习一个东西,从根源开始了解接触,从底层学到顶层是一个自然的遵循逻辑的学习方式。在计算机世界中,如果说从真正的根源开始学的话,估计真得从逻辑电路开始了,然后

状态提示: 第十九章 克苏鲁神话 -- 第14页完,继续看下一页
(快捷键←)上一页:第十九章 克苏鲁神话(14/20) 返回《夜半鬼入梦》目录下一页:第十九章 克苏鲁神话(14/20)(快捷键→)

推荐阅读黄昏分界走阴夜话之打更人签到从自己死后开始神训玩家险恶重生梦联网原初猎人熟睡之后直播之盗墓大师密道追踪黑水尸棺夜半冥婚:鬼夫大人萌萌哒