作者回复: 易昊的分享让我很感动。借着易昊这篇文章,我也分享一点看法。 我觉得中国可以有更多的软件工程师,把像编译原理这样的基础知识吃透,那我们的软件行业的整体水平会提升一大截。 我前一阵在北京跟某公司老总探讨一个优秀的行业应用软件。那个软件是上世纪90年代就被开发出来,也被我国广泛采用。它一方面是个应用软件,另一方面其本身也是一个开发平台,所以可以经过定制,满足不同行业的需求。 任何优秀的软件,必须同时是一个开发平台。这是《黑客与画家》的作者表达的思维。他原来的意思是,每个软件写到最后,都会包含一个Lisp的变种。实际要表达的意思跟我说的一样。 但是,我们国内的软件行业的情况是,在去客户那里实施的时候,几乎总是要修改源代码,否则就不能满足用户的个性化需求。 很多软件公司想去克隆一下我刚才说的那套软件,结果都放弃了。除了对领域模型理解的困难以外,缺少把一个应用软件做成软件开发平台的能力,是其中很大的一个障碍。 目前在很多领域都是这样。国外的软件就是摆在那里。中国的工程师就是做不出自己的来。 有多难么?如果你经历了学习编译原理的过程,你会像易昊不再惧怕计算First和Follow集合那样,不会对实现这样的软件心存恐惧。心里不怕了,才有可能行动起来。 学编译原理学到了什么?学到了计算机的一些基础原理,一些数据结构和算法。前端有几个算法,优化方面有不少算法,后端也有几个算法。你会发现,任何软件,只要里面有几个扎扎实实的算法,别人就很难模仿和逾越。很多软件工程师,写了很多年的软件,其实连一个算法也没有用过。这种软件当然不会有什么竞争力。总是做这样的工作,水平也提不上去。 做一个软件工程师很容易,但要成为一个优秀的软件工程师,须要“心”先过关。 做一款软件也很容易,但要做那种优秀的软件,其设计者也必有一颗不凡之心! 跟易昊及各位同学共勉!