首页 宗教 历史 传记 科学 武侠 文学 排行
搜索
今日热搜
消息
历史

你暂时还没有看过的小说

「 去追一部小说 」
查看全部历史
收藏

同步收藏的小说,实时追更

你暂时还没有收藏过小说

「 去追一部小说 」
查看全部收藏

金币

0

月票

0

人月神话-24

作者:弗雷德里克·布鲁克斯 字数:9594 更新:2023-10-09 13:04:03

元编程。Hypercard Stack、Excel 模板、Minicard 函数的开发有时被称为元编程(metaprograming),为部分软件包用户进行功能定制的过程。元编程并不是新概念,仅仅是重新被提出和重新命名。在60 年代早期,很多计算机提供商和信息管理系统(MIS)厂商都拥有小型专家小组,他们使用汇编语言的宏来装备应用编程语言。Eastman Kodak 的MIS开发车间使用一种用IBM 7080宏汇编定义的自有应用语言。类似的,IBM 的OS/360 队列远- 174 ------------------------ Page 187-----------------------程通讯访问方法中(Queued Telecommunications Access Method),在遇到机器级别指令之前,人们可以读到若干页汇编语言的通讯程序。现在元编程人员提供要素的规模是宏的若干倍。这种二级市场的开发是非常鼓舞人心的——当我们在期待C++类开发的高效市场时,可重用元程序的市场正在悄无声息地崛起。它处理的确实是根本问题。因为包开发现象并没有影响到一般的MIS 编程人员,所以对于软件工程领域并不是很明显。不过,它将快速地发展,因为它针对的正是概念结构要素打造的根本问题。成品软件包提供了大型的功能模块和精心定制的接口,它内部的概念结构根本无需再设计。功能强大的软件产品,如Excel或者4thDimension 实际上是大型的模块,而且它们作为广为人知、文档化、测试过的模块,可以用来搭建用户化系统。下一级应用程序的开发者可以获得丰富的功能、更短的开发时间、经过测试的组件、良好的文档和彻底降低的成本。当然,存在的困难是成品软件是作为独立实体来设计,元程序员无法改变它的功能和接口。另外,更严肃地说,对于成品软件的开发者而言,把产品变成更大型系统中的模块似乎没有什么吸引力。我认为这种感觉是错误的,在为元程序员开发提供软件包方面,有一个未开拓的市场。那么需要什么呢?我们可以识别出四个层次的软件用成品户:直接使用用户。他们以简便直接的方式来操作,对设计者提供的功能和接口感到满意。元程序员。在单个应用程序的基础上,使用已提供的接口来开发模板或者函数,主要为最终用户节省工作量。外部功能作者,向应用程序中添加自行编制的功能。这些功能本质上是新应用语言原语,调用通用语言编写的独立模块。这往往需要命令中断、回调或者重载函数技术,向原接口添加新功能。元程序员,使用一个和多个特殊的应用程序,作为更大型系统的构件。他们是需求并没有得到满足的用户群。同时,这也是能在构建新应用程序方面获得较大收获的用法。对于成品软件,最后一种类型的用户还需要额外的文档化接口,即元编程接口(metaprogramming interface,MPI)。这在很多方面提出了要求。首先,元程序需要在整- 175 ------------------------ Page 188-----------------------个软件集的控制之下,而每个软件通常假设是受自己的控制。软件集必须控制用户界面,而应用程序一般认为这是自己的职责。软件整体必须能够调用任何应用程序的功能,就好像是用户使用命令行传递参数那样。它还应该像屏幕一样接受应用程序的输出,只不过屏幕是显示一系列字符串,而它需要将输出解析成适当数据类型的逻辑单元实体。某些应用程序,如FoxPro,提供了一些接收命令的后门接口(wormhole),不过它返回的信息是不够充分和未被解析的。这些接口是对通用解决方案需要的一个特殊补充。拥有能控制应用程序集合之间交互的脚本语言是非常强有力的。Unix 首先使用管道和标准的ASCII 字符串格式提供了这种功能。今天,AppleScript 是一个非常优秀的例子。软件工程的状态和未来我曾问过北卡罗来纳州大学化学系的系主任Jim Ferrell 关于化学工程的历史以及和化学的区别的问题,于是他作了一个1小时的出色即兴演说,从很多产品(从钢铁到面包,到香水)的不同生产过程开始。他讲述了Arthur D. Little博士如何在1918年在麻省理工学院建立了第一个化学工程系,来发现、发展和讲授所有过程的共有技术基础。首先是经验法则,接着是经验图表,后来是设计特殊零件的公式,再后来是单个导管中热传导、质量转移和动量转移的模型。如同Ferrell故事所展现的,在几乎50年后,我仍被化学工程和软件工程之间的很多相似之处所震动。Parans 对我写的关于软件工程 (software engineering)的文章提出了批评。他对比了电气工程和软件领域,觉得把我们所做的称为“工程”十分冒昧。他可能是正确的,这个领域可能永远不会发展成像电气工程那样的工程化领域,拥有精确的数学基础。毕竟,软件工程就像化学工程一样,与如何扩展到工业级别处理过程的非线性问题有关。而且,和工业工程类似,它总是被人类行为的复杂性所困扰。不过,化学工程的发展过程让我觉得“27 岁的”软件工程并不是没有希望的,而仅仅是不够成熟的,就好像1945 年的化学工程。毕竟,在二次世界大战之后,化学工程师才真正提出闭环互联的连续流系统。今天,软件工程的一些特殊问题正如第1章中所提出的:如何把一系列程序设计和构建成系统- 176 ------------------------ Page 189-----------------------如何把程序或者系统设计成健壮的、经过测试的、文档化的、可支持的产品如何维持对大量的复杂性的控制软件工程的焦油坑在将来很长一段时间内会继续地使人们举步维艰,无法自拔。软件系统可能是人类创造中最错综复杂的事物,只能期待人们在力所能及的或者刚刚超越力所能及的范围内进行探索和尝试。这个复杂的行业需要:进行持续的发展;学习使用更大的要素来开发;新工具的最佳使用;经论证的管理方法的最佳应用;良好判断的自由发挥;以及能够使我们认识到自己不足和容易犯错的——上帝所赐予的谦卑。- 177 ------------------------ Page 190-----------------------结束语:令人向往、激动人心和充满乐趣的五十年(Epilogue Fifty Years of Wonder,Excitement, and Joy )我依然记得那种向往和开心的感觉-当我在1944年8 月7 日读到哈佛大学Mark I型计算机研制成功的报道时-那时候我才 13 岁。Mark I 是电子机械学上的奇迹,哈佛大学的Aiken是它的构架设计师,而IBM的工程师Clair Lake,BenjaminDurfee和Francis Hamilton是它的实施设计师。同样令人向往的是读到Vannevar Bush 1945 年4 月发表在亚特兰大月刊上的论文“That We May Think”(我们的期望?)的时候,在这篇论文中,他建议将大量的知识组织成超文本的网络方式,并为用户提供机器从已有的链接以及指明其他的相关链接。我对计算机的热情在1952 年进一步高涨,因为得到了IBM在纽约恩迪科特的一份暑期工,正是那次,我有了在IBM 604 上编程的实际经验,也了解了如何编制IBM 701 (它的第一个存储程序计算机)程序的正式指令;从哈佛大学Aiken 和Iverson 名下毕业终于让我的职业梦想变成了现实,并且,就这样沉迷了一辈子。感谢上帝,让我成为了为数不多的那些开开心心做着自己喜欢的工作的人之一。我实在无法想像还有哪种生活会比热爱计算机更加激动人心,自从从真空管发展到集成电路以来,计算机技术已经飞速发展。我用来工作的第一台计算机,是从哈佛刚刚出炉的IBM7030 Stretch 超级计算机,Stretch 在1961 到1964 年间都是世界上运算速度最快的计算机,一共卖出了9 台。而我现在用的计算机,Macintosh Powerbook,不但快,还有大容量内存和大容量硬盘,而且便宜了1000倍(如果按定值美元来算,便宜了5000 倍)。我们依次看到了计算机革命,电子计算机革命,小型计算机革命,微型计算机革命,这些技术上的革命每一次都带来了计算机数量上的剧增。在计算机技术进步的同时,计算机相关学科知识也在飞速发展。当我在五十年代刚从学校毕业的时候,我能看完当时所有的期刊和会议报告,掌握所有的潮流动向。而我现在只能对层出不穷的学科分支遗憾地说“再见”,对我所关注的东西也越来越难以全部掌握。兴趣太多,令人兴奋的学习、研究和思考的机会也太多——多么不可思议的矛盾啊!这个神奇- 178 ------------------------ Page 191-----------------------的时代远远没有结束,它依然在飞速发展。更多的乐趣,尽在将来。- 179 ------------------------ Page 192-----------------------注解和参考文献(Notes and References)第1 章1. Ershov 认为编程是一种乐趣和苦恼共存的活动。A.P. Ershov, “Aesthetics and the humanfactor in programming,” CACM, 15,7(July,1972), pp. 501-505.第2 章1. Bell 电话实验室的V.A. Vyssotsky 估计一个大项目必须维持每年30%的人员投入. 这导致了巨大的压力, 甚至是限制了在第7 章中, 所讨论的根本、非正式结构和沟通的演化.麻省理工学院的F.J. Corbató指出, 一个长期的项目必须预见到每年有20%的人员更替,这必须进行技术上进行培训以及集成到原有的结构.2. International Computers Limited 的C. Portman 提出: “当所有的一切看上去可以工作, 已经被集成时, 你至少还有4 个多月的工作需要完成.” 在Wolverton, R. W., “The cost ofdeveloping lage-scale software,” IEEE Trans. on Comp uters, C-23, 6(June, 1974) pp.615-636提出了若干其他的进度划分.3. 图2.5 至2. 8 出自Jerry Ogdin, 他引用了这章的早期版本, 必须改进相应的描述. Ogdin, J.L., “The Mongolian hordes versus superprogrammer,” Infosystems (Dec., 1972), pp.20-23。第3 章1. Sackman, H., W. J. Erikson, and E. E. Grant, “Exploratory experimental studies comparingonline and offline programming performance,” CAM, 11, 1(Jan., 1968), pp. 3-11.2. Mills, H., “Chief programmer teams, principles, and procedures,” IBM Federal SystemsDivision Report FSC 715108, Gaitherburg, Md., 19713. Baker F. T., “Chief programmer team management of production programming,” IBM Sys. J.11, 1 (1972).- 180 ------------------------ Page 193-----------------------第4 章1. Eschapasse, M., Reims Cathedral, Caisse Nationale des Monuments Historiques, Paris, 1967.2. Brooks, F. P., “Architectural philosophy,” in W. Buchholz(ed.), Planning A Computer System.New York: McGraw-Hill, 1962.3. Blaauw, G.. A., “Hardware requirements for the fourth generation,” in F. Gruenberger (ed.),Fourth Generation Computers. Englewood Cliffs, N. J.: Prentice-Hall, 1970.4. Brooks, F. P., and K. E. Iverson, Automatic Data Processing, System/360 Edition. New York:Wiley, 1969, Chapter 5.5. Glegg G. L., The Design of Design. Cambridge: Cambridge Univ. Press, 1969, 提出“乍一看,用任何规则或者原理来约束创造性思维的想法是一种阻碍, 而不是帮助, 但实际情况中完全不是这样. 规范的思维实际上是促进而不是阻碍了灵感的产生.”6. Conway, R. W., “The PL/C Compiler,” Proceedings of a Conf. on Definition andImplementation of Universal Programming Languages. Stuttgard, 1970.7. 关于编程技术必要性的讨论, 参见 C. H. Reynolds, “What's wrong with computerprogramming management?” in G. F. Weinwurm (ed.). On the Management of ComputerProgramming. Philadelphia: Auerbach, 197.1 pp. 35-42.第5 章1. Strachey C., “Review of Planning a Computer System”, Comp. J., 5, 2 (July, 1962), pp.152-153.2. 这仅仅适用于控制程序. OS/360 项目中的一些编译器开发团队正构建他们的第三个或第四个系统, 他们卓越的产品展示了这一点.3. Shell, D. L., “The Share 709 systems: a cooperative effort”; Greenwald, I. D., and M. Kane,“The Share 709 system: programming and modification”; Boehm E. M., and T. B. Steel, Jr.“The Share 709 system: machine implementation of symbolic programming”; all in JACM, 6,2(April, 1959), pp. 123-140.- 181 ------------------------ Page 194-----------------------第6 章1. Neustadt R. E., Presidential Power. New York: Wiley, 1960, Chapter 2.2. Backus J. W., “The syntax and semantics of the proposed international algebraic language.”Proc. Intl. Conf. Inf. Proc. UNESCO, Paris, 1959, published by R. Oldenbourg, Munich, andButterworth, London. Besides this, a whole collection of papers on the subject is contained inT. B. Steel, Jr. (ed.). Formal Language Description Languages for Comp uter Programming.Amsterdam: North Holland, 1966.3. Lucas, P., K. Walk, “On the formal description of PL/I” Annual Review in AutomaticProgramming Language. New York: Wiley, 1962. Chapter 2, p. 2.4. Iverson K. E. A Programming Language. New York: Wiley, 1962. Chapter 2.5. Falkoff A. D., K. E. Iverson, E. H. Sussenguth, “A formal description of System/360,” IBMSystems Journal. 3, 3,(1964), pp. 198-261.6. Bell C. G., A. Newell, Comput er Structures. New York: McGraw-Hill, 1970, pp. 120- 136,517-541.7. Bell, C. G.., private communication.第7 章1. Parnas D. L., “Information distribution aspects of design methodology,” Carnegie-MellonUniv., Dept. of Computer Science Technical Report, February, 1971.2. Copyright 1939, 1940 Street & Smith Publications, Copyright 1950, 1967 by Robert А.Heinlein. Published by arrangement with Spectrum Literary Agency.第8 章1. Sackman ,H., W. J. Erikson, and E. E. Grant, “Exploratory experimentation studies comparingonline and offline programming performance,” CACM, 11, 1( Jan. 1968), 11, pp. 3-11.2. Nanus, B., and L. Farr, “Some cost contributors to large-scale programs,” AFIPS Proc. SJCC,25(Spring, 1964), pp. 239-248.3. Weinwurm, G. F., “Research in the management of computer programming,” Report SP-2059,- 182 ------------------------ Page 195-----------------------System Development Corp. Santa Monica, 1965.4. Morin, L. H., “Estimation of resources for computer programming projects,” M. S. thesis.Univ. Of North Carolina, Chapel Hill, 1974.5. Portman, C., private communication.6. 一份未发表的E. F. Bardain1964 研究指出程序员实际的生产时间占27%. (为D. B. Mayerand A. W. Stalnaker 所引用, “Selection and evaluation of computer personnel, ” Proc. 23dACM Conf., 1968, p. 661.)7. Aron, J. , Private communication.8. 材料在小组会议中给出, 没有包括于the AFIPS Proceedings.9. Wolverton, R. W. “The cost of developing large-scale software,” IEEE Trans. On Computers.C-23, 6, (June,1974), pp. 615-636. 这篇重要新近发表的文章包含的数据核实了生产率方面的结论, 同时还有许多所讨论问题的数据.10. Corbató, F. J. “Sensitive issues in the design of multi-use systems,” 在好莱坞EDP 技术中心1968 年的公开演讲.11. W. M. Taliaffero 同时指出了在Fortran 和Cobol 编译器方面的生产率为2400 语句/年. 参见“ Modularity. The key to system growth potential,” Sof tware, 1, 3. (July, 1971), pp.245-257.

回详情
上一章
下一章
目录
目录( 28
夜间
日间
设置
设置
阅读背景
正文字体
雅黑
宋体
楷书
字体大小
16
已收藏
收藏
顶部
该章节是收费章节,需购买后方可阅读
我的账户:0金币
购买本章
免费
0金币
立即开通VIP免费看>
立即购买>
用礼物支持大大
  • 爱心猫粮
    1金币
  • 南瓜喵
    10金币
  • 喵喵玩具
    50金币
  • 喵喵毛线
    88金币
  • 喵喵项圈
    100金币
  • 喵喵手纸
    200金币
  • 喵喵跑车
    520金币
  • 喵喵别墅
    1314金币
投月票
  • 月票x1
  • 月票x2
  • 月票x3
  • 月票x5