简单之美(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.

目录
相关文章
|
18天前
|
算法 编译器 C语言
探索C++编程的奥秘与魅力
探索C++编程的奥秘与魅力
|
14天前
|
机器学习/深度学习 人工智能 算法
程序设计的艺术:代码之美与智慧之道
程序设计的艺术:代码之美与智慧之道
22 2
|
24天前
|
开发框架 .NET Java
探索 C#编程的奥秘与魅力
【4月更文挑战第20天】C#是微软开发的现代、面向对象的编程语言,以其简洁语法、强大功能和跨平台支持脱颖而出。它支持自动垃圾回收、泛型、委托、LINQ,并广泛应用于桌面、Web、移动和游戏开发。C#拥有活跃的开发者社区和丰富的资源,是Unity游戏开发的首选语言。随着.NET Core,C#可在多个操作系统上运行,持续创新,未来发展潜力巨大。
|
1月前
|
设计模式 算法 开发者
代码之美:探索编程艺术与实践的交汇点
【4月更文挑战第2天】 在数字世界的构建中,代码不仅仅是一种工具,它亦是艺术家手中的画笔。本文旨在探讨编程作为一种技术和艺术相结合的领域,揭示那些隐藏在代码背后的美学原则和创造力。我们将从编程的基础出发,逐步深入到设计模式、算法优雅性以及代码的可读性和维护性,最终探讨如何通过技术实现创新并解决问题。文章的目的是为那些渴望在技术实践中寻找创造性和美感的开发者提供灵感和指导。
|
设计模式 架构师 数据挖掘
《架构之美》评注版序
《架构之美》评注版序
《架构之美》评注版序
|
数据可视化
用艺术的眼光探索数据之美
独特的数据可视化技术,用于深入了解数据。当我们观想它时,它的美就显现出来了。
用艺术的眼光探索数据之美
【代码大全】精华总结之思想篇(1)
【代码大全】精华总结之思想篇(1)
75 0
|
算法 C++
深入浅出程序设计竞赛(基础篇)
本书从编程语言开始,以C++语言为基础讲解, 然后讲解了基础的算法开始,基本上常用的算法都介绍了, 还进行了基础的数学与数论知识。
1194 0
深入浅出程序设计竞赛(基础篇)
|
存储 缓存 算法
数据结构与算法之美(二)——数据结构
 《数据结构与算法之美》是极客时间上的一个算法学习系列,在学习之后特在此做记录和总结。
数据结构与算法之美(二)——数据结构
|
存储 算法
数据结构与算法之美(一)——入门
 掌握数据结构和算法,不管对于阅读框架源码,还是理解其背后的设计思想,都是非常有用的。一旦掌握数据结构和算法,之前可能需要费很大劲儿来优化的代码,需要花很多心思来设计的架构,用了数据结构和算法之后,很容易就可以解决了。
数据结构与算法之美(一)——入门