17.1.3 多种程序设计语言特点
这一节不是让你背语言年表,而是要能根据题干关键词识别语言适合解决什么问题。考试常用“科学计算、符号处理、逻辑推理、跨平台、脚本”等词来指向具体语言或语言类别。
常见语言对比
| 语言 | 典型特点 | 常见场景 | 考试关键词 |
|---|---|---|---|
| FORTRAN | 面向科学计算,数值计算效率高 | 科学工程计算 | 科学计算、公式计算 |
| Pascal | 结构化清晰,适合教学 | 程序设计教学 | 教学、结构化 |
| C | 编译型,接近底层,效率高 | 系统软件、嵌入式、驱动 | 系统级、效率、指针 |
| C++ | 在 C 基础上支持面向对象 | 系统软件、游戏、性能敏感应用 | 面向对象、效率 |
| C# | 面向对象,依赖 .NET 生态 | Windows/.NET 应用 | .NET、中间语言 |
| Lisp | 函数式思想,符号处理能力强 | 人工智能、符号计算 | 符号处理、AI |
| Java | 面向对象,字节码运行于 JVM | 企业应用、跨平台 | 跨平台、虚拟机 |
| Prolog | 逻辑式语言,擅长推理 | 专家系统、规则推理 | 逻辑推理、事实规则 |
| Python | 解释型、脚本化、生态丰富 | 自动化、数据处理、教学 | 脚本、解释、胶水语言 |
为什么语言会分化
不同语言解决的是不同工程矛盾。C 牺牲一部分安全性换取底层控制和效率;Java/C# 引入虚拟机或运行时以换取跨平台、内存管理和大型工程能力;Python 用解释执行和动态类型换取开发速度。语言迭代不是简单替代,而是在不同约束下重新取舍。
| 取舍 | 老路线优势 | 新路线为什么出现 | 新路线代价 |
|---|---|---|---|
| 手动内存管理 -> 自动内存管理 | 性能可控,资源释放明确 | 降低内存错误和开发复杂度 | 垃圾回收带来停顿和运行时成本 |
| 静态编译 -> 虚拟机/字节码 | 执行效率高,部署独立 | 跨平台、运行时优化、生态统一 | 依赖运行环境 |
| 强底层控制 -> 脚本化开发 | 可控制硬件细节 | 快速开发、自动化、胶水整合 | 性能和类型安全通常较弱 |
脚本语言的定位
课程里强调脚本语言常用于“粘合”和“批处理”:把已有系统、命令或库串起来完成任务。它们不一定不能定义函数,也不等于不能做大型应用,只是考试语境中常把脚本语言与解释执行、快速开发、Web 或自动化联系在一起,而不把它作为系统级开发的首选。
小练习
题:题干出现“符号处理、人工智能”,最可能指哪类语言?
答:Lisp 常作为典型答案;如果出现“逻辑推理、事实与规则”,则更可能指 Prolog。
自查
- C 和 Python 的核心取舍分别是什么?
- Java 的跨平台依赖什么机制?
- 为什么脚本语言适合做“胶水语言”?