Skip to content

CS language

1. 静态类型 vs. 动态类型

静态类型(Statically Typed)

  • 定义:变量、函数参数、返回值等的数据类型在编译时就确定,不能随意更改。
  • 特点
  • 编译时会检查类型错误,避免运行时崩溃。
  • 性能更高(编译器可以优化)。
  • 代码更严谨,适合大型项目。
  • 例子
  • C/C++/Java/C#/Go/Rust
    int num = 10;  // num 只能是整数,不能赋值为字符串
    num = "hello"; // 编译报错!
    

动态类型(Dynamically Typed)

  • 定义:变量类型在运行时才确定,可以随时改变。
  • 特点
  • 更灵活,适合快速开发。
  • 运行时可能因类型错误崩溃(如 "1" + 2 可能出错)。
  • 性能稍低(需要运行时检查)。
  • 例子
  • Python/JavaScript/Ruby/PHP/Lua
    num = 10      # num 是整数
    num = "hello" # 现在 num 变成字符串,不会报错
    

对比总结

特性 静态类型 动态类型
类型检查 编译时检查 运行时检查
性能 更高(编译器优化) 稍低(运行时解析)
灵活性 低(类型固定) 高(随时改变类型)
代表语言 C/C++/Java/Go/Rust Python/JS/Ruby/PHP

2. 编译型 vs. 解释型

编译型语言(Compiled Languages)

  • 定义:代码先被编译器转换成机器码(二进制文件),再直接由CPU执行。
  • 特点
  • 运行速度快(已经是机器码)。
  • 需要针对不同平台(Windows/Linux/macOS)编译。
  • 调试较麻烦(错误在编译时发现)。
  • 例子
  • C/C++/Go/Rust
    源代码(.c) → 编译器(gcc) → 可执行文件(.exe) → CPU执行
    

解释型语言(Interpreted Languages)

  • 定义:代码由解释器逐行翻译并执行,不生成独立可执行文件。
  • 特点
  • 跨平台性好(只要有解释器就能运行)。
  • 运行速度较慢(每次都要解析)。
  • 调试方便(错误直接显示)。
  • 例子
  • Python/JavaScript/PHP/Ruby
    源代码(.py) → 解释器(Python) → 直接执行(不生成.exe)
    

混合型(JIT 编译)

  • 定义:结合编译和解释,先解释执行,再动态编译优化(如Java/C#/JS V8引擎)。
  • 例子
  • Java(编译成字节码,JVM解释执行)
  • JavaScript(V8引擎先解释,再JIT优化)

对比总结

特性 编译型 解释型 JIT(混合型)
执行方式 直接运行机器码 逐行解释执行 先解释,后编译优化
速度 最快 较慢 中等(优化后接近编译型)
跨平台 需重新编译 直接运行(依赖解释器) 依赖虚拟机(如JVM)
代表语言 C/C++/Go/Rust Python/JS/PHP Java/C#/JavaScript

3. 脚本语言(Scripting Languages)

定义

  • 脚本语言解释型语言的一种,通常用于自动化任务或控制其他程序
  • 特点
  • 不需要编译,直接运行。
  • 语法简单,适合快速开发。
  • 通常嵌入到其他系统中(如JS在浏览器,Lua在游戏引擎)。

常见脚本语言

语言 主要用途
JavaScript 网页交互(浏览器)、后端(Node.js)
Python 数据分析、自动化脚本、Web后端
PHP 传统Web开发(WordPress)
Lua 游戏脚本(魔兽世界)、嵌入式扩展
Ruby Web开发(Ruby on Rails)

脚本语言 vs. 系统编程语言

特性 脚本语言(Python/JS) 系统语言(C++/Rust)
执行方式 解释执行 编译成机器码
性能 较慢 极快
用途 自动化、Web、数据分析 操作系统、游戏引擎、高频交易

总结

  1. 静态类型 vs. 动态类型
  2. 静态:类型固定,编译检查(C++/Java)。
  3. 动态:类型可变,灵活但易出错(Python/JS)。

  4. 编译型 vs. 解释型

  5. 编译型:直接运行机器码(C++/Go)。
  6. 解释型:逐行执行(Python/JS)。
  7. JIT:混合优化(Java/JS V8)。

  8. 脚本语言

  9. 解释型,用于自动化、Web(Python/JS/PHP)。