精華區beta Programming 關於我們 聯絡資訊
> ==>發信人: gsj.bbs@bbs.nchu.edu.tw (國王的新衣), 信區: programming > ※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言: > > 1."要與硬體對稱", 這句話是唬嚨不懂硬體的, 而且語焉不詳. 多數使用高階 > > 2.在何處發生了那種的不對稱 ? > Paradigm 對稱 > 循序化的硬體對應循序化的軟體 > 不同的Paradigm相互對應,就要經過一個轉換的過程 > 既不經濟也難維護 ====== 1. 電腦能接受 interrupt 而多工執行, 她是循序還是併行 ? 2. 多 cpu 的電腦是平行還是循序 ? 現在的任何一部 X86 PC 能做複製搬移資料的單元都不是循序的, 硬體也都不是循序的. 但現在的 OOP 除了 Java 都不支援同步與併行處理, C++ 與 C 也 都不是併行處理的程式語言. 3. 現代的高階語言程式都建立在 OS 所提供的 time-invariant 的管 制基礎上執行程式, 所以用雙倍速的 CPU 跑同一程式, 或者與無關 的其他程式一起跑, 其結果是相同的. 4. 這種與時間無關的確定性特點不叫 循序化. 電腦硬體的本質是由其架構與功能規格所決定的特性(property), 不是流 行的時尚或典範(paradigm). 八股文或白話文可以是作文的不同範本, 但 看文字, 起想像, 做反應的是人. 人的特性本質不因八股或白話的外觀框 架文範而有所不同. 這個 "對稱" 的質疑有明顯的 牛頭對不上馬嘴 的現象. > > 多 driver 能用高階語言寫出來是一點都不稀奇. > > 那麼, 為甚麼 UNIX OS 沒有全部用 C 寫出來 ? > 我在前面的文章就已經說過 > 組合語言之於C語言,它的強項在於,它可讓程式設計者 > 清楚的掌握程式碼或資料在記憶體中確切的Layout位置、尺寸大小 > C 語言則不行 C 語言程式編譯時, 絕對是能列出組語的程式與機器碼出來看的, 而且 也有其一定的規則性, 相對於某個資料或程式的位置, 其相對位置都是 能估算的, 若說要清楚的掌握, 其關鍵都不是程式語言本身, 連組語也 是如此, 這是由 Linker 與 loader 決定的. C 的 pointer 就是用來處理資料的相對位置的, 資料型態宣告的 作用之一就是明示資料的尺寸大小. 就這個位置的要求言, 只要是相對 的, 很多高階語言也都做得到, 而決定絕對位置的是 loader 不是語言. 高階語言提供的程式應該是要儘量跟編譯器的版本無關, 如果是要計算 相對位置, 那組語的相對位置是程設員可以決定的, 同樣一段相同動作 的碼也是程設員決定的, 不因組語版本而變. 但高階語言則不然, 一段 相同的動作可能被不同版本的不同碼段替換掉了. 這是編譯器實作時的 版本問題. 但這也不會是 UNIX 沒有全部用 C 寫的原因. 組合語言只有一個強項, 就是她可以任意組合出任何高階語言都編不出 來的指令組合. 這種組合包含很巧妙與一無是處的混亂組合. > 例如硬碟中的Boot loader (Stag 1)就有大小要為512 Byte, > 特定位置要有特定資料的需求 Boot Sector 的內容是有特定標幟要標明這是一段可執行的 boot program , 但並非 C 語言程式就造不出來. -- ◎ Origin: 中央松濤站□bbs.csie.ncu.edu.tw From: 140.115.6.234