软件是如何炼成的:一份面向软件设计与开发者的参考手册
软件是如何炼成的
一份面向软件设计与开发者的参考手册。 由 Dan Hollick 编写并绘制插图。 ░ FIG_001[ 3.5" 软盘 ] © 1986 你是否曾经好奇触摸屏是如何知道你在触摸它的?它在显示屏中嵌入了透明金属电极层。当你的手指靠近屏幕时,它会引起电极感应到的磁场扰动。 FIG_002 因为电极以网格形式排列,它们可以将扰动的 x 和 y 坐标报告给操作系统。非常巧妙。 或者你可能想知道为什么我们称之为 Gaussian blur(高斯模糊)?当我们模糊图像时,我们会查看所有相邻像素,并将它们乘以一个称为 kernel(卷积核)的权重矩阵。 FIG_003 最常见的 kernel 类型具有 Gaussian distribution(高斯分布),这意味着它在中间更强,在边缘更弱。这样可以产生更真实的模糊效果,而不会在计算上过于昂贵。 也许你一直想知道 Figma 中的钢笔工具是如何工作的,以及当你移动那些手柄时,它们实际上做了什么。 t = FIG_004 它们控制着 Bezier curve(贝塞尔曲线)上的点,这是一种很酷的数学方法,我们用它来绘制矢量图形中的曲线,比如字体和 SVG。 但当然,我们的屏幕由像素组成,难以显示平滑的曲线。所以我们必须获取这些曲线,并弄清楚如何显示它们,以便它们尽可能准确地代表形状。 FIG_005 这被称为 Rasterisation(栅格化),但它并不像看起来那么简单,我们需要一堆巧妙的技巧,比如 Anti-aliasing(抗锯齿),来欺骗我们的眼睛,让我们以为我们看到的是直线。
如果你曾经对这些事情感到好奇,或者它们激发了你的好奇心,那么这本书就是为你准备的。 这本书不会教你如何真正制作软件——它不是教程或指南,而是比这更有趣的东西。它是一本手册,解释了你每天使用的东西实际上是如何工作的。 随着我们周围的一切变得更加复杂,我们对技术的理解也在减弱。过去,我们需要深入了解我们的工具,但今天我们以一种浅显、抽象的方式理解它们。 它不会让你明天成为更好的设计师或程序员——这里面没有任何可操作的东西。但了解事物的工作原理在你发现自己力不从心时会派上用场。或者至少,你可以在朋友面前装聪明。 你不需要具备技术背景才能阅读本书——有很多图片和图表来完成繁重的工作。你只需要保持好奇心。
MAKING SOFTWARE FIG_006[ 阴极射线管显示器 ] © 1980
注册以获取更新:
我保证只会给你发送很酷的东西。章节草稿,进度更新,我正在制作的插图的先睹为快。诸如此类的东西。 加入邮件列表
目录 [v1.0]
[ 章节:8 ⋅ 文章:46 ]
- 像素与颜色
- 屏幕是如何工作的? ─┘
- 触摸屏 ─┘
- 什么是图像? ─┘
- 色彩空间、模型和色域 ─┘
- 为什么计算颜色对比度如此困难? ─┘
- 渐变和感知均匀性 ─┘
- 混合模式背后的数学原理 ─┘
- 字体与矢量
- 绘制曲线 ─┘
- Rasterisation 和 Anti-aliasing ─┘
- SVG Viewbox ─┘
- SVG paths ─┘
- SVG filters ─┘
- 使用形状进行数学运算 ─┘
- 3D 与着色器
- GPU 是如何工作的? ─┘
- 什么是 Shader? ─┘
- Signed Distance Fields ─┘
- 模糊、噪声和其他效果 ─┘
- 投射、行进和追踪光线 ─┘
- 3D 投影 ─┘
- AI 与 ML
- Machine Learning 与神经网络 ─┘
- LLM 是如何工作的 ─┘
- Attention is all you need ─┘
- 生成图像 ─┘
- AI 基础设施是如何工作的 ─┘
- 压缩与数据
- 什么是字节? ─┘
- 二进制、十六进制和十进制 ─┘
- Entropy(熵) ─┘
- Lossless vs Lossy(无损 vs 有损) ─┘
- Cryptography(密码学) ─┘
- 图像压缩 ─┘
- CRDTs ─┘
- 网络与 Web
- 什么是浏览器? ─┘
- 客户端与服务器 ─┘
- DNS lookup 是如何工作的? ─┘
- 协议 ─┘
- Serialisation(序列化) ─┘
- Streaming(流式传输) ─┘
- 什么是缓存? ─┘
- 编译器与解释器
- 代码是如何运行的? ─┘
- 什么是解释器? ─┘
- 什么是编译器? ─┘
- 什么让代码更快? ─┘
- 杂项
- Regular Expressions(正则表达式) ─┘
- QR codes(二维码) ─┘
- 指纹传感器是如何工作的 ─┘
- Quantum computing(量子计算) ─┘
FIG_007[ 3.5" 硬盘驱动器 ] © 2003
常见问题
NO| 问题| 答案 ---|---|--- 01| 这会是一本实体书吗?| 一开始不会。它将是一本数字书,可能可以选择下载 PDF。如果有足够的兴趣,我很乐意进行印刷,但这是一个更大的项目。 02| 什么时候发布?| 我还不完全确定。我很想在今年欧洲夏季之前发布。为所有东西绘制插图需要做很多工作,所以你可能需要耐心等待。 03| 如果我现在就想要呢?| 我将进行预售,您可以访问已经编写的章节。随着我推出新的草稿,您将看到每一章慢慢形成。 04| 你能写关于 x 的内容吗?| 如果你加入预售,你可以帮助塑造这本书的一些主题。我一直在寻找要添加的内容,但不能保证任何事情。 05| 这会花费多少钱?| 我也不确定,但它会花费一些钱。大部分内容将是免费的,特别是如果你在邮件列表中。 06| 你们提供折扣或 PPP 吗?| 不,主要是因为我没有时间管理任何这些。我每天都会收到关于它的电子邮件,我跟不上。 07| 你是如何制作插图的?| 手工在 Figma 中制作。没有什么秘密——它和看起来一样复杂。 08| 那是什么字体?| Departure Mono。
注册以获取更新:
我保证只会给你发送很酷的东西。章节草稿,进度更新,我正在制作的插图的先睹为快。诸如此类的东西。 加入邮件列表 当前进度:███▓▒░░░░░░░░░░░░
| making software | 一份面向软件设计和构建人员的参考手册。由 Dan Hollick 编写并绘制插图 | © 1990 |