前言
目录
本文只是我自己对编程语言的理解与自我总结,并不是严谨的、科学的、学术性的知识,所以各位看客不要太当真,如果发现了错误也欢迎指正。
一、编程语言是什么
编程语言是对计算机的高层次抽象,是人们在长期使用计算机过程中抽象出来的用于操作计算机的一种工具,或者说编程语言这一整个系统就是对计算机的整体或者部分抽象。
甚至,可以把编程语言系统理解为一部抽象机,一台虚拟机。
二、编程语言的发展
机器码时代
机器码时代,程序员直接使用机器码进行编程,效率极低,而且由于机器码是一连串的01,稍有不慎就会写错,所以这个时代的简直就是程序员的刀耕火种的时代。
汇编语言时代
为了解决机器码难以理解以及难以书写的问题,汇编语言被设计出来,这种编程语言可以认为是机器码的直接对应,每一条汇编指令都对应于一个机器码,这个时代开始进入工业化初期。
汇编到高级语言过渡时代
汇编语言虽然易于理解,但是书写仍然具备一定的难度,它要求程序员必须了解机器的各种细节,而且编码效率很低,于是一种更高层次的编程语言被发明出来,典型代表就是C语言,这个时代正式进入工业化。
高级语言时代
C语言本身也存在一些问题,例如封装性、代码复用性以及内存安全等,于是高级语言被发明出来,它们出生就具备了面向对象的特性,于是代码的封装性以及复用性都更好,甚至某些语言没有指针的特性,所以也就不存在内存安全问题了,它们中的一大批代表有C++、Java、C#等,这个时代完全进入了工业化。
三、编程语言的通常组成部分
1、source text
它规定了该编程语言的源字符集,即该编程语言内的合法的基本符号。
2、lexical rules
它是该编程语言的词法规则,词法规则规定了该编程语言所允许的基本的token组成,即源字符的基本组合方式。
3、syntax rules
它是编程语言的语言规则,语法规则规定了该编程语言所允许的语句的token组合,即一条语句的token的组合方式。
4、type system
类型系统是整个编程语言的核心,它回答了该编程语言对信息的表示,回答了存储在计算机中的值的含义。对于程序来说,其实就是围绕着这些信息进行处理得到另外一些信息的过程。
5、semantics
语义部分回答了符合语法规则下的语句是否具备一定含义的问题,也就是在该编程语言之中,这一条语句是否能够被理解以及被计算的问题。
6、scope
作用域规定了标识符的生命周期,相当于规定了某部分信息的可作用范围,通过对某部分信息作用域的限制,可降低了程序处理信息的复杂度。