程序员的语言“艳遇史”(三) ——法国外教prolog
(***以下小说情节纯属虚构,供朋友们在紧张编程后轻松一下,如有雷同纯属巧合,切勿对号入座***)
第三个女孩 法国外教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老师回国那天,我躲在教学楼顶上,遥看送别的场面,竟无语凝噎。她上车的时候,回头望了教学楼一眼。那一刻,我崩溃了!
posted on 2010-04-27 21:19 没一句正经的业余程序员 阅读(5812) 评论(20) 编辑 收藏 举报