语言按照语法分类

2. 编程语言通识 - 图1

产生式(BNF)

用形式化的语言精确描述程序设计语言的系统,上下文无关
四则运算产生式

  1. // 加法运算
  2. <MultiplicativeExpression>:=<Factor>|
  3. <MultiplicativeExpression> "*" <Factor>|
  4. <MultiplicativeExpression> "/" <Factor>
  5. // 乘法运算
  6. <AddtiveExpression>:=<MultiplicativeExpression>|
  7. <AddtiveExpression> "+" <MultiplicativeExpression>|
  8. <AddtiveExpression> "-" <MultiplicativeExpression>
  9. // 带括号的四则运算
  10. <Factor>:=<Number>|
  11. "(" <AddtiveExpression> ")"

类型系统

静态类型与动态类型

Java是静态类型,类型在编译阶段确定
JavaScript是动态类型,类型在运行时确定

强类型与弱类型

以是否有类型的隐式转换确定

复合类型

函数签名:如(T1, T2) => T3。java可以函数重载,javascript不可以函数重载
结构体:c有结构体,javascript对象字面量没有固定结构

子类型

协变:凡是能用Array的地方,都能用Array。如Java的继承
逆变:凡是能用Array的地方,都能用Array。如C#

命令式语言的组成

2. 编程语言通识 - 图2