同一个类型的问题,但比上次具体得多。
“……”
胡云程沉默了。
他现在才知道李林回来是做什么的。
表决心。
证明他这几天是真的在学,不是在装样子。
他面无表情地盯着李林,李林也毫不尤豫地盯了回来。
然后,得到了胡云程的回答,
“我不知道。”
不是敷衍,是真的不知道。
他钻研了这么多年算法,对于这些底层的实现细节,早就抛到了脑后。
当年也许学过吧,也许翻过几篇相关的论文,但那些记忆早就被消磨得渣都不剩了。
“胡老师,我需要一个方向。”
李林似乎早就预料到这个答案,认真地回答道,
“这件事对我很重要。”
胡云程叹了口气,转过身,随手指了指办公室一侧。
依旧是琳琅满目的书籍。
《作业系统》《编译原理》《程序语言实现模式》……
李林看得有些眼晕。
“看这些就能……”
“屁用没有。”
胡云程直接打断了李林,
“我只是伸个懒腰。”
“?”
“然后,找个人帮你问问……不对,是帮我问问,毕竟这个问题,我也挺感兴趣的。”
胡云程终究还是松口了。
看着他满脸的(不)感兴趣,李林笑了。
鞠躬,冲他道了声谢。
“别搞这没用的,赶紧滚一边去——”
在就在胡云程掏出老花镜拨弄手机时,李林也没闲着,坐在一旁随手翻起书来。
都是摆在胡云程办公桌上的一些杂志、期刊之类的杂书。
这两天,李林的弦绷太紧了。
现在是离答案最近的时候,也是他最该放松的时候。
省得一会儿听到好消息再乐极生悲。
对于一个近两天只睡了不到4小时的18岁发育期少年来说,这可不是危言耸听。
“三位诺贝尔物理学奖得主因为对混沌和随机现象的研究而分享了今年的诺贝尔物理学奖……”
“装男人……男人装……”
“据说,面向对象思想的雏形来源于细胞,细胞里既有遗传物质,又有处理这些物质的酶……”
“世界母猩猩图鉴……”
“……”
“——等会?”
我刚才是不是看到了什么?
李林猛地抄过刚才随便瞟过的一本杂志。
“细胞?”
“细胞……”
“细胞!”
李林猛地一拍桌子,差点把一旁的胡云程给吓到弹起来。
但他没空在意这些了。
他只觉得,有什么东西——
对上了。
李林快速把整篇文章读了一遍。
不是在意它的字面意思,而是它所指向的思维方式。
就象细胞:
细胞膜包裹着细胞核与细胞器,遗传物质和加工这些物质的酶被封装在同一个单元里,彼此不分离。
数据就是遗传物质,函数指针就是酶,结构体就是细胞膜。
把数据和操作数据的方法封装成一个不可分割的“细胞”,然后让这些细胞自己去管理自己的生命周期,自己去响应外部的消息。
多生命周期?那就各自管理各自的生命周期,在接口处做统一的安全校验。
类型安全?用函数指针的类型签名来保证输入输出的一致性。
至于内存泄漏和悬空指针……如果一个“细胞”从创建到销毁都有清淅的边界,那些野指针就变成了可以捕获的已知错误,而不是无法预防的灾难。
一通百通。
酣畅淋漓。
但更重要的是,李林不止是这个问题通了。
他全通了。
因为众所周知,这其实是很简单的面向对象思想——
封装、继承、多态。
可李林之前从来没有往这个方向想过。
因为他把先后分得太清了。
这是课本上白纸黑字写着的,是每一个学编程的人都被反复灌输过的分类。
过程是过程,对象是对象,怎么能混为一谈?
可此刻他忽然意识到,这种“先后”只是教程的顺序,不是事物本身的顺序。
面向对象的思想从一开始就隐藏在C语言的指针和结构体里,只是要走到足够深