文章目录
静态类型语言、动态类型语言区别?
变量的类型,何时确定?
先看python
a = 32 //int
a = "你好" //String
再看Java
int a = 32;
a = "你好"; //error
静态类型(静态类型检查)
- 变量类型在编译时确定
Java
C++
C
Go
Rust
TypeScript(就是JavaScript的静态类型模式)
- 静态类型编程语言能直接帮你解决很多问题(静态类型检查)
动态类型
- 变量类型在运行时确定
python
JavaScript
PHP
Perl
- 动态类型不太适合大型项目,因为无检查,非常不安全
内存管理
内存泄漏
C++ | Java/Python | |
---|---|---|
内存管理 | 程序员自己管理 | 自动垃圾回收 |
虚拟机 | 无 | 有 |
性能 | 高(C++:比例尺1) | 低 (Java比例尺:10)(Python比例尺:100) |
开发效率 | 低 | 高 |
可移植性 | 需要重新编译 | 无需再编译 |
反编译 | 难 | 容易 |
- 关于某些网站偶尔进不去的问题,可能就是内存泄露后,自动重启服务器导致的
内存的两种分配方式
栈(Stack)
堆(Heap)
堆上内存的两种管理方式
- 程序员自己管理(C++,C)
- 自动垃圾回收(Java,Python,Go)
虚拟机(Java,Python)
-
一次编译,到处运行 write one,run anywhere!
-
VMvare
Java - JVM
Python - pyc
其他
Java | Python | C++ | |
---|---|---|---|
应用领域 | 全 | 全 | 全 |
代码长度 | 长 | 短 | 中 |
github活跃度(第一是JavaScript) | 3 | 2 | 4 |
tiobe排行(使用人数比) | 1 | 3 | 2 |
教程最多的语言 | 2 | 1 | 6 |