1 ポイント 投稿者 GN⁺ 2023-10-17 | 1件のコメント | WhatsAppで共有
  • 一般的な通説に反して、Cは低水準言語ではないと主張する記事
  • 著者のDavid Chisnallは、MeltdownとSpectreの脆弱性は、アクセス検査を越えて命令を実行するプロセッサの機能に起因すると示唆しており、この機能はCプログラマに自分たちが低水準言語でプログラミングしていると信じさせるために追加されたものだと述べる。
  • Chisnallは、ある言語が「メタルに近い」というのは、その対象プラットフォームが公開する抽象化に容易に対応づけられる抽象機械を提供していなければならないことを意味すると主張し、Cではそれが実現されていないと論じる。
  • 著者は、SpectreとMeltdownの脆弱性の根本原因は、プロセッサ設計者がPDP-11のような抽象機械を公開する高速プロセッサを作ろうとしたことにあると示唆しており、その結果、Cプログラマは自分たちの言語が基盤となるハードウェアに近いと信じ続けることができたとする。
  • Chisnallは、Cコードを高速に実行させるには、複雑なコンパイラ変換と十分に賢いコンパイラを作るために数千人年が必要だと主張する。
  • 著者は、低水準言語の中核的な性質とは、プログラマがその言語の抽象機械が基盤となる物理機械にどのように対応づけられるかを容易に理解できることであると提案し、Cではそれが当てはまらないと論じる。
  • Chisnallは、Cコードを高速化しようとする試みをやめ、その代わりに高速プロセッサ上でプログラミングモデルがどのように見えるべきかを考える時期かもしれないと結論づける。純粋に速度のために設計されたプロセッサは、おそらく多数のスレッドをサポートし、広いベクターユニットを備え、はるかに単純なメモリモデルを持つだろうと述べている。

1件のコメント

 
GN⁺ 2023-10-17
Hacker Newsの意見
  • 手動メモリ管理とアロケータへの明示的な呼び出しがあるため、Cは低水準言語ではないという記事の主張。
  • 一部のコメント投稿者は、Cはそれを理解し専門的に使う人々にとっては実際に低水準言語だと主張しています。
  • CPU命令セットはCPUの実装をより多く露出させるべきだという筆者の主張について、過去の失敗した試みを引き合いに出して異論があります。
  • 低水準から高水準までの概念はスペクトラムのように見え、Cはメモリやスレッド管理のような機械のプリミティブを露出する言語の中では、より低い側に位置しています。
  • 並列プログラミングは難しくないという記事の主張は、一部のコメント投稿者には誤解を招くと見なされています。
  • コンピュータがPDP-11の構造に似ていないという記事の前提はこれまでになく正確に見えますが、非Cプロセッサを想像するという結論はそれほど強くは見えません。
  • 一部のコメント投稿者は、コンピュータが高速なPDP-11ではないという記事の主張は正しいが、これがCと関係しているというのは誤りだと主張します。
  • structのパディングとsigned overflowが未定義動作であるという特徴のため、Cは低水準言語ではないという記事の主張は建設的に見えます。
  • Cの支配力のためにCPU設計者が自然にCを実行できるものを作らなければならなかったという主張は筋が通っているように見えますが、これが最初の主張や記事のタイトルとどう関係するのかは不明です。
  • 現代CPUの洗練された技術によってCがもはや「低水準」言語ではないのなら、これはアセンブリ言語にも同様に当てはまります。
  • この記事は一部のコメント投稿者にVLIWを思い起こさせます。そこでは1つのVLIW命令が、並列に実行できる複数の独立した命令を含むことがあります。