Main paradigm approaches[edit]

The following are widely considered the main programming paradigms, as seen when measuring programming language popularity. There is some overlap between paradigms, inevitably, but the main features or identifiable differences are summarized in this table:

None of the main programming paradigms have a precise, globally unanimous definition, nor official international standard. Nor is there any agreement on which paradigm constitutes the best method to developing software. The subroutines that implement OOP methods may be ultimately coded in an imperative, functional, or procedural style that may, or may not, directly alter state on behalf of the invoking program.

Paradigm Description Main traits Related paradigm(s) Critique Examples
Imperative Programs as statements that directly change computed state (datafields) Direct assignments, common data structuresglobal variables   Edsger W. DijkstraMichael A. Jackson CC++JavaPHPPythonRuby
Structured A style of imperative programming with more logical program structure Structogramsindentation, no or limited use of goto statements Imperative   CC++JavaPython
Procedural Derived from structured programming, based on the concept of modular programming or the procedure call Local variables, sequence, selection, iteration, and modularization Structured, imperative   CC++LispPHPPython
Functional Treats computation as the evaluation of mathematical functions avoiding state and mutable data Lambda calculuscompositionalityformularecursionreferential transparency, no side effects Declarative   C++,[1] ClojureCoffeescript,[2] ElixirErlangF#HaskellLispPythonRubyScalaSequenceLStandard MLJavaScript
Event-drivenincluding time-driven Control flow is determined mainly by events, such as mouse clicks or interrupts including timer Main loop, event handlers, asynchronous processes Procedural, dataflow   JavaScriptActionScriptVisual BasicElm
Object-oriented Treats datafields as objects manipulated through predefined methods only Objects, methods, message passinginformation hidingdata abstractionencapsulationpolymorphisminheritanceserialization-marshalling Procedural Here and[3][4][5] Common LispC++C#EiffelJavaPHPPythonRubyScalaJavaScript[6][7]
Declarative Defines program logic, but not detailed control flow Fourth-generation languagesspreadsheetsreport program generators     SQLregular expressionsCSSPrologOWLSPARQL
Automata-based programming Treats programs as a model of a finite state machine or any other formal automata State enumerationcontrol variablestate changes, isomorphismstate transition table Imperative, event-driven   Abstract State Machine Language

Differences in terminology

https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms

最新文章

  1. openfire的组件(Component)开发
  2. mysql case when then end学习
  3. 解决tableView分割线左边不到边的情况
  4. And Then There Was One
  5. WEB开发者必备的7个JavaScript函数
  6. DZY Loves Colors
  7. 使用JQuery获取对象的几种方式
  8. UltraEdit-32 恢复到初始默认配置
  9. OpenWrt配置opkg.conf
  10. java---interrupt、interrupted和isInterrupted的区别
  11. Css详解之(选择器)
  12. 新闻网站开发-手机端-基于Wordpress
  13. 【原创】大数据基础之HDFS(1)HDFS新创建文件如何分配Datanode
  14. 面试 -- 关于Activity的相关知识
  15. 1:Python开发:初识Python
  16. POJ 1094 Sorting It All Out 【拓扑排序】
  17. Win10系列:VC++文件选取
  18. python 2.0 与 python 3.0 区别
  19. Influxdb安装部署
  20. RxJava中的doOnSubscribe默认运行线程分析

热门文章

  1. bootstrapvalidator使用,重置校验
  2. linux 结构需要清理 (structure needs cleaning)
  3. 16种C语言编译警告(Warning)类型的解决方法
  4. [SDOI2016]数字配对(费用流+贪心+trick)
  5. Web项目部署(Flask Angular2 Nginx)
  6. JAVA 中 重定向
  7. C#-WinForm中文本框的中文乱码问题
  8. 数据库连接池和connection的理解
  9. 不做Next,争做Nest——庆科首届智能硬件创新设计大赛产生决赛12强
  10. 最全Pycharm教程(38)——Pycharm版本号控制之远程共享