软考备战(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

相关文章

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2