名称 | 代表语言 | 核心概念 | 运行机制 | 关键突破 | 实现原理 | 主要目的 | 常见应用 |
元编程(Meta programming) | Lisp/Ruby/JavaScript | 元程序 | 动态生成代码或者自动修改执行指令 | 突破语言的常规语法限制 | 利用代码生成或语言内奸的反射、动态等机制,将程序语言作为数据处理 | 减少手工编码、提高语言级别 | 自动代码生成、定义结构化配置文件,IDE、编译器,解释器,人工智能、领域特定语言等 |
命令式/过程式(Impreative/procedural) | Fortran/Pascal/C | 命令、过程 | 命令执行 | 突破单一主程序和非结构化程序的限制 | 引入逻辑控制和子程序 | 模拟机器思维,实现自顶向下的模块设计 | 交互式、事件驱动型系统、数值计算等 |
函数式、应用式(Functional、Applicative) | Scheme/Haskell | 函数 | 表达式计算 | 突破机器思维的限制引入高阶函数、将函数作为数据处理 | 模拟数学思维,简化代码,减少副作用 | 微积分计算、数学逻辑、博弈等 | |
逻辑式 | Prolog/Mercury | 断言 | 逻辑推理 | 突破逻辑与控制粘合的限制 | 利用推理引擎在已知的事实和规则的基础上进行逻辑推断 | 专注逻辑分析、减少代码 | 机器证明、专家系统、自然语言处理、语义网、决策分析、业务规则管理等 |
并发式/并行式(Concurrent/Parallel) | Erlang/Oz | 进程、线程 | 进程、线程、协程间通信与同步 | 突破串行的限制 | 引入并行的线程模块以及模块间的通信与同步机制 | 充分利用资源、提供运行效率、提高软件的响应能力 | 图形界面,IO处理,多任务系统,计算密集型系统 |
泛型式(Generic) | Ada/Eiffel/C++ | 算法 | 算法实例化(多发生于编译期) | 突破静态类型语言的限制 | 利用模板推迟类型指定 | 提高算法的普适性 | 普适性算法如排序、搜索等,集合类容器等 |
切面式(Aspect-Oriented) | AspectJ/AspectC++ | 切面 | 在接入点处执行建议 | 突破横切关注点无法模块化的限制 | 通过编制将附加行为嵌入主题程序 | 实现横切关注点分割 | 日志输出、代码耿宗、性能监控、异常处理、安全检查等 |
时间驱动(Event-Driven) | C#/VB.NET | 事件 | 监听器收到事件后做出响应 | 突破顺序、同步的流程限制 | 引入控制反转和异步机制 | 调用者与被调用者在代码和时间上双重解耦 | 图形界面、网络应用、服务器、异步输入等、DOM等 |
对象式(Object-Oriented) | Smaltalk/Java/Objc | 对象 | 对象间信息交互 | 突破数据与代码分隔的限制 | 引入封装、继承和多态机制 | 迎合人类认知模式,提高软件的易用性和重用性 | 大型复杂交互系统等 |
编程语言的演化
最新推荐文章于 2023-12-27 10:23:22 发布