| 程式人 | 林信良 | 程式學習 | 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

| 程式人 | 林信良 | 程式學習 | Java | 記錄類別 | Record class

不只是語法糖的記錄類別

Java的記錄類別(Record class)只是能自動產生equals、hashCode等方法的語法糖?既然如此,為何要有不可變動、無法繼承等限制呢?因為語義上,記錄類別就是不可變資料的透明載體

2021-11-04

| 程式人 | 林信良 | 程式學習 | Java | Java 17 LTS

從Java 11到Java 17

新版Java問世,當中調整了LTS版本釋出週期、免費授權,以及對設計有重大影響的新語法特性

2021-10-28

| 程式人 | 林信良 | 程式學習 | 柏拉圖多面體 | 測地線多面體

圓與球中的數學

在電腦繪圖中,圓與球的繪製看似簡單,然而,進一步所延伸出來的需求,並非依賴直覺就能解決,事實上,正確地認識圓與球中的數學,才是正確的解決方式

2021-10-14

| 程式人 | 林信良 | 程式學習 | 卷積 | 深度學習

從卷積到卷積神經網路

若對於卷積神經網路中卷積、填補、池化等觀念感到難以理解,我們可以試著從圖像處理的卷積運算這類可解釋模型當中來理解,從而認識到卷積神經網路,其實就是從資料生成濾鏡的事實

2021-10-07

| 程式人 | 林信良 | 程式學習 | 機器學習 | 深度學習 | 模型 | AI

思考模型的可解釋性

在深度學習的領域,放棄了解釋最終模型的可能性,來換取解決複雜任務的可能性;然而,這可不是暴力法,無論模型可解釋或難以解釋,該做的事情其實都相同!

2021-09-30

| 程式人 | 林信良 | 程式學習 | Numpy | PyTorch | 深度學習

從NumPy到PyTorch

PyTorch是支援深度學習的框架,為了不迷失在API之中,可藉由NumPy實現簡單的學習模型,逐步轉換至PyTorch,認識相關元件的方便,瞭解支援的流程典範

2021-09-23