1977:从恢复高考到大国工匠 第226节

他环顾四周,对着实验室里其他几个报了名的研究生起哄道:

“都听见了吧?彭老大放话了,多学着点,你们几个可别到时候被一个外专业的本科生三两下问倒了,那可就真把咱们系的脸丢到精仪系去了!”

实验室里顿时响起一阵笑骂声,有人回嘴说“老朱你先管好你自己”,有人低头重新翻开了专业书,也有人默默把键盘拉近,抓紧最后两天再多做点准备。

第177章 确实厉害

一九八〇年四月二十日,下午一点半。

精密机械系三楼小会议室的门虚掩着,里面安安静静,外面的走廊里却已经站了十几个人。

彭远征靠在走廊的墙上,手里捏着一份手写的个人简历,旁边站着朱明成。

这年头大学生毕业国家包分配,简历这东西基本上用不着,大多数人是头一回写。

大多数人履历栏里一行行排下来就不知道该写啥了,彭远征倒是写得满满当当。

毕竟,他有十年无线电厂技术员经历,自学编译原理,独立开发过三套工控系统。

“怎么样,彭老大,状态怎么样,有信心等会露一手吗?”朱明成压低了声音问。

“有点紧张。”彭远征如实回答。

“紧张?”朱明成吃了一惊,“你前天不还气势如虹吗?怎么临阵露怯了?你还能怕面试?”

彭远征摇了摇头,没有接话。

他当然不是怕面试。

三十二岁的人了,什么场面没见过。

他只是觉得今天这件事很重要。

说不出为什么,就是一种直觉——这对他而言,是一个不能错过的机会。

一点四十五分。

走廊里的人越来越多。

有人靠着墙根翻书,有人把简历卷成筒在手心里一下一下地敲。

严正和邱子平来得晚,挤不到前面,干脆在楼梯口席地而坐。

严正嘴里念念有词,像是在背什么。邱子平凑近了听,发现他背的是B样条曲面的德布尔递推算法。

“你至于吗?”邱子平压低了声音,“又不是期末考试。”

“你不懂。”严正没睁眼,“这叫预热。脑子热了,等会儿进去才跟得上他的思路。”

邱子平摇了摇头,他倒是挺轻松的。

毕竟,课题组只要两个人,今天来面试的研究生都有十好几个,他今天更多是抱着涨见识的态度来的。

有机会,谁不想见识见识陆怀民这个传奇本科生呢。

一点五十五分。

会议室的门从里面拉开了。

出来的是精仪系的钱振华副主任。

“同学们好,面试马上开始。按报名顺序来,叫到名字的进来,没叫到的请在走廊等候。”他顿了顿,补充道:

“面试流程很简单,就是课题组组长陆怀民和大家简单聊一聊,时间十分钟左右。感谢各位同学参加面试。”

钱振华说完,退回了会议室。门又虚掩上了,只留了一条寸许宽的缝。

走廊里的气氛一下子绷紧了许多。刚才还低声交谈的声音全停了。

“好了,一号陈望江同学请进。”钱振华侧身让开门口,“其他人请在外等候。”

第一个进去的是一个本科生,瘦高个,戴一副黑框眼镜,彭远征不认识他。

会议室的门关上了。

走廊里重新安静下来,谁也没有心思再闲聊。

等了大概八九分钟,门开了,那个本科生走了出来。

他低下头,走到一边,也不跟人说话,所有人都望着他的表情,试图看出些什么,但他的表情很奇怪,像是一种说不清道不明的茫然,让众人有些捉摸不透。

朱明成凑近了一步:“他这是什么情况?”

彭远征摇了摇头:“不知道。”

紧接着,二号、三号、四号……

出来的人表情一个个都有些微妙,说不上兴奋,也说不上沮丧,看上去有些恍惚。

有个人出来的时候差点被门槛绊了一跤,幸亏旁边的人扶了一把。

“咋样?”有人忍不住拉住其中一个问。

那人想了想,只说了四个字:“有点邪门。”

“邪门?”问的人愣住了,“什么意思?是面试太难了?”

“也不算太难。”被拉住的人斟酌着措辞:

“就是,他问的东西角度很刁钻,都是你觉得自己会、被他问了才发现不太会的那种。但他态度又很认真,你答不上来他会耐心的引导你得出结论。”

“他?谁?”

“你说还能是谁。”

“呃……”

旁边的人面面相觑。

五号进去了,又出来了。

钱振华再次出现在门口,朝走廊里看了一眼,喊了一声:

“六号,计算机系七八级研究生,彭远征。”

彭远征深吸一口气,整了整领口。

朱明成在他肩膀上拍了一把:“彭老大,给咱们计算机系争口气!”

彭远征没说话,捏着笔记本走进了会议室。

会议室不大,一张条形会议桌,陆怀民坐在正面的短边上。

钱振华和沈一鸣则坐在侧边正对门的长边上。

彭远征走近些,忽然有些恍惚。

他第一次看到陆怀民本人。

确实很年轻,只有当面见了,才能直观地感受到,对面这个人比自己小了整整一轮还多。

“彭师兄,请坐。”陆怀民站起身,朝旁边的椅子做了个“请”的手势。

彭远征坐下,把简历递过去。

陆怀民双手接过,低头研究了一会儿,然后抬起头,说:

“彭师兄,你的简历上说,你在清华念的是电机系,后来在无线电厂做了十年技术员,七八年才考回科大读计算机系研究生。这个跨度不小。”

“是不小。”彭远征点点头:

“在无线电厂那十年,我一直在自学计算机。最开始厂里没有科班出身的,所有的控制系统都是我自己摸索着写的。”

陆怀民点点头,问道:

“彭师兄,你的简历上说你编译原理是自学的。正好,我们课题组要做的后处理编译器,本质上就是把一种描述语言翻译成另一种指令语言。我想问你一个问题。”

彭远征坐直了身子。

“假设你现在要写一个最简单的代码生成器,把数学表达式翻译成后缀表达式,也就是逆波兰表示法。比如‘a加b乘c’,要输出‘abc乘加’。你会怎么做?”

这是经典题,不算难。

彭远征几乎是下意识地回答:“用栈。遇到操作数就输出,遇到运算符就和栈顶比优先级。”

“好。”陆怀民点点头,追问了一句,“那如果表达式中出现了括号呢?比如a加b乘以c减d。”

“左括号直接压栈。遇到右括号,就把栈里的运算符依次弹出,直到匹配的左括号。”

彭远征答得很快,这些都是基础的东西,对他来说自然不是什么问题。

陆怀民点点头,继续问:

“彭师兄,你刚才说的是中缀表达式转逆波兰。现在我们换个角度想。如果不用栈,你能不能换一种方式实现同样的功能?”

彭远征愣了一下。

不用栈?

他脑子里飞快地转了一圈。

栈是这个问题标准的、最直观的解。

不用栈,还有什么办法?这他倒确实没想过。

“我……没有想过这个问题。我一直用栈。”彭远征知道他一时半会儿肯定想不到答案,索性如实回答。

“栈没问题。“陆怀民说,“栈确实是最直观、内存开销最小的方法。但如果我们面对的不是简单的数学表达式呢?如果我们要处理的是一种更复杂的加工描述语言呢?“

他顿了顿,继续说道:

“你想想,用栈来写的话,每加一种新的运算符,你就要改一次优先级表;每加一种新的语法结构,你就要在栈的弹出逻辑里加一堆分支判断。到最后,整个程序会变成一团乱麻,没人敢改,也没人能看懂。那时候你怎么办?“

彭远征的眉头拧了起来。他隐约感觉到了陆怀民想说什么,但又抓不住那个点。

毕竟这个时代的代码复杂程度和后世是不可同日而语的。

很多后世的算法在这个时代极具有前瞻性。

“有一种方法,叫递归下降。”陆怀民说着,在面前摊开的笔记本上刷刷写了几行伪代码,把笔记本转过来,推到彭远征面前:

“不用栈,用函数的调用栈来代替数据栈。比如‘a加b乘c’,你可以定义一个解析函数,遇到加号的时候,先把左操作数输出,然后递归处理右操作数,最后再输出加号本身。”

彭远征低头看去。

那几行伪代码写得清清爽爽,递归的调用顺序标注得明明白白。

他一行一行往下看,心里那层窗户纸哗一下就破了。

“这……这不就是编译原理教材里讲的语法树后序遍历吗?怎么我一直没想到用递归来……”

他差点想说“用递归来做表达式转换”,但话到嘴边,他自己先愣住了。

因为他突然意识到,他不是“没想到”。而是他这些年来,从来只在“栈“这一个框架里打转。

因为栈是这个问题公认标准解法,书上这么写,同行这么做,他在无线电厂写的每一个工控程序也都是这么写的。

所以他从来没有想过,这件事可以不这么做。

首节 上一节 226/396下一节 尾节 目录