软考中级-程序设计语言
(1)解释器
解释源程序时不生成独立的目标代码,源程序和解释程序都参与到程序执行中。
(2)编译器
编译时生成独立的目标代码,运行时是运行与源程序等价的目标程序,源程序不参与执行。
阶段补充:
两者都可以用高级语言编写,且处理源程序时都会进行优化。
程序设计语言基本成分:数据、运算、控制、传输。
运行时变量值可以改变、常量值不能改变。
左结合/右结合:从左向右/从右向左运算。
程序中数据有类型的作用:便于分配存储单元、便于对数据对象进行检查、便于规定取值范围及可执行的运算。
运算优先级越高越先算。
(3)控制结构
顺序结构、循环结构、选择结构
(4)函数
函数定义有两部分:函数首部和函数体。
参数调用有两种形式:值调用和引用调用,值调用时实参将值传递给形参,参数可以是变量、常量和表达式;引用调用时,实参将地址传递给形参,因为参数必须有地址,所以参数不能为常量和表达式,但形参实参可以双向传递。
(5)编译、解释程序流程

编译:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成,下划线的两步可省略,但整个流程顺序不可更改。
解释:词法分析、语法分析、语义分析,整个过程不可省略、不可更改顺序。
符号表:会不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,从而辅助语义检查和代码生成。
词法分析:将源程序看为从上到下、从左到右的多行字符串,按“单词”为单位识别,源程序为输出,以二元组记号流(单词种别+单词值)输出。主要作用是分析构成程序的字符以及由字符按照构成规则构成的符号是否符合规则。
语法分析:输入记号流,输出语法树,作用是根据语法规则,将单词符号序列分解为各类语法单位。可以发现所有语法错误,如果构不成语法树,说明语法有误。
语义分析:作用是进行类型分析和检查,检查源程序是否有静态语义错误,如整除取余只能对整数进行。动态语义错误在运行时才能发现。
目标代码生成:该阶段工作与具体机器息息相关,寄存器的分配处于此阶段。
动态语义错误:只有在程序运行时才能检查出来。
中间代码:常见类型有后缀式、三地址码、三元式、四元式、树、图等;其生成与具体机器无关,可以将不同平台的高级语言程序翻译成同一种中间代码,从而跨平台;有利于提高与机器无关的优化和可移植性。
(6)正规式

(7)有限自动机
词法分析的工具,能够正确的识别正规式。

确定的有限自动机(DFA):对于每一个状态,在识别某一字符后,转移的状态是确定的。
不确定的有限自动机(NFA):转移后的状态是不确定的。
特殊状态含义:a,b(识别a或b);
(什么都不需要识别就可以转移)
一个状态既可以是初态又可以是终态,识别成功时必须停留在终态。
(8)上下文无关文法
由开始符号组成的表达式按规则推导为由终结符号组成的表达式,有开始符号、产生式集合和终结符号组成。程序设计中大多数语法设计都可以用上下文无关文法表示。
(9)中缀、后缀表达式(逆波兰表达式)
符号在中(a+b)、符号在后(ab+),按优先级计算。
中缀转后缀如(优先级相同从右向左):





后缀转中缀时,将上述计算结果从左到右,遇到数字就入栈,遇到符号就出栈。
(10)语法树中序、后序遍历
中序遍历(左根右)得到中缀式,后序遍历(左右根)得到后缀式。
阶段补充:
对目标程序反编译无法得到源程序,只能转换成功能上等价的汇编程序。
脚本语言是动态语言,结构可改变,用解释方法实现,执行效率低。
编译时为变量分配的是逻辑地址、运行时分配的是物理地址。
正规集用正规式描述,用有限自动机识别。
c++程序执行前的流程:预处理、编译、汇编、链接
相关文章:
软考中级-程序设计语言
(1)解释器解释源程序时不生成独立的目标代码,源程序和解释程序都参与到程序执行中。(2)编译器编译时生成独立的目标代码,运行时是运行与源程序等价的目标程序,源程序不参与执行。阶段补充&#…...
Sphinx : 高性能SQL全文检索引擎
Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。 Sphinx的特点 快速创建索引:3分…...
ansible实战应用系列教程6:管理ansible变量
ansbile实战应用系列教程6:管理ansible变量 Ansible VariablesNaming VariablesDefining Variables在playbook中定义变量Defining Variables in Playbooks在playbooks中使用VariablesHost Variables and Group Variables使用group_vars和host_vars目录命令行定义全局变量Varia…...
java8新特性Stream流中anyMatch和allMatch和noneMatch的区别详解
1、anyMatch 判断数据列表中是否存在任意一个元素符合设置的predicate条件,如果是就返回true,否则返回false。 接口定义: boolean anyMatch(Predicate<? super T> predicate); 方法描述: 在anyMatch 接口定义中是接收 Pr…...
双网卡(有线和wifi)同时连接内网和外网
双网卡(有线和wifi)同时连接内网和外网 Win10技巧:如何修改有线/WiFi网络优先级:https://www.ithome.com/html/win10/253612.htm双网卡实现两个网络的自由访问:https://blog.51cto.com/ghostlan/1299090Linux服务器安…...
如何赋能智能运维,迈出数字化黑匣子第一步?
在当下大数据时代,诸多行业专家为企业智能运维绘出美好蓝图。在该蓝图中,互联网、云计算、大数据分析联合发力,企业在能“攻”能“守”中快速、可持续发展。何为“攻”?对支撑企业产品研发、生产、管理、营销等各业务链条的IT基础…...
消息称索尼计划为PS5推出两款蓝牙耳机,Find My蓝牙耳机用途广
根据国外科技媒体 Insider Gaming 报道,索尼计划进一步丰富 PlayStation 5 的配件生态,将会推出两款耳机,一款采用类似于 AirPods 的 TWS 设计,另一款则是无线头戴式耳机。 消息称 TWS 耳机的内部代号为“Project Nomad”&#…...
状态管理VueX
哈喽~大家好,这篇来看看状态管理VueX。 🥇个人主页:个人主页 🥈 系列专栏:【专栏】 🥉与这篇相关的文章: SpringCloud Sentinel 使用SpringClou…...
i.MX8MP平台开发分享(clock篇)- PLL14xx驱动
专栏目录:专栏目录传送门 平台内核i.MX8MP5.15.71文章目录 clk_pll14xx_prepareclk_pll14xx_is_preparedclk_pll1443x_set_rateclk_pll14xx_round_rateclk_pll1443x_recalc_rate在前面的文章i.MX8MP平台开发分享(clock篇)- 各类clock的注册,我们提到VIDEO_PLL1,GPU_PLL等P…...
课程规范性要求
课程制作规范 图片规范 允许范围:CC协议 / 作者授权 / 网站代理授权书 图片大小要求:1600 x 1200 dpi 图片长宽比:4:3 每章节格式要求 Week number 本周目标 1.通过背景学习,了解四足机器狗mini pupper上的微型控…...
华为OD机试 - 优秀学员统计(Python)| 真题+思路+考点+代码+岗位
优秀学员统计 题目 公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。每个员工会对应一个 id,每天的打卡记录记录当天打卡员工的 id 集合,一共 30 天。 请你实现代码帮助统计出打卡次数 top5 的…...
布林线(BOLL)计算公式详解,开口收口代表什么
布林带,英文名称BOLL,是John Bollinger在上世纪八十年代创建的,由中轨、上轨、下轨三条线组成。 一、布林线计算公式详解 布林线中轨是简单移动平均线,一般软件上自带的布林带中轨是20日均线,上轨是中轨加上2个标准差…...
模糊的照片能修复吗?
用照片记录生活,虽然不一定拍得好,但这也是生活应该有的样子。而我们拍得不好,常见就是拍出了模糊的照片,这可能是因为没有对焦或者是手抖了一下,就成了模糊的照片。更多时候未能及时发现,等到想分享一下才…...
【Java|多线程与高并发】详解start()方法和run()方法的区别
文章目录前言1.start()方法和run()方法2.不能两次调用start()方法3.线程的执行是随机的start()方法和run()方法的执行顺序不一定相同4.run()方法由JVM调用public Thread(Runnable target)中的target前言 本篇文章主要讲解以下几个问题: start()方法和run()方法的区别与联系为…...
mysql 一些有意思的sql语句,备忘
### 批量插入 INSERT INTO 表名 (字段列表) VALUES (字段对应的值),(字段对应的值),(字段对应的值),(字段对应的值), js 代码示例: function batchAddOrde…...
hive自定义函数
hive自定义函数 hive内置的函数满足不了所有的业务需求,可以考虑自己定义函数 UDF:一对一输出(upper) UDTF:一对多输出 (lateral view explode) UDAF:多对一输出(count, max, min) 自定义UDF 用java实现一个UDF 引入依赖 …...
数仓理论【范式】【维度建模】
数仓理论 1 范式理论 1.1 范式概念 数据建模要遵循一定的规则,在关系建模中,这种规则就是范式 采用范式结构,可以有效的降低数据的冗余性 范式在获取数据时,需要通过join拼接出数据 范式有第一范式(1NF),第二范式…...
卷积神经网络
卷积神经网络1. 卷积神经网络边缘检测示例Padding卷积步长三维卷积单层卷积网络简单卷积网络示例池化层卷积神经网络示例2. 深度卷积网络经典网络残差网络残差网络为什么有用1 x 1 卷积谷歌Inception 网络介绍Inception 网络迁移学习数据扩充(数据增强)3…...
解决Qt提示xxx.so not found( using -rpath or -rpath-link)问题
问题描述: 在QtCreator中交叉编译的时候突然出现了以下动态库找不到的问题: 我这里是aarch64,其他环境类似即可。 /usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/bin/ld: warning: libwrap.so.0, needed by /home.../../nfsdir///libpulsecommo…...
Blazor 托管模型 BlazorWebAssembly和Blazor Server
BlazorWebAssembly 应用 BlazorWebAssembly 应用使用基于 WebAssembly 的 .NET 运行时在浏览器中直接执行。 BlazorWebAssembly 应用的工作方式类似于 Angular 和 React 等前端 JavaScript 框架。 但不是编写 JavaScript,而是编写 C#。 .NET 运行时与应用、应用程序…...
炉石传说脚本Hearthstone-Script:三步从零到精通的自动化游戏指南 [特殊字符]
炉石传说脚本Hearthstone-Script:三步从零到精通的自动化游戏指南 🎮 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本)(2024.01.25停更至国服回归) 项目地址: https://gitcode.com…...
软件工程师如何转型AI工程师 第三章 技术路线的选择——不要从头学起
第三章 技术路线的选择——不要从头学起 在转型的技术路径上,我见过最多的弯路长这个样子:某个工程师下定决心要搞AI,于是买了一本《深度学习》(花书),从第一章线性代数开始硬啃,啃到反向传播…...
FireRedASR Pro Java集成开发指南:SpringBoot微服务语音处理实战
FireRedASR Pro Java集成开发指南:SpringBoot微服务语音处理实战 如果你是一个Java后端开发者,最近接到了要给系统加上语音识别功能的需求,比如处理用户上传的客服录音,或者分析会议纪要,那你可能正在寻找一个既稳定又…...
MangoHud日志数据可视化在线工具:无需安装的终极性能分析指南
MangoHud日志数据可视化在线工具:无需安装的终极性能分析指南 【免费下载链接】MangoHud A Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more. Discord: https://discordapp.com/invite/Gj5YmBb 项目地址: https://gitcode.co…...
【2026年阿里巴巴春招- 3月25日-算法岗-第二题- 该博弈了】(题目+思路+JavaC++Python解析+在线测试)
题目内容 有一个 nmnmnm 的棋盘,记第 iii<...
从理论到实践:AI原生应用中的人机协作全解析
从理论到实践:AI原生应用中的人机协作全解析关键词:AI原生应用、人机协作、理论基础、实践案例、未来趋势 摘要:本文全面解析了AI原生应用中的人机协作,从理论基础入手,介绍了相关概念和原理,接着阐述了人机…...
5分钟搞定!AI股票分析师daily_stock_analysis镜像一键启动与使用教程
5分钟搞定!AI股票分析师daily_stock_analysis镜像一键启动与使用教程 1. 引言 想体验AI帮你分析股票,但又担心数据隐私和复杂的配置流程?今天介绍的这款AI股票分析师镜像,完美解决了这两个痛点。它基于Ollama框架,将…...
PCIe Gen4眼图测试实战:如何用示波器快速定位信号完整性问题(附避坑指南)
PCIe Gen4眼图测试实战:示波器操作与信号完整性诊断全解析 当PCIe Gen4的信号速率突破16GT/s大关时,硬件工程师的工作台上总少不了一台高性能示波器。记得去年参与某企业级SSD项目时,我们团队连续三周被一个诡异的眼图闭合问题困扰——每次系…...
探索FDTD仿真中的光栅衍射阶数与反射阶数相位
fdtd仿真,光栅衍射阶数,反射阶数相位,复现结果如图,通用方法在电磁学和光学领域,FDTD(时域有限差分法)仿真是一项强大的工具,它能帮助我们深入理解复杂的电磁现象。今天咱就来聊聊FD…...
《Linux 是怎样工作的》第 3 章 进程管理
本章完整拆解了 Linux 进程从创建 → 执行 → 结束的全生命周期,深入剖析fork()、execve()、_exit()的底层实现、内存模型与工程实践,是理解 Linux 多任务、调度与内存管理的核心基础。一、3.2 fork() 函数:进程的复制创建1. 核心定义与设计思…...
