【愚公系列】软考中级-软件设计师 011-程序设计语言基础知识(考点简介)
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2023年华为云十佳博主,2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
🚀前言
程序设计语言基础是指程序设计语言的基本概念、语法和语义。了解程序设计语言基础可以帮助我们理解和使用不同的编程语言,并能够编写简单的程序。
🚀一、完整程序设计语言基础
🔎1.程序设计语言概括
-
程序设计语言基本概念
-
程序设计语言的基本成分
🔎2.语言处理程序基础
-
汇编语言基本原理
-
编译程序基本原理
-
编译过程概述
-
文法和语言的形式描述
-
语法分析
-
正规式
-
有限自动机
-
-
正规式与有限自动机之间的转换
-
解释程序的基本原理
-
🚀二、程序设计语言基础知识(2-4分)(重点)
🔎1.程序设计语言概述
🦋1.1 低级语言和高级语言
程序设计语言可以分为低级语言和高级语言。
低级语言是指与计算机硬件直接相关的语言,它们更接近机器语言,通常需要较少的编译或解释过程。低级语言包括汇编语言和机器语言。
汇编语言是一种与机器语言直接对应的符号化语言,它使用助记符来代替机器指令的二进制码。汇编语言相对于机器语言来说更容易理解和编写,但仍然需要了解计算机硬件的细节。
高级语言是相对于低级语言而言的,它更加抽象和易于理解。高级语言使用更加自然的语法和结构来表达算法和程序逻辑,它们通常由编译器或解释器转换为机器语言。高级语言包括C、C++、Java、Python等。
相对于低级语言来说,高级语言的编写更加方便和高效,可以更快地开发出功能完善的程序。高级语言还提供了更多的抽象和封装,使得程序员能够更好地组织和管理代码,提高开发效率。但是,相对于低级语言,高级语言的执行效率可能会稍低一些。
🦋1.2 编译程序和解释程序
编译程序和解释程序都是用来将高级语言代码转化为机器语言代码的工具。
编译程序是将整个高级语言程序一次性地转化为机器语言代码,生成可执行文件。编译过程包括词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等多个阶段。编译程序的优点是执行速度快,因为它一次性将代码转换为机器语言,不需要再进行解释。缺点是编译程序生成的目标代码通常运行在特定的平台上,不具有可移植性。
解释程序是逐行地解释高级语言代码,并执行相应的操作。解释程序不生成可执行文件,而是实时地解释代码并生成结果。解释程序的优点是具有良好的可移植性,同一份高级语言代码可以在不同的平台上运行。缺点是解释程序的执行速度相对较慢,因为需要逐行解释代码。
编译程序和解释程序各有优劣,适用于不同的场景。在需要高性能和可执行文件的情况下,可以选择编译程序。而在需要可移植性和灵活性的情况下,可以选择解释程序。有些语言,如Java和Python,采用了折中的方式,先将代码编译成中间代码,然后再通过解释程序运行中间代码。这样可以兼顾性能和可移植性的需求。
🦋1.3 程序设计语言的分类
编译程序和解释程序都是用来将高级语言代码转化为机器语言代码的工具。
编译程序是将整个高级语言程序一次性地转化为机器语言代码,生成可执行文件。编译过程包括词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等多个阶段。编译程序的优点是执行速度快,因为它一次性将代码转换为机器语言,不需要再进行解释。缺点是编译程序生成的目标代码通常运行在特定的平台上,不具有可移植性。
解释程序是逐行地解释高级语言代码,并执行相应的操作。解释程序不生成可执行文件,而是实时地解释代码并生成结果。解释程序的优点是具有良好的可移植性,同一份高级语言代码可以在不同的平台上运行。缺点是解释程序的执行速度相对较慢,因为需要逐行解释代码。
编译程序和解释程序各有优劣,适用于不同的场景。在需要高性能和可执行文件的情况下,可以选择编译程序。而在需要可移植性和灵活性的情况下,可以选择解释程序。有些语言,如Java和Python,采用了折中的方式,先将代码编译成中间代码,然后再通过解释程序运行中间代码。这样可以兼顾性能和可移植性的需求。
🦋1.4 程序设计语言的基本成分
成分 | 描述 |
---|---|
语法 | 程序设计语言的语法规则,定义了如何编写合法的程序代码。语法规则可以包括关键字、运算符、标识符、分隔符等等。 |
语义 | 程序设计语言的语义定义了代码的含义和行为。它规定了代码执行的规则、数据类型的操作、函数的调用等等。 |
变量 | 变量是用于存储和操作数据的名字。在程序设计语言中,变量需要事先声明并赋予一个数据类型。 |
数据类型 | 数据类型定义了存储和处理数据的方式。常见的数据类型包括整数、浮点数、布尔值、字符串、数组、结构体等等。 |
运算符 | 运算符用于执行各种操作,例如算术运算、逻辑运算、比较运算等等。不同的程序设计语言提供不同的运算符集合。 |
控制结构 | 控制结构用于控制程序的执行流程。常见的控制结构包括条件语句(如 if-else)、循环语句(如 for、while)、跳转语句(如 break、continue)等等。 |
函数 | 函数是可重复使用的代码块,用于执行特定的操作。函数可以接受参数,并返回值。函数可以提高代码的模块化和复用性。 |
输入输出 | 输入输出是程序与外部环境进行交互的方式。输入可以是用户的输入、文件的读取等,输出可以是打印信息、写文件等。 |
异常处理 | 异常处理用于处理程序执行过程中的错误和异常情况。它可以捕获和处理错误,使程序在错误发生时能够做出适当的响应。 |
注释 | 注释是用于给代码添加说明和解释的文本。它不会被编译或执行,只是用于提高代码的可读性和可理解性。 |
🦋1.5 函数
函数是程序设计语言中的一个重要概念,它是一段可重复使用的代码。函数可以接受输入,执行一些操作,并返回输出。
在程序设计语言中,函数通常由以下几个组成部分构成:
- 函数名:函数的名称用于标识函数,在调用函数时使用。
- 参数:函数可以接受一个或多个参数,这些参数是函数执行所需的输入。函数可以根据需要接受不同类型和数量的参数。
- 返回值:函数可以返回一个或多个值作为其输出。返回值可以是任何合法的数据类型,包括基本类型(例如整数、浮点数)和对象类型。
- 函数体:函数体包含一系列语句,这些语句定义了函数的具体操作。函数体可以包含各种语句,包括条件语句(例如 if-else 语句)、循环语句(例如 for 循环)和其他函数调用。
函数可以在程序中多次调用,并且可以在不同的上下文中使用。函数的主要优点是代码的复用性和模块化。通过将代码封装在函数中,可以提高代码的可读性、可维护性和重用性。
🔎2.语言处理程序基础
🦋2.1 汇编程序基本原理
汇编程序是一种底层编程语言,它使用机器指令来控制计算机的硬件,在计算机中执行特定的任务。
汇编程序的基本原理包括以下几个方面:
-
机器指令:汇编程序使用的指令是计算机硬件可以直接执行的指令,每个指令都有特定的操作码和操作数。汇编程序通过编写机器指令来控制计算机的硬件,包括处理器、内存、输入输出设备等。
-
汇编语言:汇编程序使用的是一种符号语言,它将机器指令用易于理解和书写的符号表示,每个符号都对应一条机器指令。汇编语言通常具有较强的可读性和可理解性,但是它与计算机硬件之间的对应关系非常直接。
-
汇编器:汇编程序需要通过汇编器将汇编语言翻译成机器指令。汇编器将汇编语言中的符号转换为对应的操作码和操作数,并生成机器指令的二进制代码。汇编器还会生成符号表,记录每个符号对应的地址信息,供后续的链接和加载使用。
-
汇编程序流程:汇编程序的执行流程一般包括以下几个步骤:首先,将源代码交给汇编器进行编译,生成机器指令的二进制代码;然后,将生成的二进制代码加载到计算机的内存中;最后,通过处理器执行加载到内存中的机器指令,来完成相应的任务。
-
寄存器和内存:汇编程序使用寄存器和内存来进行数据的存储和处理。寄存器是计算机中一种高速的存储器件,用于存储临时数据和指令的执行结果。内存是计算机中主要的存储介质,用于存储程序代码和数据。
汇编程序的基本原理涉及到计算机体系结构、机器指令集、汇编语言和汇编器等方面的知识。
🦋2.2 编译程序基本原理
编译程序的基本原理是将高级语言(如C、C++、Java等)编写的代码转化为可执行的机器语言。这个过程一般包括以下几个步骤:
-
词法分析(Lexical Analysis):将源代码分解成一个个的词法单元(token),如标识符、关键字、运算符等。
-
语法分析(Syntax Analysis):根据语法规则将词法单元组织成语法树(parse tree),确定程序的结构和语义。
-
语义分析(Semantic Analysis):对语法树进行分析,检查程序是否符合语言规范,如变量使用是否正确、函数参数是否匹配等。
-
中间代码生成(Intermediate Code Generation):将语法树转化为中间代码(intermediate code),中间代码是一种类似于汇编语言的抽象表示,比源代码更接近机器语言。
-
代码优化(Code Optimization):对中间代码进行优化,使得生成的机器代码更高效、更快速。
-
代码生成(Code Generation):将中间代码翻译成特定机器的机器代码,生成可执行文件。
-
符号表管理(Symbol Table Management):维护一个符号表,记录程序中的变量、常量、函数等信息,在编译过程中进行查找和管理。
这些步骤通常由编译器前端和后端分别完成。前端负责词法分析、语法分析、语义分析和中间代码生成,后端负责代码优化和代码生成。
🦋2.3 解释程序基本原理
解释程序的基本原理如下:
-
词法分析:解释程序首先会将源代码分解成词法单元,也就是词法分析。它将源代码分为关键字、标识符、运算符、数字、字符串等不同类型的词法单元。
-
语法分析:在语法分析阶段,解释程序会根据词法单元的层次结构来构建抽象语法树(AST)。抽象语法树表示了源代码的语法结构,将代码以树形结构表示。
-
语义分析:在语义分析阶段,解释程序会检查抽象语法树中的语义错误,并为每个节点分配类型信息。它还会执行类型检查,并进行类型推导。
-
中间代码生成:解释程序会将抽象语法树转换为中间代码,也就是一种与机器无关的中间表示形式。中间代码类似于汇编语言,但更高级,更易于优化和转换。
-
优化:解释程序可能会对中间代码进行一些优化,以提高程序的性能。这些优化包括常量折叠、公共子表达式消除、循环展开等。
-
目标代码生成:最后,解释程序会将中间代码转换为目标机器代码,以便在目标机器上执行。这个过程通常包括寄存器分配、指令选择和代码布局等步骤。
-
执行:解释程序会按照生成的目标机器代码一条一条地执行指令。它会从程序的入口点开始执行,并按照指令的顺序执行,直到遇到结束指令或异常。
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
- 点赞
- 收藏
- 关注作者
评论(0)