Different
大约 4 分钟
Different
目录
编程语言
依赖于具体实现
Java规范中没有“依赖具体实现”的地方。基本数据类型的大小以及有关运算都做了明确的说明。
例如,Java中的int永远为32位的整数,而在C/C++中,int可能是16位整数、32位整数,也可能是编译器提供商指定的其他大小。唯一的限制只是int类型的大小不能低于short int,并且不能高于long int。
语言书写风格
语言结构风格
- 缩进风格:
Python
- 大括号风格:
C
,C++
,C#
,Java
,Js
分号风格
- 无分号风格:
Python
(python也可以加分号) - 有分号风格:
C
,C++
,Java
- 可有可无:
JavaScript
(我偏向于无分号。注意选择无分号风格时,有时需要在开头加分号) - 有无不同:
Matlab
,有分号和无分号是不同的含义(即时输出 / 暂不输出)
逗号
与C/C++不同:Java不使用逗号运算符。不过,可以在for语句的第1和第3部分中使用逗号分隔表达式列表
标准库
C语言
:需要先引入标准库才能使用很多函数和变量,详见C标准库 - <stdio.h>(菜鸟)
比如库变量:
size_t、FILE、fpos_t
比如库函数:
printf、sprintf、vfprintf、vprintf、vsprintf、snprintf
等等比如库宏:
NULL、EOF
等等Python
:无需手动引入标准库,就能使用内置函数、内置变量、内置常量等Js
:原生不支持
算法和语言
注释符号
C语言、Java、Js
://
单行注释,/* */
多行注释Python
:#
单行注释,'''
或"""
包裹多行注释Matlab
:%
单行注释,%{ }%
多行注释
输入输出
编程语言 | C(弱类型) | C++(弱类型 - 强一点) | Python(强类型) | Java(强类型) |
---|---|---|---|---|
输入 | scanf("%d",&var) | cin >> var | var=input() | |
保存方式 | 按格式保存 | 智能对象 | string类型 | |
—— | —————— | —————— | —————— | —————— |
输出 | printf("") | cout << "" (智能对象) | print("") | System.out.println(“”) |
库的依赖 | 依赖于标准库<stdio.h> | 依赖于库<iostream> | 使用内置函数 | |
默认换行 | 否 | 否 | 是 | 是 |
智能转换 | 否,一般用格式化输出 | 是,cout << 1 | 是,print(1) | 是 |
拼接输出 | #include <string.h> strcat('1',1); | cout << '1' << 1 | print('1'+str(1)) | 直接+ 就行 |
比较总结
语言 | C | C++(超集) | C# | Java | Js | Ts(超集) | Python |
---|---|---|---|---|---|---|---|
变量类型1 | 静态变量 | 静态变量 | 静态变量 | 静态变量 | 动态变量 | 静态变量 | 动态变量 |
预声明类型 | 需声明类型 | 需声明类型 | 需声明类型 | 需声明类型 | 仅声明作用域 | 需声明类型 | 不声明类型 |
变量类型2 | 弱类型 | 弱类型 | 强类型 | 强类型 | 弱类型 | 弱类型 | 强类型 |
———— | ———— | ———— | ———— | ———— | ———— | ———— | ———— |
编译or解释 | 编译型语言 | 编译型语言 | 编译解释语言 | 编译解释语言 | 解释型语言 | 编译解释语言 | 解释型语言 |
可当脚本语言 | 否 | 否 | 是 | 否 | 是 | 是 | 是 |
函数原型声明 | 需要 | 需要 | 不需要 | 不需要 | 不需要 | ||
函数定义位置 | 约定定义在后 | 约定定义在后 | 约定定义在后 | 先定义后调用 变量提升除外 | 先定义后调用 变量提升除外 | 先定义后调用 | |
———— | ———— | ———— | ———— | ———— | ———— | ———— | ———— |
对象 | 不面向对象 | 面向对象 | 面向对象 | 原生不支持 | 面向对象 | 面向对象 | |
模块命名空间 | 不支持 | 支持 | 支持 | 原生不支持 | 支持 | ||
语法 | |||||||
特色 | |||||||
———— | ———— | ———— | ———— | ———— | ———— | ———— | ———— |
分号风格 | 有分号风格 | 有分号风格 | 有分号风格 | 有分号风格 | 可有可无 | 可有可无 | 无分号风格 |
结构风格 | 大括号风格 | 大括号风格 | 大括号风格 | 大括号风格 | 大括号风格 | 大括号风格 | 缩进风格 |
—————— | —————— | —————— | —————— | —————— | —————— | —————— | —————— |
命名-普通 | 驼峰/下划线/大驼 | 驼峰/下划线/大驼 | 驼峰/下划线/大驼 | 下划线 | |||
命名-函数 | 驼峰/下划线/大驼 | 驼峰/下划线/大驼 | 驼峰 | 下划线 | |||
命名-类 | 结构体:大写 | 结构体:大写 | 大驼峰 | [__]大驼峰 | |||
命名-常量 | 大写+下划线 | 大写+下划线 | 大写+下划线 | 大写+下划线 | |||
命名-文件 | file_ | 大驼峰 要与公共类名相同 | 尽量短小 |