编程语言和javascript
编程语言的发展:
第一代编程语言:机器语言,使用二进制的指令直接操作CPU进行工作。这种语言晦涩难懂,不利于人类阅读,编程难度非常大。
第二代编程语言:汇编语言,采用一些“英文单词”(助记符)来表示CPU的某一条指令,方便程序员记忆CPU的指令。
ADD AX 5;
MOV BX 3;
汇编语言在一定程度上降低了编程复杂度,但是不具有通用性(每一种CPU都有自己特定的指令集)。CPU不能直接识别汇编语言,汇编语言程序需要先编译为机器语言,才能被执行。
第三代编程语言:高级语言,使用更加接近人类语言(英文)的语法进行编程,例如if,for,等单词。极大的降低了编程复杂度。高级语言也不能被CPU直接识别,也需要编译。目前市面上使用的编程语言都属于高级语言。
高级变成语言又分为许多不同类型。
按照运行方式,分为编译型和解释型(脚本型)。
编译型:程序源代码不能直接运行,需要一次性的编译为可执行程序(机器指令),然后运行可执行程序。代表:C,C++,pascal,C#
解释型:源代码不需要编译,直接把源代码载入运行环境(虚拟机),由运行环境实时对源代码进行编译(编译一行,执行一行)。代表:javascript,php。
理论上,编译语言的执行效率高于解释型语言。
目前,编译型语言和解释型语言的界限越来越模糊,很多语言既有编译型语言的特点也有解释型语言的特定,例如JAVA,JAVA语言需要编译,但是编译之后的不是机器指令,而是针对于JAVA运行环境(虚拟机),在运行时还需要解释,这类语言可以成为半编译半解释型语言。
按照数据强弱类型,分为强类型语言和弱类型语言。
强类型:变量,函数参数,函数返回值都具有固定的类型,不同类型的数据之间不能相互赋值,否则会出现语法错误。代表:C,C++,java,c#
弱类型:变量,参数,返回值没有固定的类型,一个变量可以赋值任何类型的数据。代表:js,vb,php,
强类型语言语法更加严谨、规范,适合多人合作开发的大型项目。
弱类型语言使用灵活、方便,适合个人小型项目的开发。
按照编程范式,可分为面向对象和面向过程(结构化编程)。
面向过程:专注于某个功能的开发,把函数作为开发单位,函数是研究主体。代表:C,Fortran,
面向对象:专注于类和对象的设计,把对象作为开发单位,类和对象是研究主体。代表:JAVA,C#
面向过程的开发方式适合简单、小型的项目开发,对于大型项目更适合使用面向对象的开发,所以,很多语言逐渐由面向过程转变为了面向对象,但同时又保留了面向过程的特点,例如C和C++。C++保留了C语言的所有特点,所以C++既能实现面向对象编程,也能实现面向过程编程,这类语言成为多范式编程语言。js也属于多范式编程语言。
JavaScript,是一种弱类型,多范式的解释型语言。
JavaScript在发明之初,仅仅作为一门脚本语言供浏览器写脚本使用,但是随着js越来越流行,很多公司都选择js作为开发语言,例如谷歌的nodejs,可以实现服务端开发。微软的UWP,可以使用js开发windows桌面应用。