1 ポイント 投稿者 jsunam 4 시간 전 | まだコメントはありません。 | WhatsAppで共有

GWEBは、Go言語のためのリテラルプログラミング(Literate Programming)システムです。ドナルド・クヌース(Donald Knuth)のCWEB構造を緊密にモデル化して開発されました。
開発者は、1つの.wソースファイルにTeX文書(説明)とGoコードを並行して記述します。 このファイルは、機械と人間のための2種類の成果物へ変換されます。

中核ツールと機能

GWEBシステムは、大きく2つの中核コマンドで動作します。

  • gtangle: 文書の説明を除き、Goコードのセクションだけを集めてコンパイル可能な.goファイルを生成します。出力時に自動でgofmtスタイルに整形されます。
  • gweave: 人が読みやすい、美しく組版された文書(.tex ➡️ PDF)を生成します。予約語は太字、識別子はイタリックで表現され、相互参照インデックスが自動生成されます。

主な特徴と利点

  • 直感的なフォーマット: //lineディレクティブを標準でサポートしており、コンパイルエラーやパニック発生時に.goファイルではなく元の.wファイルの行位置を正確に案内します。
  • セルフホスティングシステム: GWEB自体もリテラルプログラミング方式で開発されています。lit/フォルダ内の.wファイル群がGWEBの実際のソース原本です。
  • エディタ対応: VS Code、Vim、Emacsユーザー向けのシンタックスハイライト設定機能も提供します。

GWEBを使うことで、複雑なGoプロジェクトの設計意図やアルゴリズムを、1冊の本を書くように優雅に記録し管理できます。

まだコメントはありません。

まだコメントはありません。