2012-10-18

来源:互联网 发布:java基础代码题 编辑:程序博客网 时间:2024/06/05 11:25

这几天在看西交大的公开课《编译原理》,在我学到非确定自动机时,想起来以前做的一个项目。那时我想用自动机的模型,但是状态太多,导致了很重复,我直觉感到这些重复是可以消除的,但是通过什么方法去消除,我感到有一种很简单的方法,但是我却找不出来,让我如梗在喉非常不爽,在学了编译原理之后,我才知道,这种方法就是非确定自动机转化确定自动机的子集算法。


通过这件事让我感到,写软件是非常不容易的。单编译软件来说,功能可以用一句很简单的话来描述——把源代码转化为可执行程序。这个功能乍一看非常简单,可以人们为实现这个简单的功能,发明了一系列的工具或概念,如语法分析器,语义分析器,有限自动机,正规式,正规集,生成式,闭包,ε-CLOUSURE闭包,非终结符,终结符,文法等,才终于把这个问题研究透了。


可是世界的软件何止千千万万,但是有多少软件能达到对编译软件透彻程度?人们还对编译原理特地开设了一门课。编译用软件工程的角度来说,是一个领域。有限自动机是这个领域的模型,发现了这个模型成立的许多概念。

原创粉丝点击