《Unix 编程艺术》 第十八章 文档
我从没见过一个愿意阅读 17000 页文档的人,如果有,我会杀了他,这样人的基因必须抹去
—— Joseph Costello
#18.1 文档概念
所见即所得(WYSIWYG)的文档程序同以标记为中心的工具之间的差异。
- 大多数的桌面出版程序和字处理器都属于前者::具备图形用户界面、键入的文字可以真接插入到文档在屏幕上的表示之中,并尽可能地接近最终的打印版本。
- 在以标记为中心的系统中,相对应地,主文本通常就是包含明确可见控制标记的纯文本,跟期望的输出完全不同。标记的源文件可以由普通的文本编辑器修改,但必须传入某个格式器程序来渲染输出以供打印或显示。
实话实说,WYSIWYG 的文档处理器并不真正所见即所得。大多数程序的界面,并没有真正消除屏幕显示和打印输出的差异,只是让你看不出来而已。这样做其实违反了最小立异原则:界面的可视部分鼓励将程序作为打字机使用,但实际上并不能这么用,而你的输入又时不时地产生无法预料或是非期望的结果。
再实事求是点,WYSIWYG 系统实际依赖的是标记码,只不过额外支付了巨大的努力以期将此隐藏在一般使用中。这又违反了透明原则:因为无法了解所有的标记,就难以标记位置错误的损坏文档。
#18.2 Unix 风格
#18.2.1 大文档偏爱
对不透明二进制文档格式的厌烦情绪——尤其是不透明的专有二进制格式——也在拒绝 WYSIWYG 工具的过程中起到了一定作用。
另一方面,PostScript(图像打印机的现行控制语言标准)刚可以使用,Unix 程序员就投入了极大的热情;这门语言整洁优美地符合 Unix 传统的域专用语言。现代的开源 Unix 系统都有优秀的 PostScript 和可移植文档格式(Portable Document Format,PDF)工具。
#18.2.2 文化风格
Unix 手册页传统上也包含一个叫做 BUGS 的部分。在其它地方,技术作者为了让软件产品看起来更漂亮,常常省略或一笔带过那些己知的 bug。
而在 Unix 文化中,同行彼此瓦相事无巨细地揭露软件的已知缺陷而用户也认为一个简单但详细的 BUGS 部分是高质量软件的表征。
隐瞒了 BUGS 部分或是改头换面为诸如 LIMITATIONS 或 ISSUES 或 APPLICATIONUSAGE 等轻描淡写词语、从而打破这个约定的商业 Unix 发布版本,无一例外地走上了不归之路。
#18.3 各种 Unix 文档格式
#18.3.2 Tex
TEX 是个威力强大的排版程序,如同 Emacs 编辑器一样,最初也来自 Unix 文化之外,但现在却在 Unix 文化中落地生根。它是由著名的计算机科学家 Donald Knuth 在 1970 年代晚期发明的,那时的他腻烦了印刷排版的一一特别是数学方面的一一排版质量。
人们通常也不需要手工编写大量原始的 TEX 宏:而是使用宏命令包以及各式各样的辅助程序。一个特别的宏命今包,LATEX,几乎无所不能,而且大多数人所谓在使用 TEX 创作时实际上几乎总是指用 LATEX 编写。
TEX 一个通常用户不可见的重要用法就是,其它文档处理工具宁愿生成 LATEX 来转换成 PostScrint,而不是尝试自己生成 PostScript。
#18.6 编写 Unix 文档的最佳实践
数量多不会被认为是质量高。尤其是,决不要因为害怕别人看不懂而省略功能细节,也决不要为了面子而不对存在的问题提出警示。不愿坦露问题才会损害信誉和用户,坦白的问题则不会。
如果项日规模比较大,应该发布三种不同的文档:手册页作为参考资料,教程手册和常见问题解答列表。
手册页应该为传统的 Unix 用户以传统风格的命令引用形式早现。考虑非技术用户入门手册应该多用全称,少用缩写。而 FAQ 应该随着软件支持群体对软件常用问题及如何回答的深入了解而不断改进。