| 程式人 | 林信良 | 程式學習 | 生命遊戲 | State | Rule | 狀態模式

生命遊戲與狀態模式

生命遊戲涉及細胞的生存狀態,若想以物件導向方式實作,觀察既有程式碼,識別出提取規則用的狀態,會是以狀態模式為思考方向時的重點!

2022-01-27

| 程式人 | 林信良 | 程式學習 | 模式

模式是語言缺陷?

關於模式是語言缺陷的說法太過單純,模式誕生於規律性,而規律性來自於重複,別忘了運算的本質就是重複,運算的本質就是模式!

2022-01-20

| 程式人 | 林信良 | 程式學習 | tuple | 資料型態 | Python | TypeScript | 函數式 | 資料載體

簡便資料載體的tuple

在具備tuple資料型態的程式語言中,別將其視為有限制的list,我們應該從簡易資料載體的角度來思考,如此一來,就能善用tuple的特性,將其應用於適當的場合

2022-01-13

| 程式人 | 林信良 | 程式學習 | ES 11 | ECMAScript 11 | bigint | JavaScript | 大整數

ES11的bigint

bigint只是用來替代第三方大數運算程式庫的新特性嗎?那為什麼它是設計成基本型態,而不是個標準API呢?現有的number在整數上又有哪些問題呢?加入越基礎的新特性,越需要更多的考量

2022-01-06

| 程式人 | 林信良 | 程式學習 | HTTP請求 | Java | Java 11 | HttpClient API | Reactive

HTTP用戶端歷史與API架構

目前Java生態圈的HTTP用戶端選擇眾多,想從中挑出符合自身需求的方案,我們可以從歷史發展與API架構中,多做探討與研究

2021-12-29

| 程式人 | 林信良 | 程式學習 | 技術網站 | Markdown | 靜態網站產生器 | iThome鐵人賽

技術網站架設經驗雜談

基本上,相關的技術採用越是單純,在實際寫作時,你就越能集中心力,而基於這樣考量而成的系統規畫,就是架設技術網站時最好的方案

2021-12-23

| 程式人 | 林信良 | 程式學習 | Python | Switch | 結構化模式比對 | Structural Pattern Matching | Match

思考Python結構化模式比對

Python 3.10終於有switch?請思考幾十年來Python為何都沒有switch,從而瞭解match真正的作用,是將特定結構的資料映射至值或動作

2021-12-16

| 型態提示 | Type Hints | 重載 | Optional | Python 3.5 | 程式學習 | 林信良

型態提示、重載與Optional

Python 3.5可進行型態提示,也可以透過型態提示進一步模擬重載,那麼,在定義函式簽署時,參數標註為Optional適合嗎?還是要遵從Java領域的建議,僅將Optional用於傳回型態?

2021-12-09

| Python | 資料科學 | 幾何工具 | scikit-geometry | 運算幾何 | Numpy | SciPy | scikit-image | 程式人 | 林信良 | 程式學習

Python資料科學與幾何工具

在Python生態圈中缺少了專為運算幾何而生的程式庫,然而在資料科學生態系中存在可用的方案,另外,新興的scikit-geometry程式庫,未來的發展值得期待

2021-12-02

| 開放原始碼 | 貢獻 | plugin | 程式人 | 林信良 | 程式學習

從plugin學習開放原始碼

為官方程式庫寫plugin,本身是件很自由的事,然而官方程式庫本身就有許多可以模仿的對象,想對著名專案做出貢獻的話,plugin會是個不錯的切入點

2021-11-25

| Python 3.10 | 模式比對 | PEP 634 | Java | 多型 | 程式人 | 林信良 | 程式學習

模式比對與多型

模式比對就是函數式世界的多型,不同於物件導向推崇的子型態多型,模式比對是特定(ad-hoc)多型,在同時支援物件導向與函數式典範的語言中,必要時兩者也可以併用

2021-11-18

| Java 17 | 彌封類別 | 程式人 | 林信良 | 程式學習

揭露型態邊界的彌封類別

彌封類別在語法上,作用看似限制類別階層,然而在語義上,目的是明確地揭露型態邊界,因為邊界透明化,模式比對、解構模式,甚至是代數資料型態,都將有實現的可能

2021-11-11