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

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

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

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

面向对象的本质

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

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

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

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

函数式编程

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

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

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

命令式编程

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

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

声明式编程

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

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

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

总结

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

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


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

查看所有标签

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

Spring Into HTML and CSS

Spring Into HTML and CSS

Molly E. Holzschlag / Addison-Wesley Professional / 2005-5-2 / USD 34.99

The fastest route to true HTML/CSS mastery! Need to build a web site? Or update one? Or just create some effective new web content? Maybe you just need to update your skills, do the job better. Welco......一起来看看 《Spring Into HTML and CSS》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具