前言
作为一名软件学院的学生,大学四年时间都会在计算机科学的知识海洋中遨游。学计算机的同学总是自嘲自己是程序猿,不懂生活情趣、思维僵硬,天冷了穿格子衬衫,天热了穿无袖背心。这样的自嘲,在一定程度上也揭示了计算机科学庞大复杂的知识体系,使知识的探求者们心力交瘁,顾不得生活中种种琐碎之事的美好。但理工科果真是如此的枯燥而毫无浪漫吗?我不接受这个说法。
我是“统一论”的坚定信仰者,相信在宇宙中的所有抽象与具体在本质上都是同一种东西,万事万物都能被统一到同一种框架中去。在这种粗糙信仰的基础下,我认为的社会科学与自然科学,只是同一事物在水面的两个投影,所以计算机科学内部一定也包含着某种难以捉摸的规律,这种规律与其他学科相同的美丽浪漫,同样揭示着宇宙的终极。
最近看到陈嘉映老师在其《哲学科学常识》中谈到:
科学提供了从大爆炸到人类诞生的整体画面,提供了自然界乃至人类社会运用的机制,从消化到爱情。虽然还有很多细节需要填充,但大致轮廓已经勾画出来。
这样一个画面是神话、常识、传统哲学完全无法提供的,与各种伪科学理论也完全不同。科学不仅提供对世界的系统的、理性的解释,而且它通过对事实的预言以及技术性生产证明其真理性。”
我想,陈老师认为科学用实证的手段代替了西方传统哲学,提供普适理论,为世界提供整体解释。这个论断我不评价,但是其在一定程度上也证明了哲学与科学的本质是一样的。
我相信每一个人的心灵都是美好的,而美好的心灵都有一个共同点:好奇。每个人肯定都曾经好奇世界是从哪儿来的,思考过我们如何认识这个世界而我们的认识又是从何而来,当和他人发生争论时肯定会因为他人的无理追问而想过如何解决怀疑论。正是这种对世界本质的思考引起了如今科学世界的繁盛,而我在上文做了这么多个人的臆想,也是为了说明用哲学思考专业学习的正确性。
在观察、实验的基础上,科学家建立假说,利用数学工具进行长程推理,把握规律,发现机制,进行预测,并加以验证。近几百年来,实证科学运用这套思想程序获得了巨大的成功,为我们提供了一幅完整的世界图景。
一
我一直认为所有学科本质上都是在追求宇宙中的规律,在目的性上,计算机科学与文学没有差别。人类自文艺复兴以来追求世俗的独立自由,追求更好的生活,思想的启蒙带动了科学的繁荣,而反过来,科学也在改变着人们的思想,单单就说辩证法吧,古代的辩证法受限于人类对世界的理解,朴素而无知,随着18世纪自然科学的发展,辩证法被德国古典哲学家赋予了新的内涵,而到了19世纪,自然科学的突破更是使马克思恩格斯发现了唯物辩证法。我意料之中却又出乎意料之外地发现,世界是一个有机的整体,世界上的一切事物都处于相互影响、相互作用、相互制约之中,而这种相互的影响作用制约,包括横向的与周围事物的联系,也包括纵向的未来与过去的联系。
具体到计算机科学来说,整个计算机科学就像人一样,有两条腿:一条叫做数学,一条叫做物理,整座计算机科学大厦都建立在数学和物理之上。
数学主要指的是数理逻辑。其中比较重要的是形式逻辑系统、图灵论题和丘奇论题。形式逻辑系统用逻辑的方法描述这个世界,在寥寥数条公理和推理规则之上构筑了整个逻辑系统、数论系统乃至计算机科学。图灵论题是计算机科学的基础,它点出了形式逻辑系统的威力:只要是人能计算的,机器都能用形式逻辑的规则进行计算。并且它提出了一种实现的方法,就是图灵机。丘奇论题指出了形式逻辑系统的不足:人能证明的,机器不一定能证明。更准确的说是,在形式逻辑系统中,不存在一种通用的算法,能判断所有命题的真假。这就是计算机科学的数学基础。
而计算机技术的物理基础就是数字逻辑电路。首先数字电路中给出了逻辑的电路实现,比如如何实现这样的电路——仅当两输入均为高电平时输出为高电平——即与门。然后数字电路给出了组合逻辑的设计方法。这直接使算术逻辑单元(ALU)的设计成为可能。最后,数字电路给出了时序逻辑的设计方法,典型的结果就是寄存器、计数器的出现,使得时序控制成为可能。
摩尔定律昭示着计算机性能在18月-24个月内会提高一倍,然而如今摩尔定律已经开始失效。因为为了提高集成度,晶体管越做越小,当小到只有一个电子时,量子效应就会出现。电子将不再受欧姆定律管辖,由于它有隧道效应,本来无法穿过的壁垒也穿过去了,所以量子效应会阻碍信息技术继续按照摩尔定律发展。宇宙万物都受到物理规律的约束,计算机也在所难免。
这该如何理解?我最近在学习计算机体系结构,发现计算机的硬件组织,是成本与性能间的博弈。存储器金字塔形的体系结构,利用了局部性定理。为什么要这么大费周章?因为性能更加优良的存储器成本高昂,如果全部用昂贵的材料,性能确实非常优秀,但会导致电脑售价更高。所以计算机厂商才设计了金字塔式的体系结构,利用局部性定理巧妙地提高硬件效率。计算机设计中关于成本与性能的博弈还有很多很多,不严谨地说,计算机大部分精妙绝伦的设计,都是在权衡成本与效率的纠结中发明的。
而这几个例子预示着我什么呢?
首先,“用联系的观点看问题,反对用孤立的观点看问题。要从事物固有的联系中把握事物,切忌主观随意性。”忽视了计算机科学与其他学科的联系,我们对计算机的理解就仅限于一台僵硬的机器,少了灵性,少了灵魂,这种缺少灵魂的学习,最终必然导致自己丢了灵气。
其次,“人们既无法否定一事物与周围事物的客观联系,也无法割断事物的昨天与今天、今天与明天的关系。否定事物联系的客观性,就会犯唯心主义的错误。”有很多同学觉得,“我是软件工程专业的,看什么书、学什么历史,要什么文学素养,我只要能把软件编写好,不就行了。”这实际上是一种逃避。人的本能会驱使自己为自己不想做的事找合理的理由,所谓的无用,只是个人在进步的大环境中自欺欺人和安于现状的遮羞布罢了。“否定事物联系的客观性,就会犯唯心主义的错误”,虽然有点迂,但是概括得很好。
计算机科学的发展离不开各种因素之间的对立统一,也正是它们之间的矛盾以及科学家对这些矛盾的把控,促进了计算机科学的发展,我们可以利用这些矛盾,更加透彻地以上帝视角观察计算机科学理论大厦的搭建,而这种知其所以然的合乎逻辑的“旁观”,会大大促进我们对计算机科学理论的理解。
二
计算机科学的发展是充满曲折且十分漫长的,计算固定数值的计算器,如算盘,自古希腊时期就已存在。莱兹·帕斯卡 于1642年设计并建造了世界上第一台可以工作的机械计算器Pascalines. Ada协助查尔斯·巴尔奇在维多利亚时代设计了差分机。约1900年,打孔机问世。但上述机器都局限在只能完成单项任务。20世纪40年代,随着更新更强大的计算机器的发明,术语“计算机”开始用来表示当时的机器。计算机的概念更加清晰,它不仅用于数学运算。计算机科学的领域也扩展到了对计算机的研究。20世纪50年代至60年代初,计算机科学开始确立为一种独立的学科。1962年普渡大学设立了世界上第一个计算机科学学位。随着计算机应用的发展,很多计算的应用都以它们自己的方式慢慢变成了研究的不同领域。
我们可以看到,计算机科学的发展,由简单的算盘到复杂的大型集群计算、由低级的计算模式到现今云计算、分布式计算等,其实质是新事物的产生和旧事物的灭亡。一个事物的发展往往是一个“不平衡→平衡→新的不平衡→新的平衡”的波浪式前进、循环往复式上升的过程,而一个个有限的过程就组成了无限发展的世界,换言之,世界也可以被看作是永恒发展的“过程”的集合体。
学习计算机理论,需要明确一点,即计算机的一切都是可以被理解的。计算机与其他自然科学相比,有一点天然优势:即使某些天赋异禀的科学家利用他们无双的天才创见堆砌了计算机科学的大楼,但他们都是人类,逃不开人类的思维方式和三观,他们创造的计算机理论或许晦涩,但都不可能逃离人类大脑的理解边界。在计算机中任何原理都是有理由的,我们是在创造理由,而不是像物理、化学、生物,在寻找理由。
即使有些问题你现阶段没有明白,但这些问题都必定是可以理解的,只是时间不够或缺少某些先修知识,所以先放一下,等有时间再学习它们。这种心态可以防止你滑入无助的陷阱。 有时候你的潜意识会愚弄你,把很难做成的事情当成无法做成的事情。毕竟,事物的发展总是从量变开始,量变是质变的必要准备。就像《肖申克的救赎》中表现的那样,Red第一次看到Andy的锤子,他认定Andy肯定逃不出来。而实际上Andy用19年的时间把墙给凿开了,虽然其间各种艰辛,但是结局却很美好。
总结
最近一直在补学院创新班的作业,学了自然语言处理、深度学习的基本概念。计算机如何对自然语言进行处理呢?最开始要做的,肯定要把文字转换成能被计算机明白的格式嘛,即数字化,但是怎么将文字数字化?这又是一个问题。词袋模型、tf-idf、词嵌入模型,这些都是将文字数字化的方法。而将图像数字化更简单,因为图像在计算机中本来就是数字化的,一张100*100的图片,实际上就是100*100*3的数组,其中的3是色道(RGB)。学过机器学习一段时间,我也有点感觉,我们普通人学习其实就是基于大数据进行拟合,具体地说,一类事物——不管是用数字化后用数据表示还是用图像表示,只要遵循一定规则进行转换——我们都能通过大量的例子来学习这个事物的特征,从而基于这些学习所得的特征来判断见到的东西是什么。
文艺复兴后的世界是人的世界,人被教化为用自己的思维去看待宇宙。人当然是很伟大的,可是人对于一个事物的辨别和机器学习相比,在逻辑上有什么区别呢?除了人有更多不为人所知的精妙结构和生物作用使得人能够非监督地进行自主学习,这些都是优化,而不是架构。一棵树,我们人看到的是绿色的树干、树叶,树叶在风中摇曳,树的影子倒映在湖畔,对于计算机来说,那是一组数字,更机械地说,就是一串与非门,但两者同样能够进行识别。如果计算机存在世界观,那么它们的世界观和人类的世界观肯定是不同的,我在句首的假设表明了我潜意识不相信计算机拥有世界观,这一事实也证明,如果计算机存在世界观,那么它们的世界观和人类的世界观肯定是不同的……一个死循环。
《计算机程序的构造与解释》第一章的前言引用了John Locke1690年在《有关人类理解的随笔》中写的话:
“心智的活动,除了尽力产生各种简单的认识之外,主要表现在如下三个方面:
1)将若干简单的认识组合为一个复合认识,由此产生出各种复杂的知识.
2)将两个认识放在一起对照,不管它们如何简单或者复杂,在这样做时并不将它们合二为一.由此得到有关它们的相互关系的认识.
3)将有关认识与那些在实际中和它们所同在的有关其它认识隔离开,这就是抽象,所有具有普遍性的认识都是这样得到的.”
我学习到如今,渐渐看到有种隐秘的东西在我认知的浓雾中若隐若现:计算机是有心智的,或者说,计算机被人类寄存了灵魂。
而我对计算机各种亲切的想象,也许就是实证与思辨亦或是辩证法对我世界观的影响。
- 本文作者: Yuang
- 本文链接: http://www.yuuuuang.com/2018/11/05/专业随想/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!