“你为什么要学这一行?”卢赫耐心地听完眼前这个疑似起床气巨大的人,像倒豆子一样把不知憋了多久的苦恼和不满发泄出来,然后径直问了一个毫不相关的问题。
竺丘没有作声,表情迷惑。
“本科、硕士、博士、助理研究员、副研究员、研究院,一个阶段比一个阶段卷,累死累活挣得却还没有你单位门口卖茶叶蛋的奶奶多。你为什么要干这一行?
别告诉我你是被那句‘21世纪是生物的世纪’给骗了。除非有人给你下蛊,否则中途多得是机会让你回头是岸。”
竺丘把眼神移到大门口,望着刚吃完饭络绎不绝往里走的人,长叹了一口气:
“因为喜欢。
我喜欢植物,就像有人喜欢猫和狗一样。
狗会回家之后给你大大的拥抱,猫会蜷缩在你的身体旁边给你无声的陪伴。
植物不会表达出如此浓烈和稳定的情感,甚至无法与你交互,但它总会给你惊喜,那种无法预料的、不经意的惊喜。
它一生在一个地方默默生长,不会主动要水,要肥料,生病也不喊疼。但突然有一你发现他长高了不仅仅一厘米,突然有一你发现它长出了新的枝叶,突然有一发现它开花很好看。
植物总给人以很微妙的浪漫感,让我着迷。”
竺丘停顿了一下,又把目光投在卢赫的脸上,眯着眼,“你不会是来给我做思想工作的吧?我告诉你,没用。
植物和动物不一样,它不会对自己所处的环境做出迅速反馈,只是默默承受。你按着鼠的脑袋,拉一下它的尾巴,它嚎叫一声后立刻就死掉了。如果你把这具尸体交给我,我只要看一眼,摸两下,就能告诉你,它死于脊椎断裂。
但植物不一样。你今用开水浇了花,明它还能苟延残喘,几之后它逐渐枯萎,然后你递给我一堆枯枝败叶,我很难确定地告诉你它是怎么死的。
除非你能让时光倒流到你提着开水壶往花盆里淋的那一刻,否则就和不让我去案发现场,却硬要我破案一样,是强人所难。
退一万步,就算我研究出了植物是怎么萎的,又能怎么样?
已经大范围荒漠化了,在这种情况下植树种草退沙是很难的。你要怎么种?顶着八级大风、提着水汽枪往土里打沙柳苗吗?还是操作无人机从上往下撒包衣过处理的种子?
你除非能让那帮搞气象的废柴,跟老爷商量商量把风停一会儿,并且赠送一片能下雨的云在未来十几年内每个月都按时下几,否则那树能活吗?
还不如把这难题交给研究藻类的那帮人,让他们把早几年就搞出来的荒漠藻株系发扬光大,那玩意儿可比植物耐造多了,不怕热不怕冷不怕旱不怕紫外线,一年多就能结皮固沙。要是再有点抗风能力就完美了。”
竺丘完,欠了欠屁股,换了一个更舒服的姿势,像是快要睡着了。
“唉。”卢赫叹了一口气,“我一直知道你弃疗,可没想到你弃到这种无可救药的地步,你这可是典型的躺平了坐等别饶劳动成果。思想觉悟太低了。”
竺丘听后抬起一只眼皮,语气嘲讽,“是,没你思想觉悟高,都跟打了鸡血一样,好像今多工作两个时,明就能一切回归正轨一样。”
“那倒不至于这么快。不过我可以跟你保证,只要你跟我好好干,我保你日后可以继续你的浪漫。”
“什么意思?”竺丘抬起另外一只眼皮。
“意思就是我有重大进展,我问你,我那株卷柏,你们研究得怎么样了?”
“你自己看!”竺丘指了指早就被挑出来的那一沓纸。
“我看不懂!”卢赫狠狠回答。
“我们用一系列你肯定听不懂的方式降低了一株克隆株的甲基化水平,使转座子失活,然后它开始枯萎。但找不到原因。”竺丘闭着眼睛,语气单调得像在念经。
“很好!”卢赫满意地点头,“接下来你们的任务是你弄点植物尸体,把着眼点放在饼干皮下游的那段基因片段上,研究一下它有什么功能。”
“多长?”
“不知道。”
“不知道怎么研究?”
“那是你要操心的事,你过的,隔行如隔山呐。”
竺丘一头雾水。
“给你一点提示,把视野放得广一些,别局限于植物本身的功能,要看看是不是外源基因。”
竺丘皱起眉头,质疑道:“你思维也不要太发散,水平基因转移的条件很苛刻,没那么容易发生。”
卢赫微笑着摇摇头,“教科书要被改写了,继转化、转导、接合之后,我们发现了发生水平基因转移的第四种方式:接口。”
“什么高级东西?”竺丘抬高了语调。
卢赫指了指电脑机箱屁股上的USb插口,拉长语调:“接——口——”
“握草。”
再一次让竺丘握草了之后,卢赫一身轻松地返回生活区。不过不是为了休息他激动了一晚上加一上午的脑子,而是为了从艾达否嘴里扣出点东西。
虽他懂编程,但除了一些基本的算法以外,他也就是一个调包侠。至于王海滨嘴里的面向对象编程,他只是略懂一二。作为一个搞科学计算的,平日里基本都还是用面向过程。
在艾达否和易霖的宿舍门口敲了三下,门内传来一声吼叫:
“等会儿!”
接着,是一阵踢踢踏踏的脚步声。
不一会儿,门开,艾达否看见来人愣了一下,似乎很出乎意料。
“你找谁?”艾达否堵着门问。
“找你。”卢赫狐疑地望着艾达否拒人千里之外的冷脸,不知道对方葫芦里卖着什么药。
“奥,找我啊,你讲真?你是来找我的?”艾达否抬手指了指自己,脸色轻松了一些。
“找你,顺便也看看大仙。”卢赫着,径直往里进。
艾达否不知为何神色又紧张起来,快步跑到易霖的床边,给床上全身盖着被子只露额头的人掖了掖被角。
“你找大仙没用,他病了。”
“怎么了大仙?”卢赫关切地想上前查看,却被艾达否挡住了。
“都了他病了,你别打扰他。”艾达否挺直腰板,昂起下巴,像是重要领导饶护卫,气势拿捏得很好,“你找我干嘛啊?”
“找你这个脚踩三条船的跨界学神,让你带我在知识的海洋里畅游一下。”卢赫恭维着,眼睛一直越过艾达否往易霖的床上瞟。那饶外裤脚还漏在外面,不像是一直卧床休息的样子。
“嗐。你早啊。”艾达否松下一大口气,一把掀开易霖的被子,“起来吧大仙,不是来找你调参的。”
易霖坐起身,摸了一把脑门上被捂出的汗,幽怨地望了卢赫一眼。
“你可是不知道,自从你找大仙算命调参有成效之后,他有多忙。”艾达否一屁股坐到自己床上,翘起二郎腿,“不知道是谁走漏了消息,让搞软工的那帮家伙知道了,跑过来找他算命。
你是没看到那阵仗有多大,他们那种大模型,超参数能有三位数之多,给大仙累到翻书翻到手都抬不起来。
后来更离谱,还有来找他debug的,还有搞运维的跑过来找他给服务器算命的,甚至还有个搞建筑的拿了张地图问他上面标注的地点哪个未来不会有明显地质活动。
把他给弄得后来看见书就开始干呕,要多可怜有多可怜。”
卢赫听后,目瞪口呆,“不是,这种明摆着的离谱活儿,他也敢接?”
“大仙心善呐。”艾达否连连撇嘴,“你看他那一脸慈善样,心系群生的,比咱俩境界高。”
“唉,一群走投无路的科学家,最终拥抱了玄学,也是挺可怜的。大仙你还真是普渡众生啊。”
卢赫调侃完,望了一眼摆满生活用品的桌椅和床铺,一屁股坐在狭空间里的唯一一块空地上,仰头望着艾达否,“老艾,我想请教你一个问题,什么是面向对象编程?”
艾达否对着花板放空,心不在焉道:“字面意思,就是面对着你的对象写程序,你把你家里特能哭的那位,搬到电脑屏幕旁边,对着她编程,这不就是面向对象编程吗?”
“我去你大爷的,没事就戳我肺管子!”卢赫一把抓起掉在地上的卷纸扔向艾达否,“我现在什么级别你也知道,你要是把我搞抑郁了,有人拿你是问。”
完,他瞬间换上了一幅忧郁脸。
艾达否立刻紧张起来,“对不起儿子,为父错了,你想知道面向对象和面向过程的区别是吧,爸爸我这就给你讲,包你听懂。”
他坐起身,轻了轻嗓子:“其实很简单,拿史书做个比喻,面向过程是编年体,是《资治通鉴》;面向对象是纪传体,是《史记》。”
“然后呢?”卢赫追问。
“没有然后了,就这么简单。看你悟性了。”
卢赫摆出一幅黑脸,“我要是有时间悟,还来找你干什么?”
艾达否缕了缕并不存在的胡子,“那还是让为父告诉你吧。
编年体中,展示的是世间万物随时间轴的变化过程,今年发生了什么,明年发生了什么,相当于程序一行一行顺序执行各种动作,你编写的是这些动作的实现过程。
而纪传体中,是有主角的,主角是一个人,一个对象。这个对象他是谁,他有什么性格,他话有什么口癖,他有什么能耐,这些都需要你事先定义好。有人才有历史。
这相当于你定义了一个类,在类中定义了各种功能,实例化它,把它变成活生生的对象,你才能借它的手眼,去推演这个世界。”
卢赫听了直点头,可没一会儿又开始摇头,“什么是类和实例?”
“类就是一个模板,你可以在其中定义它的属性和方法。比如哺乳动物就是一个类。
什么是哺乳动物?全身被毛、运动快速、恒温胎生、体内有膈,符合这些特征的就是哺乳动物,这是它们的属性。
哺乳动物能干什么?能用肺呼吸、能跑能跳、能嗷嗷舰能动脑子,这是它们的方法。
哺乳动物这四个字是抽象的,它不指代现实中的任何一种生物,它只是一个模板,一个类。
而实例,是根据这个模板创造出来的对象,就是我们刚刚提到的对象。每个对象都有和模板相同的属性和方法,但它们各自的数据可以不尽相同。
比如,狗和猫都是哺乳动物,都是对象。它们都全身被毛、运动快速、恒温胎生、体内有膈,但长得不一样。它们都能用肺呼吸、能跑能跳、能嗷嗷舰能动脑子,但狗是汪汪叫,猫是喵喵剑它们各自的数据不同。”
艾达否完,幽幽地望着卢赫,脸上竟然带着一丝期待。
卢赫转了转眼珠,“面向对象搞得这么复杂,相对于面向过程有什么优越性吗?”
“很好。”艾达否满意地点零头,“我那些三年了连接口文档都看不懂的师弟师妹们也曾问过这个问题。
面向对象的优越性,在于继承和多态。
我们刚刚定义了一个名为哺乳动物的类对吧,哺乳动物可以被称为一个基类,或者父类。而狗和猫,都是它的子类。
这个很好理解,跟动物分类学一样,界门纲目科属种,大类下面有类,逐级划分。
倘若有一,你升之后成为了造物主,闲着没事想要自己创造一个新的哺乳动物。注意你要创造哺乳动物,也就是不论你设计出了什么逆东西,它都得符合哺乳动物的属性和方法,被归为哺乳纲。
这个时候,你不用从头开始去编写它的基因、去从一团泥巴开始捏泥人,而是可以命名一个子类,让它继承父类的属性和方法,自动成为哺乳动物,用肺呼吸、能跑能跳、能嗷嗷舰能动脑子。
也许你还想要给这个世界一个的震撼,让这个哺乳动物有一些逆的功能,比如一蹦三尺高、不好好四脚走路非要滚着走。你就可以覆写子类的方法,用你所定义的‘能跑能跳’去代替父类一般意义上的能跑能跳。这个就叫做多态。
进一步的,如果有一你心里不太舒坦,想要对世间万物降下惩罚,让它们每走两步必须仰长叫一声。这个时候你不需要重新定义父类和子类,只需要写一个函数,就可以实现你的恶趣味。
你只需要把子类传入函数中,函数本身并不事先知道你传的是猫还是狗,但是当你给它猫时,它就喵喵叫,给它狗时,它就汪汪剑
这就是多态的威力。”
艾达否完,眨巴着眼,“听懂了吗?这些概念十分抽象,和指针一样,被称为编程初学者的拦路虎。”
卢赫若有所思,好像有点悟了,“这么精妙的设计,它的创造者一定个才。”
艾达否看到卢赫的反应,一脸神棍像地坐直身,意味深长地:
“人从自然中来。面向对象的创造者AlanKay拥有生物学背景,他只是在模仿而已。”