基于scala的框架
play: web框架, 仿制rails
spark: 大數(shù)據(jù)分析
動態(tài)類型和靜態(tài)類型
動態(tài): 運行時, 進行類型檢查
靜態(tài): 編譯時, 進行類型檢查
簡單地說宇植,在聲明了一個變量之后瘦材,不能改變它的類型的語言,是靜態(tài)語言胰柑;能夠隨時改變它的類型的語言,是動態(tài)語言.
為什么要靜態(tài)類型
- 編譯檢查, 安全類型
- 工具提示
- 性能好
- Java/C#
為什么要動態(tài)特性
- 輕量和靈活, 可根據(jù)框架自動生成代碼
- 運行時改變程序的行為
- Python/Ruby, JavaScript
什么是碼農(nóng)? 人肉編譯器, 把業(yè)務場景編譯成代碼
為什么要面向?qū)ο?/h1>
解決問題更方便, 快捷?
面向?qū)ο蟾玫孛枋鰳I(yè)務邏輯, 與人認知世界的方式相似(總結(jié))
三大特征, 解決三個問題
- 封裝, 規(guī)范, 可維護
- 繼承, 可重用
- 多態(tài), 可擴展(javascript如何實現(xiàn)?)
Java數(shù)據(jù)和行為分開(Dao和Model), 不太面向?qū)ο? ruby on rails把數(shù)據(jù)和行為一同封裝(面向?qū)ο?.
TODO: 喪鐘為誰而鳴?
為什么要函數(shù)式編程
函數(shù)可以當做參數(shù)傳遞, 表述清晰
函數(shù)式編程特性, 如何解決 可維護性, 可重用性, 可擴展性?
面向?qū)ο? 對象在做事情; 函數(shù)式, 函數(shù)在做
| 解決問題 | 面向?qū)ο?| 函數(shù)式 |
|-------------------|
| 重用單位 | 類 | 方法 |
| 可維護性 | 信息封裝 | 信息不變化 |
| 可擴展性 | 類組合 | 方法組合 |
為什么函數(shù)式編程沒有流行起來?
圖靈完備: 可計算的都可計算. (遞歸, 需要無限的計算資源)
物理限制, 計算資源有限, 內(nèi)存有限
現(xiàn)今內(nèi)存和 cpu 運算速度指數(shù)增長, 以及對并行運算的需求
scala特性
動態(tài)性: REPL, 運行時編譯
tuple: 可以存儲不同類型的集合