Epigrams on Programming --Alan J. Perlis

手把手教你搞定CAC会议投稿:从LaTeX模板到PDF eXpress避坑全流程 本文详细解析CAC会议投稿全流程,重点介绍LaTeX模板调整、Turnitin查重技巧及PDF eXpress校验避坑指南。通过实战案例和代码示例,帮助研究者高效完成IEEE格式论文投稿,避免常见技术性失误,提升投稿成功率。 阅读详情

Epigrams on Programming

Alan J. Perlis

Yale University


from:http://www-pu.informatik.uni-tuebingen.de/users/klaeren/epigrams.html

This text has been published in SIGPLAN Notices Vol. 17, No. 9, September 1982, pages 7 - 13. I'm offering it here online until ACM stops me.

The phenomena surrounding computers are diverse and yield a surprisingly rich base for launching metaphors at individual and group activities. Conversely, classical human endeavors provide an inexhaustible source of metaphor for those of us who are in labor within computation. Such relationships between society and device are not new, but the incredible growth of the computer's influence (both real and implied) lends this symbiotic dependency a vitality like a gangly youth growing out of his clothes within an endless puberty.

The epigrams that follow attempt to capture some of the dimensions of this traffic in imagery that sharpens, focuses, clarifies, enlarges and beclouds our view of this most remarkable of all mans' artifacts, the computer.

  1. One man's constant is another man's variable.
  2. Functions delay binding: data structures induce binding. Moral: Structure data late in the programming process.
  3. Syntactic sugar causes cancer of the semi-colons.
  4. Every program is a part of some other program and rarely fits.
  5. If a program manipulates a large amount of data, it does so in a small number of ways.
  6. Symmetry is a complexity reducing concept (co-routines include sub-routines); seek it everywhere.
  7. It is easier to write an incorrect program than understand a correct one.
  8. A programming language is low level when its programs require attention to the irrelevant.
  9. It is better to have 100 functions operate on one data structure than 10 functions on 10 data structures.
  10. Get into a rut early: Do the same processes the same way. Accumulate idioms. Standardize. The only difference (!) between Shakespeare and you was the size of his idiom list - not the size of his vocabulary.
  11. If you have a procedure with 10 parameters, you probably missed some.
  12. Recursion is the root of computation since it trades description for time.
  13. If two people write exactly the same program, each should be put in micro-code and then they certainly won't be the same.
  14. In the long run every program becomes rococco - then rubble.
  15. Everything should be built top-down, except the first time.
  16. Every program has (at least) two purposes: the one for which it was written and another for which it wasn't.
  17. If a listener nods his head when you're explaining your program, wake him up.
  18. A program without a loop and a structured variable isn't worth writing.
  19. A language that doesn't affect the way you think about programming, is not worth knowing.
  20. Wherever there is modularity there is the potential for misunderstanding: Hiding information implies a need to check communication.
  21. Optimization hinders evolution.
  22. A good system can't have a weak command language.
  23. To understand a program you must become both the machine and the program.
  24. Perhaps if we wrote programs from childhood on, as adults we'd be able to read them.
  25. One can only display complex information in the mind. Like seeing, movement or flow or alteration of view is more important than the static picture, no matter how lovely.
  26. There will always be things we wish to say in our programs that in all known languages can only be said poorly.
  27. Once you understand how to write a program get someone else to write it.
  28. Around computers it is difficult to find the correct unit of time to measure progress. Some cathedrals took a century to complete. Can you imagine the grandeur and scope of a program that would take as long?
  29. For systems, the analogue of a face-lift is to add to the control graph an edge that creates a cycle, not just an additional node.
  30. In programming, everything we do is a special case of something more general - and often we know it too quickly.
  31. Simplicity does not precede complexity, but follows it.
  32. Programmers are not to be measured by their ingenuity and their logic but by the completeness of their case analysis.
  33. The 11th commandment was "Thou Shalt Compute" or "Thou Shalt Not Compute" - I forget which.
  34. The string is a stark data structure and everywhere it is passed there is much duplication of process. It is a perfect vehicle for hiding information.
  35. Everyone can be taught to sculpt: Michelangelo would have had to be taught how not to. So it is with the great programmers.
  36. The use of a program to prove the 4-color theorem will not change mathematics - it merely demonstrates that the theorem, a challenge for a century, is probably not important to mathematics.
  37. The most important computer is the one that rages in our skulls and ever seeks that satisfactory external emulator. The standardization of real computers would be a disaster - and so it probably won't happen.
  38. Structured Programming supports the law of the excluded muddle.
  39. Re graphics: A picture is worth 10K words - but only those to describe the picture. Hardly any sets of 10K words can be adequately described with pictures.
  40. There are two ways to write error-free programs; only the third one works.
  41. Some programming languages manage to absorbe change, but withstand progress.
  42. You can measure a programmer's perspective by noting his attitude on the continuing vitality of FORTRAN.
  43. In software systems it is often the early bird that makes the worm.
  44. Sometimes I think the only universal in the computing field is the fetch-execute-cycle.
  45. The goal of computation is the emulation of our synthetic abilities, not the understanding of our analytic ones.
  46. Like punning, programming is a play on words.
  47. As Will Rogers would have said, "There is no such thing as a free variable."
  48. The best book on programming for the layman is "Alice in Wonderland"; but that's because it's the best book on anything for the layman.
  49. Giving up on assembly language was the apple in our Garden of Eden: Languages whose use squanders machine cycles are sinful. The LISP machine now permits LISP programmers to abandon bra and fig-leaf.
  50. When we understand knowledge-based systems, it will be as before - except our finger-tips will have been singed.
  51. Bringing computers into the home won't change either one, but may revitalize the corner saloon.
  52. Systems have sub-systems and sub-systems have sub-systems and so on ad finitum - which is why we're always starting over.
  53. So many good ideas are never heard from again once they embark in a voyage on the semantic gulf.
  54. Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy.
  55. A LISP programmer knows the value of everything, but the cost of nothing.
  56. Software is under a constant tension. Being symbolic it is arbitrarily perfectible; but also it is arbitrarily changeable.
  57. It is easier to change the specification to fit the program than vice versa.
  58. Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
  59. In English every word can be verbed. Would that it were so in our programming languages.
  60. Dana Scott is the Church of the Lattice-Way Saints.
  61. In programming, as in everything else, to be in error is to be reborn.
  62. In computing, invariants are ephemeral.
  63. When we write programs that "learn", it turns out we do and they don't.
  64. Often it is means that justify ends: Goals advance technique and technique survives even when goal structures crumble.
  65. Make no mistake about it: Computers process numbers - not symbols. We measure our understanding (and control) by the extent to which we can arithmetize an activity.
  66. Making something variable is easy. Controlling duration of constancy is the trick.
  67. Think of all the psychic energy expended in seeking a fundamental distinction between "algorithm" and "program".
  68. If we believe in data structures, we must believe in independent (hence simultaneous) processing. For why else would we collect items within a structure? Why do we tolerate languages that give us the one without the other?
  69. In a 5 year period we get one superb programming language. Only we can't control when the 5 year period will begin.
  70. Over the centuries the Indians developed sign language for communicating phenomena of interest. Programmers from different tribes (FORTRAN, LISP, ALGOL, SNOBOL, etc.) could use one that doesn't require them to carry a blackboard on their ponies.
  71. Documentation is like term insurance: It satisfies because almost no one who subscribes to it depends on its benefits.
  72. An adequate bootstrap is a contradiction in terms.
  73. It is not a language's weaknesses but its strengths that control the gradient of its change: Alas, a language never escapes its embryonic sac.
  74. It is possible that software is not like anything else, that it is meant to be discarded: that the whole point is to always see it as soap bubble?
  75. Because of its vitality, the computing field is always in desperate need of new cliches: Banality soothes our nerves.
  76. It is the user who should parametrize procedures, not their creators.
  77. The cybernetic exchange between man, computer and algorithm is like a game of musical chairs: The frantic search for balance always leaves one of the three standing ill at ease.
  78. If your computer speaks English it was probably made in Japan.
  79. A year spent in artificial intelligence is enough to make one believe in God.
  80. Prolonged contact with the computer turns mathematicians into clerks and vice versa.
  81. In computing, turning the obvious into the useful is a living definition of the word "frustration".
  82. We are on the verge: Today our program proved Fermat's next-to-last theorem!
  83. What is the difference between a Turing machine and the modern computer? It's the same as that between Hillary's ascent of Everest and the establishment of a Hilton hotel on its peak.
  84. Motto for a research laboratory: What we work on today, others will first think of tomorrow.
  85. Though the Chinese should adore APL, it's FORTRAN they put their money on.
  86. We kid ourselves if we think that the ratio of procedure to data in an active data-base system can be made arbitrarily small or even kept small.
  87. We have the mini and the micro computer. In what semantic niche would the pico computer fall?
  88. It is not the computer's fault that Maxwell's equations are not adequate to design the electric motor.
  89. One does not learn computing by using a hand calculator, but one can forget arithmetic.
  90. Computation has made the tree flower.
  91. The computer reminds one of Lon Chaney - it is the machine of a thousand faces.
  92. The computer is the ultimate polluter. Its feces are indistinguishable from the food it produces.
  93. When someone says "I want a programming language in which I need only say what I wish done," give him a lollipop.
  94. Interfaces keep things tidy, but don't accelerate growth: Functions do.
  95. Don't have good ideas if you aren't willing to be responsible for them.
  96. Computers don't introduce order anywhere as much as they expose opportunities.
  97. When a professor insists computer science is X but not Y, have compassion for his graduate students.
  98. In computing, the mean time to failure keeps getting shorter.
  99. In man-machine symbiosis, it is man who must adjust: The machines can't.
  100. We will never run out of things to program as long as there is a single program around.
  101. Dealing with failure is easy: Work hard to improve. Success is also easy to handle: You've solved the wrong problem. Work hard to improve.
  102. One can't proceed from the informal to the formal by formal means.
  103. Purely applicative languages are poorly applicable.
  104. The proof of a system's value is its existence.
  105. You can't communicate complexity, only an awareness of it.
  106. It's difficult to extract sense from strings, but they're the only communication coin we can count on.
  107. The debate rages on: Is PL/I Bachtrian or Dromedary?
  108. Whenever two programmers meet to criticize their programs, both are silent.
  109. Think of it! With VLSI we can pack 100 ENIACs in 1 sq.cm.
  110. Editing is a rewording activity.
  111. Why did the Roman Empire collapse? What is the Latin for office automation?
  112. Computer Science is embarrassed by the computer.
  113. The only constructive theory connecting neuroscience and psychology will arise from the study of software.
  114. Within a computer natural language is unnatural.
  115. Most people find the concept of programming obvious, but the doing impossible.
  116. You think you know when you learn, are more sure when you can write, even more when you can teach, but certain when you can program.
  117. It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?
  118. If you can imagine a society in which the computer-robot is the only menial, you can imagine anything.
  119. Programming is an unnatural act.
  120. Adapting old programs to fit new machines usually means adapting new machines to behave like old ones.
  121. In seeking the unattainable, simplicity only gets in the way.

    If there are epigrams, there must be meta-epigrams.

  122. Epigrams are interfaces across which appreciation and insight flow.
  123. Epigrams parametrize auras.
  124. Epigrams are macros, since they are executed at read time.
  125. Epigrams crystallize incongruities.
  126. Epigrams retrieve deep semantics from a data base that is all procedure.
  127. Epigrams scorn detail and make a point: They are a superb high-level documentation.
  128. Epigrams are more like vitamins than protein.
  129. Epigrams have extremely low entropy.
  130. The last epigram? Neither eat nor drink them, snuff epigrams.
 
【AI编程】Vibe Coding 开发环境搭建与项目实战操作详解 Vibe Coding 开发环境搭建与项目实战操作详解 阅读详情

相关推荐

树莓派5安装ROS2小白指南避坑攻略

手把手教你如何在树莓派5上顺利安装ROS2,避开常见问题与陷阱,提升配置效率。针对树莓派5安装ros2过程中的依赖冲突、源配置错误等高频难题提供解决方案,适合新手快速上手。

weixin_35754962的博客 1005

CVPR papers

http://www.cvpapers.com/cvpr2014.html CVPR 2014 papers on the web  Home  Changelog  Forum  RSS  Twitter To add your links (paper, project,...) you can use the online tool or send an

stereohomology 3万+

LVGL在RTOS下的线程安全实践:从卡死到流畅的界面切换

本文探讨LVGL在RTOS环境下的线程安全实践,重点分析FreeRTOS多任务同步机制,包括互斥锁、任务通知和消息队列方案。通过实际案例展示如何避免界面卡顿和系统死锁,实现从卡死到流畅的界面切换,为嵌入式GUI开发提供可靠的适配解决方案。

uran的专栏 1111

使用Docker搭建SearXNG搜索引擎

【代码】使用Docker搭建SearXNG搜索引擎。

janthinasnail的博客 1168

【学习笔记-QGIS】 QGIS从零快速上手

安装文章参考:https://zhuanlan.zhihu.com/p/370633306。

Xcong_Zhu的博客 1万+

Epigrams in Programming

   One mans constant is another mans variable. Functions delay binding: data structures induce binding. Moral: Structure data late in the programming process. Syntactic sugar caus

第三只眼的专栏 1209

feko金属球远场RCS双站

feko金属球远场RCS双站

a264672的博客 6910

编程格言

<!--.text { font-family: "宋体"; font-size: 12pt;}.author { font-family: "宋体"; font-size: 10pt; padding-left: 55%;}-->最简单的最有力。 英国著名作家乔治.奥维尔写作6要素: - 不要使用那些你常在报纸上看到的隐喻、明喻或其它比喻; - 字

杂烩饭的专栏 1351

Unity游戏开发实战:如何用科大讯飞离线语音合成SDK实现NPC对话(附完整代码)

本文详细介绍了如何在Unity游戏开发中使用科大讯飞离线语音合成SDK实现NPC对话系统。通过完整的代码示例和优化技巧,开发者可以快速集成本地语音合成功能,提升游戏沉浸感,同时避免网络延迟问题。文章涵盖SDK集成、核心语音合成模块实现以及高级应用技巧,特别适合RPG游戏开发者参考。

weixin_29268385的博客 182

esp32移植canopen协议栈(二)

本文续接上一篇文章,之前我们已经搭建好了esp32的开发环境,以及初始工程。接下来我们开始实现can驱动相关,以及使用c++封装can接口。本文使用esp32实现c++实现can驱动层的封装。下一步移植canopen!!!嘻嘻。

qq_50267418的博客 1906

要写易删除,而不易扩展的代码

英文来源:Write code that is easy to delete, not easy to extend 作者:tef,拥有着犀利的演讲风格,简介请详见他在http://programmingisterrible.com/about上的自我介绍。 译者简介:张咏枫,硅谷创业公司 BloomSky Inc. 软件工程师,加州大学圣克鲁兹分校计算机科学硕士,方向为机器学习。硕士期间曾...

唐小引(Echo)的 优快云 博客。 815

safetymonitorapi

Summary of SA8653 Safety Monitor API Introduction This document details Safety Monitor APIs for the SA8653 QNNX platform, covering dual interfaces of APSS and SAIL. It defines core data structures and enumerations for subsystems, fault severity and health

qq_39257814的博客 1588

Epigrams on Programming (Alan J. Perlis)

Alan J. Perlis Yale UniversityThis text has been published in SIGPLAN Notices Vol. 17, No. 9, September 1982, pages 7 - 13. I'm offering it here online until ACM stops me. The phenomena surroundin...

weixin_34220963的博客 250

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【每日一博】编程警句

这些编程警句摘自《C语言程序设计——现代方法》。而此书的又是从Alan J. Perlis的《Epigrams On Programming》中摘录,而且这些警句来自1982年。 此书每章首摘录一句,一共26句。 如果有人说“我想要一种语言,只需对它说我要干什么就行”,给他一支棒棒糖好了。 When someone says "I want a prog...

weixin_34128501的博客 379

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

计算机科学的奠基人—Alan Perlis,晚年写的Epigrams on Programming,写于1982年

Epigrams on ProgrammingAlan J. PerlisYale UniversityThis text has been published in SIGPLAN Notices Vol. 17, No. 9, September 1982, pages 7 - 13. I'm offering it here online until ACM stops me.The phe...

csdztx的博客 1169

玻璃上的编码喜悦(+ 10史诗般的Epigrams)

by Den McHenry 丹·麦克亨利(Den McHenry) 玻璃上的编码喜悦(+ 10史诗般的Epigrams) (Perlis on Coding Joy (+ 10 Epic Epigrams)) Alan J. Perlis was the first recipient of the Turing Award. He’s possibly most remembered to...

196

Epigrams in Programming

Alan J. Perlis, Yale, September 1980  The phenomena surrounding computers are diverse and yield a surprisingly rich base for launching metaphors at individual and group activities. Conversely, classi...

fx_odyssey的博客 431

陶哲轩:如何开始你的数学生涯I(2007-06-09 18:10:12)

On requests for career advice Every so often, I receive a query asking for advice on mathematical career issues, such as     * What fields in mathematics should one study?     * What mathematic

u010527452的专栏 1371

Lisp函数定义与括号语法解析

在 Lisp 编程中,函数定义的核心机制是通过 (Define Function)特殊形式实现的。所谓的“命令行函数”通常指在 REPL(读取 - 求值 - 输出循环)环境中直接定义并立即调用的顶层函数。括号内的代码遵循 S-表达式(S-expression) 结构,其中外层括号界定作用域,内部元素按“操作符 + 操作数”的顺序排列 。Lisp 使用 来命名并定义一个函数块。其标准模板如下: 组成部分 说明 示例内容 defun 定义函数的

m0_66048236的博客 182

AutoLISP轻松移动多段线顶点

在 CAD 二次开发中,和是操作多段线顶点最常用且高效的两种语言。针对“选中顶点并水平向右移动 1 毫米”的需求,因其内置于 AutoCAD、无需环境配置且直接支持实体数据修改(DXF 码操作),是首选方案;则适合需要复杂逻辑或外部库支持的场景。核心操作逻辑均为:获取多段线对象 $\rightarrow$ 拾取点定位最近顶点索引 $\rightarrow$ 读取该顶点坐标 $\rightarrow$ X 坐标增加 1.0 $\rightarrow$ 写回新坐标。

m0_66048236的博客 222

查找最近多段线的LISP实现

在 AutoCAD 中判断哪条多段线离指定点最近及次近,核心在于遍历选择集中的所有多段线对象,利用 ActiveX 方法。获取该点在每条多段线上的投影点(最近点),计算两点间的欧几里得距离,最后对距离列表进行排序提取前两名。(距离 . 实体名)

m0_66048236的博客 211
上一篇: 3月的happy
下一篇: 《Effective Emacs》未完成译稿
JoyerHuang_悦
博客等级 码龄23年 101粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值