這篇文章來自交大資科 BBS 的 Programming 板精華區,
也就是 tw.bbs.comp.language 的討論精華,由當時的板主 William 整理。
文章是我後來看到的,雖沒跟上那個時代,但可以推測這位 William 應該就是葉秉哲。
因為是整理出來的精華所以相當長,看的人要有心理準備 :)
====
◇ Forth 這個「東西」
-------------------------------------------------------------------------
NCTU-CIS BBS `programming' 版 精華區
■■■ Forth 這個「東西」 ■■■
-------------------------------------------- 整理:william@cis_nctu
-----
-------------------------------------------------------------------------
發信人: ajax@phoenix (ajax), 信區: programming
標 題: About 第四代電腦語言 FORTH??
發信站: 交大資工鳳凰城資訊站 (Thu Mar 17 09:26:20 1994)
轉信站: cis_nctu!bbsroute!phoenix
==> 在 Xilinx@phoenix (SASIMI) 的文章中提到:
> What is 第四代電腦語言??
> 有何特點....???跟一般寫的 C ,PASCAL ,FORTRAN, ASSEMBLY 有何不同????
你問的是一般所謂的 4GL 或 FORTH ?
4GL 大多是 database 的程式產生器, 至於 Forth嗎, 由於是在 DEC上發展的, 據說
當時的檔名限定 5個字母, 它的發明人雖然想取個 Fourth 來代表它是第四代語言,
但不得已只有將 'u' 給去掉. 現在似乎沒有人將 Forth視為第四代語言.
Forth 現在還有一些玩家在使用, 並且很狂熱的喜愛它, 有一句話形容,
C 讓你以為認為 C 是世界上最好的語言,
Forth 則讓你認為自己是世界上最好的程式員
本來有個 Forth Workshop 的 BBS站, 但不知為何關了, 現在倒希望在 Internet 上
有個 Forth 園地, 可交換一下心得, 或流通一下資訊. 因為它真的是很好的程式語言,
至少它是 Sun workstation 的 boot firmware 的語言, 而且也將成為一個 IEEE 的
boot firmware 標準, 想在這領域混口飯吃的人, 可以快研究一下.
==============================================================================
發信人: ajax.bbs@csie (ajax), 信區: programming
標 題: 買 Forth語言的書
發信站: 交大資工鳳凰城資訊站 (Tue May 24 08:36:18 1994)
轉信站: cis_nctu!news.cis!news.cc!news.csie!bbsroute!phoenix
> 我想要買【Forth語言】的書,中英文皆可,中文最好。
> 如果有舊書出售,或知道哪裡可以買到這類的書,請告訴我。
儒林有<Forth語言精通>, <Thinking Forth>, 原來還有<Starting Forth>的中
譯本, 但已絕版, 或運氣好的話, 在舊書攤可碰到, 但幾乎不可能, 6月12日以後,
大概連現有的書也不行賣了吧, 淡江書局有<And So Forth>, 松崗有黃大一著的
<F83入門>, 再來大概就是和Forth協會聯絡了.
==============================================================================
發信人: KL@cis_nctu (Kent Lin), 信區: programming
發信站: 交大資科_BBS (May 24 15:08:00 1994)
謝謝
我今天去圖書館查, 找到四本 Forth書.
Forth 語言精通
Forth入門 <starting Forth> 中文版
Forth: a text and reference
Forth: a complete course in the forth programming language.
有一本 <forth程式設計> 沒找到.
但是我向 <儒林> 訂書, 卻沒有了. 所以希望有人能告訴我那裡可以買到,
或是有中古書要賣, 因為我不太喜歡用 copy 的書.
如果有消息麻煩您 Post 到 Macintosh Board上, 那裡有一些人用forth.
==============================================================================
發信人: pountain.bbs@aidebbs (pountain), 信區: programming
標 題: Who know "Forth", It is a lang....!
發信站: 臺灣學術網路 BBS 實驗站 (Fri Oct 20 12:27:23 1995)
轉信站: cis_nctu!news.cis.nctu!news.csie.nctu!aide_board
中文書不多, 可看看黃大一的"符式F83入門" (松崗) 或丁陳漢蓀翻譯 "Starting Forth"
(儒林? 書名?), 不過年代久遠, 要花點心思去找. 另外問問國內符式協會的人比較有
幫助, 他們近來也出了幾本書.
(符式協會於每月最後一個週六 會在南港中研院的計算機中心開研討會)
英文書不少, 可找本 "FORTH DIMENTION" (雙月刊)看看, 裡面有 books list, 以及
back issues 相當多. 可透過符式協會洽詢.
若要查 Internet 上的資料, 可試 WWW:
http://pisa.rockefeller.edu:8080/FORTH.html
http://taygeta.oc.nps.navy.mil/forth.html
ftp://ftp.sinica.edu.tw/pub2/forth
若是 primer, 請取回 fprimer.zip, 另外有本電子書 "Real Time Forth"
(檔名: rtf?????.zip, PostScript format) 也不錯.
==================================
E-mail: ctw...@shts.seed.net.tw
=============================================================================
發信人: ajax.bbs@csie (ajax), 信區: programming
標 題: FORTH 的禪思
發信站: 交大資工鳳凰城資訊站 (Tue Jun 7 08:50:12 1994)
轉信站: cis_nctu!news.cis!news.cc!news.csie!bbsroute!phoenix
<< FORTH 的禪思 >>
金城 編著
封面:
-- 人機合一的無上心法 --
符式如道 行之必效
柔以克剛 簡潔為高
封底:
身是菩提樹 | 硬體雜又難
心如明鏡臺 | 軟體學不完
朝朝勤拂拭 | 日夜埋首幹
莫使惹塵埃 | 心酸又心煩
--------------+----------------
菩提本無樹 | 硬體具實觀
明鏡亦非臺 | 程式為思串
本來無一物 | 符式由中穿
何處惹塵埃 | 人機原一貫
內容簡介:
首先談一些電腦與哲思的問題, 包括丁陳博士的"Zen and Forth"中譯,
及引述"The tao of programming"的一些軟體之道.
關於Forth語言介紹, 以丁陳博士的Forth first course與FPC自學手冊
為主. 深入淺出的對Forth做一完整的介紹.
作者: 愛新覺羅 燾昍 (金城)
任教於靜宜大學資訊系, 前任Forth學會會長.
購買: 請與Forth學會聯絡
=============================================================================
發信人: ajax@phoenix (ajax), 信區: programming
發信站: 交大資工鳳凰城資訊站 (Thu Mar 17 09:47:35 1994)
==> 在 FireBird@cis_nctu (帥 鳥) 的文章中提到:
> STOP-A 進去就知道了, kernel 居然是 FORTH...
> 這些人! @#$ 平常不屑與 FORTH 為伍, 卻偷偷的用...
實在不是什麼大的發現, 不過是 boot firmware 用 forth 寫的, kernel 還是
有用 C發展的. 至於 Sun 的 boot firmware 是用 forth發展的, forth group的人
早就明白了, 而且在去年底還打算辦個研討會, 請 IEEE boot firmware標準起草人
之一, 也就是替Sun 發展boot firmware 的先生來上課, (這位先生的大名我忘了,
不過這不頂重要), 當然啦, forth group 不是要促進工作站的工業, 而是很高興有
人用 forth 來做出這麼多人都在用的東西, 並且將成一 IEEE 的一項標準, 想藉此
機會將 Forth 介紹給大家, 奈何國內的廠商也覺得這是重大的秘密, 而不支持, 因
此就沒辦成.
==============================================================================
發信人: lmy@cis_nctu (Daemon of Andromeda), 信區: programming
發信站: 交大資科_BBS (Mar 15 19:08:36 1994)
==>[Author]: FireBird@cis_nctu (帥 鳥) on board 'programming'
> STOP-A 進去就知道了, kernel 居然是 FORTH...
> 這些人! @#$ 平常不屑與 FORTH 為伍, 卻偷偷的用...
其實不是 kernel, 而是 MBUS Interpreter 是用 FORTH 來 implement.
好處是介面卡只需符合 MBUS 的硬體規格, 而不用 care 機器的 machine code
因為 FORTH 可以標準化, 並視為一 Virtual Machine.
此一問題, 我在中山 source board 中, Post #70 中有較詳盡的說明.
#post61-#post71 為相關 response articles. 很抱歉, 時間太少, 無法轉來此版.
請有興趣的網友自行前往參考. (或許中山目前技術版面的優點就是保存古蹟)
有空的網友, 亦歡迎您替我轉貼來此. 謝謝!
地山謙, 亨, 君子有終
Board: Source Post #70 at nsysu BBS
Posted By: lmy (Daemon of Andromeda)
Date: Sat Aug 28 15:13:51 1993
Title: Re: Zilog Super-8 Forth Source with Meta-Compiler
Posted By: porco (賴唐諾)
>lmy 兄,
>
> 我在前幾年聽過 Charles Moore 發展了一顆專為 FORTH 跑的 CPU, 編號
> 倒是忘了, 不過它既不是 RISC, 也不是 CISC, 而是一種叫作 WISC (不太確定)
> 的可變指令集架構。雖然 clock 的速度不是挺快, 但執行起指令的速度可不含
> 糊, 詳細的資料在家裡, 得回去找找了。不知道您有沒有聽過這顆晶片?
>
> P.S.: 不知道您老有沒有興趣開個 FORTH 講座, 也好讓大家了解 FORTH 的能力。
> 有空不妨回台大 bbs 坐坐 :-)
>
> porco, 抬大電雞所 CAD 組 因特網: r81...@cc.ee.ntu.edu.tw
> -------------------------------------------------------------------------
> "大凡優秀的學生, 都是不愛上課的!" --- 賴氏名句
該 CPU 叫 NOVIX (跟你一樣, 不太確定) 8MHz, 20MIPS. 一16bits 指令字
可最多執行 3個指令.
開 FORTH 講座? 才疏學淺, 豈敢班門弄斧! 大家討論討論. MBUS 的 interpreter
好像就是用 FORTH (kernel only 8KB) 來執行界面卡的自我測試程式, 如此界面卡的
Portability 大幅提高, 只要 conform MBUS 和 FORTH standard words set 即可不受
主機 CPU 為何之限制. 試想一片 INTEL x86 PC 的界面卡的即使能搬到一部符合 ISA的
Motorola 68x serires 的主機上, BIOS 也一定要重寫. 用forth 的好處就立刻顯現了.
Interpreter 中可算是最快的, kernel 又最小, standard 明確. 大家最常玩的 SUN
Workstation 用 STOP-A (L1-A) 之後再按 n (new command mode) 不就進 forth
interpreter 了嗎? 下次 reboot 前可試一試, 進 forth 後打 banner 看看結果.
至於 forth 的能力, 下一篇 post 附上大學時修數位電子實驗做 SAP (simple as
possible computer) 時所寫的 microcode compiler. 大家就可以知道原來寫一個小型
的 special-purpose compiler 在forth 中是如此容易.
Lee3, Ming2-Yu2
NTUEE B75503095, R79503147
E-mail : l...@speech.ee.ntu.edu.tw
==============================================================================
發信人: FireBird@cis_nctu (帥 鳥), 信區: programming
標 題: Re: 大發現! SUN OS居然是用 FORTH 寫的...
發信站: 交大資科_BBS (Mar 15 14:56:41 1994)
轉信站: cis_nctu
==>[Author]: clock@phoenix (龜) on board 'programming'
> 這倒是新發現.. 假如他是用 Forth 寫的.. 不過, 你又是聽誰說的?
無意中發現的, 按 STOP-A 就進入 FORTH 系統了.
你可以試試:
1 <cr> <-push 1 into stack
2 <cr> <-push 2 into stack
+ <cr> <-operatop '+',add top two number
.s <- print satck
(output) 3
還有 type 'words <cr>' <- 標準的 FORTH 字彙
你可以看到它定義的 FORTH 字彙 :)
FireBird
==============================================================================
發信人: ajax@phoenix (ajax), 信區: programming
標 題: Forth為何不流行?
發信站: 交大資工鳳凰城資訊站 (Fri Apr 1 11:00:57 1994)
轉信站: cis_nctu!bbsroute!phoenix
Forth 為何不能像 C一樣的流行? 這是許多學 Forth者的疑問.
好像沒人說得上, Forth 和 C約在同時期發展的, 甚至還老一點,
但是命運卻不太一樣。在天文台工作的 Charles Moore為了提升自
己的程式生產力, 創造出 Forth, 然後成立一家 Forth Inc. , 靠
Forth 來發展 Project, 行有餘力, 也是因大眾要求, 順便賣一賣
Forth 發展系統, 但價格是天價。 說實在的, Charles Moore早已
離開 Forth Inc. , 因此 Forth的發明人不是靠賣 Forth賺錢, 而
他本人對別人是否喜歡用 Forth也不太在意, 因為他一切靠自己,
包括 CPU設計及 CAD tools, 最近有一顆 CPU已可工作.
相反的, Unix以 C為發展語言, 而 AT&T 大方的以一美元給大
學使用, 雖然其創始人在前不久曾說, 純是以開玩笑的態度發展此
系統, 但現在已風行世界.
Forth 看似不流行, 也不盡然如此, 只是給C 比下去了, 因為在
世界各地都有 Forth協會的組織, 包括大陸每年都要舉行研討會. 當
硬體越來越進步, 大家卻越發覺得自己的電腦太慢, 因為都是執行一
些沒有效率的程式, 但是玩 Forth的人卻是 AppleII, XT都還可接受.
可能有人覺得 Forth的 postfix語法令人難接受, 但是也因為採
用此語法, 所它的 compiler 簡單到幾個 Words就可定義, 而玩Forth
最喜歡的就是它的一切都在控制之下, 包括硬體, OS..., Forth的
系統也都是將 Source code附上, 不喜歡那裡, 就修那裡, 連自己吃
飯的東西都要給客戶, 難怪 Forth Inc. 的一套系統如此貴.
有人號稱 Forth是 Programmer Amplifier, 即可增加程式的產量,
但其含義也包括爛者益爛, 變成 write-only 語言. 但是他的
interactive 發展環境實在很棒, BASIC 雖然也是, 但只能站在一邊涼
爽, Forth 從來就不屑與 BASIC較量。至於 C嗎? 形勢不如人, 沒辦法,
現在有一些 Forth為了portable及易懂, 而用 C來寫, 因此便可在許多
unix上執行, 但也有人不齒此種作法, 因為 Forth有個神奇的工具:
MetaCompiler, 可產生另一個新的 Forth系統, 包括在不同的 CPU, 但
那得將 Forth玩得出神入化才有可能.
Forth 是不錯, 但 C最流行也是事實, 因此我愛 Forth, 但我的 C
更好, 而且靠 C在工作, 沒辦法嗎? 可是只要給我碰上機會, 我一定
用 Forth, 因為別人看不懂, 無法抄襲, 並且現在手上有一套 Forth
Inc. 的 PolyForth, 及 public domain 的 fpc, 都蠻好用的.
==============================================================================
發信人: william@cis_nctu (C++/ASM/Win Master), 信區: programming
發信站: 交大資科_BBS (Apr 1 12:10:28 1994)
==>[Author]: ajax@phoenix (ajax) on board 'programming'
> Forth 為何不能像 C一樣的流行? 這是許多學 Forth者的疑問.
> Forth 看似不流行, 也不盡然如此, 只是給 C比下去了, 因為在
> 世界各地都有 Forth協會的組織, 包括大陸每年都要舉行研討會.
這一點我相信。
> 可能有人覺得 Forth的 postfix語法令人難接受, 但是也因為採
> 用此語法, 所它的 compiler簡單到幾個 Words就可定義, 而玩 Forth
> 最喜歡的就是它的一切都在控制之下, 包括硬體, OS..., Forth 的
> 系統也都是將 Source code附上, 不喜歡那裡, 就修那裡, 連自己吃
> 飯的東西都要給客戶, 難怪 Forth Inc. 的一套系統如此貴.
Forth 的好處之一, 似乎就在於整體語法簡單, 都圍繞在 stack 及 word,
所以做起來、玩起來很容易。
> 有人號稱 Forth是 Programer Amplifier, 即可增加程式的產量,
> 但其含義也包括爛者益爛, 變成 write-only語言.
其他有副程式觀念的高階語言應該也能達到「提高產量」的要求。
> 他的 interactive發展環境實在很棒, BASIC 雖然也是, 但只能站在一邊涼
> 爽, Forth 從來就不屑與 BASIC較量,
這是無庸置疑的, 它的 interactive 環境還能自己添加東東進去。
而且, 會 Forth的人似乎都很狂熱... 因為 Forth 讓他們能隨意碰到 low-level
的東東。
有個疑問: 常看到 Forth程式中夾雜 assembly, 請問這種「夾雜」是否也是 Forth
公認的語法之一?
還有, 底下是我以前的舊信, 還希望有人能糾正一下裡面的一些偏見...
很想知道習慣 Forth的人對這些意見有何看法。
發信人: william@cis_nctu (C++/ASM/Win Master), 信區: programming
標 題: Re: Forth 有人熟嗎?
發信站: 交大資科系_BBS (Sep 18 01:01:32 1993)
轉信站: cis_nctu
==>[Author]: "Alpha" on board 'programming'
> 我已經接觸她兩年了, 害得我越來越討厭死(C)了!
我曾碰過, 但放棄了。
太依賴 stack operation, 缺乏自然;
太依賴 RPN, 違反自小受教育以來的習慣;
Conditional syntax 違反吾人習用的口語。
缺乏標準。
未和最新的 PLs 趨勢連接。
語言和系統幾乎為一體 (定義語言即定義系統) , 是一 overhead。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
≡ 何陋居 ≡ 聖人, 吾不得而見之矣... 論語‧述而
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
==============================================================================
發信人: forthy@totoro (forthy), 信區: programming
發信站: 中央資管龍貓資訊天地 (Fri Apr 1 15:11:45 1994)
> Forth 的好處之一, 似乎就在於整體語法簡單, 都圍繞在 stack 及 word,
> 所以做起來、玩起來很容易。
Forthy ?:^) Easy and fun to play but hard to master! ?:^)
You can easily define your data structure, like : variable create 2
allot ;,
it's also make our lives much easier.
>> 有人號稱 Forth是 Programer Amplifier, 即可增加程式的產量,
>> 但其含義也包括爛者益爛, 變成 write-only語言.
> 其他有副程式觀念的高階語言應該也能達到「提高產量」的要求。
Forthy ?:^) I don't think so. The problem is about how you can solve
your
problems in a direct way. Forthers' thinkings are often more direct.
It's
because of the availability of addresses. Forth is rather assembly
like in
this case. ?:^)
>> 他的 interactive發展環境實在很棒, BASIC 雖然也是, 但只能站在一邊涼
>> 爽, Forth 從來就不屑與 BASIC較量,
>
> 這是無庸置疑的, 它的 interactive 環境還能自己添加東東進去。
> 而且, 會 Forth的人似乎都很狂熱... 因為 Forth 讓他們能隨意碰到 low-level
> 的東東。
>
> 有個疑問: 常看到 Forth程式中夾雜 assembly, 請問這種「夾雜」是否也是 Forth
> 公認的語法之一?
Forthy ?:^) You may say so. The more you use Forth, the more you like
Assembly
and are never afraid of Assembly. Forth is rather low-level-"like",
so
it senses like Assembly. They are no difference to us.
> ==>[Author]: "Alpha" on board 'programming'
>> 發信站: 交大資工鳳凰城資訊站 (Sep 16 12:41:44 1993)
>>
>> 我已經接觸她兩年了, 害得我越來越討厭死(C)了!
Forthy ?:^) YES! YES!
> 我曾碰過, 但放棄了。
Forthy ?:^) Perhaps you hadn't got a good text book. Try "Starting
Forth". ?:^)
> 太依賴 stack operation, 缺乏自然;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Forthy ?;^) Stack makes less memory usage. Simple and nature!
> 太依賴 RPN, 違反自小受教育以來的習慣;
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Forthy ?:^) You mean the education in Taiwan? Forth gives us to amend
the
mistakes.
> Conditional syntax 違反吾人習用的口語。
Forthy ?:^) Sorry, I don't get it. What's the conditional syntax?
> 缺乏標準。
Forthy ?:^) Not any more!
> 未和最新的 PLs 趨勢連接。
Forthy ?;^) Do you mean the "OOP"? There are several OOP Forths. You
even can
implement one yourself.
> 語言和系統幾乎為一體 (定義語言即定義系統) , 是一 overhead。
Forthy ?:6) What's the problem with it? This bbs is very slow, hope to
talk
about this more next time! See you!
O! I've got a mac board at FCU BBS [140.134.4.1]. Hope to see you
there!
==============================================================================
發信人: TwoO@nctu_csie_bbs (O-O), 信區: programming
發信站: 交大資工天龍新聞社 (Fri Apr 1 14:32:35 1994)
我對 Forth 不算很熟,但是我很喜歡他 .........
C++/ASM/Win Master (william@cis_nctu) wrote:
> 太依賴 stack operation, 缺乏自然;
其實 Forth 的 word 相當於 C 裏的 function,可見 Forth 的高度模組化。
各模組間要有一致的傳遞界面,最理想的是什麼? 答案是 Stack。 在一般
的模組化語言中,大多也都是用 stack 來傳遞參數,傳回值有些雖不用 stack
,但卻因而有傳回值個數的問題。
在做運算時直接以 item in stack 做為 operand 有什麼好處呢? 在硬體上
可以少掉 operand 的 encode/decode,在軟體上由於不用在 compile(/link)
時去計算 operand 的位址,速度變得很快,也因而使 design->coding->test
這個發展循環變得非常快,並使得 interactive develop 容易達成。
PS. 在 C 中要測試剛寫好的 function 正不正確有多麻煩,大家應該都印象
深刻。 如果等到程式全寫完時才測試,結果就不用我說了。
> 太依賴 RPN, 違反自小受教育以來的習慣;
> Conditional syntax 違反吾人習用的口語。
習慣靠左開車的人對靠右開感到不適應。 這還只是習慣的問題,兩著間並無
好壞之分。 但若因為習慣而錯過了更好的東西,那就不值得了。
> 缺乏標準。
缺乏標準是由於 Forth 太有延伸性,你甚至可以將其改寫成前置式或中置式。
這種強烈的自由度當然造成沒有標準,使得各 Forth 系統的共通性大減。 有
鑑於此,Forth 還是有一些刻意定出來的標準(如 F83)。 但是〞標準就像
兩面的刃〞,其中的拿捏非常難,不也有人將〞標準〞稱為〞必要的罪惡〞嗎?
> 未和最新的 PLs 趨勢連接。
最新的趨勢? 看起來怎麼好像是〞最新流行春裝〞? 依我自己的看法,現在
最新的語言不如 Forth 的地方還多著呢。
> 語言和系統幾乎為一體 (定義語言即定義系統) , 是一 overhead。
Forth 系統本身就是用 Forth 定義出來的,而你的應用程式也是用 Forth 定義
出來的,通通都是 Forth。 就因為如此,Forth 才能和軟硬體系統配合得那麼
好,那麼有延伸性。 由於 Forth 的 code generation 很快(前面說過了),
這個 overhead 變得很小。 如果你善用〞詞典〞,那就幾乎看不到 overhead
。 用 Borland C++ 時有不喜歡的地方,你有試過改它的 IDE 嗎? 在 LIB
中加個 function 方不方便呢?
另外,要把在 68K 上的 Forth 移到 x86 上怎麼做? 把 Meta-File 裏的東西
(都是些 Forth 裏最基本的東西)用機器碼重新定義一次,然後再 Meta-Compile
一下,就好了(對,就好了)。
有這麼大的自由,卻只多了那麼一點小到〞可能〞看不到的 overhead,不值得嗎?
O-O (二輪族) ---> 我想買一台裝 PPC,執行 OS/2 的摩托車
==============================================================================
發信人: ajax@phoenix (ajax), 信區: programming
發信站: 交大資工鳳凰城資訊站 (Sat Apr 2 08:59:46 1994)
==> 在 TwoO@nctu_csie_bbs (O-O) 的文章中提到:
>> 太依賴 stack operation, 缺乏自然;
> 其實 Forth 的 word 相當於 C 裏的 function,可見 Forth 的高度模組化。
> 各模組間要有一致的傳遞界面,最理想的是什麼? 答案是 Stack。 在一般
> 的模組化語言中,大多也都是用 stack 來傳遞參數,傳回值有些雖不用 stack
> ,但卻因而有傳回值個數的問題。
> 在做運算時直接以 item in stack 做為 operand 有什麼好處呢? 在硬體上
> 可以少掉 operand 的 encode/decode,在軟體上由於不用在 compile(/link)
> 時去計算 operand 的位址,速度變得很快,也因而使 design->coding->test
> 這個發展循環變得非常快,並使得 interactive develop 容易達成。
> PS. 在 C 中要測試剛寫好的 function 正不正確有多麻煩,大家應該都印象
> 深刻。 如果等到程式全寫完時才測試,結果就不用我說了。
其實用 stack傳參數最大的好處是很容易做到 reentrance, 因此 Forth很容易
加上 round robin 的 multi-tasking 功能, 但是 stack的處理可能得留心些, 一
不小心就留下一堆垃圾或 underflow.
interactive develop 的環境實在太棒了, 尤其是在搞 embedded system 時,
不用為了測每一個 I/O寫一個 assembler程式, 但我告訴別人, 總是會嫌再學一種
語言麻煩, 奈何!
>> 缺乏標準。
> 缺乏標準是由於 Forth 太有延伸性,你甚至可以將其改寫成前置式或中置式。
> 這種強烈的自由度當然造成沒有標準,使得各 Forth 系統的共通性大減。 有
> 鑑於此,Forth 還是有一些刻意定出來的標準(如 F83)。 但是〞標準就像
> 兩面的刃〞,其中的拿捏非常難,不也有人將〞標準〞稱為〞必要的罪惡〞嗎?
ANSI 標準最近出籠了.
==============================================================================
發信人: william (C++/ASM/Win Master), 信區: 'programming'
發信站: 交大資科_BBS (Apr 2 15:18:30 1994)
==>[Author]: TwoO@nctu_csie_bbs (O-O) on board 'programming'
>> 太依賴 stack operation, 缺乏自然;
> 其實 Forth 的 word 相當於 C 裏的 function,可見 Forth 的高度模組化。
> 各模組間要有一致的傳遞界面,最理想的是什麼? 答案是 Stack。 在一般
> 的模組化語言中,大多也都是用 stack 來傳遞參數,傳回值有些雖不用 stack
> ,但卻因而有傳回值個數的問題。
在 PC 上, 有些 compiler (如 Watcom C, BC+ 3.1 以後) 就提供“暫存器傳參數”
以提高效率。而許多 RISC 更是如此。
所以我質疑的是: ①Forth 在“原始程式”層次就極度仰賴 stack operations,
不知這樣是否自然? 這是以 programmer 的角度來看的; ②Forth 在 implementation
上, 是否也真的高度仰賴 stack? 會不會降低效率? 還是說 Forth私底下會自動
像 compiler 一樣, 為個別的機器做個別的最佳化處理? 這是以低階角度來看的。
> 在做運算時直接以 item in stack 做為 operand 有什麼好處呢? 在硬體上
> 可以少掉 operand 的 encode/decode,在軟體上由於不用在 compile(/link)
> 時去計算 operand 的位址,速度變得很快,也因而使 design->coding->test
> 這個發展循環變得非常快,並使得 interactive develop 容易達成。
如果我們用的是 Forth hardware 或 firmware, 就像 Lisp machine 那樣的
embedded, 我不懷疑它的效率。但如果是在傳統的機器上, 所有你提到的那些
operand 的部份都是 CPU自己處理, 不勞最後的執行檔費心 (當然, compiler
會累些, 但以現在的技術而言, 這也不會“太”費事) , 所以執行檔可以近乎該
機器的全速執行。而如果語言不利用這些現成的資源, 而硬要自己處理, 造出一
個 runtime virtual machine, 是否會產生 overhead?
當然, Forth 的 interactive 環境的確是一流的, 無其他語言能比。
>> 太依賴 RPN, 違反自小受教育以來的習慣;
>> Conditional syntax 違反吾人習用的口語。
> 習慣靠左開車的人對靠右開感到不適應。 這還只是習慣的問題,兩著間並無
> 好壞之分。 但若因為習慣而錯過了更好的東西,那就不值得了。
的確。不過高階的語言不就是希望語言適應人, 而非人去適應語言?
我知道 Forth的語法也可改成 infix等等, 但不知道這會不會影響 runtime 效率?
>> 未和最新的 PLs 趨勢連接。
> 最新的趨勢? 看起來怎麼好像是〞最新流行春裝〞? 依我自己的看法,現在
> 最新的語言不如 Forth 的地方還多著呢。
有人以 Forth做出 OO, 我知道, 台北的 BBS有。但還是和 C++ Eiffel 等等相去甚多。
近代程序型語言多要求 static scope, 但 Forth?
其他的地方待我想想...
>> 語言和系統幾乎為一體 (定義語言即定義系統) , 是一 overhead。
> Forth 系統本身就是用 Forth 定義出來的,而你的應用程式也是用 Forth 定義
> 出來的,通通都是 Forth。 就因為如此,Forth 才能和軟硬體系統配合得那麼
> 好,那麼有延伸性。 由於 Forth 的 code generation 很快(前面說過了),
> 這個 overhead 變得很小。 如果你善用〞詞典〞,那就幾乎看不到 overhead
> 。 用 Borland C++ 時有不喜歡的地方,你有試過改它的 IDE 嗎? 在 LIB
> 中加個 function 方不方便呢?
Forth 在 develop 上的成就無庸置疑。但如同我前面所提的, 我質疑的是
final runtime。
> 另外,要把在 68K 上的 Forth 移到 x86 上怎麼做? 把 Meta-File 裏的東西
> (都是些 Forth 裏最基本的東西)用機器碼重新定義一次,然後再 Meta-Compile
> 一下,就好了(對,就好了)。
> 有這麼大的自由,卻只多了那麼一點小到〞可能〞看不到的 overhead,不值得嗎?
軟體生命週期不能只考慮發展階段呀!
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
≡ 何陋居 ≡ 聖人, 吾不得而見之矣... 論語‧述而
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
==============================================================================
發信人: TwoO@nctu_csie_bbs (O-O), 信區: programming
標 題: Re: Forth為何不流行?
發信站: 交大資工天龍新聞社 (Sun Apr 3 01:29:49 1994)
轉信站: cis_nctu!bbsroute!news.csie!nctubbsgate!nctu_csie_bbs!TwoO
C++/ASM/Win Master (william@cis_nctu) wrote:
>> 各模組間要有一致的傳遞界面,最理想的是什麼? 答案是 Stack。
> 在 PC 上, 有些 compiler (如 Watcom C, BC+ 3.1 以後) 就提供“暫存器傳參數”
> 以提高效率。而許多 RISC 更是如此。
這種 "暫存器傳參數" 的方式雖然對高階語言的移植性沒有影響,但程式設計師
在混用其他語言時卻要付出額外的心力去掌握及確定 compiler 的行為特性。
以最簡單的混用組合語言來說,你必須知道 compiler 固定或甚至動態的用哪一
個暫存器來傳哪個或哪類的參數,有些甚至是文件中也沒有說明的。 而且當你
換一種 compiler 時,這些規則可能又變了(尤其是那些文件中沒有說明的)。
例如,BC++ 中將 object 的位址放在 SI 裏傳送,這永遠不會更改嗎? Watcom
C/C++ 又用什麼來傳這類的值呢?
這種作法雖然加快執行速度,卻有可能加重 compiler 的負擔(同時也使愈短愈
好的發展循環又更長了),並且也失去了〞一致性〞。 另外還可能額外地增加
程式設計師的負擔(這負擔不僅沈重,也不是每個程式設計師都能負擔得起的)
。 程式的速度並不代表一切。
> 所以我質疑的是: ①Forth 在“原始程式”層次就極度仰賴 stack operations,
> 不知這樣是否自然? 這是以 programmer 的角度來看的; ②Forth 在 implementation
> 上, 是否也真的高度仰賴 stack? 會不會降低效率? 還是說 Forth私底下會自動
> 像 compiler 一樣, 為個別的機器做個別的最佳化處理? 這是以低階角度來看的。
Forth 本身是以 stack machine 的方式在運作,如果你覺得 stack 自然,
Forth 就自然。 :-)
現今大多的 CPU 和一般的高階語言是屬於〞互為因果〞的關係。 Forth
不同於一般高階語言,因此在與一般高階語言相輔而生的 CPU 上,難免有
點綁手綁腳。 但是在此類 CPU上,其速度卻僅次於組合語言(可參考
Forth 有關書籍的 benchmark),所以你大可不必擔心是否降低效率(其
實,不論你用那種語言,程式的效率大部份是操在你自己的手上。 Forth
讓你更有效率地發展程式,但是,該是你自己的,你還是得自己掌握)。
至於 Forth 系統對個別系統的最佳化則取決於建立或移植的人。 如果你
硬要用暫存器來傳參數,也沒人攔得了你,頂多只能認為那沒有〞Forth
精神〞而已。
> 如果我們用的是 Forth hardware 或 firmware, 就像 Lisp machine 那樣的
> embedded, 我不懷疑它的效率。但如果是在傳統的機器上, 所有你提到的那些
如果我沒記錯,第一個 LISP 系統是用 Forth 寫的。 Forth 也有
他自己的 CPU (NOVIX),該 CPU 的〞組合語言〞就是 Forth。 只
要是 stack machine,Forth 就可以〞如魚得水〞、〞有如天助〞。
> operand 的部份都是 CPU自己處理, 不勞最後的執行檔費心 (當然, compiler
> 會累些, 但以現在的技術而言, 這也不會“太”費事) , 所以執行檔可以近乎該
傳統語言的 compiler 實在佔掉太多的發展時間,對一大塊一大塊的
測試方法(否則你要花更多的時間去等 compiler),我更是感到相當
厭倦。 :-(
> 機器的全速執行。而如果語言不利用這些現成的資源, 而硬要自己處理, 造出一
> 個 runtime virtual machine, 是否會產生 overhead?
依目前的 Forth 系統來看,Forth 在這方面做得還不錯,否則也不會
在一般的處理器上只輸給組合語言(請注意,各個 Forth 系統間仍可
能會有極大的速度差異 ... Forth 系統的建構方式實在太多了)。
>> 習慣靠左開車的人對靠右開感到不適應。 這還只是習慣的問題,兩著間並無
>> 好壞之分。 但若因為習慣而錯過了更好的東西,那就不值得了。
> 的確。不過高階的語言不就是希望語言適應人, 而非人去適應語言?
你的習慣是由你所學過的語言而養成的,並不是你天生的。 當你去
學 LISP、PROLOG、Parallel Programming、Data Flow ...... 時,
你的習慣也是會漸漸的養成或改變。
我倒覺得各個高階語言是為了解決某類型問題或做某種應用,而產生的。
> 我知道 Forth的語法也可改成 infix等等, 但不知道這會不會影響 runtime 效率?
只是 interpreter/compiler 必須做點修改,Forth 還是以 stack
machine 的方式運作,runtime 效率又怎麼會受到影響呢?
> 有人以 Forth做出 OO, 我知道, 但還是和 C++ Eiffel 等等相去甚多。
> 近代程序型語言多要求 static scope, 但 Forth?
> 其他的地方待我想想...
這些東西也是為了需求而生的。 談到 OO,我自己認為只要加強 abstract
data type 就可以了,但是與他人一起寫程式或為了他人便於修改時,我卻
會完全依照 OOD/OOP 來寫程式。 因為,OO 對我也許沒有多大用處,但對
他人卻可能大有幫助。
Forth 對這類問題也有體認,他承認自身的〞不完整性〞,給你增修的空間
及能力(也因此,Forth 是最具變動性的語言,也就難以定出標準)。 當
使用 Forth 的人需要某種東西的時候,他就可以在將其加到 Forth 上
(Forth 的〞延伸性〞)。 而且,由於〞語言與系統合一〞,更使得增修
的工作變得直接、容易。 用 Forth,你不必老是等待別人。
> Forth 在 develop 上的成就無庸置疑。但如同我前面所提的, 我質疑的是
> final runtime。
還是那句話,Forth 只輸給組合語言。 :-)
> 軟體生命週期不能只考慮發展階段呀!
軟體生命週期中和程式設計師有關的有那些? 只有發展階段和維護(增修),
其實也是 design -> coding -> test,不是嗎? 你也認為 Forth 在這上面做
得很好。 至於其他如新觀念的導入、推廣、銷售 ... 等,又有那種語言能幫你
呢? (不過當你需要某種東西,而別的語言無法支援時,你卻可以輕易的修改
你的 Forth 來滿足你的需求,而不用等別人出新的 compiler)。
凡事都有其精神所在,取捨之間,得失之別,全在自己。
O-O (二輪族) ---> 我想買一台裝 PPC,執行 OS/2 的摩托車
==============================================================================
發信人: john...@csie.nctu.edu.tw (Chien-Hung Chen), 信區: programming
發信站: 交大資工 News Server (Wed Apr 6 13:24:38 1994)
Hi, all Forthy :
我覺得 Forth很流行呀! 我自己本人就有各種不同版本的 Forth Systems.
Super8, Z80 eforth, 8051 Forth, 68K forth, and NC4000. 不過, 我
接觸 Forth 這麼久以來, 我發現使用它的人愈來愈高竿, 用得越多, 越是
絕口不提 !
像我應用 Forth 來發展 8051 的系統. 我絕對跟別人說是用 Assembly 寫
的, 免得他人問東問西的 !!
Chien-hung Chen | E-mail :
john...@csie.nctu.edu.tw
| Telephone : 886-35-712121 ext
3754
Dept. of Comp. Science & Info. Eng.| DSP Lab : EC613 , ext 3754
National Chiao-Tung University | Home Tel : 886-2-812650
Hsin-Chu, Taiwan, R.O.C. | Dorm Tel : 886-35-726571
==============================================================================
發信人: lmy@cis_nctu (Daemon of Andromeda), 信區: programming
發信站: 交大資科_BBS (Apr 7 10:20:53 1994)
==>[Author]: john...@csie.nctu.edu.tw (Chien-Hung Chen) on board
'programming'
> 我覺得 Forth很流行呀! 我自己本人就有各種不同版本的 Forth Systems.
> Super8, Z80 eforth, 8051 Forth, 68K forth, and NC4000. 不過, 我
> 接觸 Forth 這麼久以來, 我發現使用它的人愈來愈高竿, 用得越多, 越是
> 絕口不提 !
> 像我應用 Forth 來發展 8051 的系統. 我絕對跟別人說是用 Assembly 寫
> 的, 免得他人問東問西的 !!
8051 Forth 我沒用過, 倒是用過 Super8 Forth, 似乎是 F83 的 kernel 改過來
的. 12MHz 的 S8 Forth, 跑得比我那 16MHz PC 286-AT 上的 F83 還快, 這是意料中
的情形.
我覺得在迷你系統中要快速地 porting 一個交談式的系統, 具有強大的硬體
控制以及軟體發展擴充能力, Forth 是最佳地選擇. 也就是說, 在單晶片的世界中,
我個人覺得 Forth 將是 porting effort最小的. (甚至在還沒有很好的 assembler
之前, 就可以有 meta-compiling 所產生的 Forth 系統了, Super8就是很好的例子,
從頭到尾, 我不必用它附的 assembler, 因為 Forth 自己就有 assembler. 而用 C
語言來發展程式, development 的非交談式環境, 以及所產生的large-size 執行檔,
將讓你頭痛萬分, 光是等erase-burning EPROM 就讓人受不了了, 甭提compile-link-
buring 的過程)
Forth 的 assembler 尚有 if-else-then, begin-while-repeat, begin-until
等高階流程控制, 所以 programmer 不用在 cmp, j[n][l|g][e|t] 等指令的排列組
合中迷失自我.
有這麼多好處, 大家都應該來玩一玩, 畢竟我們都被主流的 C 語言弄得有點麻
木. 玩玩 FORTH, 輕鬆一下.
地山謙, 亨, 君子有終
==============================================================================
發信人: lmy@cis_nctu (Daemon of Andromeda), 信區: programming
發信站: 交大資科_BBS (Apr 8 09:42:42 1994)
==>[Author]: forthy@totoro (forthy) on board 'programming'
> Forthy ?:^) Ever think about posting more your experience about Forth?
> I shall be appreciated!
我學電腦語言的順序為 APPLESOFT BASIC, 6502 Assembly, Forth, Fortran,
PASCAL, C, x86 Assembly, PROLOG, COBOL. (後兩種只看過, 沒用來寫過程式,
倒是幫很多商專的小妹妹抓過許多 COBOL 的 bug) 我覺得 BASIC, FORTRAN, C, Pascal
, COBOL 是一類的, 屬於程序性的語言, assembly 也可以說是比較 low-level 的程
序性語言. Forth, PROLOG, LISP 則和上述傳統性的語言在概念上有很大的出入, 提供
了另外的看問題以及解決問題的方法. 這就是為什麼許多資訊科系要將 PROLOG 或 LISP
列為必修的原因. 當然, 還有其他許許多奇怪的語言, 但更不流行.
當時, 我們在高中電腦社經常會提出一些問題來比賽執行速度, 當時比較普遍的
語言是 Applesoft BASIC 以及 6502 assembly, 其他語言在 apple 上的 compiler
尚未普及 (想想看main memory 只有 48KB), CP/M 上倒是有 FORTRAN, Pascal
的compiler. 當時, 我的Forth 程式執行速度通常排第二, 次於 assembly. interpreter
形式的 apple BASIC, 只能以奇慢來形容. 後來出了一種 TASC compiler (T?? apple
soft compiler) 速度戲劇性的變快, 但仍不是 apple forth 79 的敵手. 因為 6502 有
0 頁定址, 速度最快, 剛好可以做 forth 的 stack.
到了 8088, push/pop 指令之慢, 嚴重影響 F83 的速度, 再加上要和同學合力寫
程式, 或是作業習題指定用 C/PASCAL, 就很少用 forth 來寫正式的程式, 都是自己
當娛樂來寫. 有一次, 資料結構的助教說不限語言, 要交三個作業, 都是和 link list
/tree 有關, 我就分別用 C, PASCAL, FORTH 各寫一個作業交出去. 其中 FORTH
程式結果看起來, 大致上是像這樣子的
tree root
tree reverse-root
5 root data -> !
3 root left -> data -> !
2 root right -> data -> !
1 root left -> left -> data -> !
4 root left -> right -> data -> !
." The old tree is" cr
root dump-tree
root reverse-root reverse-tree
." The reverse tree is" cr
reverse-root dump-tree
The old tree is
5
/ \
3 2
/ \
1 4
The reverse tree is
5
/ \
2 3
/ \
4 1
我也不知道助教給我什麼分數? 限於篇幅, 以後有空再聊
地山謙, 亨, 君子有終
==============================================================================
發信人: forthy@totoro (forthy), 信區: programming
發信站: 中央資管龍貓資訊天地 (Fri Apr 8 14:51:14 1994)
> 發信人: lmy@cis_nctu (Daemon of Andromeda), 信區: Program
> 有一次, 資料結構的助教說不限語言, 要交三個作業, 都是和 link list/tree 有關,
> 我就分別用 C, PASCAL, FORTH 各寫一個作業交出去. 其中 FORTH 程式結果看起來,
> 大致上是像這樣子的
Hello Imy,
I happen to write the same assignment just like you did!
You are so lucky to be a member of Apple ][ age. Now problems seem
complicated.
Now we have to catch up the rapid step of the industry. If I were be
one of
you, I could spend more time on a more specific aspect. The new tech
just
overwhelms me, PowerPC, OpenDoc, PowerTalk, Newton, etc.
My friends work on the linked list assignment in C. They are trapped
by the
pointers. This isn't a problem for me because I've get used to deal
with
addresses since use Forth. I can almost see the nodes threaded with
fine
lines. My friends did a painful struggle then said "I seem to be able
to see
the memory cells in front of my eyes.".
?:^)
Cheer and look forwards to hearing more from you!
==============================================================================
發信人: ajax@phoenix (ajax), 信區: programming
標 題: To Forth or not to Forth ?!
發信站: 交大資工鳳凰城資訊站 (Sat Apr 9 10:03:56 1994)
轉信站: cis_nctu!bbsroute!phoenix
哈姆雷特在宮殿徘徊:
To be or not to be ?
有人猶豫著:
To C or not to C ?
但是 "C" 念起來有點像閩南語的"死", 好像不太樂觀呢.
To Forth or not to Forth ?
為何不前進呢? 它被形容得如此好...
終究一個人的精力有限, Forth雖好, 但仍要使用的人越多, 才會有更多的好用的
東西出現, 能有幾人像 Forth牛仔 Charles Moore先生一般, 什麼都自己來, 要設計
CPU, 還可以自己設計 CAD系統, 據說到目前除了 FPC外, 還沒用過別人寫的 Forth
系統. 因此應鼓勵大家多將自己的經驗公開, 如此可增加彼此的功力.
沒有學過組合語言及計算機結構的人, 似乎很容易被 C的pointer弄昏頭, 更不用
說有多少功力, 但由 Forth入門, 可以很容易的瞭解 OS, compiler, file system,
assembler, editor, man machine interface..., 因此學過 Forth的人, 不論是用
它來工作, 都很容易進入情況.
Forth 雖然可以很容易加上 Object Oriented 的特性, 但好像不易看到此類的
Forth, 聽說 MAC上有個叫 YERK 的系統不錯, 但可惜我沒用過 MAC, 無緣使用.
==============================================================================
發信人: TwoO@nctu_csie_bbs (O-O), 信區: programming
發信站: 交大資工天龍新聞社 (Sat Apr 9 11:28:53 1994)
> 終究一個人的精力有限, Forth雖好, 但仍要使用的人越多, 才會有更多的好用的
> 東西出現, 能有幾人像 Forth牛仔 Charles Moore先生一般, 什麼都自己來,
Open Firmware (IEEE P1275 啟動韌體標準) 的設備介面〞不僅提供讓
介面卡獨立於 CPU 之外的機制,同時依賴一種語言來達成這個目的 ---
Forth。〞 因此可以預期的是,有些為介面卡或主機板寫 ROM program
的工程師必須開始學習 Forth。
〞目前,Apple、IBM、Motorola、及 Sun 已帶頭跳上 Open Firmware
的列車〞。 IBM 為 PowerPC-based 相容系統定義了 PReP 規格,而
〞PReP 策略目標之一就是要支援開放韌體 (Open Firmware);IBM 將
其 PReP 相容系統的啟動碼放入快閃式記憶體 (Flash ROM) 的理由之
一,就是為了將來可以容易地升級到 Open Firmware 標準。〞 另外
,〞PCI 的介面卡唯讀記憶體規格將 Open Firmware 的 FCode 定為
一項可行方案,也是唯一能真的獨立於 CPU 之外的可行方案。〞
當 Open Firmware 成為業界標準時,其本身也會成為 Forth 發展史上
,重要的里程碑。
PS. 以上在〞〞中的文字,引自 0 與 1 BYTE 中文版 1994 年 4 月號。
O-O (二輪族) ---> 我想買一台裝 PPC,執行 OS/2 的摩托車
==============================================================================
發信人: Alpha@phoenix (- 藍 蘋 果 -), 信區: programming
發信站: 交大資工鳳凰城資訊站 (Sun Apr 10 11:08:52 1994)
> 有那位高手, 能不能介紹一下 OOP FORTH ? :) key point 在那呢??
讓我們來炒熱這個話題吧!
OOP FORTH 見過的大致有三種方式, 只有一種是在 PC 上看到的, 可能是因為
8088 的分段實在太龜了, 又暫存器太少了!
1. PC 上的最不好用, 有興趣的可以去 asterix.inescn.pt 上抓個 FPC 和它的
OOP 程式, 覺得醜醜的, 就沒多用了!
2. MOPS 和 Yerk 相當, 但它是 subroutine threaded 方式做成的. 大致上得
先宣告一個物件, 有點像 C 中宣告的 structure 和 C++ 的 object 差不多,
再來就是用 :M 和 ;M 宣告定義操作物件的 functions, 有繼承性之類的特性,
用法是像
1 2 draw: pix
就可以在 (1,2) 畫出 pix 物件代表的點. 其他的也不甚記得了!
3. 最欣賞的是 kevo 了, 像極 C++ 了, 寫個小程式片段獻醜一下
VAR Pix \ 建立 Pix 變數.
Object.clone -> Pix \ Pix 繼承基本物件 Object 的特性.
Pix ADDMENTS \ 為 Pix 加點料
VAR X \ X 座標
VAR Y \ Y 座標
VAR color \ 顏色
: draw ( X Y color -- )
畫點的程式碼 ;
: show ( -- )
X Y color draw ;
ENDADDS \ Pix 物件完成了.
就可以用 Pix.show 來顯示這個點了, 建立一個類似的物件只要用
VAR Pix2
Pix.clone -> Pix2
就成了! 非常好用, 而且是 prototype based , 又物件可以建成樹狀結構, 層次
非常分明, 遺憾的是這完全以 C 來模擬, 所以不要想期待他的速度, 但也支援多
工和 object browser, 曾經很想用 assembly language 來 port 它到 486, 但
不是很會用組語的一些假指令, 又太沈迷 bbs 了, 所以一直沒下大功夫去做, 有
興趣的人我們可以討論一下, 看看是否有合作的可能, 我可以提供一些入門經驗!
風城藍蘋果
==============================================================================
發信人: Alpha@phoenix (- 藍 蘋 果 -), 信區: programming
標 題: Fcode, Forth and PReP
發信站: 交大資工鳳凰城資訊站 (Sun Apr 10 11:19:55 1994)
轉信站: cis_nctu!bbsroute!phoenix
關於這三者的關連, 我曾經收錄過一篇 news, 在這裡提供大家做個參考,
不過不知道新竹是否有提供會 Forth 的人工讀機會?
The PowerPC Reference Platform Specification (PReP) Guide (Alpha
Version)
states that PReP compliant systems should implement the IEEE standard
P1275
for Boot Firmware, "Open Boot". The Open Boot Process is currently
being
defined by IEEE as "IEEE Standard P1275 Standard for Boot Firmware".
This
process uses a hardware independent and extendable interpretive
language based
on Forth for use in describing the boot process. The advantages of
using the
Open Boot process on a PReP compliant machine are:
A hardware independent boot process may be defined and used on a
vendors
hardware family.
Device drivers may be defined for new devices and contained on ROM for
those
devices.
As stated in the IEEE standard (P1275/D11):
"FCode is a way of representing a program in the Forth programming
language
by using machine-independent byte codes to represent a set of standard
Forth
words. FCode uses a dialect of Forth that is based on the proposed ANS
Forth
standard (however, FCode is not a Standard System as defined by the
proposed
ANS Forth standard), with exetensions appropriate for firmware
requirements.
An FCode Program is a representation of a computer program in the
FCode
language."
I am looking for any information (or source) for a FCode Evaluator for
the
PowerPC. The evaluator will be resident within ROM, and must stand-
alone for
the most part.
rob baxter kb7tby
ro...@riscy.phx.mcd.mot.com
有興趣的人可以寫 mail 給這個老外, 或許他已經收集到一些資料!
風城藍蘋果
==============================================================================
發信人: ajax...@csie.nctu.edu.tw (ajax), 信區: programming
標 題: 中華民國 FORTH語言協會
發信站: 交大資工鳳凰城資訊站 (Mon Apr 11 09:47:29 1994)
轉信站: cis_nctu!bbsroute!phoenix
由愛好 Forth語言者組成, 為一非營利性機構, 目的在促進國內資訊科技的發展,
舉辦定期或不定期研討會, 交換有關 Forth軟硬體之資訊.
目前協會會長是林誠謙, 定期月會的時間是每個月的第四週下午 2點開始, 地點假
台北南港中央研究院計算中心新大樓視聽教室舉行.
其聯絡信箱是:
桃園龍潭郵政28號信箱 中華民國FORTH語言協會
聯絡人是: 03-479-8825 曾慶潭
協會有點像在風兩中飄搖而到今天, 曾幾度停擺, 會員流動性不乎太大, 有許多老
面孔, 取得國外的資訊主要是靠在美國工作的丁陳博士, 和 FIG反倒沒什麼聯繫. 協會
能持續多久很難說, 因為老會員慢慢的有別的事作, 而新血又補充緩慢, 尤其是每年要
改選一次的會長, 更是常難產. :(
==============================================================================
發信人: OhiYooo@cis_nctu (pie), 信區: programming
標 題: 大發現!! FORTH 無所不在!!! :))
發信站: 交大資科_BBS (Apr 20 01:33:58 1994)
轉信站: cis_nctu
大發現!! 這裡有 NCTU E.E. 的同學嗎??
次微米(NDL)那台 ion implanter (VARIAN E220) 裡面所有的控制程式都是
用 FORTH 寫的呢!! 很驚訝吧?? 常常聽到 FORTH 拿來做自動控制, 控制
如天文望遠鏡, 超音波掃瞄... 等等 各式各樣的系統, 沒想到眼前就有一個很
棒的例子!! :)
還有更令人驚訝的呢!! :)
E220 內部對於 implanting 時 dose 量的監視, 是由傳說中的 FORTH chip
NOVIX 所擔任的喲!! ;)
也許只有像 NOVIX FORTH chip 這麼快速的 CPU 才有足夠的能力, 和速度
對這麼快速掃瞄 (1 KHz) 的 ion beam 做最佳的 "即時" 控制吧!! :)
下次進去 NDL FAB 做實驗時, 不要忘記多看 E220 幾眼喲!!! ;-)
pie. 4-20-94
==============================================================================
發信人: OhiYooo@cis_nctu (pie), 信區: programming
發信站: 交大資科_BBS (Apr 23 02:32:47 1994)
==>[Author]: johnchen@csie (Chien-Hung Chen) on board 'programming'
> pie (OhiYo...@bbs.cis.nctu.edu.tw) wrote:
>> 也許只有像 NOVIX FORTH chip 這麼快速的 CPU 才有足夠的能力, 和速度
>> 對這麼快速掃瞄 (1 KHz) 的 ion beam 做最佳的 "即時" 控制吧!! :)
>> 下次進去 NDL FAB 做實驗時, 不要忘記多看 E220 幾眼喲!!! ;-)
> 我不是 NCTU E.E. 的同學, 但我想看一看那一台 ion implanter (VARIAN E220)
> 不知道可否有機會親眼目賭 NOVIX FORTH chip 它的風采!?
> 因為我手頭上就有 NOVIX FORTH chip的板子, 總是不曉得該把它用在何處!?
在 Varian E220/E500 ion implanter 中, 我想會使用 FORTH chip 的主要
原因, 除了他速度快之外, 另外一個原因是 因為整個主電腦的控制程式是
用 FORTH 寫的!! 所以為了方便, 當然是用 FORTH chip 來做最重要部分的控制囉!!
:)
對了!! 整個 ion implanter 是個龐大且複雜的系統, 好好玩喲!!! :))
我想我們可以利用 FORTH chip 在物理化學的研究儀器上!!
我以前是作物裡實驗的研究生, 當時我們 set-up 實驗室就曾遭遇到困難...
我們主要是要去測量一些核子反應所產生的事件, 記錄並計算之!!
但是核反應事件發生的時間約為 1e-6 秒, 使得事件發生的頻率太快!!
界面的速度追不上, 加上使用慢慢的 C 來發展程式!! 結果...
當然很慘... ;)
要是那時採用 FORTH chip, 相信現在須要 12小時才能完成的實驗
必能縮短為一個小時!!! :)
請問如何才能買到 NOVIX FORTH chip的板子, 跟發展系統?? 我很想玩看看!!
:) 也許哪天, 我可以把我的 FORTH chip 儀器控制 賣給我老板!!! ;)))
pie. 4-23-94
==============================================================================
發信人: OhiYooo@cis_nctu (pie), 信區: programming
發信站: 交大資科_BBS (Apr 23 01:58:53 1994)
==>[Author]: ajax.bbs@csie (ajax) on board 'programming'
> ==> 在 NCUSteven@totoro (Steven Wu) 的文章中提到:
>> 昨天找到 tcom之後,試玩了一下,好像沒有找到文件說是可編譯 exe 和 driver檔,
>> 但是 4thcmp卻有這些功能,因此又想請教一個問題--- 有沒有那為高手能比較一下
>> tcom和 4thcmp這兩個編譯器究竟哪個較好?因為我有點想去 register 4thcmp不知
>> 有沒有這個價值?
> 也許你習慣了其他語言的發展方式, 不然 Forth的使用者很少用 compiler來產生執
> 行檔, 大部份是在 Forth的環境下發展, 到最後階段才產生獨立的執行檔, 一般稱呼
> 為 turnkey system, 可用 meta compiler或 tcom此類的工具, 若不計較記憶體, 甚
> 至可以直接 save system 成 .exe 檔, 所以我認為除非 Forth玩得很好, 非要用
> compiler才能工作再考慮使用。當然, 因為使用 Forth的人口不多, 若能對 Forth工
> 具發展者一些支持, 或多或少能起一些鼓勵的作用.
完全贊同!!! :))
且在這種 Forth的環境下, FORTH 就如同一個作業系統, 你可以享受到 FORTH 作業
系統所帶來的好處, 如多工, 虛擬記憶, 交談性, 甚至是 RAM disk....
這些先進作業系統才有的功能, FORTH 卻以很簡單﹑很漂亮的方式就達成了, :)
真棒!! :))
pie. 4-23-94
==============================================================================
發信人: mr81...@g814305.hung.ab.nthu (Hong-Yung Lee), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: National Tsing Hua University,Hsinchu,Ta (Sat Apr 23 21:39:10
1994)
轉信站: cis_nctu!bbsroute!crosspost
pie (OhiYo...@bbs.cis.nctu.edu.tw) wrote:
>>> 我想我們可以利用 FORTH chip 在物理化學的研究儀器上!!
>>> 我以前是作物裡實驗的研究生, 當時我們 set-up 實驗室就曾遭遇到困難...
>>> 我們主要是要去測量一些核子反應所產生的事件, 記錄並記算之!!
>>> 但是核反應事件發生的時間約為 1e-6 秒, 使得事件發生的頻率太快!!
>>> 界面的速度追不上, 加上使用慢慢的 C 來發展程式!! 結果...
>> ^^^^^^^^^^^^^^^^^^^
>> 基本上,real-time 的問題和 programming language
>> 比較沒有什麼大關係...
> ohhh...... really?? ;) 那可以用 BASIC 來寫控制程式了嘛... :)))
我想你的癥結點是在於一台慢的機器和跟本跟不上速度的界面, 而不是 C 在慢. 不信
的話, 你在原系統上放一個 FORTH compile or FORTH interpreter, 再去重新寫控制
程式, 你的發展期應會縮短, 但是你所須時間我想差異不大 (假設你是一個 skillfull
programer). 其實若是界面跟本跟不上, 即使用牛仔的那一片 Forth Machine, 它最多
也僅能保證每次 sample data 進來時已處理完前一次 data可以再接受這次 data而已,
它又無法加速你的 sample rate, 進來的 data 還是受限於外在的界面 (卡) 的 sample
rate. 它再快也是要等外面的 data. 其實 Drifter所講沒錯, 只是沒有很嚴謹吧了.
我不知你們的 real-time 定義如何, 但我隔壁化工所室友的整套蒸餾塔監控程式, 就是
用 QBASIC 寫的. 這提供你們一個參考.
//////////////////////////////////////////////////////////////////////////////
/ Hong-Jung Lee
\ / /
/ National Tsing-Hua University \ /
mr81...@cs.nthu.edu.tw /
/ Department of Computer Science \ /
mr81...@nthcs10.cs.nthu.edu.tw /
/ Room 735, CSEE Building \ /
g81...@Gillikin.Oz.nthu.edu.tw/
/////////////////////////////////////////////////////////////////////////
==============================================================================
發信人: lmy@cis_nctu (Daemon of Andromeda), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大資科_BBS (Apr 24 10:53:46 1994)
轉信站: cis_nctu
==>[Author]: mr81...@g814305.hung.ab.nthu (Hong-Yung Lee) on board
> 我不知你們的 real-time 定義如何, 但我隔壁化工所室友的整套蒸餾塔監控程式,
> 就是用 QBASIC 寫的. 這提供你們一個參考.
我相信 BASIC 來應付蒸餾塔監控程式沒有問題. 因為該系統的暫態及穩態響應
的變化速率應該在 BASIC 能夠應付的能力之內. 但如果更快的系統, 可能連 C都無
法應付, 而須用組合語言. 數位控制有一個基本要求, 你的取樣及處理頻率, 必須
大於 2倍的系統自然頻率以及外加驅動頻率, (也就是受限於 Nyquist rate 的取
樣定理) 否則系統將無法 stable, 或是 steady state error 會太大.
用高階語言在最佳化的瓶頸就是許多暫存器被用掉去 keep 一些 virtual machine
的狀態, 如堆疊框, loop count等, 導致最佳化時自由暫存器不足. 還有堆疊框的
epilog, prolog等, 都是 overhead. 用 forth chip 時, 這些問題都被消除, 你可以
這樣想, 該chip 的machine language 就是forth, 這些 overhead 在晶片設計時就
被消除. 此外, 該晶片最多可以並行三個 machine instruction (尤其是返回指令
EXIT) 一般高階語言用function call 雖可以增加模組化, 卻增加了進出的 overhead,
C++ 的 inline 雖有部分效果, 卻無可避免的增加 size overhead, 對 programmer 是
一種看不見的懲罰. forth 晶片的 word (可看成function) 的進出可說幾無 overhead.
用那樣的晶片寫組合語言 (就是forth), 在同樣的時脈下, 我想沒有其他晶片的高階語
言可以及得上它的速度.
地山謙, 亨, 君子有終
==============================================================================
發信人: william (C++/ASM/Win Master), 信區: 'programming'
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大資科_BBS (Apr 25 00:08:36 1994)
==>[Author]: lmy@cis_nctu (Daemon of Andromeda) on board 'programming'
> 我相信 BASIC 來應付蒸餾塔監控程式沒有問題. 因為該系統的暫態及穩態響應
> 的變化速率應該在 BASIC 能夠應付的能力之內. 但如果更快的系統, 可能連 C都無
> 法應付, 而須用組合語言. 數位控制有一個基本要求, 你的取樣及處理頻率, 必須
> 大於 2倍的系統自然頻率以及外加驅動頻率, (也就是受限於 Nyquist rate 的取
> 樣定理) 否則系統將無法 stable, 或是 steady state error 會太大.
對時序要求如此嚴格的場合, 應該都是用 asm 吧? 畢竟高階語言也不是萬能的。
即使是 Ada, 在做 embedded system 時還是要動到 asm。
> 用高階語言在最佳化的瓶頸就是許多暫存器被用掉去keep 一些virtual machine
> 的狀態. 如堆疊框, loop count等, 導致最佳化時自由暫存器不足. 還有堆疊框的
> epilog, prolog等, 都是 overhead. 用 forth chip 時, 這些問題都被消除, 你可
> 以這樣想, 該chip 的machine language 就是forth, 這些overhead在晶片設計時就
> 被消除.
這是自然的, 用各 CPU 的母語來寫程式, 自然最好。沒聽過在 Lisp machine 中的
C 程式能拼過 Lisp 的。
問題是:若是在非 Forth chip 裡, Forth 該如何避免這種 overhead? 我很感興趣。
> 一般高階語言用function call 雖可以增加模組化, 卻增加了進出的 overhead,
> C++ 的 inline 雖有部分效果, 卻無可必免的增加 size overhead. 對 programmer
> 是一種看不見的懲罰.
這怎麼能算是「看不見的懲罰」? 要不要 inline 全看 programmer, 這是「看得見」
的。即使用 macro assembler, 也會碰到用 CALL 或是 MACRO 的抉擇。
在 Forth中大量動到 threaded code, 還不是會遇到傳統副程式的 overhead 問題?
這是宿命。
> forth 晶片的 word(可看成function)的進出可說幾無 overhead. 用那樣的晶片寫
> 組合語言(就是forth), 在同樣的時脈下, 我想沒有其他晶片的高階語言可以及得
> 上它的速度.
這是自然。哪天出了一個 Ada chip 來發展 embedded system 的話, 他們也是可以
如是說。
對了, 哪兒可找到 NOVIX 的資料? 有點興趣...
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
≡ 何陋居 ≡ 聖人, 吾不得而見之矣... 論語‧述而
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
==============================================================================
發信人: lmy@cis_nctu (Daemon of Andromeda), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大資科_BBS (Apr 25 09:30:44 1994)
轉信站: cis_nctu
==>[Author]: william@cis_nctu (C++/ASM/Win Master) on board
'programming'
> 對時序要求如此嚴格的場合, 應該都是用 asm 吧? 畢竟高階語言也不是萬能的。
> 即使是 Ada, 在做 embedded system 時還是要動到 asm。
不見得, 我以前的論文是有關語音辨認的辨認速率問題. 再怎麼要求 real-time
也沒有人會想用 asm. 除非是 critical function, 像我學弟就 K了 DSP32 的 asm,
拼了命寫了一個. 在沒有良好的發展系統上, 這樣做非常痛苦. 但若是有良好的發
展系統, 相信我, 語音辨認的 algorithm 用 asm 去 implement 一樣不是一件很聰
明的作法. 即使我們最新的方法以將浮點運算數目從 1百多萬/每字 降至 數萬餘/每字,
用 DSP32 仍只能勉強 real-time, 但仍然不會去嚐試用asm 來 implement 全套系統.
目前仍然是用 該晶片的 C cross-compiler. 但其compiler最佳化不是很好. 如果能
有高階語言能達成速度不輸 asm, 那不是大家的希望嗎?
> 這是自然的, 用各 CPU 的母語來寫程式, 自然最好。沒聽過在 Lisp machine 中的
> C 程式能拼過 Lisp 的。
> 問題是:若是在非 Forth chip 裡, Forth 該如何避免這種 overhead? 我很感興趣。
我的意思不是這樣比, 我的意思是用同樣的時脈 (這代表了目前的晶片及高頻電
路技術), 以及同樣的 BUS 架構 (使I/O & memory 傳輸速率站在同樣的基礎), 以各
種高階語言, 分別用最適合該語言的 CPU 來解決同樣的問題. 我想只要不是人工智慧
的題目, 可能很難有拼得過 FORTH 的. 除非有特別為該語言最佳化的 cpu. 而 FORTH
卻早已使用這種方式. 而該晶片之簡潔, 令人讚賞, 只用了 8000 餘 gates.
> 這怎麼能算是「看不見的懲罰」? 要不要 inline 全看 programmer, 這是「看得見」
> 的。即使用 macro assembler, 也會碰到用 CALL 或是 MACRO 的抉擇。
> 在 Forth中大量動到 threaded code, 還不是會遇到傳統副程式的 overhead 問題?
> 這是宿命。
在傳統 asm 中, 你可以用 call, ret. 只須付出指令時脈與 instruction queue
prefetch cycles. 的代價. 為了減少 size (very critical in small system),
這是可以容忍的. 但高階語言的 call/ret 的 overhead, 相信您很清楚, 所以才會有
inline, 但 inline 就不可避免的增加 size. 我所謂的看不到是你在未編譯前無法
知道會多了多少 size/speed overhead. 而 FORTH chip 的 call overhead 已同於
asm (只需本身時脈與指令預取時脈). 而 ret 在90%以上的case, 時間為0. (已與目
前的指令 concurrent executed). 黃大一的 FORTH 83一書中有提到一個 bench mark
第一代的 NOVIX 用 8MHz clock 達成 20 MIPS. (可見有極高的比例達成 3 instructions
concurrency) 若再能加上 flow transfer prediction instruction prefetch, 則
call 的 overhead 可能近乎可忽略不計.
>> forth 晶片的 word (可看成 function) 的進出可說幾無 overhead. 用那樣的晶片寫
>> 組合語言 (就是 forth), 在同樣的時脈下, 我想沒有其他晶片的高階語言可以及得
>> 上它的速度.
> 這是自然。哪天出了一個 Ada chip 來發展 embedded system 的話, 他們也是可以
> 如是說。
我沒學過 Ada, 不瞭解其架構與堆疊框建置. 但 C 至今為何沒聽說 (可能是我孤陋
寡聞) 類似的商品化 CPU, 我想可能有根本上的困難.
> 對了, 哪兒可找到 NOVIX 的資料? 有點興趣...
我大學時有過幾張影印資料, 以上所寫的就是根據我對它的記憶. 如今不知能否
找得到. (沒想到 FORTH 在今天會引起討論, 我想 IEEE 的 boot firmware draft
功不可沒). 可能可以向網友所提到的 FORTH 協會索取.
昨天回家找到了陳封以久的簡介資料. (可見有多久沒玩 FORTH 了)
FORTH 期刊, 1985年 第6期10月號. 有些資料記錯了, 應為只用了 4000 餘 gates.
RISC 特性, hardwire control (無 microcode), 可同時執行 1~5 primitives
instructions. 並且 on-chip 有 I/O port (可做為單晶片控制)
以下再補充一些 FORTH 的特點. (我不稱其為優點, 免得有人抬槓)
以 FORTH 的 virtual machine 的架構而言, 人人都有能力可以設計 engine
chip (好不好另一回事), 有誰可以獨力設計 80386 的嗎? 另外, 今天若出了任
何一種 CPU, 我有信心, 在短期內在其上以 Forth 83 Meta-compiler 建構出一套
FORTH 系統出來. 對其他的語言, 可能就得等待軟體商的支援. FORTH 讓你有完全
掌握系統的能力.
下次各位在 SUN 上按了 STOP-A 之後, 用 n 進 FORTH interpreter, 別
忘了用 words 看有那些 words 可用. 並且用 banner 看一看 system logo.
地山謙, 亨, 君子有終
==============================================================================
發信人: s...@cc.ntu (Shiau Yong-Ching), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: National Taiwan University (Mon Apr 25 11:54:32 1994)
轉信站: cis_nctu!bbsroute!crosspost
Daemon of Andromeda (lmy...@bbs.cis.nctu.edu.tw) wrote:
> 我沒學過 Ada, 不瞭解其架構與堆疊框建置. 但 C 至今為何沒聽說 (可能是我孤陋
> 寡聞) 類似的商品化 CPU, 我想可能有根本上的困難.
有啊,好久以前 (一兩年前) 雜誌上曾經報導過 AT&T 有發展 C chip 的計畫 (忘記
它的名字了,不過他的鋒頭大概被最近的晶片大戰搶光了)
======================================================
Shiau Yong-Ching (蕭永慶)
E-mail: s...@cc.ntu.edu.tw Phone: 7358499 - 717
Department of Electrical Engineering, Taiwan University
==============================================================================
發信人: Drifter@Maxwell (我和周慧敏生日同一天), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 台大電機 Maxwell 站 (Mon Apr 25 13:09:10 1994)
轉信站: cis_nctu!bbsroute!Maxwell
> epilog, prolog等, 都是 overhead. 用 forth chip 時, 這些問題都被消除, 你可以
> 這樣想, 該chip 的machine language 就是forth, 這些 overhead 在晶片設計時就
> 被消除. 此外, 該晶片最多可以並行三個 machine instruction (尤其是返回指令
> EXIT) 一般高階語言用function call 雖可以增加模組化, 卻增加了進出的 overhead,
> C++ 的 inline 雖有部分效果, 卻無可必免的增加 size overhead. 對 programmer 是
> 一種看不見的懲罰. forth 晶片的 word(可看成function)的進出可說幾無 overhead.
> 用那樣的晶片寫組合語言(就是forth), 在同樣的時脈下, 我想沒有其他晶片的高階
^^^^^^^^^^^^^^
> 語言可以及得上它的速度.
^^^^
其實在這種情況之下,我在「其他晶片」上使用組合語言來比較並不為過,
因為你用的 forth 就是該晶片的組合語言。
此外,real-time programming 的問題,應該是由 real-time system 提
供適當的 tools 或 api 來加以解決,我們所求的是一個 total solution
, 而不是單方面地以改變 programming language 就可得到解決。如果今天
我們系統中的 real-time 的 api,是針對 X 語言所設計的,那你在此系統
之下,使用 X 語言來做 real-time programming 的話,一定如魚得水,非
常快樂,我想,在你的例子中,只是 X 恰好等於 forth 罷了。
Drifter ---- 「不盈科不行,不成章不達」
==============================================================================
發信人: TwoO.bbs@csie (O-O), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大資工天龍新聞社 (Mon Apr 25 17:02:04 1994)
轉信站: cis_nctu!bbsroute!crosspost
我和周慧敏生日同一天 (Drift...@mic.ee.ntu.edu.tw) wrote:
> 其實在這種情況之下,我在「其他晶片」上使用組合語言來比較並不為過,
> 因為你用的 forth 就是該晶片的組合語言。
問題是 ...... 在 Forth CPU 上,高階語言(Froth) 等於 組合語言(Forth);
但是在〞其它晶片〞上,通常 高階語言 不等於 組合語言。
你希不希望寫程式時有高階語言的方便迅速;執行時則有如純組合語言寫成般地
快速、有效率?
O-O (二輪族) ---> 我想買一台裝 PPC,執行 OS/2 的摩托車
==============================================================================
發信人: TwoO.bbs@csie (O-O), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大資工天龍新聞社 (Tue Apr 26 09:09:02 1994)
轉信站: cis_nctu!bbsroute!crosspost
我和周慧敏生日同一天 (Drift...@mic.ee.ntu.edu.tw) wrote:
>> 你希不希望寫程式時有高階語言的方便迅速;執行時則有如純組合語言寫成般地
>> 快速、有效率?
> 這樣說的話,又跟 programming language 的 semantics 有關係了。
> forth 當初的設計,就能使它很輕易的變成 hardware implementation.
這就是人家厲害的地方。
> 而其他的語言又不然,例如 C,它本來就是設計來寫 UNIX 系統的,
> 由不同的出身的語言來進行如此的比較,是不太公平的
既然 C 本來是用來設計 UNIX 系統的 (這我不知道),那你現在是用它
來專做寫 UNIX 系統這件事嗎? 人家能把語言和 CPU、軟體和硬體、
環境和系統,整合得那麼漂亮,就應該欣賞人家,給人家鼓掌,怎麼變
成〞不公平〞了呢? 假設有機器 A 適合做甲類型的應用,但不適合
做乙類型的應用;機器 B 則剛好相反。 現在有人設計出甲乙兩類型
應用都可以做得很好的機器 C,然後拿去跟 A 和 B 比較,這樣有沒有
〞不公平〞? ... 唉 ...... 〞我說它不行哪,它就是不行哪〞(嗯
.... 這句話有廣告的嫌疑 ...)。
O-O (二輪族) ---> 我想買一台裝 PPC,執行 OS/2 的摩托車
==============================================================================
發信人: TwoO.bbs@csie (O-O), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大資工天龍新聞社 (Tue Apr 26 16:29:15 1994)
轉信站: cis_nctu!bbsroute!crosspost
我和周慧敏生日同一天 (Drift...@mic.ee.ntu.edu.tw) wrote:
> programming language 的應用不同,設計不同,在在都導致了該
> ...... [deleted] ............
> 的工具, 而 PL 是 program 的原料),以完成它的工作。
這些我都同意,因為 language 只是工具 --- 該 programmer 的還是 programmer 的。
只不過,工具也有優劣之分,某些還有〞萬用〞的特性。
O-O (二輪族) ---> 我想買一台裝 PPC,執行 OS/2 的摩托車
==============================================================================
發信人: william (C++/ASM/Win Master), 信區: 'programming'
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大資科_BBS (Apr 26 08:50:07 1994)
==>[Author]: TwoO.bbs@csie (O-O) on board 'programming'
> 問題是 ...... 在 Forth CPU 上,高階語言(Froth) 等於 組合語言(Forth);
> 但是在〞其它晶片〞上,通常 高階語言 不等於 組合語言。
> 你希不希望寫程式時有高階語言的方便迅速;執行時則有如純組合語言寫成般地
> 快速、有效率?
最近看了看 ANS Forth 規格, 想請問一下:
1. PC 上有無合乎 ANS Forth 的 implementation? F-PC 似乎還沒有, polyFORTH
還沒仔細摸。
2. ANS Forth 中看到一些 catch, throw 之類的東東, 好像和 C++的 exception
handling 差不多。有沒有人試過?
3. 在 asm中發展新程式, 有個頭痛的地方:常會當機, 所以在 run 或 debug 之前,
往往都會先 save 程式, 以免一當機心血就泡湯。不知在一般的 Forth環境中,
有無對於“當機防護”做較好的處理? 因為我知道 Forth有低階的一面, 在 Forth
中夾雜 asm也是常事, 若是在 run之前都要把 words 先存起來 (Forth 會自動將
words 存到 dictionary FILE 嗎? ) 的話, 似乎不太親切。
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
≡ 何陋居 ≡ 聖人, 吾不得而見之矣... 論語‧述而
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- -- --
==============================================================================
發信人: Alpha@miluku (<< 魔 符 >>), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大電子_BBS (Tue Apr 26 10:16:20 1994)
轉信站: cis_nctu!bbsroute!miluku
==>[作者]: willi...@bbs.cis.nctu.edu.tw (C++/ASM/Win Master) 在
> 3. 在 asm中發展新程式, 有個頭痛的地方:常會當機, 所以在 run 或 debug 之前,
> 往往都會先 save 程式, 以免一當機心血就泡湯。不知在一般的 Forth環境中,
> 有無對於“當機防護”做較好的處理? 因為我知道 Forth有低階的一面, 在 Forth
> 中夾雜 asm也是常事, 若是在 run之前都要把 words 先存起來 (Forth 會自動將
> words 存到 dictionary FILE 嗎? ) 的話, 似乎不太親切。
當機的原因有很多啊! 有時你程式本身自己亂跳, 導致你自己不可預知的後果,
但對機器本身而言, 只不過按部就班執行一個個指令, 它根本無法分辨當機與否!
但是 FORTH 可以一個字一個字敲進去測, 像 F-PC 也提供一個相當好的 debugger,
用來測試低階功能是再好也不過了!
其實個人以為隨 F-PC 3.56 版的 t-com 是個不錯的選擇, 因為本身附有
一個相當正點的 debugger, 比起所謂的 turbo-debugger 絲毫不遜色!
不給糖就搗蛋!
==============================================================================
發信人: ajax.bbs@csie (ajax), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大資工鳳凰城資訊站 (Tue Apr 26 11:41:14 1994)
轉信站: cis_nctu!bbsroute!phoenix
==> 在 Alpha@miluku (<< 魔 符 >>) 的文章中提到:
> 當機的原因有很多啊! 有時你程式本身自己亂跳, 導致你自己不可預知的後果,
> 但對機器本身而言, 只不過按部就班執行一個個指令, 它根本無法分辨當機與否!
> 但是 FORTH 可以一個字一個字敲進去測, 像 F-PC 也提供一個相當好的 debugger,
> 用來測試低階功能是再好也不過了!
> 其實個人以為隨 F-PC 3.56 版的 t-com 是個不錯的選擇, 因為本身附有
> 一個相當正點的 debugger, 比起所謂的 turbo-debugger 絲毫不遜色!
當機對玩 Forth者來說是相當正常的事, 只要一個指令就可做到了, 但是使用它的
優點是一切在你的掌握之下, 你可以讓它當掉, 你也可明白為何當掉, 進一步去避免
再發生, 但是在一個重重保護下的系統, 你可能會 (必然是) 束手無策, reset之後,
下次還是會發生, 但那是黑箱內的東西, 只有忍耐了.
Forth 有很多優點, 但從另一面來看, 缺點更多, 如 stack的運作很難寫成
readable的 code, 習慣不好的人更是寫成 write only的程式, 大部份商業產品都不
支援. 但回過頭來看, 除了 Forth, 你有機會自己寫個 OS, compiler, multi-tasking
kenerl, 甚至設計一顆 CPU, 所以有機會就學習與使用它, 若不喜歡, 大可不要理它.
===============================================================================
發信人: TwoO.bbs@csie (O-O), 信區: programming
標 題: Re: Forth v.s. 軟體工程
發信站: 交大資工天龍新聞社 (Tue Apr 26 16:38:54 1994)
轉信站: cis_nctu!bbsroute!crosspost
Paladin (Paladi...@bbs.cis.nctu.edu.tw) wrote:
> FORTH 語言本身對於軟體工程中所談到的問題, 如模組化,
> 耦合, 結構化等, 使用什麼方式來達成呢?
> FORTH 有 OOP的 extension, 但是我想問 FORTH是否使得
> OOP 的實作更容易.
模組化 --- 你可能找不到比 Forth 更模組化的 language。
一個 word 就相當於一個 function;一個詞彙
就相當於一個 library。
結構化 --- 和一般高階語言差不多,只是寫法有點不同。
其它的我自認了解不多,請知道的人回答一下。
O-O (二輪族) ---> 我想買一台裝 PPC,執行 OS/2 的摩托車
==============================================================================
發信人: Alpha@miluku (<< 魔 符 >>), 信區: programming
標 題: Re: 大發現!! FORTH 無所不在!!! :))
發信站: 交大電子_BBS (Wed Apr 27 12:15:14 1994)
轉信站: cis_nctu!bbsroute!miluku
==>[作者]: porco@Maxwell (賴唐諾) 在 'Programming' 討論區中提及,
> 只用了 4000 餘 gates 就能有數十 MIPS 的速度, Intel 該檢討了 :-)
> 據聞 NOVIX 的架構為 WISC (??, 可變指令集), 可否請 lmy 兄說明一下。
hehe... 還是用 gate array 做的而已哩!
可變指令集是指稱新的 word 的 thread address 會被編成一個 16-bit word
並可直接被硬體解譯成跳躍指令進入點, 如此一來就相當於我們又多了一個
16-bit 的 op-code, 有點像自己寫新的微碼, 由於是用 thread 位址去形成
新指令, 也可以叫做 TISC 架構.
不給糖就搗蛋!
=============================================================================
發信人: yunnl...@csie.nctu (來子), 信區: programming
標 題: Forth 的 uP21...
發信站: 交大資工鳳凰城資訊站 (Sun Oct 22 06:10:13 1995)
轉信站: cis_nctu!news.cis.nctu!news.csie.nctu!phoenix
==> 在 ar...@pc4.hinet.net (Art Tsay) 的文章中提到:
> 請問, Mup21 是什麼?
Sorry ! 我也不是很清楚. 只知道它是一棵低價位的 FORTH CPU.
其它的詳細資料就不曉得了.
> 又請問, 您們學 forth 主要是作什麼用的? 我十年前就學過了,
> 而且也寫過 graphforth 與 transforth 的小程式自娛.
就我本身來說, 我是基於好奇的原因才接觸的. 第一次看到相關的文
章是在"微電腦時代"雜誌上, 黃大一先生的"漫談FORTH"專欄上看到的.
當時, 設法 COPY 到一套 FORTH 的磁片(在 APPLE II 上)(非 FIG 版
而是"FORTH 語言精通"一書所說的系統). 然後是亂玩一通.
啊! 想起來了. 會注意到 FORTH 倒是因為在書局看到這本書(APPLE II
時代), 因為書中的"程式"怎麼和 BASIC 和 ASM 不同, 差非常多. 所
以就買回來看. 不過沒多久就丟在一旁了.
接著到了技院時候, 在圖書館的雜誌看到黃先生的專欄. 這個語言蠻有
趣的就去設法得到一套 F83 (2.0吧). 然後也是亂玩一通,再丟在一旁.
現在工作了, 因為公司的產品都是 Stand alone 的, 不是大系統, 大多
只是一個 8051. 所以又想到 FORTH. 所以就斷斷續續在學習.(我是從事
硬體方面的工作. 所以是"斷斷續續")
> 但, 實在是想不出來真正要寫應用程式時, 又如何下手. 確實, forth
> 不比一般語言, 很多東西均要自己造, 而外面許多有用的 library
> 又不能拿來用.
確實是如此, 用 FORTH 的人並不那麼多(?). 而且也不是銜著銀湯匙出生
的, 所以並不受一般大眾的注意.
> 我實在想不出到底要用在哪裡? 拿來寫外面電動玩具台的遊戲?
> 或作自動控制? 教我玩 forth 的朋友說很好用,
自動控制倒是蠻不錯的一個應用. 對於在大系統的上的應用, 我也不太清
楚. 但是我覺得在小型機器(例如單板微電腦的控制)蠻適合的. 因為它比
ASM 高階一些. 而且不需要非常大的記憶體就可以塞下一個系統程式.(也
就是可以經由 Meta-compile 的過程只產生所需的 word.) 因此很適合「
快速」建立一套小型的系統.----我的看法
> 而且有許多不為人知的工具都是用 forth 寫成的,
CVIEW, CEDIT 這套免進中文而可以看/編中文的程式就是用 FORTH 寫成的.
> 但現在連這位朋友都離開資訊界不知去向.
Hmmm....這大概和 FORTH 沒關係...
> 唉! 這真的是心中放不下的怪問題.
別嘆氣. 為什麼是放不下的問題呢 ? 是不是因為你知道有這麼一種東西,
他的能力好像蠻強大的---因為有很多人這樣跟你說. 但是你經學習之後,
發現對你而言, 卻不如預期中的那樣, 但是別人又似乎用的非常順手, 用
得不亦樂乎. 所以就想: 這倒底是怎麼一回事 ?
個人的看法: 關於 Programming Language 是一種工具, 只要你用的順手
就好了. 不管是用 BASIC, PASCAL, C, C++...管它的. 在乎的是你的目的
為何 ? 當然囉, 為了增加產出力及 performance 還是必須看看目前相關
方面的最新資訊, 才能不落伍. 為此, 我並不對所不熟悉的事物感到恐慌.
因為分工越來越細, 尤其關於電子/電腦的領域更是這樣. 我注重的是: 如
何讓我的工作順利, 不要常常加班.
關於 FORTH: 以前在"自動化科技"雜誌的"偉大的軟體工作者"連載中曾看過
一位受訪者, 他曾用過這種語言, 他覺得使用 FORTH 的人有一種宗教式的
狂熱. 也就是到處宣傳並說服他人使用這種語言.
我, 也有這種感覺. 不過都是來自雜誌,書籍的描述. 因為我並不是非常熟
悉它, 所以沒有很深切地感受它的強大. 會想再深入學習, 是因為對於我的
工作, 它可能是一個不錯的工具.(前面所說,"快速建立一套小型系統")
對於其它, 我就不曉得了. 得等到我真正熟悉並且學習到其精神所在, 才能
搞清楚.
對了, 如果你想知道其他人對 FORTH 的看法和心得, 不妨到交大資科 BBS
(bbs.cis.nctu.edu.tw) Programming 版的精華區看看. williams 整理的蠻
不錯的, 去參考看看吧 !
願 不再悵然!!!
E-mail : yunnl...@csie.nctu.edu.tw ¢來子¢
不過這種公開信區,近年慢慢沒落,已經淪為廣告信溫床了
(BBS 程式多半有過濾機制,但直接在 google group 就會發現充滿廣告信)
以前 cnoize 前輩整理的 Forth 資源
http://groups.google.com/group/tw.bbs.comp.language/browse_thread/thread/2ffd56a04740df0e/