关于编程语言的分类,前些日子跟一个技术人吐槽,该技术人说:“javascript不是一门编程语言,顶多是一门脚本”;我就想难道脚本就不是语言????啥逻辑??于是乎便去找相关的资料———传说中的龙书《编译原理》一书,把问题弄清楚;
按书中所说,可以通过几种方式对语言进行分类;
方法一通过语言的代来分类:第一代语言是汇编语言,而第三代语言是机器语言,第二代是汇编语言,第三代语言是Fortan、Cobol、Lisp、C、C++、C#及Java这样的高级语言第四代语言是为特定应用设计的语言,比如用于报告生成的NOMAD,用于数据库查询的SQL和文本排版的Postscript。术语的第五代语言指的是基于逻辑和约束的语言,比如Prolog和OPS5。
方法二把程序中指明如何完成一个计算任务的语言的称为强制式语言,而把程序中指明要进行哪些计算的语言称为声明式语言。诸如C、C++、C#和Java等语言都是强制式语言。所有强制式语言中都有用于表示程序状态和语句的表示方法,这些语句可以改变程序状态。像ML、Haskell这样的函数式语言和Prolog这样的约束逻辑语言通常被认为是声明式语言。
术语冯.诺伊曼语言是指以冯.诺伊曼计算机体系结构为计算模型的程序设计语言。今天的很多语言(比如Fortan和C)都是冯.诺伊曼语言。
方法三面向对象和非面向对象:面向对象指的是支持面向对象编程的语言,面向对象编程是指用一组相互作用的对象组成的程序编程风格。Simula67和Smalltalk是早期的主流面向对象语言。C++、C#、Java和Ruby是现在常用的面向对象语言。
到重点了——————脚本语言(scripting language)是具有高层次运算符的解析型语言,它通常被用于把多个计算过程“粘合”在一起。这些计算过程被称为脚本。Awk、JavaScript、Perl、PHP、Python、Ruby和Tcl是常见的脚本语言。使用脚本语言编写的程序通常要比其他语言(比如C)写的等价的程序短很多。
---------------------------最后,想声明的一点,就是讨论问题:争论是可以的,但是对自己的观点我们都要有理有据,不然一切都是扯淡。