| 对比项 | FORTRAN | LISP | BASIC | C(GNU99) | C++(C++17) (带类的C) | MATLAB | Objective-C | Python(python 3.6) | Lua | PHP | Ruby | JavaScript | Java(Java8) | C# | .NET | Go(Go 1.10.3) | ||
| 诞生时间 | 1957 | 1958 | 1964 | 1972 | 1980 | 1984 | 1986 | 1991 | 1993 | 1994 | 1995 | 1995 | 1996 | 2001 | 2001 | 2009 | ||
| 语言标准 | C89 -> C11 | C++98 -> C++03 -> C++11 -> C++14 -> C++17 -> C++20 | ||||||||||||||||
| 文件类型 | 源代码 | .c | .cpp | .py | .java | |||||||||||||
| 头文件 | .h | .hpp | ||||||||||||||||
| 常用IDE | TurboC 3.0、WinTC | vs2005 | PyCharm | Eclipse、IntelliJ IDEA | ||||||||||||||
| 编译器 (推荐及其版本号) | gcc(v8.2)、clang | g++(v8.2) | Cpython(解释器)(v3.6) | javac(v1.8.0) | gcc | gc、gccgo | ||||||||||||
| 编译构建工具 | Cmake、Bepkit | |||||||||||||||||
| 预处理 | ||||||||||||||||||
| 注释 | 单行、多行注释:/* */ | 单行注释:// 多行注释:/* */ (从C继承过来的) | ||||||||||||||||
| 主函数 | 定义 | int main() | 同C | |||||||||||||||
| 输入 | scanf() | cin | ||||||||||||||||
| 输出 | printf() | cout | ||||||||||||||||
| 数据类型 | ||||||||||||||||||
| 类 | 不支持 | 定义、构造、析构、继承、多态、封装 | ||||||||||||||||
| 变量存储类型 | auto 数据类型 变量名; 例如:auto int a; 注1:auto可缺省,默认定义即为auto变量。 | 同C | ||||||||||||||||
| 类型别名 | typedef 例如: typedef int othername; othername a = 1; | typedef本身是一种存储类的关键字,故不能与auto、extern、mutable、static、register等同时出现。 | 同C | |||||||||||||||
| 运算符 | 算术运算符 > 关系运算符 > 赋值运算符 | 同C | ||||||||||||||||
| 结构控制 | 同C | |||||||||||||||||
| 引用 | 不支持 | int a; int &ra = a; | ||||||||||||||||
| 文件操作 | ||||||||||||||||||
| “假”与 “真” | ||||||||||||||||||
| 重载 | 不支持 | 可以根据入参的不同进行不同的实例化,以支持类的多态。 | ||||||||||||||||
| 作用域 | 作用域只有两个:局部、全局 | 作用域有三个:局部作用域、类作用域、命名空间作用域 | | |||||||||||||||