欢迎光临散文网 会员登陆 & 注册

小而美几个项目:troff实现,C编译器……

2022-03-31 14:00 作者:clerk_ma  | 我要投稿

作为一个挖坑不填,拖更多年甚至快失踪了的TeX开发者,我也并不是只看TeX相关的项目。

我也研究过troff,这个项目是很有意思的。这软件出现在1971年。Knuth在思考自己要用的排版软件的时候,是思考过troff的。

从1971年开始,有相当数量的技术书其实是通过troff来排版的。感兴趣的朋友们可以通过七八九十年代的版权页来判别。

现在troff的使用,还是有。但是普通用户就很少了。不过这东西的好处是模块化。基本上一个功能,就是一个程序来控制,比如有画数学公式的,画流程图的,画化学式的。(这里我有一个关于Markdown的天坑想法,这里装不下,就不写了)

今天要介绍的是Ali Gholami Rudi的几个项目。这人是伊朗的一个大学——Babol Noshirvani University of Technology——的一个Assistant Professor。他在Github上放了一些自己写的项目。

他写的几个troff相关的项目,分别是:neatroff(troff实现的本体部分),neateqn(数学公式排版部分),neatpost(postscript代码生成部分),neatmkfn(字体数据生成部分)。

这个troff和gnu troff的区别,就两点,一是小,二是支持OpenType。当然了,它对于OTF的支持,路径可能比较复杂,甚至不一定比在TeX里面用OTF简单。支持OTF的另一个troff引擎,是heirloom troff,不过这软件属于多年未更新,且因为许可证的问题,在很多Linux发行版里面都找不到。

再说neatroff的小。这种级别的项目,真能写得得心应手,一是要熟悉算法和数据结构,另外就是极度熟悉C语言。这样写出来的东西,总有一股小而美的味道。但是这种“小而美”确实还是很难的,就如Fabrice Bellard写tcc和qemacs,是没有什么心结的,写的很痛快,但是不熟悉算法和语言的人看起来就会有一些痛苦了。

Ali Gholami Rudi写的另外的几个有趣的项目,是关于C编译器的,即neatcc(编译器),neatld(连接器),neatlibc(libc标准库)。编译器这东西,虽然本质上,就是从一种文本转换为另一种文本(哪怕是二进制的),但是在没有引导的情况下,一般人是很难上手的。这几个项目看起来是很有意思的。

关于C编译器设计的书,其实不少,比如Allen Holub的Compiler Design in C,比如Dave Hanson和Chris Fraser的A Retargetable C Compiler: Design and Implementation,比如James E. Hendrix的A Small C Compiler。

当然,读了多少书,不如写多少的代码。

小而美几个项目:troff实现,C编译器……的评论 (共 条)

分享到微博请遵守国家法律