程序语言概述

基本概念

💯 计算机的硬件只能识别0、1组成的机器指令序列,即机器指令程序,因此机器指令是最基本的计算机语言

用更容易记忆的符号代替0和1的序列来表示机器指令,如ADD表示加法,SUB表示减法,这种用符号表示的指令称为汇编指令汇编指令的集合称为汇编语言

  • 低级语言: 机器语言和汇编语言是低级语言
  • 高级语言: 面向应用程序的Java、C、JavaScript 等称为高级语言。

编译程序和解释程序

https://www.cnblogs.com/wkfvawl/p/12932402.html

高级语言和汇编语言必须通过翻译才能为计算机硬件所理解。翻译的形式有汇编、解释和编译

如果源程序是汇编语言,则需要一个汇编程序将其翻译成目标语言。

如果源程序是高级语言编写的,则需要对应的解释程序或编译程序进行翻译,然后在机器上执行。

image-20210523105448030
  • 编译型程序:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。 依赖编译器,生成目标程序。
  • 解释型程序:把做好的源程序翻译一句,然后执行一句,直至结束!依赖解释器, 不生成独立的目标程序。

编译型的语言包括:C、C++、Delphi、Pascal、Fortran 解释型的语言包括:Java、Basic、javascript、Python

⚡ Java语言同时具有编译型和解释型语言的特点。

Java语言的编译-->解释--->执行过程:

image-20210523110305160

程序语言的语法、语义和语用

1️⃣ 语法: 由程序语言的基本符号组成程序中的各个语言结构的一组规则

2️⃣ 语义: 程序语言中按照语法规则构成的各个语法成分的含义,分静态语义和动态语义

静态语义: 编译是可以确定的语法成分的含义。

动态语义: 运行时才能确定的含义。

3️⃣ 语用: 构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响

⚡ 程序语言的分类

按涉及程序的方法分:命令式和结构化设计语言、面向对象的程序设计语言、函数式程序设计语言、逻辑型程序设计语言(Prolog)。

语言的基本成分

程序语言的基本成分包括数据、运算、控制和传输

1️⃣ 数据

程序操纵的对象,具有存储类别、类型、名称、作用域和生存周期等属性。

数据使用时要为其分配内存空间

2️⃣ 运算成分

即允许使用的运算符和运算规则。如算术运算、逻辑运算、关系运算、位运算。

3️⃣ 控制成分

主要有顺序结构、选择结构、循环结构三种控制结构

4️⃣ 函数

⚡ 相关真题

2014年20题

以下程序设计语言中,(20)更适合用来进行动态网页处理。

A.HTML B.LISP C.PHP D.JAVA/C++

解析:C

2014年21题

引用调用方式下进行函数调用,是将(21)。

A.实参的值传递给形参 B.实参的地址传递给形参 C.形参的值传递给实参 D.形参的地址传递给实参

解析 B

值调用和引用调用是实现函数调用是传递参数的两种基本方式。

在值调用方式下,是将实参的值传给形参,在引用调用方式下,实将实参的地址传递给形参

2014年22题

编译程序对高级语言源程序进行编译的过程中,要不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入____中。

(22)A.符号表 B.哈希表 C.动态查找表 D.栈和队列

【答案】A

【解析】本题考查程序语言基础知识。

编译是实现高级程序设计语言的一种方式,编译过程可分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段,还需以进行出错处理和符号表管理

符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。

符号表的建立可以始于词法分析阶段,也可以放到语法分析和语义分析阶段,但符号表的使用有时会延续到目标代码的运行阶段

2015年20题

以下关于程序设计语言的叙述中,错误的是(20)。

A.程序设计语言的基本成分包括数据、运算、控制和传输等

B.高级程序设计语言不依赖于具体的机器硬件

C.程序中局部变量的值在运行时不能改变

D.程序中常量的值在运行时不能改变

【答案】C

局部变量的值通常在其生存期内是变化的。

程序中常量的值在运行时是不能改变的。

2015年22题

程序中全局变量的存储空间在(22)分配。

A.代码区

B.静态数据区

C.栈区

D.堆区

【答案】B

程序运行时的用户内存空间一般划分为代码区、静态数据区、栈区和堆区

其中栈区和堆区也称为动态数据区。

全局变量的存储空间在静态数据区。

补充:

内核空间&&用户空间

  • 内核空间:内核代码运行的位置,在这个空间下运行的进程可以比在用户空间下运行的进程拥有更多的访问系统的权限。
  • 用户空间:应用程序运行的位置 (用户程序运行时,会被存储到这个位置)

内核态&&用户态

  • 内核态:进程运行于内核空间中,那么它就处于内核态
  • 用户态: 进程运行于用户空间中,那么它就处于用户态

C语言内存分区

image-20220512151857154

图片From: C语言:内存分配---栈区、堆区、全局区、常量区和代码区