简单之美(The Beauty of Simplicity)

简介:       As an admirer of the “artistic flare, nuanced style, and technical prowess thatseparates good code from great code” e...

      As an admirer of the “artistic flare, nuanced style, and technical prowess thatseparates good code from great code” explored by Robert Green and Henry Ledgardin their article “Coding Guidelines: Finding the Art in the Science” (Dec. 2011),I was disappointed by the authors’ emphasis on “alignment, naming, use of whitespace, use of context, syntax highlighting, and IDE choice.” As effective asthese aspects of beautiful code may be, they are at best only skin deep.

       我对“艺术的闪耀,有细微差别的风格和将好的代码与卓越的代码区分开来的技术能力”敬佩至极,而在文章“编程指南:在科学中寻找艺术”(2011年12月)中,Robert Green和Henry Ledgard两位作者对之进行了探索。令我感到失望的是,作者强调了“对齐,命名,空格的使用,上下文的使用,句法规则的重要性,以及IDE的选择”。对于优美的代码来说,这些方面固然重要,但它们最多只是表面上很肤浅的东西。

 

       Beautymay indeed be in the eye of the beholder, but there is a more compelling beautyin the deeper semantic properties of code than layout and naming. I alsoinclude judicious use of abstraction, deftly balancing precision andgenerality; elegant structuring of class hierarchies, carefully trading betweenbreadth and depth; artful ordering of parameter lists, neatly supporting commoncases of partial application; and efficient reuse of library code, leveragingexisting definitions with minimum effort. These are subjective characteristics,beyond the reach of objective scientific analysis—matters of taste not offact—so represent aspects of the art rather than the science of software.

       虽然实际上只有旁观者才可能看到优美性,但相对于布局和命名来说,在更深层次的语义特性中有更具说服力的优美。这些更深层次的东西包括了抽象的明智使用,熟练的平衡精度和一般性;类层次的优雅组建,宽度与深度之间的合理折中;参数列表的艺术式排序,部分应用的共同事例的恰当支持;以及库代码的高效重复利用,用最小代价来改变当前定义。这些都是主观的特性,而非客观的科学分析——是味觉,而非事实的问题——因此代表了艺术方面,而非软件科学方面。

 

       Formalizingsuch semantic properties is more difficult than establishing uniform codingconventions; we programmers spend our professional lifetimes honing our writingskills, not unlike novelists and journalists. Indeed, the great Americanessayist Ralph Waldo Emerson (1803–1882) anticipated the art in the science ofsoftware like this: “We ascribe beauty to that which is simple; which has nosuperfluous parts; which exactly answers its end; which stands related to allthings; which is the mean of many extremes.” It is to this standard I aspire.

        要规范这些语义特性比建立统一的编程规则更难;我们程序员用整个职业生涯来磨练我们的写作水平,这与小说家和记者没有什么两样。事实上,美国最伟大的作家Ralph Waldo Emerson(1803–1882)像这样预言软件科学中的艺术:“我们将优美归结为简单的东西,它没有多余的部分,它精确地道出了其目的,它代表了相关的所有事物,它是许多极端情况的折中。”我崇拜的是这个标准。

 

Jeremy Gibbons, Oxford,U.K.

 

 

参考文献

The Beauty of Simplicity, Communicationsof the ACM, vol. 55, no. 4, April 2012.

目录
相关文章
《代码大全》学习笔记(7):高级结构设计
7.1 软件设计引论       “软件设计”一词的意思是指,把一个计算机程序的定义转变成可以运行程序的设计方法;设计是联系要求定义和编码与调试的活动的桥梁;它是一个启发的过程而不是一个确定的过程,需要创造性和深刻的理解力;设计活动的绝大部分活动都是针对当前某特定项目进行的。
1297 0
|
程序员
《代码大全》学习笔记(剩余部分)
    最近看了一篇文章,是有关工作交接的。文章中说,在办理工作交接的时候,除了传递专业知识、工作流程,还有最为重要的是经验的传承。因为像专业知识这些东西,我们可以通过网络、书籍来学习,而经验一定是要自身经历才会得到,前人的经验家训对后人有指导作用,正所谓“前事不忘,后事之师”。
1114 0
|
数据管理 测试技术
《代码大全》学习笔记(6):模块化设计
        子程序是具有一定功能的,可以调用的函数或过程;而模块则是指数据及作用于数据的子程序的集合。6.1 模块化:内聚性与耦合性      “模块化”同时涉及到子程序设计和模块设计;模块化设计的目标是使每个子程序都成为一个“黑盒子”;使用单独一个子程序是很难达到这一目的的,这也正是引入模块的原因。
1548 0
|
网络安全
《代码大全》学习笔记(5):高质量子程序特点
        什么叫“子程序”?子程序是具有单一功能的可调用的函数或过程。5.1 生成子程序的原因        降低复杂性:使用子程序的最首要原因是为了降低程序的复杂性,可以使用子程序来隐含信息,从而使你不必再考虑这些信息;一个子程序需要从另一个子程序中脱离出来的原因之一是,过多重数的内部循环和条件判断。
1270 0
|
1天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23264 1
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
3天前
|
人工智能 API 开发工具
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
Claude Code是我目前最推荐的AI编程工具,没有之一。 它可能不是最简单的,但绝对是上限最高的。一旦跑通安装、接上模型、定好规范,你会发现很多原本需要几小时的工作,现在几分钟就能搞定。 这套方案的核心优势就三个字:可控性。你不用依赖任何不稳定服务,所有组件都在自己手里。模型效果不好?换一个。框架更新了?自己决定升不升。 这才是AI时代开发者该有的姿势——不是被动等喂饭,而是主动搭建自己的生产力基础设施。 希望这篇保姆教程,能帮你顺利上车。做出你自己的作品。
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
|
10天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
4218 23
|
5天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
2423 6
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
6天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
2906 8

热门文章

最新文章