HeadlinesBriefing HeadlinesBriefing.com

C言語における未定義動作の削減

Hacker News •
×

私たちはマーケティングが苦手です——それを認めましょう。私たちの強みは、開発者、管理者、フリーソフトウェア支持者がLinuxの世界で何が起きているかを知るために依存しているような記事を書くことです。今日すぐに購読して、私たちがそれを続けられるよう支援し、マーケティングが得意になる必要がなくなるよう助けてください。

生物医学工学の教授であるMartin Uecker氏は、おそらくKernel Recipesの典型的な発表者のプロフィールには当てはまらないでしょう。しかし、彼は長年のLinuxユーザーであり、磁気共鳴画像法(MRI)スキャナを制御するためのフリーソフトウェアに取り組んでいます。彼はCプログラミング言語、Cにおける未定義動作という具体的な問題、そしてそれが最終的にメモリセーフな言語になる可能性があるかどうかについて話すためにカンファレンスに参加しました。

2026年になぜCにこだわるのでしょうか?彼は、まだ素晴らしい言語だと述べました。Cは移植可能で、長期的に安定しており、高速なコンパイルを提供し、生成されるバイナリコードも高速です。「あなたが目にするものが得られるもの」——Cコードを見て、コンピュータが実際に何をするのかの大まかなイメージを持つのは簡単です。その言語で作業するための多くのツールがあり、必要に応じてCは後ろに下がります。

Cには長い歴史があり、それが今日私たちが目にする言語に影響を与えていると彼は言いました。C89標準は、符号付き絶対値または1の補数整数表現、セグメント化メモリ、奇妙なポインタ表現、そして型に対する驚くべきサイズを含む、幅広いハードウェアの多様性に対処する必要がありました。例えば、いくつかのHoneywellマシンは9ビットバイトを持っていました。これは、移植可能なコードの記述を可能にする標準を書くという作業を大幅に複雑にしました。採用されたアプローチは、言語のセマンティクスを抽象機械の用語で定義することでした。すべての操作は、その抽象機械上で実行されたかのように実行されなければなりません。その抽象機械は実際のハードウェアと正確に一致しない場合があります。プログラムの観測可能な動作は、抽象機械が実行したものでなければなりません。

出典: Hacker News · 要約:HeadlinesBriefing