JavaScript風格的this

this具有動態變化的特性,會依照同時函式呼叫的方式而定,令人難以捉摸,我們可以令其保存環境物件,不過,就其本質而言,可視為函式呼叫時的一種參數

2018-07-29

從語言實作看例外

多數程式語言都具有例外處理的語法,它可自動傳播錯誤訊息,但這是如何實現?從沒有例外處理語法的語言對於錯誤訊息的處理,以及傳播的方式,我們可以掌握更多關鍵

2018-07-22

無拘的物件導向

想要實現物件導向的開發方式,並非僅能透過語法的角度來實作,我們可以從了解物件、方法、類別的本質,以及開發的方向來思考

2018-07-15

從實作看語言特性

程式語言的建構,牽涉到值、變數、陳述句、函式的存在作用,以及相關的原理,而經過親自實作之後,再來探討這些部分,有助於理解meta-programming的本質

2018-07-07

自造語言的好奇心

我們之所以學習多種程式語言,可能都是基於各種好奇的動機而來,而每一種語言的創立,其實也代表著看待問題的不同角度,而自己在親自打造一套語言的過程中,更能體會這樣的精神

2018-06-30

設計語言剖析器

在程式語言的語法分析當中,我們可採用現成的剖析器,雖然較為簡便,但也能自行設計剖析器,而透過這樣的開發過程,對於手中正在打造的程式語言,能夠獲得更多了解

2018-06-24

用抽象語法樹寫程式

如果我們要構造一套程式語言,起點其實是建立抽象的語法樹,而當中的階層關係,其實就具有運算順序的規則,接下來則是設法組合節點,我們可透過陳述句和運算式來進行

2018-06-17

打造玩具語言

除了熟悉既有的程式語言,開發者其實也能自行發展、構造程式語言,透過這樣的過程,我們可以更深入了解語言這輪子,是如何打造出來,甚至未來還有機會能夠設計出需要的領域語言

2018-06-09

瞎猜有益的機器

透過有限狀態自動機,我們可以針對當前的狀態來解決問題,透過設計適當的處理程序,即使是透過非確定性的演算方式,而這種非確定性可以是某種外部參與

2018-06-03

打造圖靈機

試著動手打造幾臺簡單的圖靈機,同時,我們可以趁機探討現代程式設計的本質

2018-05-27

不可運算的決策問題

程式並非無所不能,但如何實際認知與驗證其中的道理,仍然非常重要,因為這能讓我們從過程中,深刻思考一件事是否可解決,就算確認行不通,還是可以把心力用在思考其他達到目的的方法

2018-05-20

程式是什麼?

在許多程式語言當中,都能建構微型語言,而且,任何程式都可透過描述運算進行的方式來表達,這也意味著語言定義形式化的規則,程式就是運算的形式化

2018-05-13