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

相关文章

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同