---
title: 工具链的层层叠加
date: '2020-12-30 15:40:00'
draft: false
summary: 很多开发工具的演进路径并不是把复杂度消掉，而是把旧复杂度包起来，再生成一层新的抽象，于是层层叠加。
slug: tooling-layers-keep-accumulating
source: Weibo
source_url: https://weibo.com/1648815335/JARAw6kOM
tags:
- build-tools
- tooling
- software-engineering
topics:
- software-engineering
type: post
---

程序和配置文件。

改程序太麻烦了，我们还是加个配置文件吧……

配置项越来越多，容易改错，我们还是写个程序生成配置文件吧……

好像我们还需要一个配置文件来控制生成配置文件的程序……

第二天我又补了一个更具体的例子：

原微博里还嵌了一张 `autoconf` / `automake` 关系图：

![](./weibo-4588139853121036-1.jpg)

为了编译程序，我们需要一个 `Makefile` 来配置编译器；`Makefile` 太难写，我们有了 `configure script` / `Makefile.in`；`configure` 太难写，我们又有了 `autoconf` / `automake` 和 `Makefile.am`。
