美文网首页
第二部分 从基础构建开始:编程范式——第三章 总览 ~第五章 面

第二部分 从基础构建开始:编程范式——第三章 总览 ~第五章 面

作者: 游标卡尺玩蛇 | 来源:发表于2019-12-29 01:59 被阅读0次

引言

1938年,图灵打下了计算机编程的地基。到如今,编程语言层出不穷。在另一方面,编程范式也从中孕育而出。

今天,我们只有三种编程范式,未来也几乎不可能出现新的。

正文

第三章

编程范式总览

  • 结构化编程
  • 面向对象编程
  • 函数式编程

结构化编程起源于goto的滥用,无限制的goto会损害程序的结构。
且所有的goto均被证明可用if else do while等关键字替代,因而废除goto,诞生了结构化编程

面向对象,函数在类内运行,可以保证函数return后的值继续保存在类中,诞生了面向对象。

函数式编程来源于数学的函数,是λ(lambda)演算的衍生物,其中最重要的思想是数据的不可变性

结构化编程对程序控制权的直接转移进行了限制和规范
面向对象编程对程序控制权的间接转移进行了限制和规范
函数式编程对程序的赋值进行了限制和规范

这三种范式恰好对应了软件架构的三个重点

  • 功能性--结构化
  • 组件独立性--面向对象
  • 数据管理--函数式

第四章

结构化编程被发现的历史(略)
大量的goto不易被拆分为独立,方便测试的模块,因而被废除。

第五章

面向对象编程

几种对于面向对象的解释

  • 数据与函数的组合

  • 对真实世界的建模方式

  • 一些神秘的词语,封装,继承,多态
    面向对象的特性有他们三个,但他们并不是面向对象的真正含义

  • 封装

  • 继承

  • 多态

封装

我们将一组关联的数据和函数,画一个圈,圈起来。
让圈外面的代码只能看到,想让他看到的部分

一个实例,不面向对象的C 可以完美的做出封装。面向对象的C++,因为头文件声明的原因,反而封装的不彻底。

继承

继承在面向对象编程之前早已存在,但是面向对象编程更加便利

多态

面向对象封装了使用函数指针的危险性。

从此可以方便的面向接口,一个抽象的概念体展开编程。

控制反转

不面向接口编程,是A调取B,则A依赖于B。

面向接口编程,
A调取B的抽象接口C,A依赖于C,
B实现C,B也依赖于C,
但是从此,D、E、F等都可以实现C,只要实现C,即可被A调用。
那么将A、C封装在一起看作一体的新A,即可达成了(依赖倒置)控制反转,B依赖于新A。

微信图片编辑_20191229014237.jpg

面向对象就是以多态为手段,对源代码中的依赖关系进行控制的能力

因为此,面向对象规避了互相依赖的复杂关系,使得各个模块真正做到独立部署,也产生了不同的组件,更在此基础上产生了软件的分层。

相关文章

  • 第二部分 从基础构建开始:编程范式——第三章 总览 ~第五章 面

    引言 1938年,图灵打下了计算机编程的地基。到如今,编程语言层出不穷。在另一方面,编程范式也从中孕育而出。 今天...

  • 函数式编程

    面向对象编程和面向过程编程都是编程范式,函数式编程也是一种编程范式,意味着它们都是软件构建的思维方式。与命令式或面...

  • 函数响应式编程

    # 函数响应式编程 开始之前了解一下什么是函数响应式编程? 函数响应式编程是种编程范式。它是通过构建函数操作数据序...

  • 函数响应式编程和 RxSwift+MVVM

    Function Reactive Programming:函数响应式编程是种编程范式。我们通过不同的构建函数,来...

  • Swift - 多范式编程语言

    Swift的编程范式 编程范式是程序语言背后的思想。代表了程序语言的设计者认为程序应该如何被构建和执行。常见的编程...

  • 计算机二级公共基础部分7.25

    1数据库的三大范式 第一范式:关系中的每个属性都不可再分 第二范式:在第一范式基础上,消除了非主属性对于码的部分函...

  • 数据库面试题(一)

    0X00 基础知识 四大范式 第一范式 所有属性都是原子性的,不可再分 第二范式 无关属性不能对码的部分有函数依赖...

  • 技术领导力

    吃透基础技术 编程 C 直接和内存地址打交道,C语言设计第二版,内存管理,网络 了解汇编语言 编程范式算法 数据库...

  • Mysql相关面试题

    1.何为范式? 第一范式(1NF):第一范式就是无重复属性的列。 第二范式(2NF):第二范式是在第一范式的基础上...

  • AI技术栈

    第一部分 Python详解 环境构建基础编程数组和元组文件操作函数编写面向对象MYSQL编程网络编程多线程编程JS...

网友评论

      本文标题:第二部分 从基础构建开始:编程范式——第三章 总览 ~第五章 面

      本文链接:https://www.haomeiwen.com/subject/eikeoctx.html