程序设计之道

程序设计之道

◎目录

卷首插画
自序
卷一 静寂虚无
卷二 古之大师
卷三 构思与设计
卷四 编撰程式
卷五 维护
卷六 管理
卷七 公司智慧
卷八 硬软体
卷九 结语
关于作者
关于本书


卷首插画
  卷首的古代插画代表电脑程式界九个不朽。传统莲枝代表专案管理,仙鹤则是组合语
言。豺狼如同走狗像极了工作控制语言,磁片表示是档案管理系统。飘浮在空中的沉思老
者,是广大无垠的暂存器。在老者上方飞舞的蝙蝠,表示物质世界对人诱惑不定。老者下
方是混沌世界的老龙,由祂携来神秘难言的道。

| 回目录 |

| 回目录 |

  电脑考古学是个崭新的领域。即使像我这样的业余者,偶然都有许多饶有兴味的新发 现。几年前,我在一堆散乱的老式打孔卡片中找东西,发现一组彷佛以点阵图形出现的密 码。这些图形如同三明治般,夹在成千上万张以RPG程式写好的卡片里。如果不是这些手 写的注解,我根本不会再看它们一眼。注解上说:「处理完毕就销毁。」   这句话激发我的好奇心,决定一探这些神秘卡片背后隐藏的内涵。   经过加密、解码的繁复过程,这差不多耗去几百个CPU的运算小时。依据第一张图 形的大致外貌,解密结果是本书卷一的开始,然而这只是整个解密计画中最简单的部份。 手稿是用陌生的文字所写,这也增加我转换时的困难。持续努力着,对我而言,整个轮廓 也愈来愈清楚。虽然我面对的并不是一些简单易懂的图形(我是这么深信不移),若非如 此,这传说中的「程序设计之道」是不会现身的。   实在很难用笔墨来形容,当我发现这个几近神迹的真相。我彷佛真的听到「程序设计 之道」的声音。我和我认识的人从来没看过这份手稿,也不知道这份手稿是谁的。但我曾 多次听闻,「程序设计之道」深深、隐秘地影响电脑的发展。与传说相符的是,「程序设 计之道」对程式设计这门艺术有机的影响。不过,这个影响也遭致学院派、企业团体激烈 的反抗,他们把「程序设计之道」的影响视为重建秩序的重大威胁。「程序设计之道」的 传播方式只好改弦易辙,对程式师加以严格筛选方私下传授。   最后,这个人称『整合派』的程式设计哲学,终成为有权有势的一方,不再需要透过 暗中传授。但这种形同宗教(其时间点与大时期相同)也导致这个派别的毁灭, 尤其是那些只在派系成员中秘密传授的教本。   传说中的事情是无法验证的,因此对这些带有色彩的流言应该打些折扣不能尽信。这 些传说的领域,有兴趣的人类考古学者应该多过于电脑考古学者。然而现在这份手稿已完 整地呈现在世人面前,它可以用来区分上述传言究竟是事实,还是传言。   这便是「程序设计之道」的由来,虽然它被时光迷雾掩盖踪迹。但从内部种种迹象来 推测,我们知道确切的年代应该在积体电路发明之后。但更明确的时间点,可能还有待专 家学者就现在所找到的经典去考证。   「程序设计之道」的作者身份至今仍是个谜,一般都认为是属于嬉皮第六世代的庸友 希(音译),其他学者(我也不知其名)庸友希只是将这些故事编辑成册,作者的身份还 是无法确定。但大家都同意,书的内容极为深奥难明。而作者身份的厘清,恐怕只是最普 通的争议。   或许在「程序设计之道」出版后,这些争论将能厘清。若真是如此,那我对这份手稿 所做的努力总算没有白费。但我必须承认,要送出这本经典的英译时,我确实有点犹豫。 虽然已做了完整的定义与解释,我总担心译文会无法诠释原着深厚的内涵,而失去令人深 思的韵味。基于我个人的信仰,这类的问题偶而会出现在我脑海里。在此别郑重申明我对 原着表达手法的尊重,但我并不是一个基本教义派,坚持一定要按照内文逐字翻译。特别 是,我发现原着在行文之间对管理阶层及组织无情的指责,后人如我者或能理解,那是当 时的政治风气使然。   不管未来的纷纷扰扰,我现在将这份「程序设计之道」的拙劣译文呈现在读者面前。 如果有人透过这份自以为是的译作,能瞭解到本存之道的意旨为何,我想我会感到无比快 意的。 杰弗瑞.詹姆士 1986年于洛杉矶 卷一 静寂虚无 程式名家如是说:「学会在程式的迷魂阵中找到错误的程式码,就是你下山行道的时 候了。」 卷一之一 静寂虚无中有奥秘,不静不动,乃程式之源,无以名之,故曰:程序设计之道。如道 至大,则作业系统至大;如作业系统至大,编译程式亦然;如编译程式至大,应用程式亦 如此。是以用者大悦,世之和谐存焉。 程序设计之道无远弗届,御晨风而返。 卷一之二 道生机器码,机器码生组译器,组译器生编译器,则万余电脑语言相偕而生。 电脑语言皆有其用途,然不外乎表达软体之阴阳两仪。道在其中,各得其所; 若能避免,少用COBOL。 卷一之三 太初有道,道生时空,时空即为程序设计之阴阳两仪。 未能悟道之编程者,将耗尽程式的时空资料。悟道之编程者恒有充分时空达致要求。 除此之外,还有什么? 卷一之四 上智程式师闻道,勤而行之;中智程式师闻道,若存若亡;下智程式师闻道,大笑之 。不笑不足以为道。   大音希声,进道若退,大器晚成。 纵使完美的程式还是有虫。 道藏于人可理解范围之外。

| 回目录 |

卷二 古之大师 程式名家如是说:「三日不写程式则人生无甚趣味。」 卷二之一 古之程式师神秘而渊博,其思维难以度量,惟勉可述其表。 世故,如狐狸涉水; 机警,似沙场老将; 亲切,像女侍待客; 简明,如未雕之木; 晦涩,若暗洞深潭。 谁能指出心灵之秘? 答案仅存道中。 卷二之二 大师涂林曾经作梦变成一部机器,醒后大叫:「不知是我作梦成了机器,还是一部 机器作梦变成了我!」 译注:涂林(Turing)为计算机理论创始者,1912年生于伦敦。全名是艾伦.麦昔森    .涂林(Alan Mathison Turing),他被誉为「计算机科学之父」。当电子计算机    尚未问世,他已将计算机的原理与能力极限,界定清楚。他所提出的计算机理论    ,深深地影响计算机科学的发展。为了纪念他对计算机科学的贡献,以其理论所    发展出来的计算机,则称为涂林机(Turing Machine)。 卷二之三 某大电脑公司的程式师结束软体会议后,向他的经理报告:「你知道其他电脑公司有 那些程式师吗?这帮家伙行为乖张,不重外表,边幅不修,衣服既皱且旧,他们破坏了气 氛,而且在我简报时无礼地制造噪音。」 经理回答说:「我不该派你参加这个会议的。这些程式师超然物外,认为生命是荒诞 不经的。往来无世俗之限,不具烦忧,只为程式而活。为什么他们要受社会积习的侵扰? 他们全然活在道中。 卷二之四 一个初学者向大师请教:「有个程式师编程时不打草稿,也不测试程式,遑论留下文 件供人参考。但所有了解他的人都认为他是世间最好的程式师,这是为什么?」 大师说:「这个程式师已了然悟道。他超越设计之需,所以系统毁损不生气,且无条 件地接受这个世界。超越文件之需,是因不计较是否有人要看他的程式。超越测试之需, 是因他的每个程式皆已圆满无缺、清澈明亮、精致、目的自明。真的,他已进入道中。」

| 回目录 |

卷三 构思与设计 程式名家如是说:「到测试程式阶段,才发现要修改原设计方案,那就太迟了。」 卷三之一 曾有某人在参观电脑商展时,每日进门前都向警卫说:「先告诉你,我是个贼,你得 小心我的妙手空空,这次展览绝对是在劫难逃。」 因为展览会场有价值上百万元的仪器,这段话令警卫非常紧张,只得紧盯着他。不过 这个人仅是轻哼小曲,一个摊位又一个摊位地闲逛。 当他要离开会场的时候,警卫将他带到一旁搜身,却一无所获。 第二天这个人又出现了,以略带责备的口吻对警卫说:「昨天收获不错,相信今天会 更好。你得小心点。」警卫再度提高警觉,更加注意他,但仍未发现他到底偷了什么。 展览结束的最后一天,警卫再难抑制好奇,问他:「贼大师,近日因您行径搞得我寝 食难安,是否可以告诉我,您到底偷走什么?」 这个人笑着说:「我偷的是概念。」 卷三之二 从前有位程式名家,专写非结构化程式。一个生手试着模仿他,也开始写非结构化程 式。当生手要求这位名家评量他的程式,名家却批评他写非结构化程式的错误。 「对大师适用的未必适用于生手,在超越结构之前,你必须悟道。」 卷三之三   曾有一位吴姓官长问他手下的一位程式师,「设计会计系统与作业系统,那种比较简 单?」 程式师说:「作业系统。」 「什么!」长官发出难以置信的惊呼! 「显然,会计系统不如作业系统复杂。」长官接续着说。 「并非如此!」程式师回答。 「设计会计系统时,程式师是各拥不同想法的使用者其间的桥梁。其需求不外是,应 用系统如何操作才符合习惯?报表展现的型式?合法合税与否… 「反过头来,作业系统不受外界表象所限。设计作业系统,程式师只要寻求单纯、简 单的介面,令人与机器达致和谐即可。这就是作业系统容易设计的理由。」 长官微笑点头。「说来也对,但那个容易除错呢?」 程式师静默不语。 卷三之四 经理拿着新应用系统的需求规格去找一位程式大师。「如果我给你五位程式师,你需 要多久才能完成这个系统?」 大师很快回答:「一年。」 「但这个系统很快就要上线。如果我再派十个程式师给你,你大概多久能完成?」经 理又说。 大师皱眉说:「在这样的情形下,需时两年。」 「那我给你一百个程式师呢?」 大师耸耸肩:「那可能永远结不了案!」

| 回目录 |

卷四 编撰程式 程式名家如是说:「好程式本身就是天堂,烂程式自身就是地狱。」 卷四之一 程式要轻巧灵活。副程式之间的联结如同珍珠相串。原始设计的精神与意念应遍及程 式,增一条指令太多,减一条指令太少。没有不必要的回圈,也没有不用的变数。既不缺 乏结构,也不受结构所限而僵化。 程式应依据「最少惊愕定律」而为。这是什么定律?简单得要命!当使用者对操作系 统之后,出现惊讶的反应愈少愈好。   不论多复杂的程式,只要用同一规律运作,它就是一个整体。所以,可以直接透过内 部逻辑来运作,而不是外在表象。 如果程式不能满足这些要求,便容易失序而产生混淆,进而令整个程式的结构崩溃。 唯一的补救之道就是:重写! 卷四之二   生手问大师:「我有个程式,它执行的情况时好时坏;我一向依据程式设计规则写程 式,却常陷入困扰之中,这是什么道理?」   大师回答:「你会混淆是因为你未能悟道。只有呆子才会期望人类有合理行为。你怎 能指望人类生产的机器?电脑只模拟了决定论(determinism),唯有道才是尽善尽美。」 程式设计规则只是暂时,只有道才是永恒。所以你在开窍之前必须对道日思夜虑。」 「但我如何才能知道已经开窍了呢?」生手问。 大师答:「从你的程式已能正确执行那天开始。」 卷四之三 大师对弟子们解释道的本体:「所有软体都包含了道,不论软体规模是大或小。」 「那种手持计算器也有道吗?」弟子问。 「有!」。 「电动游戏机里也有道?」 「当然!」大师说。 「那个人电脑的DOS作业系统也包含道啰?」 大师轻咳,挪动位置后,说:「下课!」 卷四之四 王子的程式师正在写程式,指尖在键盘之间飞舞,程式编译无误顺畅,执行后像微风 轻拂。   「了不起!」,王子惊叹。「你的技巧已是无懈可击。」   「技巧?」程式师从终端机上转过头说:「我依循的是道,道是超越任何技巧!我开 始学写程式的时候,眼前所见是混成一堆的程式码。三年后,就不再见到这大片程式。我 学会使用副程式后,眼前则是一片空灵,什么都没有了,所有东西都进入空无静寂;我的 感官也都进入迟滞。」   「我的精神可依直觉而不必依循计划行事。简而言之,是程式自行如行云流水,止于 当止之处。当然,有时也有一些困难,我看着它来,我逐渐放缓自己,静视着。当我开始 改动程式,困难就会烟消云散。我再次编译我的程式,静坐并令工作的愉悦充满生命。我 闭上双眼,然后关机离去。」 王子说:「我所有程式师都这么聪明睿智吗?」

| 回目录 |

卷五 维护 程式名家如是说:「虽然程式只有三列,但总有一天需要维护。」 卷五之一 常用之门毋需上油;急流不易淤塞。 声音与思想无法在真空中传播。 软体如果不用就会生銹。 这是至大的奥秘。 卷五之二   经理问程式师还要多久手上程式才能完工。「明天就做完。」程式师很快地回答。   经理说:「我觉得你不太踏实,你说真话,究竟还有多久?」   程式员想一会儿:「我希望在程式里多加一些功能,起码要再两个星期。」程式员终 于开口。   「时间还是长了。」经理坚持说:「你能不能简单地告诉我,何时才能完成?这样才 能令我满意」。 程式师也同意这点。   几年后经理退休了,在欢送的午餐会上发现那位程式师在终端机前睡着了,因为他写 程式写了整夜。 卷五之三 一位程式生手被分派去写一个单纯的财务软体。   这名生手狂热地做了许多天,但当大师看他的成品时,却发现这个系统只包含一个萤 幕编辑程式、一般性的绘图模组、一个人工操作介面,但却没有与财务系统有关的程式。   大师问他为何如此?这个生手却变得很激动:「不要没有耐心!我最后会把财务的部 份加上去。」 卷五之四 一个好农夫会忽视他种的庄稼吗? 一个好老师会忽略他最差的学生吗? 一个好父亲会允许他的孩子挨饿吗? 那么,一个好的程式师会拒绝维护自已的程式吗?

| 回目录 |

卷六 管理 程式名家如是说:「程式师多,经理少,生产力就会增加。」 卷六之一 专案经理若有开不完的会,那程式师就会写电玩;会计部门若只想到短期利润,那研 发经费差不多就会被删;资深科学家只谈蓝天,那么天空只会有浮云掠过。 不过,这并非程序设计之道。 当经理许下承诺,程式师就不再理会电玩;当会计部门有长远规划,自然就会回复和 谐与秩序;当资深科学家专注手中问题,问题很快就能解决。 这才是是程序设计之道。 卷六之二 为什么程式师没生产力?因为他们都把时间花在开会。 为什么程式师难以驾御?因为管理层对他们干预太多。 为什么程式师一个个接连辞职?因为他们的热情已耗尽。 在差劲管理者底下工作,程式师不再觉得他的工作有价值。 卷六之三 某个经理快被炒鱿鱼,但他底下的程式师写了一个叫好又叫座的程式;因为这个缘故 ,经理保住了饭碗。 经理打算给这位程式员奖励,但程式师拒绝接受。他说:「因为这是个有趣的概念, 我才会写这个程式,并不是我期望有所回报。」 经理听了之后回答说:「这个程式师虽然职位不高,但却充分了解做为一个职员的责 任,我打算把他升成高级管理顾问!」 当这个任命转达给这位程式师时,他再度拒绝,「我之存在是因为可以写程式,如果 我升任管理职,除了浪费每一个人的时间,我也将一事无成。好了,我可走了吧?我还得 继续工作呢!」 卷六之四 经理告诉程式师:「以下是工作时间的规定,早上九点钟上班,下午五点钟下班」。 所有程式员都很生气,有几个马上递出辞呈。 于是经理说:「好吧!只要能够如期完工,工作时间由你们自己定。」 程式师满意了,每天中午开始工作,直到第二天清晨。

| 回目录 |

卷七 公司智慧 程式名家如是说:「你可以对主管示范程式,但却无法让他通晓电脑。」 卷七之一 生手问大师:「东方有一种叫”公司总部”的伟大树状结构,上面标满副总裁、会计 长的图案。它发出大量的备忘录,每张上面都标明文件流程,但却没人知道实质意义。每 年都有新的名字加入新的分枝上,但似乎全都徒劳无功。为什么这不自然的组织还能继续 存在?」 大师说:「你已体认这个庞大结构,而被它不合理的目的困扰。你难道不能从它无止 的循环中得乐趣吗?不能够欣赏藏在枝叶底,毫无困难的程式设计吗?为什么要被它的无 用所困扰呢?」 卷七之二 东海有鱼曰鲲,鲲能变成双翼遮天的大鹏。当大鹏飞越陆地时,带来由公司总部发出 的讯息。讯息正好掉落在一群程式员中央,如同海鸥在沙滩上轻点记号。尔后大鹏振翅乘 风而归。 生手瞪眼望着大鹏,因为他们对此不明瞭;一般程式员则忧虑大鹏来临,因为他们害 怕它带来的讯息;只有大师继续坐在终端机前工作,因为他不知大鹏的来去。 卷七之三 象牙塔里的魔术师带着他的新发明去见大师,他推了个大黑盒子走进大师办公室,大 师正静静地等着。 「这是一套整合性、分散式具一般用途的工作站。还有一套专属的作业系统,第六代 语言,多项最先进的使用人界面,再加上人体工学的设计;这花了数百人力才完成的,很 了不起吧?」魔术师这么说。 大师抬了下眼珠子说:「确实了不起。」 魔术师继续说:「公司总部已下令每个人都要用这部新机器,做为发展新软体的平台 ,您同意这个看法吗?」 「当然,我马上会把它放到资讯中心去。」于是魔术师高兴地回到象牙塔去。 几天后,一个生手在大师的办公室里团团转,说:「我找不到新程式的报表,您知道 会在那儿吗?」 「当然」,大师答道,「报表就堆在资讯中心的台子上!」 卷七之四 大师可以无忧地在程式间转换。管理上的改变伤不到他;纵使专案取消,也不会被解 雇。为什么?因为他为道所厚覆。

| 回目录 |

卷八 硬软体 程式名家如是说:「没有风,草儿一动也不动;没有软体,硬体有什么用!」 卷八之一 生手问大师:「甲电脑公司规模极大,对它的竞争者而言,甲公司高高在上,像是巨 人与侏儒的对比;甲公司任一部门都能单独成为一个企业。为什么会这样?」 大师回答:「为什么有这么笨的问题?甲公司就是因为它的确大所以规模才会这么大 。如果它只会生产硬体,没有人会买它;如果只卖软体,也没人会用它;如果只维护系统 ,人们只会把它当成佣人;因为它将所有工作合在一起,人们就视它如神了。它无需竞争 ,因为胜利根本不费吹灰之力。」 卷八之二 一天,大师经过生手旁,发现生手迷上一台掌上型电玩。「对不起,我可以看看它吗 ?」大师说。 生手把机器交给大师。大师说:「我看这部机器有三个层次:初级、中级、高级可玩 。而真正的玩法应该是,让机器赢不了人类,而人类也胜不了机器。」 「天啊!大师!要如何才能找到这个奇妙玩法的开关?」生手恳求地说。 大师把机器朝地一摔,还用脚将机器踩烂。 突地,生手开窍了。 卷八之三 从前有位微电脑的程式员,一位服务于大型电脑的程式员来拜访他。微电脑的程式员 说:「你看,在这儿多好!我自已有作业系统与档案储存设备,毋需与人共用电脑资源; 软体可自行开发且易改、易用。为什么你不辞职来加入我们?」 大型电脑的程式员对他的朋友描述大型电脑系统:「大型电脑像古之圣哲般沉思,座 落于资讯中心中央。磁盘机一个接一个如同机器装置之于海洋。软体像钻石般地有多种面 貌,像丛林般茂密。各个程式如急流般地涌入系统,这就是我在那儿工作的乐趣。」听了 这段话之后,微电脑程式员静默无声。自此两人结为好友,终生不渝。 卷八之四 硬体与软体走在路上,软体对硬体说:「你是阴而我是阳,若我们齐心协力,一定能 扬名立万,大赚其钱。」 之后,他们自然结合在一起,意欲征服世界。 不久他们在路上碰到韧体,韧体一身破烂衣裳,拄着拐杖,蹒跚跛行而来。韧体对两 人说:「道在阴阳之外,静寂不动如古井无波;道不求名,故无人知;道不逐利,因圆浑 无缺。道超乎时空之限而存在。」 听毕,硬体与软体羞愧不已,决定回家。

| 回目录 |

卷九 结语 程式名家如是说:「现在,是你下山行道的时候了!」

| 回目录 |

关于作者   杰弗瑞˙詹姆士在1977年以优异成绩毕业于加州大学,并在主要电脑制造商担任软体 工程师的职务。   1984年,因为在电脑排版系统上杰出的工作成果,他获得最佳技术人员的奖项。   杰弗瑞着名的软体作品有   1.Enochian Evocation:这套软体用于翻译、转录16世纪科学手抄本。   2.Document Databases:广泛地用于自动排版软体。它也能够进行文字辨识,将本 文转成电子出版的线上文件。

| 回目录 |

   关于本书   我们很荣幸能为您出版这本书。我们的目的是与您分享以枕边温语的方式讲述少数严 肃深度的思想。希望两者您都能满意,您可以写信寄到资讯书籍出版社(Info Books)给我 们,好让我们知道您的批评与指正。   「程序设计之道」一书中的许多构想,来自作者练罢太极拳后的灵感。作者习太极拳 已超过四年。最后一次与作者进行讨论,发行人也开始练太极拳了。   本书的电子格式档是用麦金塔排版并用雷射印表机印出,内文使用Times字体,标题 则用Helvetica字体。插图是由我们的艺术总监在烛光下静思,并与作者讨论而绘出的。 在艺术总监与发行人之间,因为这些插图而常有会心一笑。   版面在安排的过程,也常将印表机关闭而用手不断地重排,以期能忠实地反应原始精 神。   迄今为止,每个读过这本书的人,都有他自己喜爱的格言(顺道一提,每个人的选择 都不一样)。也要求我们能有海报般大小的复制品。我们实感荣幸。我们会选择有益人心 且令人感到有趣的格言,制成海报插图。以便您挑选自己喜爱的格言海报,用来当成家里 或是办公室的装饰品。请参考我们的目录,并写信向我们购买。   希望您会喜欢这本小书! ---------------------------------------   若您对本书的电子档、排版档有兴趣,或是本书出版的进一步的资料,请与资讯书籍 出版社联系。

请不要用于商业!

| 回目录 |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值