zoukankan      html  css  js  c++  java
  • 编程范式及其代表语言

    编程范式

    核心概念

    关键突破

    主要目的

    代表语言

    运行机制

    实现原理

    常见应用

    命令式/过程式

    Imperative/Procedural

    命令/过程

    Command

    /Procedure

    突破单一主程序和非结构化程序的限制

    模拟机器思维,实现自顶向下的模块设计

    Fortran/Pascal/C

    命令执行

    引入逻辑控制和子程序

    交互式、事件驱动型系统;数值计算等

    函数式/应用式

    (Functional/Applicative

    函数

    Function

    突破机器思维的限制

    模拟数学思维,简化代码

    Scheme/Haskell

    表达式计算

    引入高阶函数,将函数作为数据处理

    微积分计算;数学逻辑;博弈等

    逻辑式

    Logic

    断言

    Predicate

    突破逻辑与控制粘合的限制

    专注逻辑分析,减少控制代码

    Prolog/Mercury

    逻辑推理

    利用推理引擎在已知的事实和规则的基础上进行逻辑推断

    机器证明;专家系统;自然语言处理;语义网(semantic web);决策分析;业务规则管理等

    对象式

    Object-Oriented

    对象

    Object

    突破数据与代码分离的限制

    迎合人类认知模式,提高软件的易用性和重用性

    Smalltalk/Java

     

    对象间信息交换

    引入封装、继承和多态机制

    大型复杂交互式系统等

    并发式/并行式

    Concurrent/Parallel

    进程/线程

    Process/Thread

    突破串行的限制

    充分利用资源、提高运行效率、提高软件的响应能力

    Erlang/Oz

     

    进程/线程间通讯与同步

    引入并行的线程模块以及模块间的通讯与同步机制

    图形用户界面;I/O处理;多任务系统如操作系统、网络服务器等;实时系统;嵌入式系统;计算密集型系统如科学计算、人工智能等

    泛型式

    Generic

    算法

    Algorithm

    突破静态类型语言的限制

    提高算法的普适性

    Ada/Eiffel/C++

     

    算法实例化

    (多发生于编译期)

    利用模板推迟类型指定

    普适性算法如排序、搜索等;集合类容器等

    元编程

    Metaprogramming

    元程序

    Metaprogram

    突破语言的常规语法限制

    减少手工编码,提升语言级别

    Lisp/Ruby/JavaScript

    动态生成代码或自动修改执行指令

    利用代码生成或语言内建的反射(reflection)、动态等机制,将程序语言作为数据来处理

    自动代码生成;定义结构化配置文件;IDE;编译器;解释器;人工智能;模型驱动架构(MDA);领域特定语言(DSL)等

    切面式

    Aspect-Oriented

    切面

    Aspect

    突破横切关注点无法模块化的限制

    实现横切关注点分离

    AspectJ/AspectC++

     

    在接入点处执行建议

    通过编织(weaving)将附加行为嵌入主体程序

    日志输出;代码跟踪;性能监控;异常处理;安全检查;事务管理等

    事件驱动

    Event-Driven

    事件

    Event

    突破顺序、同步的流程限制

    调用者与被调用者在代码和时间上双重解耦

    C#/VB.NET

    监听器收到事件通知后做出响应

    引入控制反转和异步机制

    图形用户界面;网络应用;服务器;操作系统;IoC框架;异步输入;DOM

  • 相关阅读:
    lintcode:落单的数
    lintcode: 翻转链表
    lintcode :Reverse Words in a String 翻转字符串
    lintcode :Invert Binary Tree 翻转二叉树
    lintcode : 空格替换
    lintcode:Matrix Zigzag Traversal 矩阵的之字型遍历
    lintcode: 爬楼梯
    lintcode:Compare Strings 比较字符串
    lintcode: 有效的括号序列
    lintcode :Valid Palindrome 有效回文串
  • 原文地址:https://www.cnblogs.com/tonybinlj/p/1440356.html
Copyright © 2011-2022 走看看