了解下语言的分类,以及主要的使用场合;
编译型和解析型
任何语言都有自己的一套语法,且必须被翻译成机器语言,计算机才能执行;
翻译的方式有两种:一个是编译,一个是解析;
1.编译型语言
运行前直接编译成CPU能执行的二进制机器码(所以运行速度快);
- 代码可以加密,只需要把编译后的机械码(例如exe文件)发布出去,不用发布源代码;
- 编译好的exe文件可在相对应的平台上运行,可移植性差,但是运行效率高;
1
C、C++、Objective-C、swift
2.解析型语言
代码在执行时会一行一行地翻译成CPU能理解的机器码(所以运行速度慢);
- 不能加密,必须发布源码;
- 不能脱离解析器运行,但是跨平台性好,只需要提供特定解析器(虚拟机)即可;
1
Python、Ruby、JavaScript、PHP、Erlang、Perl
- 区别解释型语言的主要特征并不在于是否能编译它们,而是在于编译器是否是语言运行时库的一部分,即是否有能力(并且轻易地)执行动态生成的代码。
强类型和弱类型
区别:不同变量进行变量赋值时,是否需要进行强制转换;
1.强类型语言: 需要进行显式(强制)转换;
1 | Java、C#、Python、Object-C、Ruby |
2.弱类型语言:不需要显式转换;
1 | JavaScript、PHP |
动态类型和静态类型
区别:类型是运行时检查,还是编译期检查;
1.动态类型语言:
变量本身类型不固定的语言,同一个变量可以赋不同类型的值;
1 | Python、Ruby、Erlang、JavaScript、swift、PHP、Perl |
2.静态类型语言:
类型固定的语言,在定义的时候必须指定变量类型,类型不匹配会报错;
1 | C、C++、C#、Java、Object-C |