80文字がコード幅の「標準」制限であるのはなぜですか?


572

80文字がコード幅の「標準」制限であるのはなぜですか?79、81、100ではなく80なのはなぜですか?この特定の値の起源は何ですか?



14
ああ!あなたが尋ねる前に一週間待っていませんでしたか?これはコンテスト受賞の質問であったかもしれませ
ヤニス

12
この質問に別の回答を追加することを考える前に、受け入れられた回答とマークブースの回答読んでください。これらは質問に包括的に答えます。パンチカードが最初に来ました。
ChrisF

4
なぜこの辺境のトリビアに139の賛成票があるのか​​は私にはわかりません。一方、フロントページの他のほぼすべての質問(良いか悪いか)には、投票数がはるかに少ない。私たちの集団投票基準はそんなに壊れていますか?:((この@fredleyあなたの批判ではなく、私たちのコミュニティの)
アンドレスF.

6
@AndresF。この投稿がうまくいった理由は、良いタイトルの後ろに、多くの人々が興味を持っているものだからです。スーパーコライダーのトップで一日を過ごし、ハッカーニュースなどにたどり着きました。それは些細なトリビアかもしれませんが、良いコンテンツです!
フレッドリー

回答:


734

この制限については、IBM パンチカードに感謝することができます-80列ありました。

IBMパンチカード


64
その後、初期のテレタイプ、およびその後のビデオ端末では、標準幅として80列(および132列)が使用されました。
LapTop006

262
質問は次のとおりです。なぜIBMパンチカードに80カラムがあるのですか?
ミスティックファクター

139
@FactorMystic-パンチカードのサイズは、1890年代の国勢調査を支援するためにホレリスが設計した1880年代後半の通貨のサイズに基づいていました。

56
1890年に、CTRは国勢調査データカードを運ぶために通貨キャリア(当時はドルが大きかった)を再利用したかったため、カードはそのサイズです。
アルビグラン

89
@AlBiglanなぜ通貨はそのサイズだったのですか?
フレッドリー

249

オデッド述べたように、この一般的なコーディング標準は、IBMの1928年の結果である80列パンチカードのフォーマット、多くのコーディング標準はバックプログラムは、一度にパンチカード、一枚のカード/行に書かれていた時に日付以降、さらには移行より広い画面に変更しても、コードが広くなるほどコードが読みにくくなるという事実は変わりませんでした。

パンチカードのウィキペディアページから:

文化的影響

  • 80列のパンチカード形式の遺産は、文字ベースの端末の設計では行ごとに80文字の表示が一般的な選択であったことです。2011年11月の時点で、Microsoft Windowsのコマンドプロンプトウィンドウの幅などの一部の文字インターフェイスのデフォルトは80列に設定されたままであり、FITSなどの一部のファイル形式は80文字のカードイメージを使用します。

問題は、1928年にHerman Hollerithが以前に24列と45列のカードを使用していたのに、なぜIBMが1928年に80列カードを選択したのかということです。

明確な答えは見つかりませんが、その選択は当時のタイプライターの1行あたりの典型的な文字数に基づいていたのではないかと思います。

私が見たほとんどの歴史的なタイプライタープラテン幅は約9インチで、これは用紙サイズを約8 "-8.5"幅に標準化することに対応しています(米国の標準用紙サイズが8½ "x 11である理由を参照)「?およびISO216 Aシリーズの紙規格の歴史

インチあたり10〜12文字の典型的なタイプライターピッチを追加すると、マージンのサイズに応じて、幅が72〜90文字のドキュメントが作成されます。

そのため、1行あたり80文字で、同じカードサイズを維持しながら、穴のピッチ(小さい長方形の穴と大きい円形の穴)と行の長さの間の適切な妥協点を表します。


ちなみに、どこでもコーディング標準で80文字の行幅を指定しているわけではありません。私が働いている場所では、132文字の制限があります。これは、従来の一般的なワイド ラインプリンターの幅、12ポイントの横長A4プリントアウト、およびパッケージエクスプローラーとアウトラインビューが考慮されます。

それでも、ファイルの3つのリビジョンを横にスクロールする(常に悪い)か、行を折り返す(コードの書式設定を破壊する)ことなく簡単に比較できる80文字幅のコードを好みます。80文字幅のコードでは、240文字幅の画面(1文字あたり8ピクセルで1920ピクセル)だけで、完全な3方向マージ(共通の祖先、ローカルブランチ、リモートブランチ)を1つの画面で快適に見ることができます。


2
別の憶測祭を始めないために、ホレリスのカードには、IBM 5081などの長方形ではなく、円形の穴がありました。 そして、IBMが後にカードに進出したSystem / 3形式には、3つの水平列の列に96個の円形の穴がありました。
ロスパターソン

9
大きな画面でも80文字を使い続けようとする十分な理由は、多くのプログラマーが常に全画面表示を維持するのではなく、小さな端末(またはIDE)ウィンドウを使用することを好むからです。
rkulla

4
@rkullaでは、何十年もの間、80文字の制限を課すべきでしょうか?短い識別子を持つCのような一部の言語では問題ありませんが、長い識別子を持つC#のような他の言語では苦痛になります。幸いなことに、私は今のところ132文字の制限を課していますが、以前は特にPythonで80に非常に悩まされていました
基本的な

5
@Basicには、80文字の行制限内で作業できない場合、識別子が過度に冗長であるか、1行でやりすぎているという議論があります。私たちの目と脳は本、新聞、列幅に制限のあるWebページ(このような)で何年も訓練されてきたので、ほとんどの人は非常に長い行よりも細い行よりも快適です。非常に長い行を理解します。
マークブース

5
@MarkBoothそれは少し宗教的な問題であるため、あまりドラッグしませんが、PEP8が長すぎるとフラグを立てるのは... `(8スペース)return HttpResponse(JsonLib()。encode(Ret) 、content_type = "application / json") `、そしてはい、複数行に分割できますが、さまざまなコントローラーに散らばっていて、80文字の「標準」を満たす以外は分割する価値はないようです。
基本的な

59

古い端末が(ほとんど)80x24文字のサイズだったからだと思います:80x24端末の時代に戻って...

編集:

80x24と80x25の形式は初期のI / O端末とパーソナルコンピューター(VT52-おかげでサンドマンに4)。

この制限は依然として有効であり、主に2つの理由で重要です。多くのLinuxディストリビューションが新しく生成されたターミナルウィンドウに割り当てるデフォルトのジオメトリは80x24であり、多くの人サイズ変更せずにそのまま使用します。さらに、カーネル、リアルタイム、および組み込みプログラマは、ウィンドウマネージャを使用せずに「ヘッドレス」環境で作業することがよくあります。繰り返しますが、デフォルトの画面解像度は多くの場合80x24(または80x25)であり、これらの状況では、このデフォルト設定を変更することさえ難しい場合があります。

したがって、カーネル、リアルタイム、または組み込みプログラマーであれば、コードを読む必要があるプログラマーに対してもう少し「友好的」になるように、この制限を尊重する必要があります。



9
-1以前の回答を読んでおらず、「80x24端末の時代に戻って、人気のあるUNIXゲームの元作者の1人は、コードがどれだけコメントされているかを賞賛したことがよくありました。彼は常にポットを吸っているため、彼はコード化され、画面がスクロール思考の彼の列車を失うとき、それを行う。
ブヨ

7
ようこそAvioでごめんなさい、あなたはたまたま非常に人気のある投稿に飛びつきました!私たちは、この辺の他のインターネットとは少し違ったやり方をしています。とりわけ、複製が嫌いです。よくある質問を読んで始めましょう。またお会いしましょう!
フレッドリー

6
+1を押し下げて正当化する。コードのための別の+1(私ができれば)ので、80文字の制限があるため、80列の端子とそれは順番に又はパンチカードに関連してもしなくてもよいです。
サンドマン

4
+1して@RossPattersonのダウン票に対抗します。ウィキペディアの参照には、80CPRをパンチカードに起因させる引用はありません。それは完全に偶然の一致であり、実際に真実ではない「真実」を一般的に受け入れます。IBMパンチカード標準に従っていると言っているVT52を指定した元のエンジニアの1人とのインタビューを見せてください。
ジェレミーホロヴァックス

52

おそらく80文字の制限の元の理由ではありませんが、広く受け入れられた理由は、単に人間工学を読むことです:

  • 行が短すぎると、読みながら常に1行から次の行にジャンプする必要があるため、テキストが読みにくくなります。
  • 行が長すぎる場合、次の行の先頭に戻るときに「行を失う」ため、行のジャンプが難しくなります(これは、行間の間隔を大きくすることで緩和できますが、これもスペースを浪費します)。

これは広く知られており、タイポグラフィで受け入れられています。標準的な推奨事項(書籍などのテキストの場合)は、1行あたり40〜90文字理想的には約60 文字の領域を使用することです(例えば、WikipediaMarkus Itkonen:Typography and readabilityを参照)。

1行あたり60文字を目標とする場合、時折の長い表現(およびマージンマーカーや行番号など)に対応するために、上限を明らかに少し高くする必要があるため、70-80の上限を設定するのが理にかなっています。

これはおそらく、80文字の制限が他の多くのシステムによって引き継がれた理由を説明しています。


1
この答えが大好きなのは、それが特定のテクノロジーを超えており、「真の」オリジナルテクノロジーの追求を避けているからです。
花京

26

関連する質問は、「80列が永続化されている理由」です。このページの応答でさえ、ほぼその幅です。80列の歴史的な理由に同意しますが、問題はなぜ標準が持続したのかということです。読みやすさを主張する-散文とコード。私たちの心は、非常に多くの情報を1つのピースにしか吸収できません。コードエディターで80列マーカーを使用して、ステートメントが長すぎてあいまいになっていることを思い出させます。また、ブラウザとサポートするIDEウィンドウ用の画面領域がたくさん残っています。長いライブ80列-ルールではなくガイドとして。


4
タイポグラフィの議論で言及された80文字(およそ)の最大幅を見ました-どうやら、それは本当に読みやすく、等幅かどうかに関係ありません。
nkorth

12

固定ピッチフォントの時代におけるもう1つの一般的な行の長さ制限は、72文字でした。例:Fortranコード、メール、ニュース。

1つの理由は、パンチカードの73〜80列がシリアル番号用に予約されていることが多いことです。なぜシリアル番号ですか?カードデッキを落とした場合、任意の順序でカードを取り上げ、左上隅(常に斜めにカットされている)を揃え、カードソーティングマシンを使用してそれらを順番に戻すことができます。

72文字の制限のもう1つの理由は、一般的なフォントの高さが10ポイント、幅が6ポイント(1/12 ")であったことです。インチ以上の。


7

私は個人的に「行80について」に固執していますが、それ以上印刷するとコードが折り返されたりコードが失われたりするからです。

パンチカードのレガシーもありますが、レーザープリンターや8.5x11インチの用紙がパンチカードの制限に適合するように設定されているとは思いません。


私の回答 @CMikeで提案しいるように、パンチカードの幅はタイプライタープラテンのサイズ、したがって用紙サイズ(またはその逆)に関連している可能性があると思います。
マークブース14年

4

プリンター用紙のスクロールは、レターサイズまたは15インチ幅でした。

コードまたはレポートのハードコピー用の80 cpsラインプリンターであり、後にEpsonは132 cpsの圧縮印刷をサポートしました(圧縮印刷ではエスケープコード\ 015)。


特に、このページに書かれている場合(数回!)
フレッドリー

12
@Ross:Q&Aサイトで何かを知らないために誰かに投票しないでください!
アバティシュチェフ

6
@abatishchev-しかし、言及されている答えはこのページにあります
ChrisF

10
@abatishchev実際、それはまさにStackExchangeサイトのアイデアです。自分で判断できない将来の読者がコミュニティの回答に対する意見を知ることができるように、「良い」回答は支持され、「悪い」回答は支持されるべきです。
ロスパターソン

2
@abatishchev嫌いな回答を投票することではなく、役に立たない回答を投票することです。投票ボタンのマウスオーバーテキストを参照してください。
マークブース14年

0

80列カードの理由の1つは、おそらく電子カードパンチマシンの前に使用されていた「ハンドパンチ」に関連している可能性があります。ICL System 4-50メインフレームコンピューターサイトで70年代前半に使用したものです。3つのセクションをパンチする必要がありましたか?キャリッジにナイフを同時にパンチします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.