梁實(shí)誠回復(fù)了這個(gè)人,并把自己的MSN號發(fā)了過去,同時(shí)注意到這個(gè)人的頭像是一張外國紙幣,,名字叫弗蘭克,,經(jīng)過搜索這張紙幣是蘇聯(lián)時(shí)代的。
翻開他的歷史記錄,,全是在幫人答疑解惑,。
很快對方就加了梁實(shí)誠為好友,沒有過多寒暄,,開門見山直逼主題,。
【那段程序在哪搞到的?是你寫的嗎,?或者說是你的朋友,?】
見此人如此著急的提問,梁實(shí)誠隨便編了一個(gè)理由,。
【我從舊貨市場撿到的,,感覺很有意思,就都收集了下來,,你對他們有了解嗎,?】
那人停頓了一下,像是在打字,,
【事情是這樣的,,那段程序的風(fēng)格很俄系,或者應(yīng)該說是很蘇系,。
我以前見識過這種風(fēng)格,,不過在這個(gè)時(shí)代已經(jīng)沒有人會用了,還會寫這種程序的人,,應(yīng)該都上了一些年紀(jì)了,。而且他們要么是實(shí)驗(yàn)室的科研人員,要么是為軍方服務(wù)的人,?!?p> 梁實(shí)誠明白可能找到一些線索了,于是立刻回復(fù)道:
【此話怎講,?】
過了一會兒,,對方終于打完了字,,并發(fā)送了過來,
【簡單的說,,蘇聯(lián)以前在電腦硬件層面始終和美國保持著巨大的差距,,但是軍用設(shè)備卻要維持在和美國一樣的水平上。
為了達(dá)到這一點(diǎn),,就只能在編程上下功夫了,,于是他們另辟蹊徑了一套編程邏輯,對于硬件的要求很低,,但是對于編程者的智力要求極高,。
你可以發(fā)現(xiàn)蘇聯(lián)的戰(zhàn)斗機(jī)的火控系統(tǒng)的代碼總是短小而精悍,這就是為了彌補(bǔ)硬件上的不足,。
可是盡管硬件不如別人,,最終的性能卻沒有完全落后。
這套體系唯一的缺點(diǎn)就是編程難度高,,一般人很難學(xué)得會,,最終因此被淘汰在歷史的長河中?!?p> 梁實(shí)誠剛看完這句,,那人又繼續(xù)補(bǔ)充道:
【在編程領(lǐng)域有這個(gè)一個(gè)規(guī)律,程度的功能,,程序運(yùn)行效率,,編程難度。
這三個(gè)點(diǎn)只能保留兩個(gè),。
若想程序功能強(qiáng)大,,要么這個(gè)程序運(yùn)行起來很慢,對電腦配置的要求很高,,要么就編程就得用更難的方法,。
現(xiàn)在的主流做法是,盡可能降低編程難度,,又要保證程序的功能,,于是只能靠電腦性能的飛升,來解決程序效率的問題,。
而當(dāng)年蘇聯(lián)的方法相反,,在同樣功能的情況下,靠更困難的編程方式降低對硬件性能的需求,?!?p> 對話進(jìn)行到這里,兩人之間似乎有了一絲信任感,,F(xiàn)lanke請求視頻通話,,梁實(shí)誠點(diǎn)下了同意,,然后他看到畫面中是一個(gè)穿著白大褂的白發(fā)老頭,儼然一副學(xué)者模樣,。
隨后他們繼續(xù)交談起一些專業(yè)問題,。
這些道理梁實(shí)誠都懂,卻很禮貌地裝作一個(gè)新人的樣子討論起來,,
他記得這個(gè)一個(gè)現(xiàn)象,,同樣的游戲畫面,同樣的電腦配置,,可以因?yàn)槌绦騿T付出的優(yōu)化,,讓幀數(shù)提升不少。
這就是現(xiàn)狀,,如今編程軟件越來越容易學(xué),,無數(shù)人可以只學(xué)習(xí)一些模板后就上崗工作,所用的編程軟件也越來越簡單,,庫文件也越來越復(fù)雜,但對于電腦資源的性能要求也越來越高,。
因?yàn)殡娔X的性能提升比人編程水平快多了,,而高水平人才相對稀缺的資源,如何讓普通人也能學(xué)會編程才是重點(diǎn),。
于是人們選擇了用降低運(yùn)行效率,,換編程難度的降低。
盡管電腦的性能在以摩爾定律飛速提升,,可是我們卻沒有感到電腦運(yùn)行更快了,,因?yàn)楝F(xiàn)在的軟件更加消耗硬件。
結(jié)束了對這個(gè)話題的討論后,,梁實(shí)誠問出了他真正想要問的問題,。
【我不知道我應(yīng)該怎么稱呼你,就叫你弗蘭克教授吧,。
教授,,我現(xiàn)在找到了一堆歷史文件全是關(guān)于這種特殊的編程代碼的,但是我并沒有他們的庫文件,,
我能否用什么辦法,,還原出他們的庫文件,然后讓這些代碼可以重新被使用起來,?!?p> 畫面中對方低下頭打起了字,
【哦,,很好,,我支持你的想法,,我當(dāng)年就是學(xué)的這套體系,我會盡我所能幫助到你,,如果能讓世人再次看到蘇聯(lián)的一些研究成果,,對我而言也是莫大的榮幸。
不過這需要一定的思維能力,,以及一些勞動,。
因?yàn)樘K軍的硬件水平也在緩慢提升,庫文件在這個(gè)過程中不斷發(fā)生了變化,,我很了解這套模式,,卻也不知道是哪個(gè)時(shí)代的版本?!?p> 打字的過程中,,弗蘭克教授竟時(shí)不時(shí)擦起了眼淚,并添加了一句,,
【我當(dāng)年有很多同伴選擇了去鄰國,,也就是你的國家,這些或許就是他們帶過去的吧,,
我真后悔我當(dāng)初的決定,。】
梁實(shí)誠見狀禮貌地安慰道:
【弗蘭克教授,,我姑姑情況也和你差不多,,她從小學(xué)的外語是俄語,可是后來全民改學(xué)英語,,她現(xiàn)在連操作計(jì)算機(jī)都是一個(gè)麻煩,。】
接著老頭努力保持快樂起來,,
【呼呼,,你竟然一直叫我教授,我已經(jīng)有好幾十年沒有聽到這樣的稱呼了,。
我現(xiàn)在身在美國,,并在某個(gè)著名的大學(xué)里掃廁所。
我的祖國解體前,,我是一名科學(xué)家,,后來生活所迫被特工帶到了我現(xiàn)在居住的地方,一開始他們承諾給我在大學(xué)里提供工作,,沒想到和我的專業(yè)完全不相關(guān),。】
之后經(jīng)過了一系列的打聽,弗蘭克教會了梁實(shí)誠很多知識,,以及學(xué)習(xí)這些知識的途徑,,并最終還表示有問題隨時(shí)可以找他。
從弗蘭克那梁實(shí)誠還了解到了其他一些事情,,其中有一個(gè)好消息,,這種的編程手法,因?yàn)榭紤]到硬件性能的限制,,所使用的庫文件也比較簡單,,這也就意味著逆向工程反推庫文件的工程量也會低一些。
實(shí)際難度低于梁實(shí)誠的預(yù)期,,為了保密這個(gè)過程他打算一個(gè)人完成,,而且這是一個(gè)非常需要費(fèi)腦筋的過程,也不便于拆分出去,,從一大堆信息中總結(jié)規(guī)律,,十個(gè)人的效率未必會達(dá)到2倍。
接下來弗蘭克給與了重要的幫助,,同時(shí)梁實(shí)誠也在實(shí)踐的過程中,,發(fā)現(xiàn)了之前的200mb文件對于這個(gè)逆向工程而言并不夠用,于是又拍攝提取了多得多的文件,,一度達(dá)到了上百G,。
弗蘭克預(yù)測整個(gè)工程需要幾年的時(shí)間,但他不知道一件事,,梁實(shí)誠并非在地?cái)偵蠐斓降倪@些程序文件。
因?yàn)槿f能編輯器是在拍攝某些固定動作后生成對于的程序文件,,也就是說他之前就是知道這個(gè)程序會產(chǎn)生什么動作的,。
這工作相當(dāng)于破解一門古代語言,不僅要編一本字典還要搞清楚它的語法,,首先獲得大量用這種語言寫成的資料是必要的,,而梁實(shí)誠還能同時(shí)知道這些文字本身要表達(dá)的含義,這大大地加快了進(jìn)程,。
幾個(gè)月的時(shí)間過去后,,他初步完成了這份工作,并得到了一個(gè)在他自己看來能夠滿意運(yùn)行這些程序的庫文件,,有了庫文件,,就可以在它的基礎(chǔ)上得到想要的各種工具,就可以隨便使用這些程序,。
先找來一個(gè)玩具遙控汽車,,然后用單片機(jī)重新改造了它的控制系統(tǒng),并刷上固件,裝上一個(gè)簡易的攝像頭,。
設(shè)定好目的地,,除了是否發(fā)動汽車以外,其他的控制全靠玩具汽車本身,,在家里實(shí)驗(yàn)了一下效果不錯,,可以輕松繞開障礙物,驗(yàn)證工作完成,,接下來這輛汽車就一直處于開動的狀態(tài),,并成為了貓的好玩具。