1.按对机器依赖程度
(1)低级语言 面向机器,用机器直接提供的地址码、操作码语义概念编程。机器语言和汇编语言,宏汇编虽然抽象层次逐渐提高仍属低级语言的汇编语言(如8086汇编,68000汇编)。
(2)高级语言 独立于机器,用语言提供的语义概念和支持的范型编程。如命令式(Pascal,C,Ada)、函数式(LISP,ML)、逻辑式(Prolog)、关系式(SQL)、对象式(Smalltalk,C++)。
(3)中级语言 可以编程操纵机器的硬件特征但不涉及地址码和操作码。如字位运算,取地址,设中断,开辟空间、无用单元收回,用寄存器加速等。高级汇编,C,FORTH属此列。
2.按应用领域
(1)商用语言处理日常商业事务。有良好文字、报表功能,数据量大和数据库密切相关。代表语言是COBOL,RPG。
(2)科学计算数值计算量大,支持高精度、向量、矩阵运算。代表语言有FORTRAN、APL。
(3)系统程序设计支持与硬件相关的低级操作,编写系统程序(操作系统,编译、解释器,数据库管理系统,网络接口程序)的语言,如C,Ada,Bliss,FORTH。
(4)模拟语言模拟应用主要是以时间为进程模拟客观世界的状态变化。分离散事件模拟和连续模拟。代表语言有GPSS、SLAM、SIMULA 67。
(5)正文处理主要操作对象是自然语言中字符(英文)。很方便产生报告、表格、代表语言是SMOBOL。
(6)实时处理其特点是能根据外部信号控制不同的程序段并发执行。这类语言有并发Pascal、并发C、Ada、Mesa、OCCAM,FORTRAN—90,LINDA。用于通讯领域的程序设计语言都要有实时功能,如Gypsy、CHILL。
(7)嵌入式应用在一个大型机器(宿主机)上为小机器(或单片机)开发程序,经调试后将它译为小机器(目标机)的目标码在小机器上运行叫嵌入应用。如机载、弹载计算机。这类程序一般都有实时要求,并近于系统设计。代表语言Ada。
(8)人工智能应用这类程序是对人们的智力行为仿真。包括自然语言理解、定理证明、模式识别、机器人、各种专家系统。这类语言要能描述知识、并根据推理规则推断合理的结论。在符号运算上作谓词演算或λ演算是其推理运算的基本方式。代表语言有LISP和Prolog
(9)查询和命令语言 这是一类新兴的语言,是各种早期系统程序简单的用户命令的发展。数据库语言dBASE、SQL,操作系统UNIX的Shell语言为其代表。现代软件环境的用户界面语言更是丰富多采使用方便。其特点是与程序员的交互性和非过程性。
(10)教学语言为了培养程序员或使学生很快入门,人们设计了教学用语言。例如,过程程序设计有BASIC,结构化程序设计有Pascal,青少年启蒙有LOGO。但往往由于对程序语言的作用没有全面理解,初学者学到一门启蒙语言后就企图用它作软件设计,这是十分有害的。
(11)打印专用图文并用在各种打印机(包括激光)打印字体优美的报告、图形、图象。代表语言有:Postscript、Tex、Latex。
(12)专用于某类数据结构
·串处理,专用于处理正文字符串,抽取字符串,引用串函数,串形式匹配,回溯与穷举查找。代表语言有:SNOBOL、ICON。(www.xing528.com)
·数组处理,构造和操纵矩阵,可整体操纵数组。代表语言有APL,Visicale,Loutus。
·表处理,支持表的各种切割、连接操作。直接表I/O、动态堆栈分配。代表语言有:LISP、T、Scheme、Miranda。
(13)数据库应用
·数据库专用,可完成简单应用,复杂应用要嵌入通用程序设计语言,如SQL、Foxpro、Delphi、PowerBuilder。
·数据库程序设计语言既支持一般应用操纵临时对象(程序终止即消失),也可操纵数据库中持久对象,且可混合在一个程序中,如C++,C02,OPAL。
3.按实现计算方式
(1)编译型语言,用户将源程序一次写好,提交编译,运行编译得目标码模块。再通过连接编辑、加载成为内存中可执行目标码程序。再次运行目标码,读入数据得出计算结果。大多数高级程序设计语言属于这一类。
(2)解释型语言,系统的解释程序对源程序直接加工。一边翻译,一边执行。不形成再次调用它执行的目标码文件。大多数交互式(interactive)语言、查询命令语言采用解释型实现。典型的例子有BASIC、LISP、Python、APL、Shell、SQL、Java。它们的特点是所用翻译空间小,反应快,但运行效率慢。
4.按使用方式
(1)交互式语言,程序在执行过程中程序可陆续添加和修改,以对话方式实现计算。一般是解释型的。由于程序设计支持环境的发展,交互式语言可方便为用户调用各环境工具,有日益发展的趋势。
(2)非交互式语言,多数编译型语言的目标码文件执行期间,程序员不能干预,只能在执行完毕再修改。
5.按程序设计范型
(1)命令式语言,计算实现的模型如果按冯·诺依曼原理强制改变内存中的值叫命令(或译指令、强制Imperative式)的。所有过程语言都基于这个原理。由于强制改变值,程序状态的变化没有一定规则,程序大了就很难查错,很难调试,不易证明其正确。组织程序的范型即:算法过程+数据结构。到目前软件开发主导语言仍是命令式语言。近代命令式语言增加了模块强制类型检查、抽象数据类型、类属等机制可开发较安全、可靠的大程序。
(2)面向对象语言,将数据和其上的操作封装于对象中。对象归属于类对象,类对象有继承,实例对象上的操作可动态决定。程序是相互发消息通信的对象集合。代表语言有Simula—67,Smalltalk。
(3)数据流语言,传统过程语言中以程序控制保证程序功能实现,数据是分散的,为控制流服务。数据流语言以数据对象为核心加工过程为其服务。藉以提高运算速度。这种语言的程序设计方法学模型是基于数据流。数据流语言有Val和EUCLID。
(4)函数式语言,程序对象是函数及高阶函数,组织程序的范型是函数定义及引用。代表语言有LISP、FP、ML、Miranda。
(5)逻辑式语言,程序对象是常量,变量和谓词、组织程序的范型是定义谓词并写引用谓词的公式,并构造满足谓词的事实库和约束关系库。代表语言有Prolog。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。