没一句正经的业余程序员

奔跑在云计算大道上的软件民科

导航

程序员的语言“艳遇史”(二)——计算中心管理员小C

(***以下小说情节纯属虚构,供朋友们在紧张编程后轻松一下,如有雷同纯属巧合,切勿对号入座***)

              第二个女孩   计算中心管理员小C

  操作系统课上,我们无比敬仰的课任老师“胖头余”唾沫横飞:

  “中国计算机事业的发展,需要一大批熟练掌握unix和c的专业人才……”

  “计算机系的第一母语,那就是c语言……”

  “招之即来,来之能战,战之能胜……”

  要不要这么上纲上线啊,知道的懂得是上操作系统课,不知道的还以为是文革红卫兵动员呢。今天真倒霉,来得迟了一些,挤在第一排,被喷了一脸的唾沫星子,抹一把,咦,还带广式月饼味的。

  “胖头余”的可恶之处还在于,不允许我们用pc机dos系统完成大作业,必须到东校区计算中心,用Bull小型机完成,期末要检查我们的系统帐户。他还美其名曰,“学操作系统就要使用原滋原味的unix”。

  不去不知道,一去吓一跳。大伙儿到计算中心都被深深震撼了,果然是“原滋原味”,里面的家什如果配上穿孔纸带什么,就可以直接改名为“计算机历史博物馆”。小型机躲在玻璃罩里,横躺着。我们都怀着瞻仰毛主席遗容的心情,从它旁边经过,到里面的终端室上机。

  为什么我们在上机问题上比一年级嚣张很多呢?因为当时宿舍一帮死党凑份子买了一台286。原来一个个信誓旦旦,这个要追赶求伯君,那个说要分析dos内核。自从小肖搞来一套“大富翁”之后,好嘛,一伙人整天凑一起掷点数。过了一段更猛的料来了!麦东从香港弄来一套日本脱衣麻将……。原来准备研究dos内核的兄弟现在被指派了更重要的任务——破解游戏通关图片。一帮家伙流着哈喇子说,大家初三生理卫生都不及格,就指着您给复习了。

  大家知道,我是比较纯洁的。喂,别扔板砖!好吧,我承认我被诱惑过,但是你们看,我不还是老老实实来计算中心上机了吗。我的课业还算可以,就被宿舍人代会指派完成操作系统大作业的任务了。这帮禽兽!

  但是,我很快就有一个意外发现,那就是小C。

  小C是那种很耐看的女孩,虽说不上特别艳丽,但五官端庄,眼神静静的,像一汪清澈的湖水。平时总带着一丝微微的笑意,让你特别舒服。唉,这么好的女孩,当这个棺材屋子的管理员!学校管理层是怎么想的,看她年龄不大,不会是勤工俭学吧。

  小C的工作用我们的行话来说,属于动态内存分配范畴。我们进机房,要分配一个有号数的令牌,这就算指针了。墙上几十个挂件,每个对应一台终端,这就算空闲内存单元了。

  进来一个,拿走一个令牌,就算是指针被分配内存了。

  出去一个,交回一个令牌,就算是释放空闲资源了。

  如果你上去一看, 靠,“Segment fault”,指定位置上没有终端,属于使用null指针的情况。楼上大叔真是的,终端送修也不通知小C,搞得我还要跑下去换牌子。

  如果你发现位置已经有人,怎么回事?兄弟,这么不长眼,你18号怎么坐到28号位置来了。这属于指针越界访问情况,自己调解。

  一来二去,我和小C就熟悉了。原来她是高考落榜生,在计算中心当个临时工,还在参加自学高考。不过她unix系统用得比我老练多了,这管理员没白当,足可以当我老师。我厚着脸皮,多次以做机房卫生为代价,获得了美女给我下指导棋的机会。用现在时髦的话说,这是两种文明的对话——我代表dos星球,她来自外太空的unix行星。

  不过,要论高中数学什么的,就轮到她崇拜我的份了。妹妹,需要辅导早说嘛。哇,最近胳膊肘老疼,都是这做卫生给闹的。

  现在,我爱死bull小型机了,怎么看怎么觉的比宿舍的pc机人性化。每天上机和小C邮件发来发去的,成为编程之余一大乐事。大作业都完成了,我还往计算中心跑。很快,我的免费机时就over了,自己得贴钱。不过能看到亲爱得小C,我愿意。但是老蹭饭就不对了,弄得吃饭时一些人远远看到我,就假装上厕所掉头就溜。我怒了,以大作业不给参考进行威胁,局面才有所好转。

  期末快到了,马上要交操作系统和编译原理两门大作业。大家脸都绿了,一个个做奋发图强状,连生理卫生这么重要的课都没人研究了。操作系统大作业是用c语言模拟unix文件系统,他们还可以参考一下。不过编译原理大作业他们就无法参考我的了,因为我选的是实现c语言子集,他们都选了实现pascal语言子集。这帮人被c语言怪异的语法吓到了,而且还以为一年级的入门语言肯定更简单。我呢,在小C的精心栽培下茁壮成长,当然选c语言啦。

  他们不知道,虽然两者都源于Algol60体系,但pascal是理论家设计的语言,模型那叫一精美;而c是工程师设计的语言,为了便于实现,不懂砍掉多少东西。

  就以过程调用这块来讲吧。C语言的函数不允许嵌套,属于非块结构语言。任何时刻可以访问的变量,或者属于函数内部局部作用域,或者是全局空间(static也算全局),只有两个层次。这样,运行时间系统管理工作就简单多了,反正全局变量就是分配在内存中的固定位置了,栈帧不断堆叠就是了,下一个帧就代表调用者,可以返回,但是当前函数正常是不能访问调用者的作用域的。

  Pascal语言就麻烦了,过程可以嵌套,内部过程可以访问外部过程定义的变量。那时的编译课本,70%的部分是讲词法和语法分析,运行时间系统一语带过,讲得不清不楚,够他们喝一壶的。有的人使用什么静态链、动态链,有的人用Display表来管理帧指针,反正都深陷泥潭。

  末了,我的两门大作业都得了优。我正筹划着给小C飞鸽传书,一诉衷肠,好好庆祝一番。突然有人通知,“胖头余”要单独召见我。不会是要给什么奖学金吧。我乐呵呵的就跑去了。

  结果我听到了一个无比恐怖的信息,原来小C是“胖头余”的女儿。我们的“奸情”暴露了。什么啊,就牵过手,都传成什么样了!就差没开房了。不过“胖头余”好歹是大学教授,不会动粗,总之都是电视剧语言啦。还年轻,要把精力放在学习上,长痛不如短痛,以后不要再见面,天涯无处无芳草……

  杯具啊,我的初恋就这样被扼杀在摇篮中。

 

   待续: 法国外教prolog

posted on 2010-04-25 23:55  没一句正经的业余程序员  阅读(4871)  评论(19编辑  收藏  举报