2018年7月19日 星期四

C 並不是一個低階語言

寫得很不錯的文章, 從許多方面探討 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 就可以帶過的

沒有留言:

在 ARM 平台上使用 Function Multi-Versioning (FMV) - 以使用 Android NDK 為例

Function Multi-Versioning (FMV) 過往的 CPU 發展歷程中, x86 平台由於因應各種應用需求的提出, 而陸陸續續加入了不同的指令集, 此外也可能因為針對市場做等級區隔, 支援的數量與種類也不等. 在 Linux 平台上這些 CPU 資訊可以透過...