Grokking Simplicity FP CH1 ~ CH3 #1
steven4program
started this conversation in
General
Replies: 1 comment
-
👍🏻 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
《簡約的軟體開發思維:用 Functional Programming 重構程式》CH1 - CH3
簡報連結
20250410
導讀人:Lois
筆記工:Steven
第一章 初識函數式程式概念
函數式程式設計
Side Effect 定義:一個函數在計算過程中除了返回一個值之外,還對外部產生了影響。這裡的外部可以包括修改全域變數、寫入檔案、發送網路請求、發送電子郵件,甚至是更新用戶界面等。簡單來說,如果一個函數在運算時除了計算結果外,還改變了其他部分的狀態,那麼這個函數就有副作用。
實務中 FP 仍需要 Side Effect,這些 Side Effect 是我們使用軟體的根本原因
區分 Actions, Calculations 及 Data
FP Programmers 會把程式碼分成 Actions, Calculations 及 Data
區分的好處
今日大多數軟體開發都採分散式系統,而這正是 FP 擅長之處,而 FP 並不是新風潮,而是一種老牌的程式設計方法。
分散式系統的三項特徵:
FP Programmers 喜好 Data > Calculations > Actions,因為 Actions 在不同的時間跟執行次數會產生不同的節果,所以盡量將 Action 拆分為 Calculation 或 Data,可以降低程式執行中的不確定性,尤其是在複雜的分散式系統架構下。
FP 的經典定義較適用於學術界,仍未有適合軟體工程的定義,因此很多人的印象是既抽象又不切實際。本書著重於 FP 的實務面而非學術面的解釋
第一章總結
是否會產生 side effect 的函式
來分別 Actions 及 Calculations第二章 實務中的函數式思維
以經營 Toni's Pizza 披薩店來介紹 FP 概念,FP Thinking 可分為兩層:
分層設計 (Stratified Design)
分散式系統的寶貴經驗
從時間線學到的事
第二章總結
以下哪項是 Action
分散式系統中,如果沒有對多條時間線進行協調,會導致什麼問題?為什麼?
分層設計的核心理念
第三章 分辨 Actions、Calculations 與 Data
Action - 會產生 Side effect,是 impure function
Calculation - 透過運算將輸入轉為輸出,Pure function
Data - 關於事件的事實紀錄
應用時機
以買菜為例:
重點:FP 程式設計師要注意 Action 可能是由多個 Calculation, Data 及其他 Actions 構成。要了解如何將 Actions 拆解成 Calculation, Data 及其他小 Actions
買菜教會我們的五件事
深入探索:Data
應用實例
Coupon Dog 為例
Action 會在程式碼中擴散
Actions 形式多變
第三章總結
哪一段屬於 Calculations ?
alert("Hello world!")
new Date()
selectCouponsByRank(coupons, "good")
✅emailSystem.send(email)
請舉出另一個日常生活中的例子來說明其中的 Action 與 Data 是什麼
請說明「 Actions 的特質會在程式中擴散」這句話的意義,以及這種特性可能帶來的風險
為什麼在函數式設計中,我們希望將「決策」與「行動」分開?
Beta Was this translation helpful? Give feedback.
All reactions