在开发中咱们也不能太依赖于某个框架,不然这个框架不更新了,致使项目后期没办法维护,好比以前Facebook提供的Three20框架
,在当时也是神器,可是后来不更新了,也就没什么人用了。所以我感受学习一个框架,仍是有必要了解它的编程思想
。前端
1.1 面向过程
:处理事情以过程为核心,一步一步的实现。react
1.2 面向对象
:万物皆对象编程
1.3 链式编程思想
:是将多个操做(多行代码)经过点号(.)连接在一块儿成为一句代码,使代码可读性好。a(1).b(2).c(3)后端
链式编程特色
:方法的返回值是block,block必须有返回值(自己对象),block参数(须要操做的值)服务器
表明
:masonry框架。网络
练习一
:模仿masonry,写一个加法计算器,练习链式编程思想。架构
1.4 响应式编程思想
:不须要考虑调用顺序,只须要知道考虑结果,相似于蝴蝶效应,产生一个事件,会影响不少东西,这些事件像流同样的传播出去,而后影响结果,借用面向对象的一句话,万物皆是流。并发
表明
:KVO运用。框架
练习二
:KVO底层实现。
1.5 函数式编程思想
:是把操做尽可能写成一系列嵌套的函数或者方法调用。
函数式编程本质
:就是往方法中传入Block,方法中嵌套Block调用,把代码聚合起来管理函数式编程特色
:每一个方法必须有返回值(自己对象),把函数或者Block当作参数,block参数(须要操做的值)block返回值(操做结果)
表明
:ReactiveCocoa。
练习三
:用函数式编程实现,写一个加法计算器,而且加法计算器自带判断是否等于某个值.
ReactiveCocoa结合了几种编程风格:
函数式编程(Functional Programming)
响应式编程(Reactive Programming)
因此,你可能据说过ReactiveCocoa被描述为函数响应式编程(FRP)框架。
除了函数式编程、其它概念有必定类似性,或者说是从不一样角度、在不一样环境下的叫法。
一、IO多路复用、事件驱动、响应式 概念相似或者同样
就是不少网络链接(多路),共(复)用少数几个(甚至是一个)线程。
语言层面的感念
0:在C++ Java中都是语法糖等级的东西,换言之不加入同样也有高阶函数。
1:Python, C#, Perl, JS, VB, 都是2010前加入Lambda的(Dart, Swift的确有2010后Lambda,不过他们俩就是2010后出的语言)
2:若是说其余的,C#, Python的List Comprehension也是2010前的,Java Generic则是1998由Philip Walder(Haskell界大佬), Martin Odersky(Scala界大佬)搞出来的
3:若是要说更远的影响力,Smalltalk都被Lisp严重影响,而后Smalltalk再影响如今一大推OO语言。
经常使用于前端开发的一种技术?
多用于前端概念 JavaScript Node.js(解释和执行JavaScript代码的平台,用于后端) iOS的Run loop
JavaScript 运行机制详解:再谈Event Loop
一种在后端网络编程中的一种技术
空管员管理飞机例子 见: IO 多路复用是什么意思?
IO多路复用机制详解 服务器,并发,“事件驱动”的本质 IO多路复用机制详解
处理事物方式上的叫法?
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
一种突出技术特色式的叫法?
Reactive Programming
响应式编程是一种面向数据流和变化传播的编程范式
例如,在命令式编程环境中,a:=b+c表示将表达式的结果赋给a,而以后改变b或c的值不会影响a。但在响应式编程中,a的值会随着b或c的更新而更新。
例如,在MVC软件架构中,响应式编程容许将相关模型的变化自动反映到视图上,反之亦然。
例如,电子表格程序就是响应式编程的一个例子。单元格能够包含字面值或相似"=B1+C1"的公式,而包含公式的单元格的值会依据其余单元格的值的变化而变化。
iOS相关:ReactiveCocoa RxSwift