寫得很不錯的文章, 從許多方面探討 C 語言並非低階語言, 從近日很夯的 Spectre/Meltdown 開始一路談 CPU Architecture, Operating System, Compiler 到 C specification, 甚為精彩, 也提及許多語言與處理器來作論述參考, 言簡意賅, 然而能夠全然了解文中所述需要相當的實務與系統基礎
儘管文章內容精彩, 但對於結論個人並不是那麼地認同
1. 許多的問題其實不單是 C, 而是 serial logic 的處理, 不可否認撰寫 serial code 對人們來說是較為直覺的, 而 serial 在 arch, compiler 中處理的問題不單單僅限於 C, 甚至人們很需要高度簡化的 serial code 實作的方式(這也是 python 受歡迎的原因之一)
2. 文中以 GPU, UltraSPARC, ARM SVE 為例子想凸顯 C 的問題, 然而卻忽視了這類 SPMD/MultiThead/SIMD 處理器/單元對於 divergence 與例外處理 overhead 都極大, 對於應用本質需求上的問題甚至不若 C + CPU
3. 延續 2. 這類處理器/單元 多是 Domain-Specific 的, 多半是針對特定應用範圍所提出的 Instruction Set Architect + Programming Model, 而其實這些並不與 C 的問題衝突 (甚至有些問題是相關的)
4. 或許是作者的偏好, 內文提及多次 Erlang, 最終提到了 actor model, 許多 thread model 的確有助於 throughput, 然而考量 multiple core/thread 的語言並不是只有 Erlang 而已, 然而 throughput 也並不是唯一需要考慮的, 對於 HW/SW 相關工作尚需考量 debugging, integration, 對於 ecosystem 而言, 並不是一個語言一個 model 就可以帶過的
1. 許多的問題其實不單是 C, 而是 serial logic 的處理, 不可否認撰寫 serial code 對人們來說是較為直覺的, 而 serial 在 arch, compiler 中處理的問題不單單僅限於 C, 甚至人們很需要高度簡化的 serial code 實作的方式(這也是 python 受歡迎的原因之一)
2. 文中以 GPU, UltraSPARC, ARM SVE 為例子想凸顯 C 的問題, 然而卻忽視了這類 SPMD/MultiThead/SIMD 處理器/單元對於 divergence 與例外處理 overhead 都極大, 對於應用本質需求上的問題甚至不若 C + CPU
3. 延續 2. 這類處理器/單元 多是 Domain-Specific 的, 多半是針對特定應用範圍所提出的 Instruction Set Architect + Programming Model, 而其實這些並不與 C 的問題衝突 (甚至有些問題是相關的)
4. 或許是作者的偏好, 內文提及多次 Erlang, 最終提到了 actor model, 許多 thread model 的確有助於 throughput, 然而考量 multiple core/thread 的語言並不是只有 Erlang 而已, 然而 throughput 也並不是唯一需要考慮的, 對於 HW/SW 相關工作尚需考量 debugging, integration, 對於 ecosystem 而言, 並不是一個語言一個 model 就可以帶過的
沒有留言:
張貼留言