在開發中咱們也不能太依賴於某個框架,不然這個框架不更新了,致使項目後期沒辦法維護,好比以前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