关于如何处理面向对象、函数式、命令式、声明式编程

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:面向对象风靡编程界多年,函数式编程时不时的掀起一些浪花,命令式和声明式编程几乎一直只在教科书和 Wiki里面出现。这些都是编程界的瑰宝,如何将其融为一炉为我所用?面向对象这个定义很是模糊,自从 Java 横行,似乎 Java 和面向对象画上了等号,一提到面向对象,就是 Java 编程,就是 N 种设计模式。但实际上面向对象从来就和语言无关。面向对象更应该成为面向抽象编程,这种抽象思维是人类大脑思考外界的一种最重要的思考方式,有点像一棵树,不断的主干到分支再到枝叶,经过这种思考方式的处理,人类可以通过有限的

面向对象风靡编程界多年,函数式编程时不时的掀起一些浪花,命令式和声明式编程几乎一直只在教科书和 Wiki里面出现。这些都是编程界的瑰宝,如何将其融为一炉为我所用?

面向对象的本质

面向对象这个定义很是模糊,自从 Java 横行,似乎 Java 和面向对象画上了等号,一提到面向对象,就是 Java 编程,就是 N 种设计模式。但实际上面向对象从来就和语言无关。

面向对象更应该成为面向抽象编程,这种抽象思维是人类大脑思考外界的一种最重要的思考方式,有点像一棵树,不断的主干到分支再到枝叶,经过这种思考方式的处理,人类可以通过有限的思考能力思考无限复杂的问题,无论外界环境有多么复杂,经过有效的整理,人脑也能处理过来。这正是编程所需要的。

编程的过程是单个人创造一个属于自己世界的过程,需要为创立的世界订立规则,而当所创立的世界足够复杂时,需要人脑对复杂的规则进行抽象,以便能够以较小的成本维护自己创建的规则。

从这个角度来说,面向对象几乎是人类和 程序员 无时无刻都要用到的编程思维。

函数式编程

我们创立的世界规则里有一系列井然有序的定义,做出这些定义的原因是要将这些定义合理的组合在一起,进行数据的处理。可以说99%的系统开发的目的都是处理数据,将数据从一种形态转换成另一种形态,将多个数据源的数据整合在一起,从单一数据源根据特定规则生成多种形态的数据。

可以说,系统就像一个管道,数据流入然后流出。这对人类处理问题有重大意义,你可以生产一个管道,放在油田里进行石油的输送,放到路下面作为下水的管道,只要是流质的液体都可以使用,这种拿来就用的 工具 让人类处理问题变得简单了很多。

放在编程界,如果有一个函数,输入对应着自己想要的输出,那该省掉多少头发啊!所以,按照面向对象思考,但代码写成函数式,这是程序员必需的功课。

命令式编程

这种编程方式必不可少,但一般用于算法的实现,比如内存的管理。使用过 C 语言的同学肯定都试过,通过将硬件资源抽象成一系列的指针,通过指针向硬件中填充数据,这是硬件和软件的桥梁。

但是,也只在这种情况下,才适合采用命令式编程。

声明式编程

使用过 SQL 的同学都了解这是一种典型的声明式编程语言。

声明式编程产生的最根本的原因在于模块化,或者说逻辑隔离,即如果能够让一个人即使不需要了解某些逻辑也能达到目的,那就将这部分逻辑隔离。对于 SQL,使用的人只需要知道怎样可以取到数据即可,而不需要关心取到数据的逻辑,即使需要性能优化,也可以通过底层对 SQL 的转化来实现。

声明式编程是很重要的一种编程思维,尤其当系统逻辑较复杂时,通过这种思维进行必要的逻辑隔离就非常有必要了

总结

编程是一个不断提高的过程,提高最快的方法就是对同一个系统用不同的思路重写几遍,每一遍都有收获,每一遍都有提高。

事非经过不知难,但是难过之后才会有一览众山小。如果有时间,试着将经典的那几套系统在了解其核心概念的基础自己写一下,很快境界和眼光就上去了。例如 Redis,例如 K8S,例如 ES。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员的修炼

程序员的修炼

Jeff Atwood / 陆其明、杨溢 / 人民邮电出版社 / 2014-4 / 45.00元

《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下。 Jeff Atwood于2004年创办Coding Horror博客(......一起来看看 《程序员的修炼》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试