计算机语言分类及特点
计算机语言分类及特点
1.范式划分
1. 命令式
即指令式编程( Imperative)
诸如 C 、Java 、Python 等;满足图灵完备
每一步都是指令;编程时需把解决问题的具体逻辑和相关结构全部实现
2. 声明式
声明式编程 ( Declarative ) 描述目标的性质,让电脑明白目标,而非流程
函数式编程是其一个子集
诸如 Html、XSLT 、Scheme 、Clojure 、Haskell、SQL、正则表达式等;无需图灵完备
3. 多范式
诸如 C# 、 Lisp 既可支持传统命令式编程范式,又可支持函数式编程
2. 功能划分
- 过程型编程语言:C 、Rust 、Cython
- 面向对象数据建模语言:Java 、C# 、Eiffel
- C 的面向对象衍生语言: C++ 、D
- 面向数组的数据处理: MATLAB/Octave 、Julia
- 统计数数据分析: R
- 计算型管道建模:Haskell 、Scala 、Clojure
- 事件驱动编程:JavaScript 、Go 、Erlang
- 渐变类型:TypeScript
- 动态元编程:Ruby
- 实用问题解决:Lua 、PHP 、Perl
- 计算型思维:Scratch 、Logo
3. 特性划分
1. 汇编语言
汇编语言 (assembly language) 是一种用于电子计算机、微处理器、微控制器或其它可编程器件的低级语言
在不同设备种,汇编语言对应着不同的机器语言指令集
一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可在不同平台之间移植
特点:代码执行速度快,但是代码编写难度大,可读性差
2. 高级语言
通用语言;编写容易,代码可读性好,可移植
1. 编译型语言
诸如 C 、C++ 、Pascal 等都属于编译型 ( Compiled Language )
它是编译的时候直接编译成机器可以执行的或调用的程序;如:.exe 、 .dl 、.ocx 等类型
优势: 运行速度快,代码效率高,编译后程序不可修改且看不到原码,保密性好
劣势: 代码需要经过编译方可运行,可移植性差,只能在兼容的操作系统上运行
场合: 操作系统开发、大型应用程序、图像处理、数据库开发等
2. 解释型语言
诸如 Java、Javascript、python、php 等都属于解释型 ( Interpreted Language )
1. 脚本语言
常用的如 Unix shell 、 Javascript、 php 、perl
脚本语言以简单的方式快速完成某些复杂的事情
语法和结构通常比较简单;易学且无需编译直接通过解释器执行代码
优势:具有小巧灵活、动态、可移植型性强;
劣势:速度缓慢、运行时更耗内存
场合:系统的命令行(shell)、web网页脚本等
2. Java/C#
Java/C# 比较特殊,严格来说既不能算编译型也不能算解释型,所以单独列出来
它们都产生并保存中间码;Java产生Java字节码,C#产生CIL,然后通过虚拟机执行中间码
其中Java的虚拟机是 JVM(包含JRE),C#的虚拟机是CLR(包含.net framework)
执行时,JVM对Java字节码解释执行,CLR对CIL解释执行
执行过程中,运用到了即时编译这个技术(运行时编译)
以Java为例:
字节码 是一种和任何具体机器及操作系统环境无关的中间代码
它是一种二进制文件,是 Java 源文件( .java )由 Java 编译器编译后生产的目标代码文件( .class )
编程人员和计算机都无法直接读懂字节码文件,它必须由专用的 Java 解释器执行
严格上来说, Java 是一种在 编译 基础上进行 解释运行 的语言
JVM 是运行 Java 程序的软件环境,Java 解释器是 JVM 的一部分
不同的平台都有针对性的 JVM, 通过 JVM 把 具体的硬件平台以及操作系统环境分隔开来
不用考虑不同硬件平台以及操作系统的差异;也不用考虑 字节码在何种平台上生成的
换而言之,只要在当前硬件平台上安装了对应的 JVM 就可以运行 Java程序( 注意:JVM 不是跨平台的)
正是由于 JVM 把这种不同软、硬件平台的具体差异隐藏起来,才有 Java 代码 “一次编译,到处运行” 这一重要特性
正是这种特性,从而有效地解决了目前绝大多数高级程序设计语言需要针对不同系统来编译产生不同机器代码的问题
即 硬件环境和操作平台的异构问题,大大降低了程序开发、维护和管理的开销
4. 常用语言
1. C
底层编程语言的统治者;汇编语言向高级语言的过渡,被描述为“可移植的汇编语言 ”
也是系统性设计语言;面向过程
优势:代码量小;运行速度快;功能强大
劣势:危险性高(漏洞多);开发周期长;可移植性弱(相对于Java)
场合:主流操作系统内核;如 Windows的NT内核、Unix内核、Linux内核、Mac OSX内核
主流高级语言的编译器、解释器 如 python、Java、C#
各种算法库等
2. Java
目前最流行的静态面向对象编程语言( OOP )
具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点
优势:简单、安全、稳定、跨平台
一次编写,到处运行;多平台支持;强大伸缩性;多样化和功能强大的开发工具支持
劣势:需要运行环境、运行速度相对较慢;不适合开发桌面应用程序
由于跨平台,给产品增加了复杂性并且不能和底层打交道
场合:移动应用 (特别是Android)、桌面应用、Web应用程序、Web服务器和应用服务器
数据库连接、BS( Browser-Server)架构的ERP系统、金融系统、电子商务系统、网站等
3. Javascript
Javascript 是一种基于对象( Object)和事件驱动 (Event Driven) 并具有相对安全性的客户端脚本语言
是基于浏览器内核位 html 添加生命力的脚本语言;动态解释型语言;浏览器相当于 Javascript 的解释器
特点:动态、弱类型、单线程、内置支持类、跨平台
优势:减少网络传输(客户端可进行数据验证)
方便操纵 html 对象(根据需求定制)
支持分布式运算(客户端和服务端分离)
劣势:各大浏览器厂商对 Javascript 支持程度不同
待续……