程序员是不是一定要懂编译原理?
不是。 非要说的话,就像 说的那样,你可以学不好,但不能不了解。 然后你再去看编译原理的时候就发现只是把上面我提到的那些给你细化来讲而已。 <del>说到数学对程序员影响大的,也就Category theory了吧。</del>
你可以不去了解细节和优化,但你总会在业务需求变复杂的时候遇到类似的问题(各种parsing或者interpreting),然后用其他的方式来解决。
比如Interpreter pattern和Domain-specific language。
当然偷懒一点,也可以用Regular expression或Pattern matching。数学用处大不大跟问题领域很相关。不过我觉得离散数学里有好多东西都可以在日程编程里用到。什么逻辑、图论、拓扑之类的。