什么是编程范型
- 缘起:
上学的时候学习C/C++语言和Java语言,工作后又陆续接触了一些编程语言python/lua/objective-c等,
发现每门语言开始学习的东西都是相似的,helloworld程序、类型与变量、操作符、表达式及面向对象的类、继承和多态等,
这个时候就会发现这种重复就是一种规律--网上查找之后才知道这个叫做编程范型。 - 网上释义:
编程范型,是一类典型的编程风格,提供了(同时决定了)程序员对程序执行的看法。 - 编程语言的思考:
程序设计语言,是一个有限的词汇与规则的集合,用于描述一个特定的问题。
所有的编程语言最后都要编译成机器理解的二进制代码,理论上所有语言都是相等的。
但多语言的出现是伴随不同问题领域出现的,所以不同语言的侧重点也不同,语法也不同。 - 范型:
一个连贯完整的词汇集以及组合规则,可以产生一种范型--定义出很大一部分的语言特质。
范型的重要性,可生成简洁的、可读性强的代码,保持问题域和软件模型之间的一致性。 - 语言的其他特性:
语言的其他特质:类型种类(动态/静态),句法及其他因素。 - 使用多语言编程:
- 将问题域分解为差异明显的多个部分 -- 分析问题,合理的将分解问题
- 为子领域选择正确的/合适的语言/范型
编程范型简要体系
该体系结构摘录自:编程范型wiki
虽然很多看不太懂,但是感觉不明觉厉
推荐相关书籍:《七周七语言:理解多种编程范型》
- 面向代理
- 基于组件(如OLE)
- 基于流
- 管道(Unix/Linux中的管道)
- 连续式
- 并发计算
- 声明式(对比:命令式)
- 函数式
- 数据流
- 面向细胞(电子表格)(如Microsoft FoxPro)
- 无功
- 数据流
- 面向图形
- 目标导向
- 约束
- 逻辑
- 回答集编程
- 约束逻辑
- 溯因逻辑
- 归纳逻辑
- 逻辑
- 约束
- 函数式
- 事件驱动
- 面向服务
- 时间驱动
- 功能导向
- 函数级(对比:价值级)
- 命令式(对比:声明式)
- 非结构化
- 阵列(对比:标量)
- 迭代式
- 结构化
- 过程式
- 模块化
- 递归式
- 面向对象
- 基于类
- 基于原型
- 自动机
- 根据关注分离:
- 面向方面(如AspectJ)
- 面向主题
- 面向角色
- 过程式
- 非结构化
- 元编程
- 面向属性
- 自动
- 泛型
- 模板
- 基于原则
- 模板
- 面向语言
- 领域特定
- 面向语法
- 方言化
- 意图
- 泛型
- 反射式
- 不确定
- 并行计算
- 面向过程
- 大规模与小规模编程
- 价值级(对比:函数级)