=== 2008/06/22 ===
經研究,LLVM在現階段很可能已可用於我的產品。有文件指出 llvm-gcc 編出的程式速度比 gcc -O3 快 35%。
請見:llvm 2.2 vs gcc 4.2
此外,因為 llvm 有 apple 這樣的大公司支援,讓人更覺安心。
2008年6月21日 星期六
ATLAST 和 FICL
=== 2008/06/22 ===
之前從我產品的觀點比較了 ATLAST 和其他 scripting language 的優劣。那些優點並不是 ATLAST 獨有,大多數的 FORTH 都有那樣的特點。
在此我想比較 ATLAST 和另一個類似的 FORTH :FICL。
我喜歡 ATLAST 的原因:
之前從我產品的觀點比較了 ATLAST 和其他 scripting language 的優劣。那些優點並不是 ATLAST 獨有,大多數的 FORTH 都有那樣的特點。
在此我想比較 ATLAST 和另一個類似的 FORTH :FICL。
我喜歡 ATLAST 的原因:
- 原始程式只有一個檔案。讓我覺得它十分簡單容易理解。
- 因為它是 John Walker 的作品。
- 它為 Public Domain,代表我可以為所欲為。
- 在字串上直接用 c 的字串,因此使用 c 的能更易學會。
- 沒有雙精度和單精度整數的區別。概念簡單。
- 是完整的 ANS FORTH。
- 允許多個 vm 。
- 使用 switching threaded 架構,若我要,容易改以 Eiffel 實現。
- Reentrant。
- 浮點有自己的堆疊。因此不會如 ATLAST 般使用 .s 時無法區分浮點和整數。
- 浮點有自己的堆疊,所以,若以後要以 Eiffel 實現會容易些。也不會有堆疊上浮點數 alignment 不良造成效率差的問題。
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。
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」也值得參考。
讀到一篇名為「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 改寫。
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.
花了整晚的時間瞭解 LLVM 及 Stacker。考慮它是否可用於自己的計劃:運用 LLVM 實現 native code ATLAST.
2008年6月8日 星期日
訂閱:
文章 (Atom)