一句话说说:命令式,声明式,函数式和面向对象编程

它们都是一种编程范式,或风格。它们都很棒,可以针对不同场合解决问题。

命令式编程,你关心的是“问题是怎么解决的”。程序按照你写下的步骤一步一步地来运行。显著的特点就是你会写下很多变量定义、赋值语句、遍历循环语句,来改变程序的一些状态参数。

声明式编程,你关心的是“要做什么”,而不关心“要怎么才能做到”。例如你写的SQL语句,能帮你获取到数据,而数据获取是如何实现的,一点都不关心(尽管可能你觉得写SQL语句不算编程,但它确实就是)。网页编程中用到的HTML 和CSS 也都属于声明式编程,它们要做的是展现内容,而不关心要怎么才能实现展示的过程。

函数式编程是声明式里面最火的一种编程范式。它关心的也是“What is to be done”,而不关心“How is it to be done”。它关心的是,什么作为输入,提供什么输出。函数是一等公民!举个例子,我不需要关心要怎么使用For循环来遍历一个数组,然后对它们做什么事情,我只需要用map(),reduce(),filter()…那些脏活交给它们就能完成并得到我想要的结果。

函数式编程里的技巧:纯函数(没有side-effects),高阶函数(输入或输出是一个函数);闭包;Immutability(Non-Mutable Data),不改变状态,就没有bug(大型应用中出现不知道在代码哪里,这个值被mutate了的bug),所以往往你的函数返回的是一个状态的副本。

面向对象编程可以说是命令式里面的主流了。它不仅关心要做什么,也关心要怎么做,更是以一种模拟现实世界模型以及它们之间关系的一种方式,来解决问题。

OOP特点:

  1. Everything is an Object.
  2. Each Object contains Some Data Fields and Methods.
  3. OOPs Concepts: Abstraction,Encaspulation,Inheritance and Polymorphism

FP和OOP之间PK


本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2

命令式:西红柿炒鸡蛋,先炒鸡蛋,再炒西红柿,最后两个一起炒。

声明式:老板,来个西红柿炒鸡蛋。

函数式:打开美团,下订单,小哥取餐,餐厅炒鸡蛋。

对象式:鸡蛋打碎、搅拌、放盐,西红柿洗净、切好备用,锅加热、放油、放鸡蛋、放西红柿,使用铲子翻炒,使用盘子盛菜。

1年前 评论

有没有一种可能,四个结合起来的? :flushed:

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!