第一百九十四章 留下
“原來北魔工并沒有計(jì)算機(jī)學(xué)院?”
辦公室里,坐在沙發(fā)上,捧著茶杯的瑪麗恍然大悟。
坐在斜對面的李力有些尷尬地?fù)狭藫项^,“原本是沒有的,因?yàn)橛?jì)算機(jī)的發(fā)展和研究一直以來都是幾個實(shí)驗(yàn)室用有限的人在去做,這個學(xué)科還不太成熟,所以歸到了機(jī)械學(xué)一級學(xué)科下面?!?p> 頓了頓李力又說道,“不過隨著計(jì)算機(jī)學(xué)科的復(fù)雜性與日俱增,我們現(xiàn)在也在考慮創(chuàng)辦計(jì)算機(jī)學(xué)院,只是這個想法還停留在構(gòu)思上?!?p> “那您不應(yīng)該對我欺騙呀”,瑪麗無奈地說,雖說是指責(zé)的語氣,不過瑪麗卻并沒有露出多少指責(zé)的表情,“我是學(xué)習(xí)計(jì)算機(jī)技術(shù)才來到遙遠(yuǎn)的東方國度,如果您這里沒有計(jì)算機(jī),那么我就一走了之?!?p> 李力表情抽搐,腦海中努力轉(zhuǎn)義瑪麗說出來的別扭的帝國語,看著她將茶杯輕放在茶幾上,準(zhǔn)備站起離開,他連忙上前勸解道:“稍安勿躁稍安勿躁,有句老話說得好:既來之,則安之,你說來都來了是吧,哪有空著手走的道理,況且我們沒有計(jì)算機(jī)學(xué)院,但是其他地方也沒有??!”
坐在旁邊的樾樾滿臉不忍地看著李力,他這是留人呢還是趕人呢?
得虧瑪麗的帝國語也不怎么樣,在歪著頭思考清楚李力的話后,她問道:“那么我該去哪里學(xué)習(xí)呢?”
“咳”,李力輕咳一聲,“剛才我已經(jīng)說了,計(jì)算機(jī)科學(xué)現(xiàn)在還處于原始的階段,這個學(xué)科目前歸類到魔導(dǎo)機(jī)械一級學(xué)科下面,原因就在于大部分時候,我們只關(guān)心處理器以及各部件,說白了就是硬件,而將軟件作為硬件的驅(qū)動?!?p> 瑪麗努力地消化著李力所說的話,在明白李力所說的意思后,她眼睛驀然亮了起來,“您說得正確!”
“而且我看了你的那篇論文”,李力回過頭來向樾樾,樾樾從隨身空間里掏出瑪麗郵寄來的論文遞了過去。
瑪麗表情驚訝地接過自己的論文,奇怪地問道,“為什么我的論文出現(xiàn)在您這里?”
“大概是因?yàn)橹挥形夷芸吹枚愕恼撐陌伞!崩盍β柫寺柤?,“打開看看?!?p> 瑪麗低下頭,翻開自己的論文,結(jié)果剛翻開第一頁她就呆住了。
論文的空白處用紅色和黑色的筆跡寫滿了各種各樣細(xì)致的批語和意見——用正常的字體。
論文的內(nèi)容她早已爛熟于心,因?yàn)檫@是她反復(fù)推敲過的內(nèi)容,幾乎已經(jīng)細(xì)致入極,完善如終,但是在瀏覽了李力所寫的批語,理解了李力對所謂編程語言與面向?qū)ο蟾拍钜院螅碌母形蛴可闲念^,這讓她驚呼出聲。
“怎么樣?能不能幫到你?”看到瑪麗似乎已經(jīng)沉浸其中,李力露出引誘小蘿莉一般的微笑,循循善誘地說道:“留下吧,在我們實(shí)驗(yàn)室你可以接觸到比這些更先進(jìn)和抽象的東西,你甚至可以開創(chuàng)一個新的學(xué)科,將計(jì)算機(jī)科學(xué)發(fā)揚(yáng)光大,成為計(jì)算機(jī)程序設(shè)計(jì)的奠基人!怎么樣?跟我簽訂契約,成為馬猴燒酒吧。。。”
“這是您寫的?”瑪麗的眼睛瞪得滾圓,不可思議地表情略顯可愛,抬起頭來看向李力。
“是啊”,李立點(diǎn)點(diǎn)頭,“我剛才不是說了,能看懂你的論文估計(jì)也只有我一個人了,所以學(xué)校就把論文轉(zhuǎn)給我了啊?!?p> 聽了這話,瑪麗“噔”地從椅子上彈了起來,直接對著李力彎腰九十度,大喝一聲:“師父?。。?!”
“噗——”
一口水還沒喝下去的樾樾,就聽見這一聲突如其來的“師父”,直接噴了出去,好巧不巧地噴在了震驚地張大嘴的李力臉上。
滿臉?biāo)ǖ睦盍ι驳剞D(zhuǎn)過脖子,瞪著樾樾。
“咳咳。。。對不起對不起。。。你們繼續(xù)。。。”樾樾不好意思對著李力說道,招了招手瞬間蒸發(fā)掉李力臉上和身上的水珠,然后努力縮在沙發(fā)里,假裝自己是個抱枕。
勉強(qiáng)從震驚中回復(fù)過來的李力轉(zhuǎn)回頭去,對著瑪麗委婉地說:“八戒呀,我們這里是研究機(jī)構(gòu),不興舊社會那一套,不搞拜師的。”
瑪麗微微抬起頭來,疑惑地看向李力,“那么。。。教練?”
“你想打籃球嗎?”李力瞪了她一眼,“叫教授!”
“哦哦,教授”,瑪麗反應(yīng)過來,又重新鞠了一躬,“我想學(xué)習(xí)計(jì)算機(jī)科學(xué)跟您!”
李力身心疲憊地抹了把臉,才反應(yīng)過來水珠已經(jīng)蒸發(fā)了,將瑪麗扶起來以后說道:“來了實(shí)驗(yàn)室的話我們就是同事關(guān)系,當(dāng)然如果遇到問題,我們可以探討,共同進(jìn)步,計(jì)算機(jī)的知識浩如煙海,它可以應(yīng)用到人類的方方面面,從抽象到具體,從研究到應(yīng)用,即便是我也僅僅有一些算不上多的靈感而已。”
“嗯嗯!”瑪麗努力地點(diǎn)點(diǎn)頭。
“就比如說你對語言的抽象化是怎么想的?”李力伸手將論文翻到了第二章節(jié),指了指上面的文字。
“通過設(shè)計(jì)好的指令,將機(jī)器的執(zhí)行細(xì)節(jié)掩埋,這樣的話編輯者在編輯時就可以不用記憶和拆解每一個步驟將其指令,就可以開發(fā)快速?!蓖蝗徽劦秸}讓瑪麗一下子興奮了起來,“很多步驟都可以包裹成一個命令,開發(fā)好的程序可以將命令轉(zhuǎn)化為機(jī)器執(zhí)行碼。”
“但是你所說的其實(shí)已經(jīng)將兩個東西混雜在了一起”,李力指出,“語言和庫。
“語言是用來進(jìn)行邏輯編輯的,它通?;谀撤N抽象邏輯,比如數(shù)學(xué),比如符文學(xué),當(dāng)然為了能讓處理器執(zhí)行,計(jì)算機(jī)語言已經(jīng)將數(shù)學(xué)語言或者符文學(xué)語言復(fù)雜化了。而另一種東西則是庫,也就是通過語言編寫和封裝的,可以被別人使用的成熟代碼段,兩者的關(guān)系就好像帝國語和詩詞的關(guān)系,當(dāng)你感慨‘念天地之悠悠,獨(dú)愴然而涕下’的時候,就是在調(diào)用登幽州臺歌的代碼段?!?p> 旁邊的樾樾眼前一亮,剛想說話,卻猛地捂住自己的嘴。
帝國語貧窮如瑪麗,并沒有感受到詩詞中的韻味,但前面的邏輯她懂了大概,“語言只有我們定義,庫不僅僅我們定義,也你們定義,也他們定義,和調(diào)用?!?p> “是的”,強(qiáng)忍著瑪麗用錯誤語法編寫的帝國語,李力點(diǎn)點(diǎn)頭,“當(dāng)然為了保證語言使用的簡潔,編程環(huán)境一般都會自帶官方庫,我們會寫一些通用的庫內(nèi)置進(jìn)去方便調(diào)用,尤其是涉及外部硬件控制的指令,都會進(jìn)行封裝?!?p> “可是,怎么樣能保證使用者按照庫的編寫者要求調(diào)用呢?”瑪麗又問道,“我們提供庫,要使用者調(diào)用正確能使用,但是不正確不能,這樣怎么辦?”
“哦?有一些沒法封裝的步驟,但需要使用者按正確方式調(diào)用么?”李力抬了抬眉毛,“舉個例子。”
“材料加工程序,開始前必須檢查材料的形狀和純度,一些半永久轉(zhuǎn)換或者對稱轉(zhuǎn)換需要結(jié)束的時候轉(zhuǎn)換回來。”
聽了這個問題,李力摸了摸自己的下巴,“按照開放程度高的語言設(shè)計(jì),這種需要前置或者后置的東西通常只是留出語法讓使用者自己調(diào)用,當(dāng)然如果對方?jīng)]有調(diào)用就會出現(xiàn)系統(tǒng)級別的故障,比如內(nèi)存泄露,比如錕斤拷燙燙燙什么的。。?!?p> “如果限制呢?”瑪麗迫不及待地問道。
“這樣的話,就需要運(yùn)行環(huán)境,而且如果你真的要限制使用者使用方式,那么你所寫的就不是庫了。”
“那是什么?”
“框架”,李力說道:“與庫不同的一點(diǎn)在于框架是控制反轉(zhuǎn),雖然這個詞聽起來挺高大上,不過意思就是原本是由使用者調(diào)用庫來完成某些工作,但現(xiàn)在是框架調(diào)用使用者所寫的一些東西來完成某些工作,既然如此,使用者就必須按照框架的使用規(guī)則來寫這些東西。
“比方說如果你需要使用者在執(zhí)行對稱轉(zhuǎn)換程序時必須初始化和銷毀,那么你就必須留出初始化和銷毀的接口,讓使用者完善它,這樣程序就可以在執(zhí)行主體程序之前調(diào)用初始化內(nèi)容,并在結(jié)束之前調(diào)用銷毀?!?p> 聽了李力的話,瑪麗興奮地叫了起來,“就是它就是它!我在寫轉(zhuǎn)換程序時思考過這個問題,但是在編寫c語言的時候總是無法將這個想法融入里面,原來是我搞錯了!”
“c語言。。?!崩盍M臉糾結(jié)地看著瑪麗,心想著要不要建議她換個名字,既然想做框架限制的語言類型,不如建議改叫Java?
“當(dāng)然了,這只是軟件級別上的框架,如果你想要做到硬件層面上的框架,要求使用者按照你指定的規(guī)則,在你的控制下進(jìn)行運(yùn)行,那就是另外一種東西了?!?p> “什么東西?”
“操作系統(tǒng)?!?