コンパイラを作成したいですか?そのためには、以下の 2 つの研究論文(2008 年)を読み込むだけで十分です。

2026/04/15 18:41

コンパイラを作成したいですか?そのためには、以下の 2 つの研究論文(2008 年)を読み込むだけで十分です。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

このテキストは、コンパイラ構築が過度に困難と受け止められがちであることを指摘しており、その理由として正規表現を状態機械に変換するなど広範で複雑な話題をカバーする標準的な参考文献が存在することを挙げています。ジャック・クレンショーのシリーズ「Let's Build a Compiler!」(1988 年より開始)は、この神話に反対し、一年生向けのチュートリアルを提供しています。これらのチュートリアルでは、単一パスかつ解析とコード生成が一体化されたコンパイラを主題としており、もとは Turbo Pascal で記述されていましたが、現代的なバージョンは C で存在し、マルセル・ヘンドリックスは Forth への翻訳を作成しています。クレンショーのシリーズの限界としては、抽象構文樹(AST)といった内部表現が含まれていないことが挙げられますが、AST の操作についてはパスクアルよりも Python、Ruby、Erlang、Haskell、Lisp などの言語の方が容易です。他方、Sarkar、Waddell、Dybvig によって著された論文「A Nanopass Framework for Compiler Education」は、内部表現に対する多数の小さな独立した変換からなるコンパイラを提案しており、これは動的型付け Scheme で実装されています。著者たちは、1〜2 つのコンパイラを作成した後、学習者はやがて「ドラゴンブック」といった上級テキストを検討したり、それらが必要ないと判断したりする可能性があると考えます。2008 年 6 月 29 日に作成されたこのコンテンツには、コーディングパフォーマンスに関する投稿やレトロゲームに関する投稿へのリンクも含まれています。このような全体アプローチは、言語ツールチェーン作業への参入障壁を下げる一方で、初心者を早期の複雑さに怯えさせることなく進歩を促します。

本文

プログラミングのこと一无も知ない状態で学習を始めたいと仮定してみましょう。Amazon.com で目にしたのは、Knuth 著の力強く勧められる一連の本、「Computer Programming の芸術」です。そう、このまま購入してしまうでしょう。さて、ではその選択が悪かっただけでなく、全てのプログラミング関連書籍が同様のレベルで記述されていると想像してみてください。それが、コンパイラに関する本の現状です。悪い本とは限りませんが、範囲が広すぎ、登場する情報の量が多くすぎてどこから手を付け始めればよいのか分からなくなることがあります。一部の本書は他よりも優れたものもありますが、それでもなお「正規表現を実行可能な状態機械に変換する」や「異なる種類の文法」などを扱った厚い章が続きます。それらを読み終え、知識は確かに広がりましょう。しかし実際にはまだ動作するコンパイラの作成には至っていないのです。この不透明さから、「コンパイラは作るのに難しい」という神話が生み出されてしまいました。

その神話を打ち破るのに最適な手掛かりが、Jack Crenshaw のシリーズ『Let's Build a Compiler!』(1988 年から開始)です。これは技術ライティングの珠玉の一つで、本来複雑に見えるトピックさえも、一年生のプログラミング授業にふさわしい内容へと落とし込んでいるものです。著者は Turbo Pascal 類のコンパイラに焦点を当てており、単一パス型で、構文解析とコード生成が組み合わされ、生成されたコードに対しては極めて基本的な最適化のみが施されています。元のチュートリアルでは実装言語として Pascal が用いられていましたが、C バージョンも存在します。本当に冒険心が旺盛な方なら、Marcel Hendrix が行った Forth への翻訳もあります(Forth は対話型言語であり、C や Pascal のソースより実験したり理解しやすく便利です)。

しかしながら、Crenshaw のシリーズにも顕著な欠点があります。それは「プログラムの内部表現」そのものを扱っていないことです。つまり、抽象構文樹(AST)はありません。柔軟性を捨てることを許せばこのステップを迂回することも可能ですが、チュートリアルにそれが含まれていない主な理由は、Pascal で木構造を操作することが、著者が提示する残りのコードのシンプルさと調和していないからです。より高层の言語——Python、Ruby、Erlang、Haskell、Lisp——を用いている場合、この懸念はなくなります。データの木構造表現を作成・操作するのは極めて容易であり、まさにこれが Lisp、Erlang、Haskell の設計意図です。

ここから私が紹介したいのが、Sarkar、Waddell、Dybvig による『A Nanopass Framework for Compiler Education』[PDF] です。この論文の詳細ほど重要なのは一般概念であって、コンパイラとは単に「プログラムの内部表現への一連の変換」に過ぎない、ということです。著者は、数十乃至数百のコンパイラパスを採用し、それぞれを可能な限り単純にと提案しています。変換を組み合わせるのではなく、個別に保ちます。タイトルに言及されるフレームワークは、各パスの入力と出力を指定する方法です。コードは Scheme(動的型付け言語)で記述されており、データは実行時 validated されます。

コンパイラを二つほど作成したのち、もし可能なら「龍の本(Dragon Book)」というに負けない名作またはその代替品を購入してよいでしょう。あるいはするかもしれないし、あるいは根本的に必要としないかもしれません。

permalink
2008 年 6 月 29 日
前へ
文字チェック機能がかつてだったソフトウェア工学の偉業について
パフォーマンスとしてのコーディング
特別ケースを恐れないでください
純粋な関数型によるレトロゲーム、第 4 回
純粋な関数型によるレトロゲーム、第 3 回

同じ日のほかのニュース

一覧に戻る →

2026/04/15 3:08

現在、サイバーセキュリティ分野において「証明作業」のような性質を帯びているようです。

## Japanese Translation: Anthropic の Mythos は、重要なソフトウェアメーカーがその能力に対してシステムを強化するまで非公開に保たれた高度な AI モデルであり、「低温くじ(low temperature lottery)」機構を通じてモデルが複雑な企業ネットワーク攻撃を実行できることを示している。この機構では、クリプトカレンシーのプルーフ・オブ・ワークのように、高額なトークン予算によってまれな成功が生じる。AI セキュリティ研究所(AISI)は、Mythos が 10 の試みのうち 3 でシミュレーションされた 32 ステップの企業ネットワーク攻撃を完了したことを確認したが、同様の条件下では Opus 4.6 と GPT-5.4 は失敗した。このタスクは「ラスト・ワンの」シミュレーションとして知られ、人間の完了には約 20 時間が必要と推定されている。特に注目すべきは、Mythos のパフォーマンスは、ランごとのトークン予算を 1 億トークンまで増加させた場合でも低下しなかったことだ。これは、1 つの試行あたり 12,500 ドル、完全な 10 回のラン基準テストスイート全体では 125,000 ドルのコストに対応している。この発見は、まれなセキュリティ監査から、市場価格で取引されるエクスプロイト価値に駆動される継続的なプロセスへの重要な移行を浮き彫りにしている。オープンソースソフトウェアは依然として重要であり、広く使用されているパッケージをクラッキングする方がワンオフの実装よりも攻撃者に高い投資対効果をもたらすためである。したがって、開発者は、専用ハードニングフェーズと常にレビューを行うことを含む新しい 3 フェージサイクルを採用することが推奨される。潜在的には Anthropic の新製品であるコードレビュー製品の活用も可能であり、その価格は 1 つのレビューあたり 15〜20 ドルである。企業は今や、資金が尽きるまで自律的なエクスプロイト特定を制限するトークン予算に対して大規模なリソースを割り当てるという現実と直面している。これとは対照的に、以前はまれで不整合だった慣行は存在しなかった。

2026/04/16 7:27

ターミナル用のページャーを作成しました。

## Japanese Translation: 著者は、ターミナルユーザーインターフェース(TUI)構築の中核エンジンとなる再利用可能な Go のビューポートコンポーネントを開発した。このモジュール化されたシステムは、Kubernetes ログを表示するための **kl** や、Nomad を表示するための **wander**、および `$PAGER` 環境変数を尊重して複数ページの内容を処理するdaily utility **lore**といったツールを稼働させている。アーキテクチャは、リサイズ、スクロール、検索(ショートカット `/`、`r`、`i` に正規表現対応付き)、水平方向のパニング、アイテム選択を含む必須機能をサポートしている。システムは、文字の折り返しおよびセル幅の計算(バイトをグリフに正確にマッピング)を行う `Item` インターフェース、表示向けの `Viewport`、検索機能向けの `FilterableViewport` の 3 つの主要モジュールを通じて、複数行および動的コンテンツを管理する。`MultiItem`のような高度な変種は、行番号などの動的プレフィックスをサポートしており、実装では特殊文字および絵文字の堅牢な描画が保証されている。開発者は、これらのユーティリティをテストまたは実行するために Go または Docker を使用でき、堅牢なコマンドラインアプリケーションの作成を容易にしている。今後の作業には、**libghostty**との統合およびエコシステムのさらなる改善が焦点となる。

2026/04/16 6:21

Excel 向けの ChatGPT

## Japanese Translation: Microsoft は、形式を整えたスプレッドシートや数式を用いた作成・更新を、ゼロから作業を開始する代わりに自然言語で行えるようにするための ChatGPT for Excel のベータ版を発売しました。このアドインは、ユーザーにデータの質問への明確な要約、タブ間での理解とデバッグ、パターン発見、そしてデータを実行可能な洞察への変換などを可能にし、かつ自らの行動を説明し、答えを特定のセルに関連付け、形式を整え、変更を行う前に許可を求めることができます。 このツールは ChatGPT Business、Enterprise、Edu、Teachers および K-12 ユーザー向けに世界中で提供されており、EU 外のプロとプラスユーザーにも利用可能です。インストールはホームからアドインを検索して「ChatGPT」を探し、Excel リボンに追加することで行うことができ、有効化には OpenAI アカウントを使用して ChatGPT Plus、Pro、Business、または Enterprise プランを持つ必要があります。 主要なユースケースとしては、アンケート分析、割引キャッシュフローモデル、ビジネス計画提案、財務諸表の数秒での分析などが挙げられます。将来のアップデートでは一般公開範囲の拡大、数理論理の改善、Slack、GitHub、Google Drive などの外部プラットフォームとのより深い連携が予定されています。この進化は、Excel 内での完全に対話的なデータ操作への重要なステップとなります。

コンパイラを作成したいですか?そのためには、以下の 2 つの研究論文(2008 年)を読み込むだけで十分です。 | そっか~ニュース