## Picol:一个微型的Tcl类解释器 Picol是一个500行的C语言解释器,于2007年发布,设计目的是作为学习工具和实践C语言编程风格的演示。它不像追求最小的代码量,而是以清晰和功能为目标——能够运行非平凡的程序,而不仅仅是“Hello World!”。 该解释器具有受Tcl启发的语法,包括字符串插值(例如,`set a "pu" set b {ts} $a$b`)、具有适当作用域的用户自定义过程,以及`if`、`while`(带有`break`和`continue`)和递归等控制流结构。基本的算术运算(+、-、*、/)和`set`和`puts`等命令也受支持。 Picol的一个关键方面是其手工编写的解析器,它占据了大约250行代码。它识别标记并构建一个解析结构,该结构由`picolEval`函数用于执行程序。变量和命令替换在评估期间处理,利用调用帧来管理过程作用域。 Picol在GitHub上可用,作为解释器设计和解析器实现的存档示例。可以使用`gcc -O2 -Wall -o picol picol.c`编译它,并使用`picol filename.tcl`运行它。
罗伯特·沃尔克(Robert Wolke)的“美食101”专栏解释了铝箔的起源以及亮面和暗面的区别。最初被称为“锡箔”,因为19世纪时它是由锡制成的(灵感来自爱迪生的留声机),现在几乎完全由铝制成。
两种不同表面是制造过程的结果。铝在钢辊之间轧制;最后的工序使用两张面对面压制的薄片。外表面因与抛光辊接触而变得光滑,而内表面则相互挤压,形成哑光表面。
然而,沃尔克澄清说,**使用哪一面烹饪并不重要**——性能相同。有趣的是,铝是地球地壳中最丰富的金属,尽管人们普遍认为,锡箔帽并不能阻挡无线电信号!
## 排版引擎基准测试:速度 vs. 控制
speedata Publisher (sp) 的开发者进行了一项基准测试,将其性能与 Typst、pdflatex、LuaLaTeX、WeasyPrint 和 Apache FOP 进行比较,任务是邮件合并——用数据填充信件模板以生成 PDF。
**测试结果:** 对于单页文档,sp 和 Typst 的速度相当(约 100 毫秒),明显快于其他引擎。 然而,对于 500 页文档,**Typst 显著优于所有其他引擎**,仅用时 157 毫秒——大约比 sp 快 28 倍。 这种速度得益于 Typst 更简单的断行算法。
**但速度并非一切。** 虽然 Typst 在快速处理方面表现出色,但 sp(和 pdflatex)使用 Knuth & Plass 算法实现更好的文本对齐,避免了 Typst 输出中存在的不均匀间距和断字问题。
**关键区别在于复杂布局。** 基准测试显示 sp 在 *自适应布局* 方面具有优势——自动调整内容以适应可用空间,这对于产品目录等任务至关重要。 Typst 在这方面遇到困难,需要手动计算并且缺乏内置的动态页面填充功能。 其他工具表现更差。
**结论:** 对于邮件合并等简单任务,**Typst 在速度方面是明显的赢家。** 然而,当布局需要智能内容调整和精确排版时,**sp 提供了其他引擎所不具备的功能**,即使这意味着牺牲一些处理速度。 该基准测试强调,“最佳”工具很大程度上取决于排版任务的复杂程度。
您可以在 [GitHub](链接未在文本中提供) 上找到完整的基准测试设置。