スペース対タブ:GoogleのGolangによって再燃した20年の議論

オタクは過去16年間、側面を選 しかし、今、悪名高い些細な炎の戦争は、おそらくHBOのシリコンバレーの最近のエピソードの対話に触発されたGoogleの研究によって新たな隆起を与えられ

“真実は言われる、私はタブのためのわずかな好みを持っています。 しかし、それは私が肛門だからであり、私は精度を好むからです。”

“まあ、ここで戦いを選ぶのではなく、あなたが本当に精度を気にするなら、スペースを使用しないでしょうか? しかし、それがコンパイラを通過すると、それは同じことですよね…?”

“すべて同じ場合は、タブだけを使用しないのはなぜですか?”

“それは他の人のコンピュータ上で異なって見える可能性があるためです。”

“タブは、小さなファイルサイズを作成します,すべての権利…? つまり、Emacs上でVimを使用しないのはなぜですか?”

“私はEmacs上でVimを使用しています。”

“ああ、神は私たちを助けて!”

今年最後に—労働者の日の週末の直前に—Googleの開発者の支持者は、重量を量ることにしました。 “私たちは14のプログラミング言語の中で十億のファイルを解析して、どちらが一番上にあるかを決定します。”彼らはトップ400,000GitHubリポジトリからファイルをクランチし、トップ言語で書かれたコードのファイルのみを見て、彼らのチャートは、スペースがすべての言語 GoとCを除いて。

“確認された、Goは未来の言語です”とRedditのあるコメンターは冗談を言った。

“ソースコードも自動的にフォーマットされます”と別のプログラマは反論しました。 “私はスペースを使用し、それはタブを吐き出す!”

そしてTwitterで、ある開発者はエッセイが別の論争を引き起こしただけだと冗談を言った。 “新しい議論は今、”地獄はGoと何が間違っているのですか?'”

少なくとも一人のカナダのエンジニアは、Googleが質問を解決するために入れた努力を称賛しました。

https://t.co/wuMz1gLwXT それはあなたがam引数を解決する方法です:データ。

—Ian Fosbery(@MisterZia)September8, 2016

しかし、最終的には、Googleは開発者の世界に平和をもたらすことができませんでした。

明確にするために:インデントのためにタブの代わりにスペースを使用しているすべてのものは、取り返しのつかないほど間違っています。
私が好きな方法であなたのコードを見てみましょう。

—Iñaki Baz Castillo(@ibc_tw)September14, 2016

誰かがCastilloをGoogleの分析に言及したとき、彼は単に「私はそれを知っていた。 そして、はい、彼らはすべて100%間違っています。”

“この狂気は何ですか”とクラウドエンジニアのエド-モーガンはツイートした。

“誰もが知っている狂気のタブが良いです!”ロンドンに拠点を置くNetAppのメンテナは答えました。

「これは嫌だ」と英国のあるフリーランスのwebデザイナーがツイートした

そしてそれはそこで終わらなかった。 Googleの投稿はすぐにウイルスになり、Redditに1,620のコメントを描き、Gizmodo、Slashdot、Hacker Newsにも注目しました。 “タブ対スペースの議論を聞いて、両側が持っているすべての正当な点を考慮した20年以上の後、多くは次の観察を行い、それが最も私と共鳴するものだ”とHacker Newsにあるプログラマは書いている。

“理想的な完璧な世界では、プログラマの_all_と_all_テキストエディタツールは、インデント用に特別にタブを使用し、配置用に特別にスペースを使用します。 しかし、私たちは完全に調整された世界に住んでいないので、spacesは最も忠実さを維持します—プログラマが2,4,6,8の幅からインデントを即座にカスタマ”

オタクは本当に20年以上にわたってこれについて議論してきましたか? それのように見えます。 初期のNetscape Navigatorブラウザのコーダーの1人であるJamie Zawinskiによって、すでに「果てしない議論」として記述されていました—2000年に戻ってきました。 彼の投稿では、タブをさまざまな幅に変更するために2つのLinuxテキストエディタ(EmacsとVi)を設定する方法を説明しました。 (”だから出て行って、untabify!”)

陽気に私たちは一緒にロールバックし、2004年に、Microsoft Developer Networkのポストは、非常に同じ問題を取り上げ、一部の人々はスペースとタブを組み合わせていることを指摘し、彼らが実際に第四の位置を賭けてきたと主張している:コーディングツールは、合意されたルールのセットに従ってコードを保存しながら、各ユーザーの好みのビューを表示するように設定可能でなければならない。 しかし、誰もがそうオープンマインドだったわけではありませんでした。 2009年、Stack Overflowの共同設立者の一人であるJeff Atwoodは、Death to The Space Infidelsというブログ記事を書いた。. 彼は1984年の著書”コード-コンプリート”を引用して、彼の立場をロビーにしている。

“私たちの研究は、プログラミング計画とプログラミング談話のルールの知識がプログラムの理解に大きな影響を与える可能性があるという主張を支持している…プログラムが特定のスタイルで書かれるべきであることは単なる美学の問題ではない…プログラマは、他のプログラマがこれらの談話ルールに従うことを強い期待している。 ルールに違反した場合、プログラマが時間の経過とともに構築した期待によって与えられるユーティリティは効果的に無効になります。「

とAtwoodは、より多くの実験(1970年代初頭のもの)を引用しており、情報が意味のある順序で配置されている場合には、情報がより良好に保持されるこ 「そうです」とAtwoodは結論づけています、「それが聞こえるかもしれないように不条理で、空白文字やコードレイアウトの他の一見些細な問題との戦いは、実際には正当化されています。 当然の理由の中で—公然と、公正かつコンセンサス構築の方法で、そして道に沿って顔にあなたのチームメイトを刺すことなく行われたとき。”

四年後、質問はスタックオーバーフローに関する議論の中で、オタク国家の中心に現れました。

“スペース”は、一つの引数を読み取ります。 「タブは環境によって異なる列数になる可能性がありますが、スペースは常に1つの列です。”

“タブ、”カウンタ引数を読み取ります。 “彼らは特にインデントのためのものの文字です。 これにより、インデントサイズの異なる設定を持つ開発者は、コードを変更せずにコードの外観を変更することができます”

そうそこに!

シリコンバレー-スペース対タブ

しかし、ページのタブ部分は最終的に融和的なメモを打つ。 “もちろん、一貫性はどちらかよりも重要であり、優れたIDEはその違いを無視できるものにします。”しかし、なぜ良い引数を台無しに? 「そうは言っても、このスレッドのポイントは聖戦であることだから…」

そしてジェフ・アトウッド自身も同意しているようだ—ポイントに。 2009年、彼は”どのコーディングスタイルを選ぶかは実際には問題ではありません。 重要なのは、あなたとあなたのチームの他の誰もが、それらの規則に固執し、一貫して使用することです。”しかし、彼はもう一つの文を追加することに抵抗できませんでした。

“そうは言っても、バカだけがタブを使ってコードをフォーマットするだろう。”

  • スタンフォード大学の科学者は、脳の信号を読むことによって手なしで入力する方法を構築します。
  • NASAは火星からのいくつかの壮大な画像を共有しています。
  • アメリカは、最初の連邦最高情報セキュリティ責任者を任命します。
  • アマゾンはあなたの近所のショッピングモールに侵入したい-そしてあなたの家!
  • Raspberry Piは1000万回目の販売を祝います。
  • ジョン-ル-カレはついに彼自身の波乱の人生の物語を出版する。
  • ユヴァル-ノア-ハラリの”人類の簡単な歴史”に続いて、明日の投機的な歴史が続いた。
  • ニコラス-カーは私たちが作った世界を見て、”ユートピアは不気味です。”
    彼のブログで、CarrはFacebookにメディア企業の基準を適用することはできますか?
  • スティーブ—ジョブズの”勇気”のスピーチを覚えている-一部のRedditユーザーは、新しいiPhoneのワイヤレス専用ヘッドフォンの設定を嘲笑するように。