导航:首页 > 源码编译 > 学完编译原理后的变化

学完编译原理后的变化

发布时间:2022-06-19 00:47:50

Ⅰ 学习编译原理和操作系统对编程能力有什么作用

学习编译原理和操作系统对编程能力对编程能力的作用在于:

1、学好了编译原理,才可能编写出高效,稳健,占用内存少的程序。

2、学习操作系统对windows相关的编程很有帮助。如果是对操作系统关系不大的C/C++/c#,java之类的编程,关系不大。

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

操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。

Ⅱ 编译原理 我怎么看不懂啊

建议先学习或先了解一些高级语言如:java、c语言后,对其的工作过程和运行方式有一点的了解后,再看编译原理 ,因为编译原理的工作就是把高级语言编译成汇编语言或机器语言,让机器来执行。如果你对高级语言一点也不了解的话会加大你学习负担和压力的。

Ⅲ 学完编译原理之后,心中满是疑惑

这种情况的很多,你能做题目很不错了。
编译这门课是教大家用计算机处理语言的方法和技术。很有意思的一门课。
到是有个建议,既然你花时间学习了,不如再进一步,写点程序来实践一下(比如做一个计算器),这样,你就能明白比如词法分析或语法分析有什么具体作用了,前面的东西也不白学了。

Ⅳ 请问大家在实际项目中用到过编译原理吗

我跟你说,编译原理太有用了。
我是做手机游戏的,现在做一个游戏引擎。既然是引擎,就需要提供抽象的东西给上层使用。这里,我引入了脚本系统。
这个脚本系统包括一堆我根据实际需求自行设计的指令集,包括基本的输入输出,四则运算,系统功能调用,函数声明,调用等等(其实你要是用过lua或者其他游戏脚本你就知道了。)整个结构包括指令集、编译器、虚拟机等部分。这样,引擎提供一些基础服务,比如绘图,计算位置等,脚本就可以非常简单控制游戏。甚至快速构建新游戏。你应该知道QUAKE引擎吧?
这里提供给你一个计算器的小程序,应用了EBNF理论,支持表达式,比如(2+3*6)*4+4,你自己体验一下它的简洁和强大。
/*
simple integer arithmetic calculator according to the EBNF
<exp> -> <term>{<addop><term>}
<addop>->+|-
<term>-><factor>{<mulop><factor>}
<mulop> -> *
<factor> -> ( <exp> )| Number
Input a line of text from stdin
Outputs "Error" or the result.
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

char token;/*global token variable*/
/*function prototypes for recursive calls*/
int exp(void);
int term(void);
int factor(void);

void error(void)
{
fprintf(stderr,"Error\n");
exit(1);
}

void match(char expectedToken)
{
if(token==expectedToken)token=getchar();
else error();
}

main()
{
int result;
token = getchar();/*load token with first character for lookahead*/
result = exp();
if(token=='\n')/*check for end of line */
printf("Result = %d\n",result);
else error();/*extraneous cahrs on line*/
return 0;
}

int exp(void)
{
int temp = term();
while((token=='+')||(token=='-'))
switch(token)
{
case '+':
match('+');
temp+=term();
break;
case '-':
match('-');
temp-=term();
break;
}
return temp;
}

int term(void)
{
int temp = factor();
while (token=='*')
{
match('*');
temp*=factor();
}
return temp;
}

int factor(void)
{
int temp;
if(token=='('){
match('(');
temp = exp();
match(')');
}
else if(isdigit(token)){
ungetc(token,stdin);
scanf("%d",&temp);
token = getchar();
}
else error();
return temp;
}
其实编程学到一定程度总是没有方向了,总是在问学C/C++下一步怎么学啊,觉得掌握了该语言了云云,实际上,你缺少的就是这些软的东西,缺少的是理论。
编译原理不是单一的理论,它涵盖了一个niche,里面可以学到很多其他知识,比如正则表达式、BNF、EBNF、分析树、语法树还有很多运行时环境等知识
这些给你带来的是非常丰厚的回报。不说多了,学完运行时,你就会加深对C++语言本身的理解。

阅读全文

与学完编译原理后的变化相关的资料

热点内容
php获取当前url域名 浏览:334
丁字框架梁处用加密吗 浏览:678
海聊app怎么玩 浏览:207
单文件夹是什么 浏览:234
程序员生财案例 浏览:354
男兵接上级命令电视剧全集 浏览:5
什么是系统级编译 浏览:336
学习php最好的入门书籍 浏览:592
当上程序员的八年是怎么过来的 浏览:104
android两个焦点 浏览:875
如何在核桃编程app报名 浏览:642
linux基础命令教程豪华版chm 浏览:147
失物招领代码python 浏览:247
基于c51单片机的设计 浏览:350
服务器升级什么鬼 浏览:912
微信做照片小程序源码 浏览:561
linuxsftp连接命令 浏览:190
string函数php 浏览:342
输入接收邮件服务器地址 浏览:807
程序员炒股的段子 浏览:208