AWK 语言创作者 Dr. Brian Kernighan 的简短采访
这是一篇2022年11月15日,一次对 AWK 语言创作者 Dr. Brian Kernighan 的简短采访。当然 AWK 通常作为一个命令行工具使用,但本质上 AWK 也属于一种编程语言。
Dr. Brian Kernighan 是一位加拿大计算机科学家,他在贝尔实验室参与了 UNIX 的开发。他与 Dennis Richie 合著了一本关于 C 语言的基础书籍《The C Programming Language》。自2000年以来,他一直在普林斯顿大学教授新一代程序员,并在计算机科学界做出了巨大的贡献。他编写了第一个有记录的“Hello World!”程序,因此我们向他说,“你好,Brian!”。
- Awk 中是否有一些尚未被采用的新颖想法?
Dr. Kernighan: Awk 的主要概念是关联数组,这在当时是新颖的,但现在大多数语言中都以库函数(如 Java 或 C++ 中的哈希表)或直接在语言中(如 Perl 和 Python 中的字典)的形式出现。关联数组是一种非常强大的构造,可以用来模拟许多其他数据结构。
我想模式-动作范式在当时并不新颖,但也不广泛使用。这是一种组织某些类型计算的有效方法。
- 在你开发编程语言时,你参考了哪些资料?
Dr. Kernighan: 没有?这是很久以前的事了(想想1970年代),而且我参与的语言都是新的和特殊用途的,所以没有太多现成的资料。当然,一个重要的工具是 Yacc,它使创建和实验语法变得非常容易,并能将其转换为高效的解析器。Lex 在词法层面上也做了同样的事情,再次用一组规则取代了大量的繁琐代码。Lex 当然是模式-动作语言的一个例子;可以说 Yacc 也是如此,所以这是一种良性循环。
- 对于今天想进入编程语言设计领域的年轻人,你有什么建议?
Dr. Kernighan: 尝试设计和实现小型的、特殊用途的语言。它们非常有趣,通常非常有用,而且比尝试创建 Rust 或 C++ 的替代品要容易得多。寻找那些可以通过合适的语言来描述步骤并实现自动化的任务,然后创建一个简单的编译器和运行时。Jon Bentley 很久以前写了几篇关于这方面的文章,至今仍然具有参考价值。