第19章 来自未来
依旧是琳琅满目的书籍。
《作业系统》《编译原理》《程式语言实现模式》……
李林看得有些眼晕。
“看这些就能……”
“屁用没有。”
胡云程直接打断了李林,
“我只是伸个懒腰。”
“?”
“然后,找个人帮你问问……不对,是帮我问问,毕竟这个问题,我也挺感兴趣的。”
胡云程终究还是鬆口了。
看著他满脸的(不)感兴趣,李林笑了。
鞠躬,冲他道了声谢。
“別搞这没用的,赶紧滚一边去——”
在就在胡云程掏出老花镜拨弄手机时,李林也没閒著,坐在一旁隨手翻起书来。
都是摆在胡云程办公桌上的一些杂誌、期刊之类的杂书。
这两天,李林的弦绷太紧了。
现在是离答案最近的时候,也是他最该放鬆的时候。
省得一会儿听到好消息再乐极生悲。
对於一个近两天只睡了不到4小时的18岁发育期少年来说,这可不是危言耸听。
“三位诺贝尔物理学奖得主因为对混沌和隨机现象的研究而分享了今年的诺贝尔物理学奖……”
“装男人……男人装……”
“据说,面向对象思想的雏形来源於细胞,细胞里既有遗传物质,又有处理这些物质的酶……”
“世界母猩猩图鑑……”
“……”
“——等会?”
我刚才是不是看到了什么?
李林猛地抄过刚才隨便瞟过的一本杂誌。
“细胞?”
“细胞……”
“细胞!”
李林猛地一拍桌子,差点把一旁的胡云程给嚇到弹起来。
但他没空在意这些了。
他只觉得,有什么东西——
对上了。
李林快速把整篇文章读了一遍。
不是在意它的字面意思,而是它所指向的思维方式。
就像细胞:
细胞膜包裹著细胞核与细胞器,遗传物质和加工这些物质的酶被封装在同一个单元里,彼此不分离。
数据就是遗传物质,函数指针就是酶,结构体就是细胞膜。
把数据和操作数据的方法封装成一个不可分割的“细胞”,然后让这些细胞自己去管理自己的生命周期,自己去响应外部的消息。
多生命周期?那就各自管理各自的生命周期,在接口处做统一的安全校验。
类型安全?用函数指针的类型签名来保证输入输出的一致性。
至於內存泄漏和悬空指针……如果一个“细胞”从创建到销毁都有清晰的边界,那些野指针就变成了可以捕获的已知错误,而不是无法预防的灾难。
一通百通。
酣畅淋漓。
但更重要的是,李林不止是这个问题通了。
他全通了。
因为眾所周知,这其实是很简单的面向对象思想——
封装、继承、多態。
这些东西从来不是c++凭空发明出来的,它们在c语言里一样可以被实现,只不过需要你自己动手搭建。
可李林之前从来没有往这个方向想过。
因为他把先后分得太清了。
c语言是面向过程,c++是面向对象。
这是课本上白纸黑字写著的,是每一个学编程的人都被反覆灌输过的分类。
过程是过程,对象是对象,怎么能混为一谈?
先学c再学c++,先学走再学跑,顺序不能乱。
可此刻他忽然意识到,这种“先后”只是教学的顺序,不是事物本身的顺序。
面向对象的思想从一开始就隱藏在c语言的指针和结构体里,只是要走到足够深的地方才能看见它。
它不是c语言之后才出现的东西,它从一开始就在那里。
谁管他什么先来后到。
真是……
踏破铁鞋无处觅,得来全不费工夫。
李林突然的笑,又把一旁暗中观察的胡云程嚇了一跳。
“这孩子……是不是压力太大了?”
但李林是开心的,迸发出一种豁然开朗的、收都收不住的笑意。
他意识到了,是他自己一直把自己困在“学习的顺序”里。
先学语文再学英语,先学c语言再学算法,先补数学才能碰计算机……
但知识从来不是一条单行线。
它是一张网,任何一个节点都可以是入口,任何一个节点也都可以通向所有其他节点。
你只需要一个东西把它们连起来。
而他终於找到了那个东西——
一个更高的视角。
那么这场考验,也就迎刃而解了。
你很强,没错。
强到纵横一个时代。
但是。
我,来自未来。
“系统,再次突破c语言。”
隨著他的默念,眼前瞬间白光一闪。
【考验加载中……】
世界褪去。
等他再睁开眼的时候——
耳边是老式小型机嗡嗡的低鸣,空气里正瀰漫著焊接松香的气味。
【1972年】
【美国新泽西州,贝尔实验室】