来源(匯編語言之禪)

From: http://www.open-asm.net/book/realprogram/realprogram-gb.htm

真正的程序师

本文简介
作者 : 佚名
原文 : 原文网址
翻译 : 沐童
稿别 :2004/07

--------------------------------------------------------------------------------

内文

按图索骥 极短篇

真正的程序师是不写规格的。拿到程序的使用者 , 要知道你已经够幸运了。程序师给你什么 , 你就感恩地拿走吧 !

真正的程序师是不为程序码做注解的。如果程序难写 , 当然就很难读懂。既然如此 , 程序注解还有什么用 ?

真正的程序师是不写应用程序 , 因为他们要从裸机开始写程序。应用程序就留给那些不懂系统程序的菜鸟去做吧 !

真正的程序师是不吃法式培根奶蛋卷的 , 甚至他连法式培根奶蛋卷用什么做的都搞不清楚。他们吃美式速食 , 喝可乐 , 还有够呛的麻辣川菜。

真正的程序师是不画流程图的。流程图毕竟是早期 , 较为原始的程序工具。山顶洞人才在乎流程图 , 并依据流程图的指示 , 一步一步照着做。

真正的程序师是不读操作手册的。相信操作手册所载 , 是新手跟娘儿们的最佳标志。

真正的程序师是不会一次就把程序搞定的。但如果你把他们丢回电脑前面 , 他们会不断地干活 , 设法用补钉程序来弥补之前的不足。而这除错的过程 , 只需要短短的三十个小时。

真正的程序师是不用 FORTRAN 写程序的。 FORTRAN 是那些没胆量 , 穿着白袜的工程师拿来计算管线工程、条状结晶等工程方面。当然 , 他们也热衷将它应用在有限状态分析 , 核能反应模拟等科学议题。

真正的程序师是不用 COBOL 来写程序的。 COBOL 是胆小的应用程序设计师专用的程序语言。

真正的程序师是不会朝九晚五的。如果早上九点钟你能见到一个正牌的程序师 , 那是因为他鏖战整晚迄今未眠。

真正的程序师是不用 BASIC 写程序的。实际上 , 一个超过十二岁的程序师 , 就不再用 BASIC 了。也就是只有小孩才用 BASIC 写程序。

真正的程序师是不写文件的。所谓的程序说明文件是那些不知源码列表、目的码为何物的呆子在看的。

真正的程序师是不用 PASCAL 、 BLISS 或 ADA, 或其他带有粉味儿的电脑程序语言。严谨变数宣告是为了那些记忆力不好的人所设计的。

真正的程序师比使用者还清楚他们真正需要的是什么样的软件。

真正的程序师认为结构化程序设计不过是政客的阴谋。

真正的程序师才不甩进度。进度表是经理用来取悦高层的工具。真正的程序师会让他的经理一直处在悬疑的状态。

真正的程序师在冒险跟耍诈的时候 , 就会想得比较周全。

真正的程序师是不用 PL/I 。 PL/I 是给那些还没断奶的小男生 , 特别适用于在 COBOL 、 FORTRAN 之间难以取舍的程序师。

真正的程序师是不用 APL 语言的。除非整个程序能在一行写完。

真正的程序师是不用 LISP 语言的。只有娘娘腔的程序师 , 小括号的数量多过程序码。

真正的程序师鄙视结构化程序设计。结构化程序设计是给那些没自制力 , 大小便都需要训练的神经质患者用的。他们要先将领带打好 , 并在整齐的办公桌上把铅笔小心地排好。

真正的程序师不喜欢编程时用到分工合作的观念 , 当然 , 如果让他当团队的领头 , 那就例外。

真正的程序师是不需要经理的。但经理是组织的必要之恶 , 他们能搞定四肢发达的人事部门、目光如豆的客服部门 , 还有一群没大脑的资深规划人员。

真正的程序师是不屑用浮点运算的。小数点是给那些还在尿床 , 人事不知的小鬼用的。

真正的程序师是不开破烂的福特野牛。他们喜欢的像是宝马、林肯这类的车 , 或是有加速油门的载货卡车。迅捷的摩托车当然就更能引起他们的注意了。

真正的程序师对进度是没啥信心的。管理者制定进度计划 , 将计划稳定地推上了轨道。受到这种气氛影响的程序师 , 会努力地使自己的工作与进度相符。不过 , 在真正的程序师的眼里 , 根本没有进度这回事儿。

真正的程序师喜欢兼卖爆米花。一般的程序师用微波炉来爆 , 真正的程序师会善用中央处理器运转时所散发的热量。他们甚至可以根据米花爆裂的速度 , 告诉你现在系统运行的是那一个工作。

真正的程序师深知指令间细微差异 , 而且这些差异非得在每一个真正的程序中展现出来。那些不懂写程序的硬件设计师 , 不允许执行指令时 , 顺道为下个指令定址。真正的程序师讨厌这些为了定址方便做出的无聊限制。

真正的程序师不带午餐去上班。如果有贩卖机卖午餐 , 他们就吃 ; 如果没卖 , 他们就不吃。而贩卖机是绝不卖法式培根奶蛋卷的。

--------------------------------------------------------------------------------

真正的程序师是不用 PASCAL

+--------------------------------------------------------+
| 本篇文章发表于信息自动化杂志 1983 年七月号的读者论坛。 |
+--------------------------------------------------------+

一、简介

回到那令人怀念的昔日 , 那是电脑发展的光辉时代。在那个年代 , 你很容易可以分辨谁是大人 , 谁是小孩。有时可简单地分成真男人 , 还有吃蛋卷的人 ; 这个典故是来自一本小书《真男人不吃法式培根奶蛋卷》 ( 参 1) 。
在那个年代 , 真正男人是彻底明白程序设计的人 , 吃蛋卷的人则否。真正的程序师说起话来 , 像是在下指令般简洁 ; 熟悉电脑的读者明白 , 程序师们实际上是大写字母与电脑交谈的。
休息的时候 , 程序师们会说「电脑对我而言 , 是太过复杂了。」、「我跟电脑不搭嘎 , 他们又不是人。」
上述言论正好突显真男人与其他人事物都无关 , 而且他们对不是人的东西一点儿也不怕。

然而 , 一如以往 , 时代终究会变的。我们今天面对的世界 , 女人把电脑当成微波炉 , 小孩把电脑当成电动玩具 , 拿来玩星际大战跟小精灵。任何人 , 只要你有钱 , 你就可以买部个人电脑 , 彻底研究一番。
真正的程序师已经面临绝灭的危机 ; 到了在八十年代 , 甚至是高中生买部垃圾电脑就成了程序师。
我们认为有必要清楚地指出 , 典型的高中生、电脑玩家与真正的程序师 , 他们之间有什么不同。如果这些差异能清晰地列出 , 那么将有助于孩子们矢志成为典范的动机。同时 , 这也有助于真正程序师的雇主 , 不要因为薪水的考量而犯错 : 用电脑玩家来取代真正的程序师成为他的雇员。

二、电脑语言

要从一群程序师中分辨出真正程序师的方式 , 最简单的莫过于问他用那种电脑语言。真正的程序师用福传语言 , 乳臭未乾的程序师用 PASCAL 。尼克劳斯 威尔特 , 正是 PASCAL 的发明者。一次曾被问到「你的名字应该怎么发音 ? 」 , 他是这么回答 : 「实际发音念起来是威尔特 , 当然你可以叫我沃斯 , 这听起来和英文『很值得』的发音是一样的。」
好事者很快地就从这句话 , 找到语病 , 并推论威尔特就是个乳臭未乾的程序师。威尔特的用词是「 call me by value 」 , 这句话在程序语言中恰为参数传递的方式之一。
真正的程序师所采用的参数传递法 , 恰恰不是威尔特的这一种。主要的原因是 IBM370 机型用的是 FORTRAN 编译器 , 而 FORTRAN 是不用威尔特这种方式来传参数的。
真正的程序师不需要那些抽象概念来搞定他的工作 , 他们乐于跟卡片打孔机、编译器 , 还有啤酒镇日为伍。所以请留意 :

1 真正的程序师可以用 FORTRAN 来处理串列。
2 真正的程序师可以用 FORTRAN 来处理字串。
3 真正的程序师可以用 FORTRAN 来处理会计。
4 真正的程序师可以用 FORTRAN 来处理人工智能。

如果你不会写 FORTRAN, 没关系 , 你可以用汇编语言。如果你不会汇编语言 , 那就没有其他语言值得你学了。

三、结构化程序设计

电脑科学界那些学院派的人 , 像发情般地介绍结构化程序设计已有好几年了。他们宣称通过特定的语言结构、特定的技巧 , 可以让程序变得更容易理解。当然他们也不是全盘同意彼此的论调。因此他们拿来说明的范例与图示 , 只是证明在某些情况下才能适用。缺乏清晰且充份的范例 , 其说服力是不够的。
当我从学校毕业 , 我就认为自己是全世界最好的程序师。我可以用五种不同的电脑语言 , 写出无懈可击的圈叉游戏 , 也可以写出上千行 , 且能运作的程序。
果然 ! 那时我进入了真实世界 , 我的第一个工作就是去弄懂一个二十万行的福传程序 , 加快其中因式分解的运算。
任何一位真正的程序师都会这么告诉你 , 世界上所有的结构化程序设计理论在这个问题上 , 根本无法帮你忙 , 你需要的是真正的本事。关于真正程序师与结构化程序设计的一些观察是这样的 :

1 真正的程序师不怕用 GOTO 指令。
2 真正的程序师用了达五页篇幅的回圈指令 , 也不会搞混。
3 真正的程序师喜欢在算术运算时用 IF 这个指令。这样可以使得程序码更有趣。
4 真正的程序师写自我修改的程序码。特别是当这些程序码在封闭回圈内可以节省二十个奈秒的话。
5 因为 FORTRAN 没有结构化指令 , 如 IF 、 REPEAT 、 CASE 等 , 真正的程序师根本不去担心这档事儿。如有必要 , 他们会用其他指令来模拟 , 即使是用了 GOTO 指令。

资料结构的议题 , 最近也引起不少人的注意。抽象的资料型态 , 如结构、指标、串列、字串等 , 肯定会在这个领域大受欢迎。威尔特先生 , 就是上文提到那个乳臭未乾的家伙 , 为了资料结构这个议题 , 他居然真的写出一本专书呢 !( 参 2)

他宣称写程序必须基于资料结构 , 它可以完全取代以前的落伍方式。一如真正的程序师所知 , 唯一有用的资料结构只有阵列。字串、串列、结构其实可视为阵列的子集合 , 或者说它们只是阵列的特例 , 程序师可以用阵列来模拟 , 不但不会弄混 , 也不会让你的程序语言因为这些新增的资料结构搞得太过复杂。

这个空想出来的资料结构最糟糕的 , 莫过于你必须事先宣告才能用 , 就我们已知的真正的程序语言 , 早就将这些变数型态 , 隐含在变数名称的第一个字母。

四、操作系统

真正的程序师用那种操作系统 ?CP/M? 老天可不准用 CP/M 呀 ! 毕竟这是套玩具型的操作系统 , 即使是女人或还在上学的小孩很快就能弄懂它 , 并操作地得心应手。

当然 UNIX 是比较复杂一些。典型的 UNIX 骇客从不去记 PRINT 指令怎么用 , 一旦真的用上瘾了 , 你会赞扬 UNIX 真是个好游戏。大家毋需认为在 UNIX 系统就一定会搞得超严肃。其实你可以通过 UNIX 互传网络 (UUCP) 向全球传送笑话 , 还可以开发冒险游戏 , 甚至是拿来写研究论文。

不 ! 你公司的正港程序师用的是 OS/370 。嗯 ! 这么说吧 ! 好的程序师很能在工作控制语言手册 , 找到因操作时所产生的错误信息。优秀的程序师则直接写工作控制语言 , 连手册都不必看。而真正高竿的程序师将核心程序倾印出来后 , 在超过 6MB 的资料中 , 他也能找到隐藏其中的程序臭虫 , 连十六进制的计算器都不必用。 ( 我真的见过有人真的这么干。 )

操作系统真是电脑系统的骨干 , 很可能你在操作的过程 , 一不小心就把系统弄坏了。这种保持警戒的态度对程序设计人员反倒是种激励。对操作系统而言 , 最好的操作方式就是使用卡片打孔机了。有些人宣称在 OS/370 已有分时系统 , 根据小心求证的结果 , 我知道他们的宣称是错误的。

五、程序设计工具

真正的程序师写程序时用那种工具。理论上 , 真正的程序师是在电脑面前把程序打进去 , 然后下令要它执行的。回到那个只有控制面板的电脑年代 , 你就知道此言不虚了。
典型的真正程序师清楚载入程序启动后放在主存贮器的地址 , 不管何时当他的程序死机时 , 他就进行切换 , 令系统重新载入。 ( 要知道 , 那时的存贮器一关机 , 所有存于存贮器的资料就不见了。今天的存贮器 , 你可以决定要不要记 , 毋需担心电源的问题。 )
上述传说的主角 , 就是克雷超级电脑的发明人 , 西摩 克雷。当初克电先生在康大电脑时 , 就是坐在 CDC7600 的控制面板前 , 通过这种切换手法 , 将操作系统一字一码地做出来的 , 而且电源一直都没关过哦 !
不用怀疑 , 西摩 克雷就是真正的程序师 !

我最崇拜的真程序师之一 , 是德州仪器公司的系统程序师。某天 , 德仪接到一通长途求救电话 , 原来是使用者在执行存贮重要资料的工作时 , 系统突然间当掉了。吉姆被派来处理这通棘手的电话。他请使用者坐在电脑前 , 通过控制面板 , 将系统切换到磁碟输入输出的工作 ; 然后请使用者读出寄存器的数值 , 并依此为据开始修复系统内部的参考表。
这个故事的寓义在于 , 真正的程序师他的工具是打孔机与列表机 ; 紧急的时候 , 再加上控制面板与电话就可以了。

在许多公司里 , 工程师进行文字编辑时 , 已不再通过打孔机了。事实上 , 在我工作的这幢大楼里面 , 连一部打孔机都找不到了。在这种情况下 , 真正的程序师只好写个文字编辑器的软件来用。虽然大部份的系统会提供好几种编辑器 , 不过真正的程序师在乎的是编辑器要能反应出他个人的风格。
大部份的人坚信 , 全世界最好的编辑器是全录帕洛亚托研究中心的亚托与多拉多电脑上所使用的 ( 参 3) 。很不幸的 , 真正的程序师没有一个人 , 曾在他们的系统中装上那个叫闲聊的物件导向语言 , 当然也没有人愿意通过所谓的鼠标器跟电脑沟通。

不可讳言的 , 全录编辑器所采用的概念已变成实际运作的编辑器其中一部份 , 譬如说 EMACS 与 VI 这两个都是。问题在于 , 真正的程序师认为 , 『所见即所得』对编辑器而言 , 是个糟糕透顶的观念 , 只有女人才会这么认为。
真正的程序师想要的编辑器是『所求即所得』 , 其特色是复杂、机密、功能强劲、难以豁免且危险。而用行话『文书编辑修正器』来说 , 可能更精确些。
在文书编辑修正器的命令列可以看到 , 下达指令时有点像传递杂讯 , 让人根本看不懂 ( 参 4) 。有个有意思的小游戏是 , 你可以在命令列试着打上自己的名字 , 并猜它会如何反应。不过 , 大部份的情况下会回覆错误迅息 , 有时则会搞烂你的程序。更糟的话 , 则是在运行的工作模组中 , 产生一个神秘难解的程序臭虫。

基于这个理由 , 真正的程序师不太情愿地用编辑器来写程序。因为他们工作时比较喜欢用秘招或捷径 , 譬如直接在目的码里补上一段二进位 , 或用一个棒透的程序 , 叫超劲 ( 在非 IBM 的机器 , 可能不叫这个名字 ) 。这个程序可以直接修改 IBM 机器核心大多数正在运行的程序 , 而跟原始程序一点儿关系也没有。大部份的情况下 , 原始程序是一点儿用处也没有。
当它出现要改程序的时候 , 没有一个经理会比真程序师清楚要送那些信息才能干活 ; 也没有一个讲究结构化设计的黄毛程序师 , 知道要从那儿开始。这就是本事了 ! 以下的程序设计工具 , 真正的程序师是不用的。

1 FORTRAN 预处理器 , 像是 MORTRAN 或 RATFOR 。这类的程序工具 , 真会让你的能力退化变成生手。去看看那些有关结构化评论吧 !
2 原始程序除错器。真正的程序师不必看原始程序 , 他看系统执行码就可以了。
3 编译器可对阵列边界值的检查。这是在扼杀创造力 , 破坏指令有趣的用法 , 甚至不允许改动操作系统的程序码。
4 原始程序维护系统。真正的程序师会把他的程序藏在卡片档里 , 这表示程序原作者不会让他重要心血处在没有保护状态下。 ( 参 5)

六、工作的真程序师

真正的程序师会在哪里干活 ? 那些程序值得人们投入心力去做 ? 你可以确定的是 , 不会有那个想死的真程序师用 COBOL 去写应收帐款 , 或为大众杂志写一个客户名册排序程序。真正的程序师想做的是惊天动地的事。
1 真正的程序师会在美国的洛斯阿拉莫斯国家实验室工作 , 他们会写模拟原子弹的程序 , 然后用克雷超级电脑去跑。
2 真正的程序师会在美国国家安全机构工作 , 针对俄罗斯传送的信息写解码程序。
3 成千上万的真程序师会将心力投注在探月载人工程 , 誓言要在此领域领先俄罗斯人。
4 真正的程序师会在波音公司工作 , 设计一套操作系统给巡弋导弹用。 ( 这不是很具创造性吗 ?)

最令人佩服的一些真程序师则留在加州的喷射推进实验室工作。他们对于先锋号、航海家宇宙飞船的操作系统都了然于心。地面控制室的大型 FORTRAN 程序 , 及宇宙飞船内的小型汇编语言程序 , 他们以令人惊异的手法将之结合 , 成为航太史上极佳的即兴创作。
宇宙飞船经历漫长的六年旅程才抵达土星 , 马上又得面对宽约十公里的由诸多陨石组成的土星外环。它得自行修复或避掉故障的感应器、无线电波收发器、电池等。有个未经证实的说法 , 一名真程序师 , 把一个类型比对程序塞进航海家宇宙飞船的存贮器里 , 它只剩几百个字节的空间 , 而这个程序能够搜寻、定位 , 且将木星的月亮拍成照片传回地球。

现有的伽利略太空计划 , 将应用在由火星到木星的重力辅助轨道。这个轨道大概会通过火星表面约八十几公里 , 没有人相信 PASCAL( 或说没人相信 PASCAL 程序师 ) 能应用在航太科技而其误差在可接受的范围之内。

如你所知 , 全球大部份的真程序师多为美国政府工作 , 主要是美国国防部。这也应该是如此。然而近来 , 乌云却笼罩在真程序师的头上。似乎是一些头脑不清楚的家伙到美国国防部任职后 , 决定日后国防部所有的程序全部都要用一种电脑语言来写 , 那个语言叫做 ADA 。这个语言似乎注定要变成一个完全违反真程序师的谆谆告诫的语言。它有结构 , 它有资料型态 , 它要事先宣告变数 , 它还有分号。简单来说 , 这套语言根本是要废掉真程序的创造力。
幸运的是 , 这套语言虽被国防部选中 , 但似乎他们的兴趣在于让它变成程序设计的特色 , 而不是真正地去推行。它真是难以想像的复杂 , 其中还包含了把操作系统搞乱的方法 , 及重排存贮器。连埃德斯加 迪克斯特拉都不喜欢它。 ( 参 6)( 迪克斯特拉 , 我想你们知道这个人 ; 他是《 GOTO 指令是有害》一文的作者 , 此文是程序设计方法论的划时代作品 , 曾受到 PASCAL 程序师的赞扬 , 还有那些乳臭未乾的小子们的欢迎。同时他也是 1972 年涂林奖得主。 ) 除此之外 , 真程序师还得断然地在其他语言中 , 慧眼独具地挑出 FORTRAN 来写程序。

真正的程序师会在原则上予以妥协 , 甚至是给予琐碎工作、糟糕生活都无妨 , 如果有足够薪水的话。譬如我就知道有几位真程序师在雅达利公司 (ATARI) 开发电玩游戏。 ( 不过在那儿他们是不打电玩的 ; 真程序师对电脑脉动一清二楚 , 打电玩是不具挑战性的。 )
在卢卡斯电影公司 (LucasFilm) 工作的则是真程序师。 ( 要拒绝来自五千万星际大战影迷的钱 , 神经真是有些不正常。 ) 在电脑绘图领域工作的真程序师 , 其比例较诸其他领域 , 真的有些偏低。主要的原因是真程序师 , 在电脑绘图这个领域 , 还没找到真正的大用。而另一个原因是 , 电脑绘图所有的功能得用 FORTRAN 来实现 , 以致多数人进行绘图设计时 , 要避开写 COBOL 程序。

七、玩耍的真程序师

一般来说 , 真程序师玩耍跟工作是一样的 , 因为都和电脑在一起。他经常令他的雇主大吃一惊 , 总觉得好像付钱请他来玩似的。 ( 虽然他已非常小心 , 尽量不要表现出这种想法 , 甚至不敢出声。 )
有时 , 真程序师还是会逸出所谓的办公室常规 , 如溜出去透透气喝个啤酒什么的。有些技巧提供您在电脑室中 , 辨认出真正的程序师。
1 聚会时 , 真程序师总是坐在角落 , 大谈操作系统的机密 , 及取得的方式。
2 球赛时 , 真程序师总是拿球场上的举动 , 拿来跟他的十一 ~ 十四张复写模拟列印程序相比。
3 在海滩 , 真程序师会在沙上画流程图。
4 在葬礼 , 真程序师就是那个会说 : 「可怜的乔治 , 在心脏病发前 , 他几乎要完成那个排序的工作。」
5 在超市 , 真程序师会自己拿罐头去过镭射结帐扫瞄器 , 因为他从来就不相信操作员能一次就做对。

八、真程序师的环境

那种环境是真程序师最佳的工作场所 ? 对于真程序师的经理 , 这是个重要的问题。想花大钱留住团队 , 最好的方式是把他丢到一个他能把工作做好的地方。

典型的真程序师是住在电脑终端机前 , 在终端机附近还有 :
1 他历年写过的程序列表 , 依年代为序 , 堆满他的办公室每个平坦的地方。
2 六、七个杯子有着残余咖啡 , 有时还有烟蒂浮在咖啡上。 ( 在这里是找不到烟灰缸的。 ) 在某些情况下 , 杯子里还会有乾瘪的橘子。
3 除非他是非常棒的 , 否则应当还有操作系统工作控制语言的手册复本 , 及操作原理的书 , 翻到那些比较有趣的页次。
4 碟带堆放像堵墙 , 并挂着以行列表机印出的史努比 1969 年的年历。
5 一些散在地上的纸屑 , 多半是巧克力、消化饼的包装。这些在工厂先行制作的非新鲜食物 , 跟贩卖机卖的东西也差不太多。反正不会变得更糟 , 还省去在贩卖机前等的时间。
6 特殊场合下 , 书桌左上方的抽屉 , 会藏有一些自以为是的东西。
7 在自以为是的东西下 , 压着一支流程图尺 , 这是前一个工作人员所留下的。 ( 真程序师只写程序不写文件 , 然后把这些不用的东西留给维护人员。 )

真程序师在沈重压力下 , 还是能够维持每周三十、四十 , 甚至是五十个小时的工作量。实际来说 , 他比较喜欢这种压缩工时的方式。
死机器反应较慢时并不会困扰他 , 他反而会利用时间去打盹 , 譬如在两支程序编译的空档。如对真程序师没有进度压力的话 , 那他会在前九周 , 搞一些小、有趣且具挑战性的事 , 在最后一个礼拜 , 凭藉着马拉松式的耐力 , 把工作搞定。对他的经理来说 , 这不仅有如跌入地狱般 , 无法准时完成专案而感到绝望 , 还会让真程序师有借口不写文件。一般说来 :
1 没有真程序师会朝九晚五的。 ( 除非他们熬夜。 )
2 真程序师不打领带。
3 真程序师不穿高跟鞋。
4 真程序师抵达工作的时间是午餐时分。 ( 参 7)
5 真程序师可能知道 , 或不记得老婆的名字。但对 ASCII( 或 EBCDIC) 码表可是一清二楚。
6 真程序师不会煮东西吃 , 超市在清晨三点也不会营业。真程序师靠火星巧克力棒及咖啡过活。

九、未来

什么的未来 ? 这是关于真程序师传承的重要性 ; 最近这一代的电脑程序师已不如他们的前辈那般对未来具有见地。他们有大部份的人没见过电脑有控制面板 , 离开学校后的他们如果不用计算器 , 他们就不会换算十六进位。大学毕业的他们学的是纯软件 , 实在是软得可以。他们远离现实程控环境 , 除错要有原始码 , 编辑器要能计算括号 , 还有亲和介面的操作系统。
最糟的就是这样了 , 有些被称作电脑科学家的管理者竟能同意他麾下的程序师 , 不必再学 FORTRAN 。难道我们命中注定要变成这个行业的 UNIX 骇客及 PASCAL 程序师 ?

就我个人的经验 , 我可以说各地的真程序师的未来是灿烂的。并不是说 OS/370 或 FORTRAN 显露出绝灭的信号 , 不管 PASCAL 的程序师是如何的努力。即便有这么多的诀窍 , 把结构化程序设计加到 FORTRAN 已是失败了。

当然 , 有些电脑商已有了 FORTRAN 77 的编译器。而 FORTRAN 77 可以把程序码转回 FORTRAN 66 的格式 , 编译 DO 回圈指令 , 就像老天原本要它那么做一样。

UNIX 系统对真程序师来说并不如原本传说那么坏。 UNIX 的最新版本 , 对真程序师来说 , 还是一套颇具发展潜力的操作系统。虽然使用者介面不太相容 , 虚拟存贮器、电传驱动程序也搞得有些复杂。如果你忽略结构化这个事实 , 即使是 C 语言也能获得真程序师不错的评价。毕竟它没有做些为人诟病的检查 , 变数名称可达七或十个字母。还有一些好的的资料型态如指标 , 这就像 FORTRAN 或汇编语言一样。 ( 不再提及可自行定义的那一部份。 )

所以 , 未来看起来也并不怎么坏。这也是为什么在过去的数年间 , 受欢迎的出版刊物对新一代的电脑生手与骇客有着诸多评论 ( 参 8 、参 9), 他们告别斯坦福、麻省理工等校 , 前往真实的世界。证据显示 , 真程序师的精神存在这些年青的男女工程师之中。
漫漫长路 , 如模糊不清的目标 , 奇特的程序臭虫 , 不切实际的进度 , 使得真程序师要一跃而入地解决这些问题 , 并保留这些文件供后人参考 , 如 FORTRAN 般长存。

致谢

我想感谢的是 Jan E. 、 Dave S. 、 Rich G. 、 Rich E., 因为他们的协助才能将真程序师的特徵描绘地如此清晰。而 Kathy E. 首起此意 , 并将这些资料公诸于世 ; 而我 ,Dave N., 不过是负责将字打入电脑 , 参与这值得的专案。

参考资料
参 1:Feirstein, B.: "Real Men Don't Eat Quiche", New York,Pocket Books, 1982.
参 2:Wirth, N.: "Algorithms + Data Structures = Programs", Prentice-Hall, 1976.
参 3:Ilson, Awe.: "Recent Research in Text Processing", IEEE Trans. Prof. Commun., Vol PC-23, No. 4, Dec 4th 1980.
参 4:Finseth, C.: "Theory and Practice of Text Editors - or - a Cookbook for An EMACS", B.S. thesis, MIT/LCS/TM-165, Massachusetts Institute of Technology, May 1980.
参 5:Weinberg, G.: "The Psychology of Computer Programming", New York, Von Nostrand Reinhold, 1971, p.110.
参 6:Dijkstra, E.: "On the GREEN Language submitted to the DoD", Sigplan notices, Vol 3 No. 10, Oct 1978.
参 7:sdcarl|lin, "Real Programmers", UUcp-net, Thurs Oct 21 16:55:16 1982.
参 8:Rose, Frank.: "Joy of Hacking", Science 82, Vol 3 No.9, Nov 82, pp 58-66.
参 9:"The Hacker Papers", Psychology Today, August 1980.

Link: http://www.asm32.net/article_details.aspx?id=2769