程序員的語言“艷遇史”(三) ——法國外教prolog

作者: fzwudc  來源: 博客園  發布時間: 2010-04-27 22:14  閱讀: 1928 次  推薦: 0   原文鏈接   [收藏]  

  (***以下小說情節純屬虛構,供朋友們在緊張編程后輕松一下,如有雷同純屬巧合,切勿對號入座***)

  程序員的語言“艷遇史”(一)——班長pascal

  程序員的語言“艷遇史”(二)——計算中心管理員小C

  程序員的語言“艷遇史”(三) ——法國外教prolog

  張開雙腳,輕輕的插入,調整一下,再插入,哇,怎么出血了!

  呵呵,各位沒走錯,歡迎來到博客園電視臺“程序人生”欄目。

  實驗室里,我滿頭大汗,擺弄著面包板和一堆元器件。也不懂上次哪個變態,做完試驗后報復社會,把電阻管腳扭得和麻花似的。要插到面包板上,是不是要把管腳張開。你看,一不小心還把手指捅破了。

  說起來真沒面子,都大三了,還在硬件實驗室混。這要歸功于一個人,美麗的prolog老師。她來自法國馬賽大學,從小熱愛中國文化,所以到中國過學術假期。我校計算機系多年盼想,終于等到了接待訪問學者的機會。這么一個金發碧眼、前凸后翹的美女,往性壓抑嚴重的理工科大學一放,那簡直是“深水炸彈”啊!

  朝霞里,一批批青年學子在“鍛煉身體  建設祖國”的標語下,迎著瑟瑟寒風,奔赴操場。他們的身影,多么的矯健!負責主抓全民健身的體育老師大老劉,飽含著熱淚,都不敢相信自己的眼睛。這是多年未見的好景象,晨煉原來鬼都不來,教育部“211”院校檢查期間,都動用武裝力量押送了。這幾天同學們怎么這么自覺呢?

  定睛一看,哦,為首那個紅衣紅褲的,不就是我們的prolog老師嗎?還是外來的美女會念經啊!體育場上的轟動也就罷了,最近prolog還要給我系的本科生開一門選修課。消息傳出都砸鍋了,大家奔走相告。第一次課那天,由于人太多,臨時更換了三間教室才搞定。

  我擠在教室里,發現一大堆不認識的人。同學,您沒走錯教室吧,本課程是計算機系專業選修課“計算機科學中的邏輯”,怎么你們機械工程系都來湊熱鬧啊!我看這幫家伙聽邏輯是假,過來看“波霸”是真。不過,prolog老師真的身材很好,我們班女生都妒忌得要自殺了。唉,安慰她們的光榮任務就交給麥東了,我們還是認真聽課。

  課沒上幾次,無關人等就少了一大半,留下來的也離抓狂不遠了。原以為是艷星瑪麗蓮·夢露來講成名史,現在發現是古希臘女戰神雅典娜的角斗課。prolog老師的雷人語錄至今仍在我耳邊回響——

  “學習計算機的最好方式,就是親手設計并制造一臺計算機。”

  她對我們軟件專業學生普遍怕臟怕累、輕視數字電路和硬件的不良作風極為不滿。居然把課表改了,讓我們回鍋數字電路課程。她威脅說,沒獨立完成4位數字模型計算機項目的同學,就不用來上邏輯課了,所以才有本文開頭那一場景。

  我小心翼翼的按畫在草紙上的設計圖,把線和元器件連接好,默默祈禱“主啊,賜于我力量吧!”。開電,正常工作,輸入,02,03,01(代表無符號加法指令),走。不錯,幼兒園阿姨表揚我了,乖,是05。我正準備叫prolog來驗收,那曾想旁邊的美女昨晚偶感風寒,“哈揪”了一聲。靠,結果變成ff了!怎么檢查也無法回歸正常,那一刻,我真是欲哭無淚,想死的心都有了。

  若干年后,我在某廠商展示會上發現一個叫FPGA(可編程門陣列)的玩藝,興奮的摔了自己一巴掌,把演示的小姐嚇得發抖,以為我是來當眾劫色的瘋子。這就是當時面包板數字電路試驗做多了落下的病根。還好prolog老師只要求我們做4位CPU,要按現在Intel四核64位的水平,那家伙,想讓我們把面包板鋪滿西校區啊。

  經過這一劫,又死了一批人,選修課的教室終于符合聯合國人類發展組織宜居標準了。但是新的災難又來了。

  “學習一門程序設計語言的最好方式,就是親手實現它。”

  我耳朵里似乎聽到隔壁有牙齒打戰的聲音。天啊,是不是女人每個月那幾天來了,女戰神也不例外。要是她一不爽,讓我們實現個C++,明天就可以到集體宿舍收尸了。

  “至少是語言的核心子集。”

  無數個心臟從嗓子眼掉了下來。隨著后面的課程進展,任務確定了,是邏輯程序設計語言Prolog的子集,以解釋器的方式實現。

  大家最近看過某衛視的男女速配節目沒有(原諒我的情趣低下),熟悉它的流程吧,不錯,你已經領會邏輯程序設計的精神了。

  一個尋找心目中公主的俊男在動感音樂聲中,來到了臺上。這就是我們的求解目標。

  舞臺圍著一圈妙齡女孩,每人面前一盞燈。這就是我們的邏輯數據庫了。對于俊男求解目標來說,這些女生是邏輯或的關系。

  節目主持人加運作機制就是我們的解釋器。

  求解目標可以分解成幾個子目標,每個子目標之間是邏輯與的關系。先是男方基本情況介紹,主持人問,眾女生滿意否?不爽的請滅掉面前的燈。

  看到這里,我振臂高呼,這就是廣度優先搜索啊!

  求解可能完全失敗,如果沒有興趣愛好匹配的,俊男只能灰溜溜下場。

  否則經過多輪對子目標的搜索匹配,以及男生權利環節,求解成功,俊男攜帶那名女生回家。

  這個節目要到了沙特阿拉伯,流程要修改,省掉最后的幾個女生之間的PK,俊男可以多帶幾個女友回去嘛。后面的事,哦哼,我就不說了,別想歪了。照邏輯程序觀點看也合理,可以有多解。

  不過Prolog程序員如果是主持人,節目流程就改大發了。應該是那個俊男坐在一個密室,女生們按順序進去,每個女生相當于樹的一個分支,把所有環節搞定一遍,想嘔吐的可以中途退場。第二天電視臺電話就被打爆了,觀眾大罵,編導腦袋進水了吧!沒辦法,誰讓咱解釋器是深度優先搜索的啊。

  看到這里,有些被命令式語言毒害的同學可能會問,這也是計算?是啊,當年我也是這樣問的。和命令式語言的狀態轉換模式一樣,Prolog的合一和搜索也是計算。你別看上面速配輕飄飄的,上個世紀80年代,在全球頒發了無數個邏輯程序設計領域的計算機科學博士,我們的宿敵日本還投入了數以億計的研發資金。雖然總體而言,小日本的野心失敗了。但是作為一種程序設計范型,邏輯程序設計還是確立了它的地位。

  對習慣命令式語言的程序員來說,最不適應的事情是,基礎的邏輯程序設計沒有循環,只能依靠遞歸來解決處理像樹、列表等數據結構操作的問題。其實如果捅破那層窗戶紙,那簡直是一種解放!我當年看到Prolog程序表示的什么二分搜索、八皇后問題,簡直有把自作聰明的算法老師打成豬頭的沖動。用什么Fortran偽代碼表示算法,程序循環迭代的把大家都弄瘋了。Prolog程序至少可以作為算法的高層次規范來使用,遞歸的美是無以倫比的!

  Prolog解釋器完成后,我無知者無畏,喪心病狂的準備以此為基礎創業。我忽悠了經濟學系的幾個師弟做銷售代理(本系就免了,那幫小子太精了,萬一兄弟的核心技術泄密了怎么辦),許諾俺的公司上市后,股權進行分配。

  一天晌午,我正流著口水,夢想著香車美女。突然公司“市場總監”哭喪著臉找我,說一個客戶投訴俺們的Prolog解釋器產品經常崩潰。我極不耐煩的準備打發他走,忽然聽說客戶是經濟學系十大系花之一,立馬從床上蹦起來,準備回訪客戶。“真誠到永遠”,這就是我們的服務宗旨嘛。

  我靠,誰說女子不如男,系花對Prolog語言掌握得太好了,連導入數據都編了個遞歸子程序。一看她要處理的數據文件,幾十萬行的統計回歸序列記錄!我的媽呀,這能不出事嗎?按這樣使用遞歸,堆棧早溢出了。我和“市場總監”落荒而逃。

  后來才搞清楚,兄弟的解釋器沒有做尾遞歸優化。再說,就算做了優化,培訓經濟學系美女把程序轉換成尾遞歸形式,也會吐血。(當然有算法可以轉換啦,只不過當時我不知道而已。聰明的程序員肯定知道是哪種辦法,先不說,當作小說的懸念吧!)經濟環境實在太差,我含淚宣布公司破產倒閉,遣散全體員工。

  天下沒有不散的宴席,課程到了結束的那一天。女戰神prolog老師站在講臺上,神采奕奕的宣布,本課程不進行期末考試,所有能活到現在的同學,全部通過!激動的淚水,從傷痕累累的角斗士們眼中涌出,我們贏了!我們瘋狂的歡呼雀躍,prolog老師也加進我們的行列。砰,教室的門被撞開,兩個氣喘吁吁的保安目瞪口呆的站在門口。我們哄堂大笑。

  prolog老師回國那天,我躲在教學樓頂上,遙看送別的場面,竟無語凝噎。她上車的時候,回頭望了教學樓一眼。那一刻,我崩潰了!

0
0
 
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()