通过"理论计算机科学主题",我指的是诸如常规语言和非常规语言,抽取引理和语法之类的东西.
我熟悉有限自动机和正则表达式的实际应用,但是这些其他主题给我带来了更多问题,因为我没有看到任何真实世界的应用程序.
如果你想知道尝试做某事对正则表达式是徒劳的,这些东西很有用.例如,如果用正则表达式解析XML的想法进入你的脑海,那么知道XML是非常规的是很有用的.如果您不清楚XML是非常规的,那么泵浦引理将让您轻松地证明它.
然后是编译器,如果你不知道这些东西,那你就注定了.这只取决于应用程序.
这是Steve Yegge对编译器有用性的看法,总结如下:
事实上,编译器构建是我自己的谦虚而且可能是令人尴尬的错误观点,是你可以参加本科计算机科学课程的第二个最重要的CS课程.
语法对于解析递归结构至关重要,递归结构出现在编程语言,自然语言和复杂数据结构中.我相信一些程序员根本不会遇到它们,但编写编译器,IDE,序列化等的人会遇到很多.
正如Yuval F指出的那样,语法对语言解析至关重要.如果你看一下解析器生成器,比如ANTLR,你会发现语法结构与你在学校学到的结构非常相似.