Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

[インデックス 12470] ファイルの概要

このコミットは、Go言語の公式FAQドキュメント doc/go_faq.html から、6g コンパイラに関する質問とその回答を削除するものです。これは、Goコンパイラの進化に伴い、6g のような古い命名規則に関する情報が不要になったことを示しています。

コミット

commit 40807282acad30201ae0979db24dca01e684e694
Author: Russ Cox <rsc@golang.org>
Date:   Wed Mar 7 11:37:56 2012 -0500

    doc: delete faq question about 6g
    
    Fixes #3230.
    
    R=golang-dev, gri
    CC=golang-dev
    https://golang.org/cl/5753071

GitHub上でのコミットページへのリンク

https://github.com/golang/go/commit/40807282acad30201ae0979db24dca01e684e694

元コミット内容

doc: delete faq question about 6g
    
Fixes #3230.
    
R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/5753071

変更の背景

この変更の背景には、Go言語のコンパイラおよびツールチェインの進化があります。初期のGoコンパイラは、Plan 9オペレーティングシステムのコンパイラツールチェインの影響を強く受けており、6g8g5g といった命名がされていました。これらはそれぞれ、amd64 (x86-64)、x86ARM アーキテクチャに対応するGoコンパイラを指し、数字はアーキテクチャ、g はGoを意味していました。

しかし、Go言語の開発が進むにつれて、コンパイラはC言語で書かれたものからGo言語自身で書かれたものへと移行し(Go 1.5以降のセルフホスト化)、ツールチェインの構造も変化しました。これにより、6g のような特定の命名規則に関するFAQは、もはやGoのユーザーにとって関連性が低くなり、混乱を招く可能性がありました。

コミットメッセージにある Fixes #3230 は、この変更がGitHubのIssue #3230を解決したことを示しています。このIssueは、おそらく 6g に関するFAQが時代遅れであるか、削除すべきであるという議論に関連していたと考えられます。ドキュメントを最新の状態に保ち、ユーザーがより関連性の高い情報にアクセスできるようにするために、このFAQエントリは削除されました。

前提知識の解説

Plan 9とGo言語の関連性

Go言語は、Googleで開発されましたが、その設計と初期のツールチェインは、ベル研究所で開発された分散オペレーティングシステムであるPlan 9 from Bell Labsの影響を強く受けています。Go言語の主要な設計者であるロブ・パイク(Rob Pike)とケン・トンプソン(Ken Thompson)は、Plan 9の開発にも深く関わっていました。

Plan 9のコンパイラツールチェインは、特定のアーキテクチャを数字で表し、言語を文字で表すという命名規則を持っていました。例えば、C言語のコンパイラは 6c (amd64向けCコンパイラ) や 8c (x86向けCコンパイラ) のように命名されていました。

初期Goコンパイラの命名規則 (6g, 8g, 5g)

Go言語の初期のコンパイラも、このPlan 9の命名規則を踏襲していました。

  • 6g: amd64 (または x86-64) アーキテクチャ向けのGoコンパイラ。6amd64 を、gGo を意味します。
  • 8g: x86 (32ビット) アーキテクチャ向けのGoコンパイラ。8x86 を、gGo を意味します。
  • 5g: ARM アーキテクチャ向けのGoコンパイラ。5ARM を、gGo を意味します。

これらのコンパイラは、Go言語の初期の発展において重要な役割を果たしました。当初はC言語で実装されていましたが、Go 1.5以降、コンパイラ自体がGo言語で書かれるようになり、これらの特定の命名はGoのユーザーにとって直接的な意味を持たなくなりました。

Go言語のFAQドキュメント

Go言語の公式ウェブサイトには、よくある質問(FAQ)のセクションがあり、Go言語に関する様々な疑問に答えています。このドキュメントは、Go言語の進化に合わせて定期的に更新され、古い情報や関連性の低い情報は削除されることがあります。

技術的詳細

このコミットは、doc/go_faq.html ファイルから特定のHTMLセクションを削除する、純粋なドキュメントの変更です。技術的な観点からは、Go言語のコンパイラやランタイムの動作に直接的な影響を与えるものではありません。しかし、Goプロジェクトのドキュメント管理と情報提供のポリシーを反映しています。

削除されたセクションは、6g というコンパイラ名の由来について説明していました。このFAQエントリが削除されたことは、以下の技術的・運用的な意味合いを持ちます。

  1. ツールチェインの進化と抽象化: Go言語のツールチェインは、ユーザーが特定のコンパイラ名(例: 6g)を意識することなく、go buildgo run といったコマンドを通じて透過的に利用できるよう進化しました。これにより、内部的なコンパイラの命名規則に関する知識は、一般的なGo開発者にとって不要になりました。
  2. ドキュメントの簡素化と最新化: 古い情報や、もはや主流ではない技術的詳細に関する説明を削除することで、ドキュメントはより簡潔になり、現在のGoのベストプラクティスやツールチェインに焦点を当てることができます。これにより、新規ユーザーの学習曲線が改善され、既存ユーザーも最新の情報にアクセスしやすくなります。
  3. 歴史的背景の整理: 6g のような命名はGoの初期の歴史を物語るものですが、FAQは「よくある質問」に答えるものであり、歴史の解説書ではありません。歴史的な情報は、より適切な場所(例: Goの歴史に関するドキュメントやブログ記事)に移動されるか、あるいは時間の経過とともにその重要性が薄れると判断された可能性があります。

この変更は、Goプロジェクトがドキュメントの品質とユーザーエクスペリエンスを重視していることを示しています。

コアとなるコードの変更箇所

doc/go_faq.html ファイルから以下のHTMLセクションが削除されました。

--- a/doc/go_faq.html
+++ b/doc/go_faq.html
@@ -76,20 +76,6 @@ The logo and mascot are covered by the
 license.
 </p>
 
-<h3 id="What_kind_of_a_name_is_6g">\n-What kind of a name is 6g?</h3>\n-\n-<p>\n-The <code>6g</code> (and <code>8g</code> and <code>5g</code>) compiler is named in the\n-tradition of the Plan 9 C compilers, described in\n-<a href="http://plan9.bell-labs.com/sys/doc/compiler.html">\n-http://plan9.bell-labs.com/sys/doc/compiler.html</a>\n-(see the table in section 2).\n-\n-<code>6</code> is the architecture letter for amd64 (or x86-64, if you prefer), while\n-<code>g</code> stands for Go.\n-</p>\n-\n <h3 id="history">\n What is the history of the project?</h3>
 <p>

具体的には、以下のHTMLコードブロックが削除されています。

<h3 id="What_kind_of_a_name_is_6g">
What kind of a name is 6g?</h3>

<p>
The <code>6g</code> (and <code>8g</code> and <code>5g</code>) compiler is named in the
tradition of the Plan 9 C compilers, described in
<a href="http://plan9.bell-labs.com/sys/doc/compiler.html">
http://plan9.bell-labs.com/sys/doc/compiler.html</a>
(see the table in section 2).

<code>6</code> is the architecture letter for amd64 (or x86-64, if you prefer), while
<code>g</code> stands for Go.
</p>

コアとなるコードの解説

この変更は、doc/go_faq.html 内の特定の <h3> ヘッダーとそれに続く <p> パラグラフを削除するものです。削除された内容は、6g というコンパイラ名がどのようにして付けられたか、そしてそれがPlan 9のコンパイラ命名規則に由来すること、さらに 6amd64 を、gGo を意味するという説明でした。

このコードの削除は、Go言語のツールチェインが進化し、ユーザーが直接 6g のようなコンパイラ名を意識する必要がなくなったため、このFAQエントリがもはや関連性が低いと判断されたことを意味します。ドキュメントの保守と簡素化の一環として行われた、クリーンアップ作業と見なすことができます。

関連リンク

参考にした情報源リンク