大三开学第一天--编译原理和人工智能的初步入门

开学的第一天,学的都是入门,所以知识比较少,但是我还是会整理出来。因为是开学第一天,事情比较忙,知识没有得到很好的消化和了解,所以今天只作初步了解,过几天会找时间重新整理,具体化。

编译原理第一课:

  编译器:编译器是一种语言处理器,可以将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”。通俗的讲,就是我们目前所使用的高级语言,如C++,java,都是易于人们理解和编写的。但是对于机器来说,只能看懂机器语言(即汇编语言,属于低级语言)。所以,人们用高级语言写出来的代码,首先要经过编译器,编译成机器可识别的低级语言,才能被机器正确的执行。

  解释器: 解释器是另一种常见的语言处理器,又称直译器,就是一种能够把高级编程语言一行一行直接转译运行的程序,一般用于解释性语言,如php,postscritp,javascript,python。

  编译器与解释器的不同: 编译器是把整个源代码编译成目标代码,执行时不在需要编译器,直接在支持目标代码的平台上运行,而解释器则是编译一行代码即执行一行代码,因此,在效率上来说,编译器的效率要比解释器高。但是由于解释器是一行一行的编译执行,所以在错误诊断方面,解释器效果更好。

  编译器与解释器的相同点:细化到编译单行来看,编译器和解释器的处理方式和结构是差不多的。在编译单行代码的时候,解释器和编译器都要进行词法分析、语法分析和语义分析,之后,二者开始有所分别。解释器在语义分析后选择了直接执行语句;编译器在语义分析后选择将将语义存储成某一种中间语言,之后通过不同的后端翻译成不同的机器语言(可执行程序)。如图(参考博客 http://www.cnblogs.com/sword03/archive/2010/06/27/1766147.html)

  

  在这里还要了解一下编译器的结构:编译器可分为分析部分(前端)和综合部分(后端),分析部分就是通过词法分析,语法分析,语义分析将源程序分解成多个组成要素,并在这些组成要素上加上语法结构,然后使用这个结构来创建该源程序的一个中间表示(即上面的中间代码)。分析部分还会收集有关源程序的信息,并把这些信息存放在一个称为符号表(symble table)的数据结构中。符号表将和中间表示形式一起传送给综合部分(后端)。而综合部分(后端)根据中间表示(中间代码)和符号表中的信息来构造用户期待的目标程序。如实例图(顶部是一个待处理的赋值语句,lexical analyzer为词法分析,syntax analyzer为语法分析,semantic analyzer为语义分析,省略了综合部分(后端))

好吧,由于时间较为紧迫,编译器的初级介绍就到这。周末回来,继续完善本周编译原理所学的知识。(希望周末可以带来安卓的基本教程,往后还会有ps,C#的教程,一步一步来,干巴爹 ^_^)。

时间: 2024-10-08 21:06:48

大三开学第一天--编译原理和人工智能的初步入门的相关文章

记大三开学的第一个月末

时间是一把杀猪刀,憔悴了学长,妩媚了学姐. 曾经在有篇文章中说道过,从大一到大三,女生肚子里学问可能没多,但是肯定对化妆轻车熟路.前些日子无意翻到大一时的一些照片,那时候班里的妹子,个个都是一脸的乡土气息,就像未入世的渔村姑娘.然而,现在偶尔上课看见她们的时候,明显褪去了那份气息,不知道这是一个人成熟后的蜕变还是被现实中各种不可名状的风气所影响.但很大程度上,原因应该是趋于后者.今天早上交作业的时候,当我看见我们的班长(女的)脸白的像是刚刚刷过的墙,外加一对用墨汁点过的眼睛.还好我有定力,没有一

大三开学后的第二周感想

开学已经开周了,想在这里总结一下这两周的收获吧.大三阶段,心中感受五味杂陈,眼看着马上成为大四的毕业狗,各种为工作疲于奔命,实在是感觉压力大啊.所以我想这接下来的一年,也是决定明年我这个时候肚子有没有货的时候,谈到专业,我只能说误打误撞的就进来了,高中文科生一枚,三年的大学生活过的实在太快.确立目标对于一个大学生来说太重要了,接下来的这一年, 我如果不带着一种拼命的态度去对待,那未来真的就连程序猿都不如了.所以我打算,每周会来博客园写一篇这一周的得与失.这学期开的课程,操作系统,工程数学,c#程

对于学习编译原理

当知道要学习编译原理这门课程的时候,我并没有太多的感觉,觉得看着它就像看当初看导论一样,纯理论的知识就想草率的混过期末就可以.可是看到老师给我们看其他网站上对编译原理的解释时候,就觉得这门课真的很难很难,而且重要.简单浏览下专业人士和非专业人士对于编译的理解后,现在对于编译原理有了一个初步的认知,那就是学了编译原理,你更能够看懂代码,会有更深入本质性的认识,知道如何写代码会比较好一些.学习了编译原理不一定要你写出一个编译器,当然最好是自己写一个,更重要的是你要了解里面的编译思想.看了许多人说哪个

个人对于编译原理的一些看法的。

在现在,作为一个程序猿不可能不知道编译原理的大名,编译原理可以说是一个计算机科学的缩影,是计算机专业的一门重要专业课,旨在介绍编译程序构造的一般原理和基本方法.内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成. 编译原理是计算机专业设置的一门重要的专业课程.如果能够熟练的运用编译原理,无论是对于我们的生活还是工作都有极大的促进作用.   虽然只有少数人从事编译方面的工作,但是这门课在理论.技术.方法上都对学生提供了系统而有效的训练,有利于提高软

编译原理实战入门:用 JavaScript 写一个简单的四则运算编译器(四)结语

四则运算编译器,虽然说功能很简单,只能编译四则运算表达式.但是编译原理前端部分几乎都有涉及,词法分析,语法分析,还有代码生成. 再复杂的编译器.再简单的编译器,功能上是差不多的,只是复杂的编译器实现上会更困难. 这个系列的文章是为了帮助你入门,在这个基础上再去看编译原理相关书籍,不至于打瞌睡. 如果你对编译原理很有兴趣,并且想更深一步的学习,在这里强烈推荐你看一本书--我心目中的神书--<计算机系统要素-从零开始构建现代计算机>. 这本书神在哪? 神在它通俗易懂,对小白足够友好,但又不过分肤浅

关于编译原理的一下小见解

编译原理(compiler construction),旨在介绍编译程序构造的一般原理和基本方法,内容包括语言和文法.词法分析.语法分析.语法制导翻译.中间代码生成.存储管理.代码优化和目标代码生成. 它大致包括两个方面,俗称前端和后端.前端的正式名称其实是 language recognition,工程上也称为 parsing.这实际上是整个计算机理论的一个楔入点.比如说,比较基础的 computation theory,也就是研究四种基本计算模型的理论,就是以 language recogn

大前端开发者需要了解的基础编译原理和语言知识

转自:https://yq.aliyun.com/articles/180879 在我刚刚进入大学,从零开始学习 C 语言的时候,我就不断的从学长的口中听到一个又一个语言,比如 C++.Java.Python.JavaScript 这些大众的,也有 Lisp.Perl.Ruby 这些相对小众的.一般来说,当程序员讨论一门语言的时候,默认的上下文经常是:“用 xxx 语言来完成 xxx 任务”.所以一直困扰着的我的一个问题就是,为什么完成某个任务,一定要选择特定的语言,比如安卓开发是 Java,前

编译原理第一章学习(习题解答)

编译原理 第一章 引论 1.1 练习 1.编译器和解释器之间的区别是什么? 首先,编译器是一个软件系统或者说是一个程序,解释器是语言处理器.其次,编译器是把程序翻译成能被计算机执行的形式并报告翻译过程中发现的源程序的错误,解释器是直接利用用户提供的输入执行源程序中指定的操作. 2.编译器相对于解释器的优点是什么?解释器相对于编译器的优点是什么? 在把用户输入映射成为输出的过程中,由一个编译器产生的机器语言目标程序通常比一个解释器快很多.然而,解释器的错误诊断效果比编译器更好,因为它是逐句翻译源程

编译原理大作业(用java编写小型GCC 编译器)

以前只用编译器编译程序,现在学完编译原理这门课以后,通过编译大作业,我对编译器的工作原理有了比较清晰的认识 编译器的工作原理 编译器 (Compiler) 是一种将由一种语言编写的程序转换为另一种编程语言的可执行程序. 现代软件对于编译器的需求远甚从前, 究其原因很简单: 作为中间层, 编译器是构建更高层抽象的基础设施. 编译器意欲将人类可阅读的高阶代码, 翻译为机器能运行的低阶代码. 现代编译器的主要工作流程为: 源代码(source code)→ 预处理器(preprocessor)→ 编译