Unix 编程艺术名句摘录
Unix 哲学浓缩: KISS 原则。
Unix 哲学:一个程序只做一件事并且做好。程序之间可以协作并且可以处理文本流,因为这是最通用的接口。
-
(不要过早优化) 你无法确定程序会在什么地方耗费时间,瓶颈通常出现在意想不到的地方,所以不要着急胡乱修改代码。
-
花哨的算法比简单算法更容易出 Bug、更难实现,尽量使用简单的算法配合简单的数据结构。
-
编程的核心是数据结构,而不是算法。题外话:程序 = 数据结构 + 算法,但是前者比后者更重要。
-
计算机编程的本质就是控制复杂度。
-
(模块原则) 控制复杂软件的唯一方法是降低其整体复杂度——用清晰的接口把若干简单的模块组合成一个复杂软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至于牵动全身。
-
源代码首先是给人看到,其次才是计算机。
-
(隔离原则) 策略同机制分离,接口同引擎分离。
-
(健壮原则) 软件不仅能在正常情况下运行良好,而且在超出设计者设想的意外条件下也能够运行良好。
-
程序越简洁,越透明,也就越健壮。
-
设计良好的程序将用户的注意力视为有限的宝贵资源。
-
程序出现异常时,马上退出并给出足够的错误信息。
-
(自动化) 尽量编写程序去生成程序。
-
先制作原型,再精雕细琢。先求运行,再求正确,最后求快。
-
Linux 的长期目标是包容,Linux 模拟的目的就是为了吸收。
-
软件设计有两种方式:一种是设计得极为简洁,没有明显的缺陷;另一种是设计得极为复杂,明显看不到缺陷。
-
魔数七,加二或减二:人类信息处理能力的局限性。
-
完美之道,不在无可增加,而在无可删减。
-
编写简洁、健壮的代码而节省的精力,将来完全可能就是自己的财富。
-
拿不准,用穷举。
-
更高级的语言可以用更少的行数完成更多的任务,也意味着更少的 Bug。
-
随着时间的推移,设备资源变得越来越廉价,但程序员头脑中的空间只会越来越昂贵。
-
表达是编程的精髓,仔细思考数据才是最好的行动。
-
一切都是可配置的。
-
可以假设并悲观地认为,许多优化方法都是暂时的,而且常常随着成本比例而变化。
-
Everything should be made as simple as possible, but no simpler. ——Albert Einstein
-
急剧下降的成本从根本上改变了编程的经济含义。大多数情况下,和C一样节约机器资源已经不再有任何意义。 相反地,经济方面的最优选择已经变成尽可能减少调试时间、尽可能延长人类对代码的长期可维护性。因此,用较新一代的解释语言和脚本语言, 能够更好地为绝大多数种类的应用实现(包括应用程序的原型设计)服务。这种转变和历史车轮中上一次 C/C++ 崛起而汇编语言衰落的情况类似。