软考备战(2)语言处理程序基础

2024-05-25 16:18

本文主要是介绍软考备战(2)语言处理程序基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

     在阅读和学习软件设计师教程的过程中,学习到了程序语言基础这块的内容.这一章总共就两节,一共40多页,其中语言处理程序基础这小节就占了30多页,可见本章的主要内容在第二节.但是在我学习的过程中,感到非常的吃力,虽然我在专业课上曾经接触过文法和形式语言的一些东西,但是并没有任何轻松的感觉,相反越看越觉得不对劲,我在想可能是跑偏了,想起师姐曾经特意强调一定要看考纲,于是乎就翻看考纲关于这块知识的考察内容,如下图所示


     看了之后决定以考纲为纲领对这块的知识进行一下总结,一是加深自己的印象和理解,同时也为其他的同学提个醒,免得一头扎进去出不来,时间耗费了许多,也没有达到预期的效果.虽然这些东西十分晦涩难懂,但是也不能不看,但是看哪些,怎么看就是你要考虑的了.我个人的想法是根据考纲的提示去掌握相应的知识点.上图中的I代表理解,II代表一般应用.

     首先我们来了解第一个概念:什么是语言翻译?

     众所周知,计算机的硬件只能识别由01序列构成的机器语言,因此我们使用高级程序语言编写的程序需要翻译成机器语言,计算机才能识别并且执行,这就是所谓的"语言翻译".

     那么这种翻译的工作由谁来承担呢?我们通常称它们为"语言处理程序".语言之间的翻译形式有多种,基本方式为汇编,解释和编译.

     汇编的基本方法是什么?

     汇编语言源程序主要由三类语句构成:分别是指令语句,伪指令语句和宏指令语句.

     所谓汇编就是将使用汇编语言编写的程序翻译成为机器指令程序,以便于机器识别和执行.汇编程序的基本工作主要由两部分:一是将每一条可执行汇编语句转换为对应的机器指令;二是处理源程序中出现的伪指令.

     其基本方式是对源程序进行两次扫描:

     第一次的扫描主要工作是定义符号的值并创建一个符号表ST,ST记录了汇编时所遇到的符号的值.另外还需要对与定义符号值有关的伪指令进行处理.

     第二次扫描的主要任务是产生目标程序.此过程涉及两个方面的工作:一是把机器指令助记符转换成二进制指令操作码;二是求出操作数区各操作数的值(用二进制表示).

     再来看下一个知识点,编译的基本过程及各阶段的基本任务.我用一张表格为大家展示一下:

顺序号

    阶段名称

                                                            基本任务

1

词法分析

对源程序从前到后逐个字符地扫描,从中识别出一个个"单词"符号

2

语法分析

在词法分析完成后,根据语法规则将单词符号序列分解成各类语法单位,如表达式,语句等

3

语义分析

分析语法结构,检查源程序是否包含静态语义错误,进行类型分析和检查

4

中间代码生成

根据语义分析的输出生成中间代码

5

代码优化

对生成的中间代码进行优化,减少时空上的浪费

6

目标代码生成

把中间代码变换成特定机器上的绝对指令代码,可重定位的指令代码或汇编指令代码

     解释的基本过程

     解释程序通常可以分成两部分:

           1分析部分,包括通常的词法分析,语法分析和语义分析程序,经语义分析后把源程序翻译成中间代码,

           2解释部分,用来对第一部分产生的中间代码进行解释执行.

     鉴于篇幅不宜过长,对于考纲中剩余部分的知识点,主要是形式语言与自动机理论的内容,就不在这里一一列出了,大家可以像我一样去书中将这些考点整理出来,然后认真分析,尽量理解,力争能够应用.我在这里想说的是一种学习的方式或者说方法,当我们在遇到非常难懂的理论性较强的学习内容时,当你感到茫然无措不知如何下手的时候,一定要学会抓住主要矛盾,不能一头扎进去出不来,造成学习整体效率的下降,其成果和付出的努力不成正比,同样我们也要学会使用二八定律,以最为经济的代价换取较大的回报.就这块的学习,我们不做理论研究,只求应用.

这篇关于软考备战(2)语言处理程序基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1002002

相关文章

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

使用C语言实现交换整数的奇数位和偶数位

《使用C语言实现交换整数的奇数位和偶数位》在C语言中,要交换一个整数的二进制位中的奇数位和偶数位,重点需要理解位操作,当我们谈论二进制位的奇数位和偶数位时,我们是指从右到左数的位置,本文给大家介绍了使... 目录一、问题描述二、解决思路三、函数实现四、宏实现五、总结一、问题描述使用C语言代码实现:将一个整

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Go语言中最便捷的http请求包resty的使用详解

《Go语言中最便捷的http请求包resty的使用详解》go语言虽然自身就有net/http包,但是说实话用起来没那么好用,resty包是go语言中一个非常受欢迎的http请求处理包,下面我们一起来学... 目录安装一、一个简单的get二、带查询参数三、设置请求头、body四、设置表单数据五、处理响应六、超

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

基于Python实现多语言朗读与单词选择测验

《基于Python实现多语言朗读与单词选择测验》在数字化教育日益普及的今天,开发一款能够支持多语言朗读和单词选择测验的程序,对于语言学习者来说无疑是一个巨大的福音,下面我们就来用Python实现一个这... 目录一、项目概述二、环境准备三、实现朗读功能四、实现单词选择测验五、创建图形用户界面六、运行程序七、

使用Go语言开发一个命令行文件管理工具

《使用Go语言开发一个命令行文件管理工具》这篇文章主要为大家详细介绍了如何使用Go语言开发一款命令行文件管理工具,支持批量重命名,删除,创建,移动文件,需要的小伙伴可以了解下... 目录一、工具功能一览二、核心代码解析1. 主程序结构2. 批量重命名3. 批量删除4. 创建文件/目录5. 批量移动三、如何安