2008年6月21日 星期六

LLVM很可能可用於我的產品

=== 2008/06/22 ===

經研究,LLVM在現階段很可能已可用於我的產品。有文件指出 llvm-gcc 編出的程式速度比 gcc -O3 快 35%。
請見:llvm 2.2 vs gcc 4.2
此外,因為 llvm 有 apple 這樣的大公司支援,讓人更覺安心。

ATLAST 和 FICL

=== 2008/06/22 ===

之前從我產品的觀點比較了 ATLAST 和其他 scripting language 的優劣。那些優點並不是 ATLAST 獨有,大多數的 FORTH 都有那樣的特點。

在此我想比較 ATLAST 和另一個類似的 FORTH :FICL。

我喜歡 ATLAST 的原因:
  1. 原始程式只有一個檔案。讓我覺得它十分簡單容易理解。
  2. 因為它是 John Walker 的作品。
  3. 它為 Public Domain,代表我可以為所欲為。
  4. 在字串上直接用 c 的字串,因此使用 c 的能更易學會。
  5. 沒有雙精度和單精度整數的區別。概念簡單。
但是 FICL 有很多優點:
  1. 是完整的 ANS FORTH。
  2. 允許多個 vm 。
  3. 使用 switching threaded 架構,若我要,容易改以 Eiffel 實現。
  4. Reentrant。
  5. 浮點有自己的堆疊。因此不會如 ATLAST 般使用 .s 時無法區分浮點和整數。
  6. 浮點有自己的堆疊,所以,若以後要以 Eiffel 實現會容易些。也不會有堆疊上浮點數 alignment 不良造成效率差的問題。
認真考慮後,我覺得 ATLAST 比較合乎我的需求:更接近 C 的概念,更容易為 C 語言的使用都接受。

2008年6月17日 星期二

The implementation of LUA 5.0

=== 2008/06/18 ===

The implementation of LUA 5.0 這篇文章提及了 LUA 5.0 內部虛擬引擎的設計。以下記述我的閱讀重點。

為了 portability,LUA 5.0 使用 switch threading,不用 direct threading。

LUA 5.0 使用 hand-written scanner and hand-written recursive decent parser, 好處是 smaller, more efficient, more portable, fully reentrant, better error messages.

LUA 5.0 使用 tagged-union 來表示 values,因此,在 32-bit machine 使用 64-bit double 的情況下,每個 value 都佔 12 bytes。

LUA 5.0 的 table 有一個 array part 及一個 hash part。

因為 LUA 動態管理 table ,而 table 又是 LUA 核心的資料結構。這使得 LUA 不適用於 real time system。

2008年6月13日 星期五

SVN 優於 GIT 之處

=== 2008/06/13 ===

讀到一篇名為「Programmer Insecurity」的文章。
裡面提及中央集權式的管控軟體(SVN)優於分散管制的管控軟體(GIT)之處。
分散管制的,各程式師有自己的 repository,以致於程式常久久才得以整合一次。
另有一篇文章「The risks of distributed version control」也值得參考。

2008年6月12日 星期四

ATLAST and EDP

=== 2008/06/12 ===

Howard Thomson 將推出 EDP,an IDE for Eiffel。IDE 想必需要個 scripting language。起心動念想將自己改過的 ATLAST 和其整合。比較使用 ATLAST 和使用其他 scripting languages 如下:

1. ATLAST 簡單,容易理解。
2. ATLAST 沒有自己的 type system,容易和 Eiffel 本身的 typing system 結合。
3. ATLAST 沒有自己的 object oriented 架構。可修改使用 Eiffel 的 object oriented 架構。我已為 ATLAST 增加了 object stack,使用 Eiffel 的 object。
4. ATLAST 沒有自己的 GC ,可採用 Eiffel 本身的 GC。
5. ATLAST 建立 FORTH 的基礎上,因此可以用各種 FORTH 最佳化的技巧來最佳化 ATLAST。
6. ATLAST 的核心小,未來可將 ATLAST 以 Eiffel 改寫。或使用 LLVM。
7. 單純將 ATLAST 視為 VM,可為 ATLAST 添加類似 Eiffel 的語法。

Dynamic typed scripting languages:
1. 自有一套 type system,和 Eiffel 會有衝突。
2. 自有一套 object oriented 架構,和 Eiffel 的架構會有衝突。
3. 自有一套 GC ,和 Eiffel 的 GC 會有衝突。
4. 自有一群開發者,不可能將以 Eiffel 改寫。

2008年6月9日 星期一

LLVM and Stacker

=== 2008/06/10 ===

花了整晚的時間瞭解 LLVM 及 Stacker。考慮它是否可用於自己的計劃:運用 LLVM 實現 native code ATLAST.

2008年6月8日 星期日

Why SparkForth?

SparkForth結合了兩個對我的生活有意義的字:Spark 是工具機切割工件時的火星。Forth則是我的電腦母語。