Re: 結構化指令的底層塑造法
※ 引述《MOONRAKER.bbs@ptt.cc (㊣遂去,不復與言)》之銘言:
> 底層只有gogo好用,我還是第一次聽說這種事情要在研究compiler之後才能「體會」
> 所有結構化語言的重覆架構當然都可以用goto變出來
> 結構化語言的repetition structure不過是包裝基本流程控制
> (flow control,好久沒用到這個詞兒了)的wrapper
> 這種事有一點組合語言觀念就知道了,甚至不用真的學過
> 也不用有組合語言觀念,寫過有行號的BASIC
> 或真正的FORTRAN 66/77 (without compiler-specific extensions)就知道
>
「我還是第一次聽說這種事情要在研究compiler之後才能『體會』」
這個原因是因為波灣戰爭、非洲饑民都是很遙遠的事, 只有它發生在你身上,
你才能體會「切身之痛」.
編譯器寫作是一種精神科上的雙重人格世界. 在它之上, 你有新的語法好用.
在它之下, 你只能拼湊舊語法, 以便完成新的任務.
編譯器設計師必須要同時具有雙重人格. 並且在兩個世界中來回擺蕩.
當你要創造新的語法時, 你必須使用新的語法, 來寫應用程式, 測試看看好不
好用. 然而當你要編譯出執行碼時, 你立刻回到原始世界, 只能使用繁瑣的指令,
透過「人格不同」的指令特性來塑造出「未來的天堂」.
只有同時存活在兩個世界邊緣, 你才能有深刻的體會.
波灣戰爭是否愚蠢, 美國人是否要自大涉入. 這對我們來說只能是表面「知道
」的事. 但是當軍人人命是喪失在你家, 你的親朋好友是其中的犧牲者, 這時你才
會痛切的抗議到底美國人要不要涉入「不干美國事」的它國戰爭.
「知道」是一回事, 「體會」又是另一回事. 通常有99% 的人會將「知道」當
成「體會」. 這是我現在沒辦法在這主題解釋的事.
想想一牆之隔的世界. 你家的廚房擁有最現代的電器化家具. 微波爐、烤箱,
前衛的現代化精美家俱等等.
然後牆後隔壁卻是原始的浴室世界. 你會在黃土當牆, 漏風看月亮的地方洗澡.
到處污七抹黑, 偶而蜈蚣還是蚱蜢飛蛾還會進來與你相伴!
沒有電燈與熱水, 連毛巾肥皂都沒有. 只有雜草棕櫚刷.
你看不見東西在哪, 只能點點油燈看看會不會比月亮強一點.
這樣的世界當你又回到光亮的現代化廚房時. 你就會出現心境上的差異. 到底
為什麼你要忍受這種「非人」的待遇?
只有你同時身處在兩個世界中做比較. 你才能實際確定你的選擇. 否則其它都
是講講而已.
編譯器之所以困難. 不只是因為技術演算法上的難度. 更在於你必須具有雙重
人格, 同時自由切換, 你才能在「舊」基礎上設計出新的「天堂」.
Tommy 99/12/15
附註:
要體會新的結構化指令有多方便. 你可以在新式的編譯器上用「舊」語法來寫
應用程式. 全部用Goto指令配上註標來完成所有的If/For/Select 結構.
很快的你就會發現「不堪其擾」! 不只程式變得複雜, 不易看懂. 連指令都會
不小心寫錯Goto到不知名的地方去. 這就是當初為何會產生結構化演進的原因之一.
新語法節省設計師去浪費生命. 你自己試試看就會清楚. 然而任何新的世界,
還是會有舊的基礎來支持的. 這是我寫這個主題的基本意義.
註二:
「教育」本來就只能教舊的東西. 而且, 現在的學生, 沒有多少是有這種背景的耶!
「寫過有行號的BASIC..」
「或真正的FORTRAN 66/77..」
謝謝您的指教.
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw>
◆ From: tommy @ 125-232-132-134.dynamic.hinet.net
推
12/15 02:32, , 1F
12/15 02:32, 1F
→
12/15 02:32, , 2F
12/15 02:32, 2F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章