编程语言层级发展:机器语言 -> 汇编语言 -> 高级语言;
高级语言,有以下几个分类特征:
- 面向过程、面向对象、面向函数
- 静态类型、动态类型
- 编译执行、解释执行
- 有虚拟机、无虚拟机
- 有 GC、无 GC
Java作为一门高级语言,它是一种面向对象、静态类型、编译执行,有 VM/GC 和运行时、跨平台的高级语言。
1. 跨平台
Java作为一门跨平台的语言,和C++不同,并不是在编译时有区分,在不同平台编译出来的文件是一样的,主要是承载.class文件的虚拟机能跨平台。
跨平台类型.png
2. 有无GC的语言 - Java、C++、Rust 的区别
-
C/C++
完全相信而且惯着程序员,让大家自行管理内存,可以编写很自由的代码,但一不小心就会造成内存泄漏等问题,导致程序崩溃。 -
Java/Golang
完全不相信程序员,但也惯着程序员。所有的内存生命周期都由 JVM 运行时统一管理。 在绝大部分场景下,你可以非常自由的写代码,而且不用关心内存到底是什么情况。 内存使用有问题的时候,我们可以通过 JVM 来进行信息相关的分析诊断和调整。 这也是本课程的目标。 -
Rust
语言选择既不相信程序员,也不惯着程序员。 让你在写代码的时候,必须清楚明白的用 Rust 的规则管理好你的变量,好让机器能明白高效地分析和管理内存。 但是这样会导致代码不利于人的理解,写代码很不自由,学习成本也很高。
网友评论