程序员的三大浪漫之一——编译原理

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法。内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成。 编译原理是计算机专业设置的一门重要的专业课程。虽然只有少数人从事编译方面的工作,但是这门课在理论、技术、方法上都对学生提供了系统而有效的训练,有利于提高软件人员的素质和能力。

我认为,既然编译过程是将一种语言翻译为另一种语言的计算机程序的过程,顾名思义,编译原理就是为我们解释计算机是如何将一种语言翻译成另一种语言这个问题而生的。

编译原理很难,在网上看到这句话:“知道你写的程序编译器是怎么编译的,学好了以后可以开发编译器(那要很牛很牛)。更现实点的好处是学会使自己写的程序更优,提高程序的效率。”我觉得很受用。的确,编译原理是锻炼程序员的思维的!它不会交给你怎么编程序,但是,你会从中学到怎么想问题。这门课很值得学习,且,技多不压身。学好编译原理可以基本囊括所有需要的技术,锻炼脑力,同时可以有广泛应用,更本质上说,让你理解你天天用的语言,这是优秀程序员需要具备的专研精神 。“程序语言和编译器是连接人和机器的桥梁,本质是个以人为本的学科分支,是在寻找程序员写得爽和机器跑得快之间的平衡点,因此不仅仅是一套数学模型一组自动机。”我想,如果能够学好编译原理,程序员可以解决很多编译过程中产生的疑惑,豁然开朗的那一刻,便是求知过程所得到的最好的回报。

大家对于学为何要学编译原理这个问题褒贬不一,有人说这门课程太难啃了,而且以后出来工作的时候基本用不到。但是,有学不一定有用,不学肯定没用。编译原理是一门基础的课程,基础的东西学好了,以后用的时候就知道基础的重要性了。

如何学好编译原理?我也很想知道怎样学效率高一点。按照我以往的学习模式,我认为:(1)上课跟上老师的步伐,课前预习,课后复习;(2)多从网上或图书馆找一些关于编译的书来学习。我觉得,感不感兴趣这个问题很重要,如果感兴趣的话,我想学习的过程中就不会觉得有那么辛苦了,兴趣是提高学习效率的一个捷径。

时间: 2024-12-23 15:30:14

程序员的三大浪漫之一——编译原理的相关文章

优秀Java程序员必须了解的GC工作原理

一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能. 一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能.本篇文章首先简单介绍GC的工作原理之后,然后再对GC的几个关键问题进行

【转】优秀的Java程序员必须了解GC的工作原理

一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能.一个优秀的Java程序员必须了解GC的工作原理.如何优化GC的性能.如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统.实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能.本篇文章首先简单介绍GC的工作原理之后,然后再对GC的几个关键问题进行深

程序员也可以浪漫----倾情奉献一份你值得拥有的浪漫网站源码(情人节快来了~)

先说个好消息吧,我2015年2月12号就要订婚啦~~总算脱离程序员光棍生涯~~不得不说这个网站给了我很大的帮助!所以,我就想把这份源码也园子里的广大朋友们,希望在你们的爱情之路上,能发挥一点点的能量,我足矣~ 先祝大家 情人节快乐~~咱们程序员也很浪漫的~哈哈.. 一.申明 申明一.此网站的很多内容都不是本人独创,剽窃了很多的网上前辈的源码,但是我木有用在商业应用上面,应该没事吧,敬请谅解!~ 申明二.下面给的软件地址,绝无推广之意,只是在平时用到了,感觉well,所以才推荐的. 二.先瞄下网站

程序员必知之浮点数运算原理详解

导读:浮点数运算是一个非常有技术含量的话题,不太容易掌握.许多程序员都不清楚使用==操作符比较float/double类型的话到底出现什么问题. 许多人使用float/double进行货币计算时经常会犯错.这篇文章是这一系列中的精华,所有的软件开发人员都应该读一下. 随着你经验的增长,你肯定 想去深入了解一些常见的东西的细节,浮点数运算就是其中之一. 1. 什么是浮点数? 在计算机系统的发展过程中,曾经提出过多种方法表达实数. [1]典型的比如相对于浮点数的定点数(Fixed Point Num

【转载】程序员必知之浮点数运算原理详解

https://blog.csdn.net/tercel_zhang/article/details/52537726 导读:浮点数运算是一个非常有技术含量的话题,不太容易掌握.许多程序员都不清楚使用==操作符比较float/double类型的话到底出现什么问题. 许多人使用float/double进行货币计算时经常会犯错.这篇文章是这一系列中的精华,所有的软件开发人员都应该读一下. 随着你经验的增长,你肯定 想去深入了解一些常见的东西的细节,浮点数运算就是其中之一. 1. 什么是浮点数? 在计

99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏!!!

罗曼罗兰说过:世界上只有一种英雄主义,就是看清生活的真相之后依然热爱生活. 对于 Lombok 我相信大部分人都不陌生,但对于它的实现原理以及缺点却鲜为人知,而本文将会从 Lombok 的原理出发,手撸一个简易版的 Lombok,让你理解这个热门技术背后的执行原理,以及它的优缺点分析. 简介 在讲原理之前,我们先来复习一下 Lombok (老司机可以直接跳过本段看原理部分的内容). Lombok 是一个非常热门的开源项目 (https://github.com/rzwitserloot/lomb

黑马程序员__三大特性

三大特性 封装 封装是把成员变量包装起来,不让外界直接访问.根据成员变量的作用域,默认都是protect类型的. set 和get方法 有时候我们必须要访问成员变量,但是成员变量被封装起来了,这时候我们就可以用set或者get方法来间接访问成员变量,这样可以确保数据的安全性 1 #import <Foundation/Foundation.h> 2 3 @interface Score : NSObject 4 { 5 int _cScore; // C语言成绩 6 int _ocScore;

黑马程序员---java反射机制的实现原理

------- android培训.java培训.期待与您交流! ---------- 反射机制就是java语言在运行时拥有一项自观的能力. 通过这种能力可以彻底的了解自身的情况为下一步的动作做准备. 下面具体介绍一下java的反射机制.这里你将颠覆原来对java的理解. Java的反射机制的实现要借助于4个类:class,Constructor,Field,Method: 其中class代表的时类对象, Constructor-类的构造器对象, Field-类的属性对象, Method-类的方

学编译原理须知

1.编译原理就是什么?顾名思义,“编译”就是翻译,“原理”就是在实践中得出的普遍的,一般的规律.但是,从计算机科学的角度看,我个人觉得,编译原理就是将计算机的程序设计语言进行翻译,生成可供用户直接执行的二进制代码,即可执行文件.2.学习编译原理有什么好处?对于高级程序员来说,学习编译原理可以编写出高效,稳健,占用内存少的程序.增长自己的知识.而对于普通程序员来说,掌握正则表达式,了解dfa/nfa,能读懂BNF,知道AST,会写简单的递归下降parser,会用antlr之类的parser gen