## 终端 Unicode 支持:2024 年更新
本文是对 2023 年“终端模拟器大乱斗 – Unicode 版!”的后续,使用 `ucs-detect` 工具进行更新测试,该工具现在能够自动检测对 DEC 私有模式、六边形图形、像素大小和软件版本的支持。核心挑战依然是:在固定宽度网格内准确渲染 Unicode 的庞大范围。终端经常错误计算字符宽度,导致对齐问题和难以阅读的文本。
**Ghostty** 和 **Kitty** 成为表现最佳的终端,其中 Ghostty – 一个用 Zig 构建的新终端 – 展现了特别正确的 Unicode 实现。Kitty 的文本分割算法与 Python `wcwidth` 规范紧密一致,凸显了对 Unicode 标准的共同承诺。
测试揭示了显著的性能差异;**iTerm2** 和 **GNOME Terminal** 明显较慢。作者优化了 `wcwidth` 库,发现其现有的 LRU 缓存二分查找对于重复性的人类语言来说最有效。
该研究还发现了不一致性(例如 **Terminology** 的结果波动)和报告方面的局限性(例如 **Konsole** 和 **Contour** 的 DEC 私有模式支持)。展望未来,新兴的 **文本尺寸协议** 为可变大小的文本提供了一条有希望的途径,可能提高复杂脚本的可读性并增强可访问性。
## 点积:加权求和
本章解释了点积的概念,将其作为一种执行加权求和的方式,最初通过一个相关的城市选择场景来说明。 不仅仅是简单地将天气和负担能力等标准的分数相加,点积允许你*加权*某些标准,使其更重要。
从数学上讲,点积是对两个向量执行的一种运算——将对应的元素相乘并求和。 这通过涉及城市分数以及令人惊讶的明尼苏达彩票的期望值的例子来演示。 在彩票示例中,奖金是一个向量,而赢得每个奖金的概率构成第二个向量。
本质上,点积不是直接组合向量,而是使用加权值*与*向量一起执行单独的计算。 这一看似简单的操作至关重要,因为它构成了更复杂计算的基础,例如矩阵乘法,这将在下一章介绍。
## Geonum:一种基于几何的科学计算方法
传统的科学计算严重依赖标量和多维数组(矩阵、张量)来表示几何信息,这导致了计算复杂度——尤其是在维度增加时。Geonum 提供了一种根本不同的方法,即直接将几何编码到数字中,并使用角度作为核心组成部分。
Geonum 不像通过坐标堆叠来构建维度,而是使用“叶片”来表示旋转状态,有效地通过 π/2 旋转来创建维度。这大大降低了计算开销。例如,传统上用 2<sup>n</sup> 个分量来表示 n 维向量;而 Geonum 仅用 *两个* 值即可实现:长度和角度。
这种以角度为中心的设计能够实现诸如雅可比计算和张量运算等任务的常数时间操作 (O(1)),这与传统方法的立方体扩展 (O(n³)) 形成鲜明对比。主要优势包括无需伪标量、简化对偶运算以及通过角度旋转实现高效微分。
Geonum 的核心数据结构 `Geonum` 结合了长度和角度,从而实现无维计算。它旨在统一和简化数学基础,其应用涵盖物理、金融和机器学习等多个领域。