Rust 学习笔记:编程语言的相关概念

Rust 学习笔记:编程语言的相关概念

参考视频:

  1. https://www.bilibili.com/video/BV14J11YoE7
  2. https://www.bilibili.com/video/BV1Y227YtETA

动态类型 vs 静态类型

动态类型 (Dynamically Typed)

定义:变量类型在运行时确定,且类型可以随时改变。

特点:

  • 不需要显式声明变量类型(例如 Python、JavaScript)。

  • 更灵活,适合快速开发。

  • 错误可能在运行时暴露(例如尝试对字符串进行数值运算)。

静态类型 (Statically Typed)

定义:变量类型在编译时确定,且类型不可随意改变。

特点:

  • 需要显式声明变量类型(例如 Java、C++)。

  • 类型错误在编译阶段就能发现,安全性更高。

  • 需要更多代码量,但性能通常更优。

对比

在这里插入图片描述

示例

在这里插入图片描述

强类型 vs 弱类型

强类型 (Strongly Typed)

定义:语言严格限制类型间的隐式转换,要求显式类型转换。

特点:

  • 类型错误会直接导致失败,而非自动转换。

  • 代码更安全,但需要更多显式操作。

弱类型 (Weakly Typed)

定义:语言允许隐式的类型转换,自动尝试兼容操作。

特点:

  • 灵活性高,但可能隐藏潜在错误。

  • 代码更简洁,但可读性可能降低。

对比

在这里插入图片描述

示例

在这里插入图片描述

编译型语言 vs 解释型语言

编译型语言 (Compiled Languages)

源代码需要先通过编译器(Compiler) 转换为机器码(二进制文件),生成独立的可执行文件(如 .exe),然后直接由操作系统运行。编译过程是提前完成的。

优点:

  • 执行速度快:直接运行机器码,无需翻译过程。

  • 安全性高:源代码被编译为二进制文件,隐藏原始代码逻辑。

  • 资源占用低:适合系统级开发(如操作系统、嵌入式)。

缺点:

  • 开发效率低:需编译后才能运行,调试周期长。

  • 跨平台性差:不同操作系统需要重新编译(如 Windows 和 Linux 的二进制文件不兼容)。

解释型语言 (Interpreted Languages)

源代码由解释器(Interpreter) 逐行读取并实时翻译成机器码执行,不生成独立的可执行文件。每次运行都需要解释器参与。

优点:

  • 跨平台性强:只需对应平台的解释器,代码无需修改。

  • 开发效率高:修改代码后可直接运行,无需编译。

  • 适合脚本和快速迭代(如 Web 开发、自动化脚本)。

缺点:

  • 执行速度慢:边翻译边执行,额外开销大。

  • 依赖解释器环境:用户需安装解释器才能运行代码。

对比

在这里插入图片描述

混合使用编译和解释机制的语言

这类语言结合了编译型和解释型的优点,通常分为 3 种实现方式。

中间代码(字节码) + 虚拟机执行

源代码先被编译为一种中间代码(字节码、IR),而不是直接生成机器码。

中间代码由虚拟机(VM)或运行时环境(Runtime)解释执行,或通过即时编译(JIT)转为机器码执行。

典型代表:Java(字节码 + JVM)、C#(CIL + CLR)、Python(.pyc 文件 + Python 虚拟机)。

即时编译(JIT)与解释器的混合模式

语言运行时(如 JavaScript 引擎、Python 解释器)结合解释器和 JIT 编译器。

初始阶段时,解释器逐行执行代码(快速启动),然后对频繁执行的代码(热点代码)进行 JIT 编译,生成机器码加速后续执行。

典型代表:JavaScript(V8 引擎)、Python(PyPy)、Lua(LuaJIT)。

提前编译(AOT)与中间代码

一些语言支持提前编译为与平台无关的中间代码,再根据不同平台生成最终机器码。

例如 .NET/C# 将 C# 代码编译为机器码,避免依赖 CLR 运行时。

步骤一:开发者将源码编译成中间代码,发给用户。

在这里插入图片描述

步骤二:CLR 在运行时执行代码,将中间代码即时编译成机器语言。CLR 还负责内存管理、垃圾回收等运行时资源管理,确保程序高效、安全地运行。

在这里插入图片描述

总结

Rust 是静态强类型的编译型语言,不那么灵活,但足够安全。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

UestcXiye

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

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

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

打赏作者

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

抵扣说明:

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

余额充值