面对过程
c
根据实际问题解决当前问题,代码重构能力低。
面对对象
java
通过类的封装等实现当前问题的一个通解,当遇到类似的问题时,通过类的继承可以方便地写出解决方案,本质上是为了提高代码重构能力。
函数式编程思维
h(g(f(x))) = > (h*(g*f))(x) = > ((h*g)*f)(x)
函数式编程关心数据的映射关系,你会总是在构造一个巨大的表达式(通过组合已有的表达式),然后把数据灌进去,结果就出来了。上面的公式你会写成右边的形式。
流操作
命令式编程思维
h(g(f(x))) < = (h*(g*f))(x) < = ((h*g)*f)(x)
命令式编程关心解决问题的步骤,你总是在操作数据,等你把数据操作完了,结果就出来了。上面的公式你会写成左边的形式
静态语言
c++ java
编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。变量类型指定后不可变。
动态语言
python
编译的时候不知道每一个变量的类型,因为类型错误而不能做的事情是运行时错误。变量类型是可变的。
强类型语言
偏向于不容忍隐式类型转换。仅仅是偏向,不是一点也不能。
注意:这里的类型转换不是指该变量改变了自身的类型,而是指赋值时,可以当作另一种类型进行运作。
弱类型语言
偏向于容忍隐式类型转换。
语言是强类型还是弱类型在学界尚有一定争论,因为两者的界限不是特别明了,或者说,程序员编程的影响大于语言本身的影响,如果程序员编程时考虑周全,添加各种隐式转换,那么就使其倾向于弱类型了
编译型语言
c c++
编译器会将源代码一次性全部编译成二进制文件,然后计算机可以直接执行。
解释型语言(脚本语言)
python GDscript
由解释器一行一行读取源代码,实时将源代码解释成计算机可识别的二进制数据执行。
java语言无疑是特别的那个,它先编译,再解释,由于编译出的是特殊的class文件,不是二进制文件,这个特殊文件由java虚拟机(解释器)执行,所以java是解释型语言