关于昨天的思考:
- 编译器的各个步骤有哪些?
- 能否省略其中某个步骤
- 编译器是怎样解析代码的?
- 什么是语法树?
- 怎样生成目标程序?
- 语义分析和语法分析有什么不同?
- 中间代码是怎么生成的?
- 代码优化有必要么?
- 什么是三地址代码?
- 编译器怎样记录源程序中使用的变量的名字?
- 编译构造工具有哪些?
今天的是讲一讲编程语言,为什么会有这么多不同的编程语言?为什么还会有新的编程语言?
https://v.qq.com/x/page/a0821r4y8o0.html
1.3 The Economy of Programming Languages
这里可以看看程序设计语言的发展历程:
第一台电子计算机出现在20世纪40年代,使用由0,1序列组成的机器语言编程,这个序列明确的告诉计算机以什么样的顺序执行那些运算,运算本身也是很底层的:把数据从一个位置移动到另一个位置,把两个寄存器中的值相加,比较两个值......
高级程序设计语言:
20世纪50年代,助记汇编语言的开发,开始人类友好编程。一开始,一个汇编语言中的指令仅仅是机器指令的助记表示,后来,宏指令被加入到汇编语言中,这样,程序员就可以通过宏指令为频繁使用的机器指令序列定义带有参数的缩写。
走向高级的重大一步:
20世纪50年代后五年,用于科学计算的Fortran语言,用于商业数据出路的Cobol语言和用于符号计算的Lisp语言被开发出来。
当前:
有几千种程序设计语言,分类方式很多,其中按照语言的代可以这样分类:
- 第一代:机器语言
- 第二代:汇编语言
- 第三代:Fortran,Cobol,Lisp,C,C ,C#,Java(高级程序设计语言)
- 第四代:为特定应用设计的语言,比如用于生成报告的NOMAD,用于数据查询的SQL,用于文本排版的Postscript。
- 第五代:基于逻辑和约束的语言,比如Prolog,OPS5
另外一种分类是分成
- 强制式语言 C,C ,JAVA,C#
- 声明式语言 ML,HASKELL,PROLOG
- 冯诺依曼语言 FORTRAN,C
- 面向对象语言 C ,C#,JAVA,Ruby
- 脚本语言 AWK,JavaScript ,Perl ,PHP,Python ,Ruby ,TCL
编程语言和编译器有关系么?
有关系,紧密相关。