Re: 結構化指令的底層塑造法

看板Programming作者時間14年前 (2010/12/15 02:01), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #1D1x3YUj (Programming)
文章代碼(AID): #1D1x3YUj (Programming)