高级语言和低级语言
常见的低级语言:机器码,汇编语言
常见的高级语言:C,Java,Python等
机器码:计算机能够直接识别的二级制编码,无论语言多高级都要转成二级制文件来让计算机识别运行。
汇编:用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,在不同的设备中有着不同的指令集
高级语言:为省去编程时候的不必要的操作细节,节省代码量,可读性强,维护性强,更贴近人性化 高级语言与低级语言的区别:高级语言大部分不能直接更硬件打交道,这使得相对来的程序运行速度降低,总之一句话来说那种语言更接近人性化的语言就更高级。
动态语言和静态语言
动态语言是指程序运行期间才给变量制定数据的类型,常见的语言有:Object-C、C#、JavaScript、PHP、Python、Erlang。
静态语言则恰好相反,在写程序代码的时候就要制定数据的类型,这种语言有C,java,C++
1、编译型语言
需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。
编译是把源代码编译成机器码,
链接是把各个模块的机器码和依赖库串连起来生成可执行文件。
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
代表语言:C、C++、Pascal、Object-C以及最近很火的苹果新语言swift
2、解释型语言
解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
代表语言:JavaScript、Python、Erlang、PHP、Perl、Ruby
3、混合型语言
既然编译型和解释型各有缺点就会有人想到把两种类型整合起来,取其精华去其糟粕。就出现了半编译型语言。比如C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时由JIT在编译成机器码缓存在内存中,下次直接执行(博友回复指出)。我个人认为抛开一切的偏见C#是这个星球上最好的编程语言。可惜微软的政策限制了C#的推广。
Java先生成字节码再在Java虚拟机中解释执行。严格来说混合型语言属于解释型语言。C#更接近编译型语言。
面向对象与面向过程的区别
属性:是用来描述某个对象的特征,
类:具有同种属性的对象成为类,比如人就是类,但是每个人就是一个对象。
面向过程与面向对象的优缺点
面向过程
优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护、易复用、易扩展
优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
缺点:性能比面向过程低
JavaScript,java是面向对象的