软考中级-软件设计师(二)程序设计语言基础知识 考点最精简

一、程序设计语言概述
1.1程序设计语言的基本概念

1)低级语言和高级语言:计算机硬件只能识别由0、1组成的机器指令序列,因此机器指令是最基本的计算机语言。用符号表示的指令称为汇编指令,汇编指令的集合称为汇编语言,仍是一种面向机器的低级语言。在此基础上,人们开发了功能更强、抽象级别更高的语言以支持程序设计,称为高级语言。

2)编译程序和解释程序:

·编译程序:将原程序翻译成目标程序语言,在机器上运行目标程序

·解释程序:直接解释执行源程序,或将源程序翻译为某种中间代码后执行

编译方式生成目标程序,运行较慢,解释方式不生成,运行较快

3)程序设计语言的定义:语法确保我们书写出的程序结构正确,语义决定这些结构背后的实际含义和行为。语义又分为动态语义和静态语义,静态语义错误编译时就能确定,动态的得等到运行时才能确定

4)程序设计语言的分类:程序语言有交流算法和计算机实现的双重目的,现在程序设计语言种类繁多,它们在应用上各有不同侧重面

·命令式和结构化程序设计语言:Fortran、PASCAL、C

·面向对象:C++、Java、Smalltalk、python

·函数式:LISP、Haskell、Scala、Scheme、APL

·逻辑型:PROLOG

零碎知识点:

·脚本语言主要使用解释方式执行,以文本(如ASCII)保存,涉及变量,效率比编译执行高

·HTML适合进行静态网页处理,PHP更适合用来进行动态网页处理

·弱类型的语言指不需要进行变量/对象类型声明的语言,如Python

·可用于编写独立程序和快速语言脚本的语言是Python

·标记语言用一系列约定好的标记来对电子文档进行标记,如HTML、XML、WML

1.2程序设计语言基本成分

(本节对于科班学生来说很简单,跳过即可)

1)程序设计语言的数据成分:常量和变量、全局量和局部量、数据类型(基本数据类型、用户定义类型、构造类型、其他类型)很简单,了解即可

2)程序设计语言的控制成分:顺序结构、选择结构、循环结构

3)程序设计语言传输成分:程序设计语言的传输成分指明语言允许的数据传输方式,如赋值处理、数据的输入输出等

此处有一类调用题:传值调用(CallByValue)和引用调用(CallByFerence)

二、语言处理程序基础
2.1编译程序基本原理

1)编译过程概述:编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语言或机器语言)

·词法分析:编译阶段的第一个过程,对源程序逐个字符扫描,从中识别出“单词”符号

·语法分析:在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”“语句”和“程序”等

·语义分析:分析各阶段含义,相当于机器在“理解”需要做的指令,检查是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。只有语法语义都正确的源程序才能翻译成正确的目标代码

·中间代码生成:根据语义分析的输出生成中间代码。“中间代码”是一种简单且含义明确的记号系统,可以有若干种形式,与具体机器无关。常用中间代码有后缀式、三元式、四元式和树等形式

·代码优化:当需要生成高效的目标代码时,需要进行优化,优化过程可以在中间代码生成阶段进行,也可以在目标代码生成阶段进行

·目标代码生成:把中间代码变换成特定机器上的目标代码,与具体机器密切相关

·中间代码生成和代码优化非必需

2)文法和语言的形式描述:

文法:描述语言语法结构的规则称为文法,对于文法分类,记忆乔姆斯基Chomsky分类法即可

3)词法分析:

2)3)直接通过例题来学习(文章最后一部分)

此处题型:求前中后缀表达式、有限自动机、文法推导、求正规式

2.2解释程序基本原理

解释程序:在词法、语法、语义分析方面与编译程序基本工作原理基本相同,但在运行用户程序时,直接执行源程序或源程序的中间表示形式,因此不生成目标程序

高级语言编译与解释方式比较:

1.效率:编译方式比解释方式可能取得更高效率

2.灵活性:解释方式比编译方式更灵活

3.可移植性:解释器一般也是用某种语言编写的,因此只需要对解释器重新编译,就可以使解释器运行在不同环境中

三、典型例题


本题考查程序语言基础知识。推导就是从文法的开始符号S出发,反复使用产生式,将产生式左部的非终结符替换为右部的文法符号序列(展开产生式用=>表示),直到产生一个终结符的序列时为止。从题中给出的分析树可得到如下的一个最左推导过程S=>aAcB=>aAaBcB=> acaBcB => acabcB=> acabcbScA=> acabcbBdcA=>acabcbdcA=>acabcbdcc,因此,acabcbdcc是该方法推导出的一个句子。其中用到的产生式如下:S->aAcB S-> Bd A-> AaB A-> c B-> bScAB-> bB->ε 从起始符号S出发也可以如下推导:S=>Bd=>εd=>d,即该文法推导出的句子也可以为d,因此选项A错误。


  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值