计算机,语言 与 深度学习 1

    计算机是什么,计算机实际上是一个把语言转化为执行动作的一个机器,也就是说这个机器的输入是人规定的一种语言,输出就是这段语言想要让计算机做的事情。这个过程就是计算。

    英国数学家图灵在1936年稍微形式化描述这个过程。假设我们把这个要让计算机干的事情的语句写在了一个长长的纸带上,然后有一个可以在这个纸带上左右移动的读写头。读写头读入纸带上每个位置的信息,然后决定是否改变当前位置的信息,然后自己是向左走还是向右走。这个存在于幻想中的机器就是图灵机,我们现在的计算机都是在实现这个幻想中的机器。我们的计算机的硬盘和内存(统称为存储)就是这个长长的纸带,而我们的cpu就是这个在纸带上左右运动的读写头。cpu干的事情归根到底也只是从存储中读取数据,然后根据读取到的数据往存储的某些地方写点东西。我这里如果把存储推广,推广到鼠标,键盘,显示器,那么我们对于电脑的一切操作都是在向那个纸带上写了一些东西,然后通过一系列复杂操作后,读写头向显示器上又写了一点东西——“像素”,我们就能看见了。

    但是我们的计算机现在似乎比图灵机要强大的多,只在纸带上写东西为什么能完成那么多功能?这就要提出一个很基本的思想——分层。实际上计算机系统是分了很多层的,每一层的操作者,设计者会有自己的语言,用来操作在这一层能看到的计算机的样子。分层会把很多繁杂的细节隐藏起来,让这一层的人专注于自己分内的工作。这听起来比较抽象,举个例子:淘宝微信这种apps的用户是计算机系统最顶层的操作者,我们只需要点击一些按钮就可以完成一些功能,比如购物,讲段子,凡尔赛。apps的开发者是这个系统的下一层操作者,他们需要了解用户的需求,手动把这些需求使用一种语言表述成计算机可以理解的样子。但是为了不过分祭献这群社畜的头发,他们使用的语言和我们普通讲的话还比较像,比如如果 ..... 就 ....这种句子在高级语言里面就会被设计为 if .... then。

    接下来就是掉头发的地步了,上面所说的高级语言必须要变成最初我们说的纸带上的哪些东西,也就是0和1的指令,这样计算机才听得懂。所以有一类神奇的程序被发明了出来,这种程序的功能就是去把另外一种程序翻译成计算机能看懂的样子,我们叫它编译器。编译器认为所有的高级语言都是属于一种叫做形式语言的范畴,所谓形式语言就是说这种语言是高度规范化的,不会有模棱两可的情况。比如:“小明,去擦一下窗子”,小明说:“我擦,我不擦”,这种我们平常说的语言编译器就没办法处理。

    似乎到这里,计算机的大厦已经很完美了。用户使用app发号指令,程序员把用户可能发号的指令用高级语言写出来,然后编译器这个程序把程序员写的高级语言的代码翻译成计算机能看懂的样子,然后计算机屁颠屁颠的跑去执行。但是程序员和用户之间存在了一些隐藏的危机,用户的需求是那么多那么杂,还喜欢作妖,哪一天用户提了一个需求说是让我把他想象中感兴趣的东西推荐给他,虽然他自己也不知道自己对啥感兴趣,但是当你推荐给他的东西他不满意,他就会不开心。那该怎么办?

你可能感兴趣的:(计算机,语言 与 深度学习 1)