> ==>發信人: 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