小时候,我玩过手电筒,并且自己拆开又重组过;初中时代,我学过继电器和初级电学;到了高中,我才初次接触了基本的与、或逻辑;大学选择了计算机专业,除了写代码,也要学离散数学和数字逻辑这两门专业课。但是很长一段时间,这些学过的知识除了能让我在一次一次的考试中正确地完成计算、获得相应的分数,并无其他用处。在毕业获得一纸文凭之后,这些知识也在脑海中慢慢褪色了。
但是看完本剧关于手电筒工作原理的剖析之后,所有看似无关系的学科都巧妙地联结在了一起。这就是底层知识的美妙之处吧——总会存在某一个瞬间,不同领域的知识表现出了相同的运行逻辑。但是很不幸,在课堂上的学习很难获得这种趣味性——教材总是专注于具体公式定理的计算,从没有以发展的眼光去审视这些知识和技术。
尽管今天的计算机比起25年前,以及50年前的都复杂许多,但它们在本质上是完全一致的。学习技术发展史的重要意义正在于此;追溯的历史越久远,技术的脉络就变得越清晰。
计算机和其它的自然科学(例如生物学)不太一样,前者的规则是由人发明创造出来的,而后者的规律是从大量的观察中总结出来的。虽然出发点不同,但在学习两者知识的过程中,还是能体会到美妙的相似性。
计算机的底层就是编码和计算,0 和 1 的信息表示加上逻辑门的简单运算规则就构建出了完整的计算机程序;生物的底层似乎也就是 A T G C 这四种含氮碱基,简单的配对规则加上不同的碱基对序列也能创造出具有多样性的生物。
在使用fork()系统调用时,父进程会一分为二,子进程拥有父进程的一份代码和数据拷贝,这样一来,一个进程就变成了两个;当细胞生长到一定阶段,就会进行有丝分裂,生成两个几乎一样的细胞。
细胞的诞生和消亡反映了生命的历程,进程的创建和销毁彰显了计算机系统的活力。大自然中,是否也存在类似的编码规则,而生命就类似于编程和计算后的产物? 自然科学的学习,总会让我有一种不确定感。我们目前获得的知识,更多地来源于主观观测和建模。随着技术发展,总会有特例出现,总存在现有理论解释不了的现象。在探索自然科学的过程中,有一种深不见底的感觉,这种感觉会让我对大自然始终保持着一种敬畏之情。
而计算机科学是人类智慧的结晶,所有的程序和计算都在约定好的规则下有条不紊地运行着,只要愿意思考,计算机中的很多问题都能够找到最终答案。计算机发展至今,已经变得非常复杂了。但从这个复杂的系统中,可以看到很多设计上的相似性,例如,分层和缓存。
去了解计算机中某一组件的工作原理,去品味计算机设计中前人留下的智慧,看着自己写的代码在计算机上井然有序地运行着,想象着背后的电信号正穿越着一扇又一扇的逻辑门……没有什么事情能比这更加让我们感到快乐了。
网友评论