【软考中级:软件评测师】程序设计语言核心知识拆解

一、编译 vs 解释:程序执行的两种范式

程序从“源码”到“运行”的过程,由编译程序解释程序驱动,两者核心差异直接影响开发效率与性能:

执行范式 核心逻辑 典型语言 执行效率 开发灵活性
编译程序 先生成目标程序,再独立执行 C、C++ 高(直接跑机器码) 低(需编译链路)
解释程序 逐行解释高级语言与机器码的中间代码 Python、JavaScript、VBScript 中(依赖解释器) 高(改代码即运行)
混合模式 先编译为字节码,再由虚拟机解释 Java(JVM) 平衡态 跨平台友好

二、静态类型 vs 动态类型语言:类型检查时机

类型系统决定变量类型的约束阶段,是“编译期安全”与“运行期灵活”的权衡:

  • 静态类型语言(如 Java、C++、VB):
    变量需编译时显式声明类型,编译器强制检查类型匹配(如 int age = 20; 写错成 string age 会编译报错)。

  • 动态类型语言(如 Python、PHP):
    变量类型运行时自动推导,编译期不检查类型(如 age = 20 后可赋值 age = "twenty",运行时才触发类型错误)。

三、编译过程:从源码到可执行文件的蜕变

编译是“源码→目标代码”的自动化转换,核心阶段决定代码质量(以C语言编译为例):

  1. 词法分析:将源码拆分为“token”(如关键字、标识符、运算符);
  2. 语法分析:构建语法树(检测 if(){} 缺括号等语法错误);
  3. 语义分析:检查类型匹配(如 int + string 报错);
  4. 中间代码生成:生成平台无关代码(如三地址码);
  5. 优化:消除冗余计算(如 a = 1 + 2 优化为 a = 3);
  6. 目标代码生成:输出机器码(.exe 或.so 文件)。
  • 编译优势
    编译后程序无语法错误(语法问题在编译期暴露),且中间代码优化大幅提升执行效率。
  • 编译局限
    编译通过的代码仍可能存在动态语义错误(如数组越界、空指针访问,需运行时检测)。

四、传值调用 vs 引用调用:参数传递的底层逻辑

函数调用时,参数传递方式直接影响“外部变量是否被修改”,需明确两者差异:

1. 传值调用(以C语言为例)

传递参数的副本,函数内修改不影响外部变量:

void swap(int a, int b) {
   
    
    int tmp = a; 
    a = b; 
    b = tmp; 
} // 仅交换副本,外部a、b无变化

2. 引用调用(以C++为例)

传递参数的内存地址,函数内修改同步影响外部变量:

void swap(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

June bug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值