1.静态类型语言和强类型语言
静态类型语言是指在编译时变量的数据类型即可确定的语言,指需要进行变量/对象类型声明的语言,多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求。
强类型语言是一旦变量的类型被确定,就不能转化的语言。实际上所谓的貌似转化,都是通过中间变量来达到,原本的变量的类型肯定是没有变化的。
强类型语言=静态类型语言
一般情况下需要编译执行,例如C/C++/Java/C#。
静态语言如java,开发大型系统是有优势,其强类型、代码组织结构合理、 库特别丰富,至少java的库比php的要多很多,比如找一个能够操作excel的库,模仿linux的vimdiff功能的库等。
2.动态类型语言和弱类型语言
动态类型语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。
弱类型语言是一个变量的类型是由其应用上下文确定的。比如语言直接支持字符串和整数可以直接用 + 号搞定。当然,在支持运算符重载的强类型语言中也能通过外部实现的方式在形式上做到这一点,不过这个是完全不一样的内涵
弱类型语言=动态类型语言
一般情况下不需要编译(但也有编译型的),例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等。
动态语言如php, 其优点是开发相当快速,调试排错非常方便,这个再项目周期要求短的情况是一个巨大的优势,也是java不具备的一个优势。