Tuesday, September 24, 2019

Clojure made simple / What is good software?

Clojure made simple 是 Rich Hickey 用來解釋 Clojure 的 value proposition 的一部影片,仔細看過之後,我覺得影片一開始 10 分鐘的分析,非常的深刻。它提供了 Rich Hickey 對於 good software 的看法。

開頭沒有多久,Rich Hickey 就提到寫程式是一種 economic activity ,換言之,你是有雇客或是老闆的。那…雇客/老闆要什麼?他們要的東西就是兩件事:
(1) Something good
(2) Soon

那怎樣子的軟體算是 Something good 呢?定義該是什麼?Rich Hickey 定了三個條件:(Rich Hickey 有特別去強調, type 或是 tests 只是達成目標的手段之一,不能成為目標的定義。)
(a) Does what it is supposed to do
(b) Meets operational requirements
(c) Is flexible enough to accommodate change

然後,這三個 good software 的構成條件又可以拆解開來:
首先對於 (a)
It is very difficult to determine if large or elaborate or stateful programs do what they supposed to do.
而 Clojure 設計的目標之一,就是 making it easier to understand whether or not your program is going to do what it is supposed to do by making it substantially smaller and also by making it more functional.

對於 (b) ,有下列三個目標:
=> 1. Deployment/environment
=> 2. security
=> 3. performance
Clojure 可以透過 host 在 Java/Javascript 上來達成。

對於 (c) ,達成目標的重點在於 loose coupling