在现在,作为一个程序猿不可能不知道编译原理的大名,编译原理可以说是一个计算机科学的缩影,是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。
编译原理是计算机专业设置的一门重要的专业课程。如果能够熟练的运用编译原理,无论是对于我们的生活还是工作都有极大的促进作用。
虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。
有人可能认为编译原理并没有什么用,但是其思想会让你受益终生,让你能够运用编译原理去实现“上帝”的感觉,能够对自己写的程序有更加深刻的认识。
其实编译原理不学看起来也好像并没有什么,但以后你估计成为一辈子码农,想要有更大的进步空间是没有多大可能了,虽然编译原理在工作中不常用,但也不是一定用不到,任何事物都有其存在的必要,要不然编译原理也不可能存在于世,等真正要用到编译原理的时候,临时抱佛脚,也不知道来不来得及,学多一门技术防身也是不错的,毕竟编译原理对于我们程序猿来说也有不小的启发和帮助。
很多人觉得学编译原理很难,我也查了一下资料,在刚开始的时候就不要去看什么《龙书》、《虎书》之类的高难度编译原理方面的书籍,那样会严重打击自己的耐心和信心,选一些比较简单的书籍进行学习,最简单的应用,可以放下词法、语法分析等概念,直接用你会的语言去实现,有时你会发现写得很”绕“,虽然有了正则表达式会方面不少,然后你可以试着用各种工具:yacc/lex, ANTLR, flex/bison, parsec, ply..用什么无需计较,顺手、达到目标就行。这些工具通常只是方便词法、语法分析, 语义上的要自己处理,不满于处理简单的文本,想分析真正意义上的程序语义,或者希望深入理解自己所用工具的原理,这时候你可以去看那些理论的书了。
如果真的说如何学习编译原理,我想最好的办法就是练习、实践。虽然编译原理被冠以原理二字,但是我认为这也是一个高度实践的课,而且编写的代码是每一步都需要小心处理的,如你编写的Parser的产生式,只要修改一个小地方,都会如同蝴蝶效应般影响非常大。总的来说,我认为学习编译原理的一个办法就是安静下来,耐耐心心的读一本经典的编译原理教材,然后做完每一道习题,随后再自己编写一个玩具编译器,你可以借助LLVM的力量轻易达到这一点儿。
还是那句话,一切走心,虽然现阶段编译原理对我们来说还很陌生,但对于科技日益发展的今天,等我们出去工作了之后所不定就普遍运用了,编译原理还是很重要滴。