编程范式|青训营笔记

101 阅读4分钟
  1. 命令式/过程式(Imperative/Procedural) 代表语言:Fortran/Pascal/C 核心概念:命令/过程(Command/Procedure) 运行机制:命令执行 关键突破:突破单一主程序和非结构化程序的限制 实现原理:引入逻辑控制和子程序 主要目的:模拟机器思维,实现自顶向下的模块设计 常见应用:交互式、事件驱动型系统、数值计算等
  2. 函数式/应用式(Functional/Applicative) 代表语言:Scheme/Haskell 核心概念:函数(Function) 运行机制:表达式计算 关键突破:突破机器思维的限制 实现原理:引入高阶函数,将函数作为数据处理 主要目的:模拟数学思维,简化代码,减少副作用 常见应用:微积分计算、数学逻辑、博弈等
  3. 逻辑式(Logic) 代表语言:Prolog/Mercury 核心概念:断言(Predicate) 运行机制:逻辑推理 关键突破:突破逻辑与控制粘合的限制 实现原理:利用推理引擎在已知的事实和规则的基础上进行逻辑推断 主要目的:专注逻辑分析,减少控制代码 常见应用:机器证明、专家系统、自然语言处理、语义网、决策分析、业务规则管理等
  4. 对象式(Object-Oriented) 代表语言:Smalltalk/Java 核心概念:对象(Object) 运行机制:对象间信息交换 关键突破:突破数据与代码分离的限制 实现原理:引入封装、继承和多态机制 主要目的:迎合人类认知模式,提高软件的易用性和重用性 常见应用:大型复杂交互式系统等
  5. 并发式/并行式(Concurrent/Parallel) 代表语言:Erlang/Oz 核心概念:进程/线程(Process/Thread) 运行机制:进程/线程间通信与同步 关键突破:突破串行的限制 实现原理:引入并行的线程模块及模块间的通信与同步机制 主要目的:充分利用资源、 提高运行效率、提高软件的响应能力 常见应用:图形用户界面, I/O处理,多任务系统如操作系统、网络服务器等,实时系统,嵌入式系统,计算密集型系统如科学计算、人工智能等
  6. 泛型式(Generic) 代表语言:Ada/Eiffel/C++ 核心概念:算法(Algorithm) 运行机制:算法实例化 关键突破:突破静态类型语言的限制 实现原理:利用模板推迟类型指定 主要目的:提高算法的普适性 常见应用:普适性算法如排序、 搜索等,集合类容器等
  7. 元编程(Metaprogramming) 代表语言:Lisp/Ruby/JavaScript 核心概念:元程序(Metaprogram) 运行机制:动态生成代码或自动修改执行指令 关键突破:突破语言的常规语法限制 实现原理:利用代码生成或语言内建的反射、动态等机制,将程序语言作为数据来处理 主要目的:减少手工编码, 提升语言级别 常见应用:自动代码生成、 定义结构化配置文件、IDE、编译器、解释器、人工智能、模型驱动架构(MDA)、领域特定语言(DSL)等
  8. 切面式(Aspect-Oriented) 代表语言:AspectJ/AspectC++ 核心概念:切面(Aspect) 运行机制:在接入点处执行建议 关键突破:突破横切关注点无法模块化的限制 实现原理:通过编织(weaving)将附加行为嵌入主体程序 主要目的:实现横切关注点分离 常见应用:日志输出、代码跟踪、性能监控、异常处理、安全检查、事务管理等
  9. 事件驱动式(Event-Driven) 代表语言:C#/VB.NET 核心概念:事件(Event) 运行机制:监听器收到事件通知后做出响应 关键突破:突破顺序、 同步的流程限制 实现原理:引入控制反转和异步机制 主要目的:调用者与被调用者在代码和时间上双重解耦 常见应用:图形用户界面、网络应用、服务器、操作系统、loC框架、异步输入、DOM等
  10. 搜索引擎式(Search-Oriented) 代表语言:自然语言 核心概念:搜索(Search) 运行机制:复制,粘贴,修改 关键突破:突破自己记忆的限制 实现原理:利用搜索引擎在互联网上找到解决方案 主要目的:快速开发出自己不熟悉的领域的程序 常见应用:校园里各种大作业或者课程设计,工作中各种新领域原型快速开发等