學 Forth

Forth 是 1978 年出現的程式語言; C++ 也差不多是同一年出現。 Forth 可以簡寫為 4th ,很方便。 (?)

我覺得自己對邏輯語言 Prolog 與函數語言 Erlang 已經掌握得差不多了,因此想再開始學 Forth 。我讀了這個教學文章: http://www.forth.com/starting-forth/sf1/sf1.html

文章是從函數的定義開始教,所以感覺蠻簡單的。

任何運算都要記得基本原則是後序運算式。以組合語言與很多語言來說,算是前序運算式,如 + 1 2 ; Forth 是寫成 1 2 + ,是後序運算式。

學 Forth 的感覺,有上、下二層。

上層則很有一點點物件導向的感覺,例如:寫 5 stars ,可印出五顆星號。物件導向的意味:對 5 傳送一個訊息 stars ,然後它就做了這件事。當然,函數的 partial application ,也藉由 : add2 2 + ; 這樣的定義,而突然做到了。

下層運算層面是以 stack 為基礎的運算,即後序運算式之所以執行的基礎。然後, Forth 所給我更周延的感覺是,其實一部電腦就像這樣,裡頭有一種儲存資料的方式,並且也有相關的基本計算方式,然後就可以運算。跟其他事物互相比較,電腦的記憶體空間是陣列, Prolog 的儲存空間是以 linked list 為基礎的 graph , Java 的儲存空間是 Heap ,而 Forth 的儲存空間是 stack 。

最後看到第四節,講 Forth 的決策程式寫法,看得很不習慣。 If A Then B 的後序式寫成 A If B Then ,所以, if true then “hello,world" 程式寫成這樣:

: say true if ." hello,world" then ;

讀起來有點使人內心感到糾結。

廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Programming 並標籤為 。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s