当前位置: 首页 > news >正文

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

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

  • Rust 学习笔记:编程语言的相关概念
    • 动态类型 vs 静态类型
      • 动态类型 (Dynamically Typed)
      • 静态类型 (Statically Typed)
      • 对比
      • 示例
    • 强类型 vs 弱类型
      • 强类型 (Strongly Typed)
      • 弱类型 (Weakly Typed)
      • 对比
      • 示例
    • 编译型语言 vs 解释型语言
      • 编译型语言 (Compiled Languages)
      • 解释型语言 (Interpreted Languages)
      • 对比
      • 混合使用编译和解释机制的语言
        • 中间代码(字节码) + 虚拟机执行
        • 即时编译(JIT)与解释器的混合模式
        • 提前编译(AOT)与中间代码
    • 总结

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 是静态强类型的编译型语言,不那么灵活,但足够安全。

在这里插入图片描述

相关文章:

  • HTML、XHTML 和 XML区别
  • 关于Safari浏览器在ios<16.3版本不支持正则表达式零宽断言的解决办法
  • HTML给图片居中
  • 【OSG学习笔记】Day 7: 材质与光照——让模型“活”起来
  • 数据库-数据类型、约束 和 DQL语言
  • 内网数据库怎么通过外网访问?本地SQL无公网IP如何让公网连接实现通用方法
  • 【ES实战】Elasticsearch中模糊匹配类的查询
  • 【mysql】windows mysql命令
  • Redis 基础和高级用法入门
  • 【TensorFlow深度学习框架】从数学原理到工业级应用
  • 国产紫光同创FPGA视频采集转SDI编码输出,基于HSSTHP高速接口,提供2套工程源码和技术支持
  • w~视觉~合集3
  • CV和NLP领域常见模型列表
  • PH热榜 | 2025-04-24
  • elementui日历显示红点及根据日程范围判断是否有红点
  • OSPF动态路由(单臂路由)
  • vue3+element-push 实现input框粘贴图片或文本,图片上传。
  • 2020-06-23 暑期学习日更计划(机器学习入门之路(资源汇总)+概率论)
  • 【农气项目】基于适宜度的产量预报
  • HOW - Code Review 流程自动化
  • 一年吸引30多万人次打卡,江苏这个渔村是怎么做到的?
  • 五矿地产:今年要确保债务“不爆雷”、交付“不烂尾”
  • 巴印在克什米尔发生交火
  • 合同约定拿850万保底利润?重庆市一中院:约定无效,发回重审
  • 民生访谈|公共数据如何既开放又安全?政务领域如何适度运用人工智能?
  • 专访|白俄罗斯共产党中央第一书记瑟兰科夫:只有大家联合起来,才能有效应对当前危机所带来的冲击