编程珠玑番外篇-P PostScript 语言里的珠玑
这篇讲的是编程语言设计史上的一个独特案例。作者将PostScript称为通过图灵奖得主Perlis“语言影响思维”测试的典范,深入剖析了这门为桌面出版而生的语言,其设计中蕴含的至今仍闪光的“珠玑”。 文章从语言设计者的视角出发,还原了如何为桌面出版构建一个灵活、高效且设备无关的描述语言。作者重点剖析了PostScript几个超越时代的设计:它基于栈的逆波兰表示法,带来了极致的语法简洁;更令人叫绝的是,用闭包来定义度量单位(如`/inch {72 mul} def`),这不仅是个语法技巧,更揭示了度量单位本质上是一种“后缀闭包”的抽象。 PostScript的“字典栈”设计则是一次精彩的工程实现,它让栈语言能优雅地支持作用域和局部变量,甚至实现了类似词法作用域的特性。而文中提及的、由行业实践催生的“文档结构约定”,则可视为后来Java、Python中注解(Annotation)或装饰器(Decorator)思想的早期实践,通过引入元信息来约束和检查程序的语义正确性。 整篇文章不仅是一次语言考古,更展示了如何从一个具体领域的深刻理解中,提炼出具有普适性的、简洁而强大的编程模型。作者最后也提到,PostScript的许多设计深受同时期Smalltalk的影响,这让我们看到技术思想在历史中的交汇与传承。