Pourquoi 80 caractères sont-ils la limite «standard» pour la largeur de code?

572

Pourquoi 80 caractères sont-ils la limite "standard" pour la largeur de code? Pourquoi 80 et non 79, 81 ou 100? Quelle est l'origine de cette valeur particulière?

Fredley
la source
14
Argh! Tu n'aurais pas pu attendre une semaine avant de demander? Cela aurait pu être une question gagnante du concours .
Yannis
12
Avant que quiconque pense à ajouter une autre réponse à cette question, veuillez lire la réponse acceptée et la réponse de Mark Booth . Ceux-ci répondent à la question de manière globale. La carte perforée est venue en premier.
ChrisF
4
Pourquoi ce morceau de trivia marginal a 139 votes positifs me dépasse. Pendant ce temps, presque toutes les autres questions (bonnes ou mauvaises) de la première page ont nettement moins de voix. Nos critères de vote collectif sont-ils si brisés? :( (@fredley Ce n'est pas une critique de vous, mais de notre communauté)
Andres F.
6
@AndresF. La raison pour laquelle cet article a bien fonctionné est que c'est quelque chose qui intéressera beaucoup de gens, derrière un bon titre. Il a passé une journée au sommet du supercollider et est parvenu à Hacker News, etc. C'est peut-être un détail marginal, mais son contenu est bon!
Fredley

Réponses:

734

Vous pouvez remercier la carte perforée IBM pour cette limite - elle comportait 80 colonnes:

Carte perforée IBM

Oded
la source
64
Après cela, les premiers télétypes et les terminaux vidéo ultérieurs utilisaient une largeur standard de 80 colonnes (et ensuite de 132 colonnes).
LapTop006
262
Maintenant la question est: pourquoi la carte perforée IBM a-t-elle 80 colonnes?
Factor Mystic
139
@FactorMystic - la taille de la carte perforée était basée sur la taille de la devise à la fin des années 1880 lorsque Hollerith les avait conçues pour faciliter le recensement de 1890 .
56
Les cartes ont cette taille car, en 1890, CTR souhaitait réutiliser des supports de devises (le dollar était plus gros à l'époque) pour transporter les cartes de données de recensement.
Al Biglan
89
@AlBiglan Pourquoi la monnaie était-elle de cette taille?
Fredley
249

Comme Oded mentionné, cette norme de codage commune est le résultat de 1928 de l'IBM 80 colonne format carte perforée , car de nombreuses normes de codage remontent à une époque où les programmes ont été écrits sur des cartes perforées, une carte / ligne à la fois, et même la transition Les écrans plus larges n'ont pas modifié le fait que le code devient plus difficile à lire plus il devient large.

De la page wikipedia sur les cartes perforées :

Impact culturel

  • L'un des héritages du format de carte perforée à 80 colonnes est qu'un affichage courant de 80 caractères par ligne était un choix courant dans la conception de terminaux basés sur des caractères. Depuis novembre 2011, certaines valeurs par défaut d'interface de caractère, telles que la largeur de la fenêtre d'invite de commande dans Microsoft Windows, sont toujours définies sur 80 colonnes et certains formats de fichier, tels que FITS, utilisent encore des images de carte de 80 caractères.

Maintenant, la question est de savoir pourquoi IBM a choisi 80 cartes de colonne en 1928, alors qu'Herman Hollerith utilisait auparavant des cartes de 24 et 45 colonnes .

Bien que je ne puisse pas trouver de réponse définitive, je suppose que le choix était basé sur le nombre typique de caractères par ligne de machines à écrire de l'époque.

La plupart des machines à écrire historiques que j'ai vues avaient une largeur de plateau d'environ 9 pouces, ce qui correspond à la standardisation des formats de papier d'environ 8 "à 8,5" (voir Pourquoi le format de papier standard aux États-Unis est-il de 8 ½ "x 11 "? et l’ histoire de la norme papier ISO216 A ).

Ajoutez un pas typique de machine à écrire de 10 à 12 caractères par pouce, ce qui donnerait des documents d'une largeur comprise entre 72 et 90 caractères, en fonction de la taille des marges.

Ainsi, 80 caractères par ligne auraient représenté un bon compromis entre le pas de trou (petits trous rectangulaires par rapport aux plus ronds) et la longueur de la ligne, tout en conservant la même taille de carte.


Incidemment, pas partout spécifie une largeur de ligne de 80 caractères dans leurs normes de codage. Là où je travaille a une limite de 132 caractères, ce qui correspond à la largeur des imprimantes classiques à lignes larges jadis, à une impression A4 en format paysage et à la largeur de ligne typique conservée dans une fenêtre d’éditeur d’Eclipse (maximisée sur un écran 1920x1200) après l’Explorateur de packages et Les vues d'ensemble sont prises en compte.

Même dans ce cas, je préfère toujours un code de 80 caractères, car cela facilite la comparaison de trois révisions d’un fichier côte à côte sans défilement latéral (toujours incorrect) ni de lignes d’emballage (qui détruisent le formatage du code). Avec un code large de 80 caractères, un écran large de 240 caractères (1920 pixels de 8 pixels par caractère) suffit pour afficher une fusion complète à trois voies (ancêtre commun, branche locale et branche distante) sur un seul écran.

Mark Booth
la source
2
Pour ne pas entamer une autre fête des spéculations, les cartes de Hollerith avaient des trous circulaires, pas les rectangles des cartes IBM 5081 et al. Et l’incursion plus récente d’IBM dans les cartes, le format System / 3, avait 96 trous circulaires dans 3 bandes horizontales de colonnes.
Ross Patterson
9
Une bonne raison d'essayer de continuer à utiliser 80 caractères, même sur des écrans plus grands, est que de nombreux programmeurs préfèrent utiliser des fenêtres de terminaux plus petites (ou même IDE), plutôt que de les garder en plein écran à tout moment.
Rkulla
4
@rkulla Donc, pendant combien de décennies devrions-nous continuer à imposer une limite de 80 caractères? Bien sûr, pour certaines langues comme le C avec des identifiants courts, c'est bon, mais pour d'autres, comme le C # avec de longs identifiants, cela peut être pénible. Heureusement, nous imposons une limite de 132 caractères là où je suis, mais je m'ennuyais beaucoup avec 80, surtout en Python
Basic
5
@Basic, il existe un argument selon lequel si vous ne pouvez pas travailler dans une limite de 80 caractères, vos identifiants sont excessivement explicites ou vous essayez d'en faire trop sur une seule ligne. La plupart des gens sont plus à l'aise avec des colonnes plus fines contenant plus de lignes que de très longues lignes, car nos yeux et notre cerveau ont été formés pendant des années au moyen de livres, de journaux et de pages Web à largeur de colonne limitée (comme celle-ci), ce qui rend difficile la numérisation. et comprendre de très longues lignes.
Mark Booth
5
@MarkBooth Je ne vais pas trop m'étendre car c'est un problème religieux, mais PEP8 a signalé qu'il était trop long, c'est ... `(8 espaces) renvoie HttpResponse (JsonLib (). Encode (Ret) , content_type = "application / json") `et oui, il pourrait être divisé en plusieurs lignes, mais il est dispersé dans divers contrôleurs et ne semble pas valoir la peine de le scinder, sauf pour respecter le" standard "à 80 caractères.
Basic
59

Je dirais que c'est aussi parce que les anciens terminaux étaient (principalement) de 80x24 caractères: À l'époque des terminaux 80x24 ...

MODIFIER:

Pour répondre plus précisément à la question, 80 caractères constituent la limite actuelle "universellement acceptée" de largeur de code dans les éditeurs, car les formats 80x24 et 80x25 étaient les modes d'affichage les plus courants dans les premiers terminaux d'E / S et les ordinateurs personnels ( VT52 - merci à Sandman4).

Cette limite est toujours valable et, à mon avis, importante à mon avis pour deux raisons principales: la géométrie par défaut attribuée par de nombreuses distributions Linux aux fenêtres de terminaux nouvellement apparues est toujours de 80x24 et beaucoup de personnes les utilisent telles quelles , sans redimensionnement. De plus, les programmeurs noyaux, temps réel et intégrés travaillent souvent dans un environnement "sans tête" sans aucun gestionnaire de fenêtres. Là encore, la résolution d'écran par défaut est souvent 80x24 (ou 80x25) et, dans ces situations, il peut même être difficile de modifier ce paramètre par défaut.

Donc, si vous êtes un programmeur noyau, temps réel ou intégré, vous devez vous forcer à respecter cette limite, juste pour être un peu plus "amical" envers tout programmeur qui devrait lire votre code.

Avio
la source
8
Mais les anciens terminaux avaient 80 caractères de largeur à cause des programmeurs.stackexchange.com/a/148678/4767
Oded
9
-1 pour ne pas avoir lu la réponse précédente et pour le lien inutile qui indique simplement "À l'époque des terminaux 80x24, l'un des auteurs originaux d'un jeu populaire unix était souvent complimenté pour la qualité de son code. Il a dit qu'il devait faire cela parce qu'il fumait toujours du pot lorsqu'il codait et qu'il perdait le fil de ses pensées lorsque l'écran défilait. "
Mardi
7
Désolé pour l'accueil, Avio, vous venez de passer à un poste extrêmement populaire! Nous faisons les choses un peu différemment du reste de l'Internet ici. Nous détestons la duplication, entre autres. Prenez le temps de lire la FAQ pour commencer, j'espère vous revoir!
fredley
6
+1 pour justifier le vote négatif. Un autre +1 (si je pouvais) car la limite de 80 caractères pour le code est due à un terminal à 80 colonnes et peut à son tour être lié à des cartes perforées.
Sandman4
4
+1 pour neutraliser le vote négatif de RossPatterson. Il n’ya aucune référence sur wikipedia dans les références qui attribuent le 80CPR aux cartes perforées; cela peut être complètement une coïncidence, et une "vérité" communément acceptée qui n'est pas réellement vraie. Montrez-moi une entrevue avec l’un des ingénieurs qui a conçu le VT52, où il disait qu’ils suivaient un standard de cartes perforées IBM.
Jeremy Holovacs
52

Bien que ce ne soit probablement pas la raison initiale de la limite de 80 caractères, une des raisons pour laquelle elle a été largement acceptée est simplement la lecture de l'ergonomie :

  • Si les lignes sont trop courtes, le texte devient difficile à lire car vous devez constamment passer d'une ligne à l'autre pendant la lecture.
  • Si les lignes sont trop longues, le saut de ligne devient trop difficile car vous "perdez la ligne" en remontant au début de la ligne suivante (ceci peut être atténué par un espacement interligne plus grand, mais cela gaspille également de l'espace).

Ceci est largement connu et accepté en typographie. La recommandation standard (pour le texte de livres, etc.) est d'utiliser environ 40 à 90 caractères par ligne , et idéalement environ 60 (voir par exemple Wikipedia , Markus Itkonen: Typographie et lisibilité ).

Si vous visez 60 caractères par ligne, votre limite supérieure doit évidemment être un peu plus élevée pour permettre les expressions longues occasionnelles (et des éléments tels que les marqueurs de marges et les numéros de ligne). Il est donc judicieux de définir une limite supérieure de 70 à 80.

Cela explique probablement pourquoi la limite de 80 caractères a été prise en charge par de nombreux autres systèmes.

sleske
la source
1
J'adore cette réponse car elle va au-delà d'une technologie spécifique et évite la recherche de la "vraie" technologie d'origine.
Kakyo
26

Une question connexe est "pourquoi la colonne 80 a-t-elle persisté". Même les réponses sur cette page sont approximativement de cette largeur. Je suis d'accord avec les raisons historiques de 80 colonnes, mais la question est de savoir pourquoi la norme a persisté. Je voudrais réclamer la lisibilité - pour la prose et le code. Nos esprits peuvent seulement absorber autant d'informations en un seul morceau. J'utilise toujours le marqueur 80 colonnes dans mon éditeur de code pour me rappeler quand une déclaration devient trop longue et trop obscure. Cela me laisse également beaucoup d’écran à l’écran pour le navigateur et les fenêtres d’appui IDE. Longue vie à 80 colonnes - comme guide, pas comme règle.

Paul Marrington
la source
4
J'ai vu la largeur maximale (environ) de 80 caractères mentionnée dans les discussions sur la typographie - apparemment, cela aide vraiment la lisibilité, qu'elle soit monospace ou non.
nkorth
12

Une autre limite de longueur de ligne courante dans les jours de polices à espacement fixe était de 72 caractères. Exemples: code Fortran, courrier, nouvelles.

L'une des raisons était que les colonnes 73 à 80 d'une carte perforée étaient souvent réservées à un numéro de série. Pourquoi un numéro de série? Si vous déposez un jeu de cartes, vous pouvez ramasser les cartes dans n’importe quel ordre, aligner les coins supérieurs gauche (qui ont toujours une coupe en diagonale) et utiliser une machine à trier les cartes pour les remettre en ordre.

Une autre raison de la limite de 72 caractères est que les polices courantes ont une hauteur de 10 points et une largeur de 6 points (1/12 "). Une page au format A4 ou large de 8,5" peut contenir 72 caractères dans une colonne de 6 "de large tout en laissant une marge pour les marges. de plus d'un pouce.

Larry Tesler
la source
7

Personnellement, je m'en tiens à "à propos de la colonne 80" pour ma fin de ligne car plus loin que cela provoque un wrapping ou une perte de code lorsque vous l'imprimez.

Les cartes perforées sont également héritées, mais je ne pense pas que les imprimantes laser ou le papier 8,5 x 11 pouces étaient configurés pour respecter les limites des cartes perforées.

CMike
la source
Comme je le suggère dans ma réponse @CMike, j'estime qu'il est possible que la largeur de la carte perforée soit liée à la taille des platines de machine à écrire et donc aux formats de papier (ou inversement).
Mark Booth
4

Faites défiler dans les papiers des imprimantes étaient de format lettre ou 15 "de large.

Il s’agissait des imprimantes à 80 cps pour la copie sur papier de codes ou de rapports, et plus tard, Epson prend en charge l’impression condensée à 132 cps (code d’échappement \ 015 pour l’impression condensée).

Rony
la source
Surtout quand c'est écrit (plusieurs fois!) Sur cette page!
Fredley
12
@Ross: vous ne devriez invoquer personne pour ne pas savoir quelque chose sur le site de questions-réponses !
Abatishchev
6
@abatishchev - mais la réponse à laquelle on se réfère se trouve sur cette page .
ChrisF
10
@abatishchev En fait, c'est exactement l'idée des sites StackExchange. Les "bonnes" réponses doivent être votées, et les "mauvaises" réponses doivent être réduites, afin que les futurs lecteurs qui ne sont pas en mesure de juger par eux-mêmes puissent connaître l'opinion de la communauté sur les réponses.
Ross Patterson
2
@abatishchev Il ne s'agit pas de rejeter les réponses que vous n'aimez pas, mais de rejeter les réponses qui ne sont pas utiles . Voir le texte survolé par les boutons de vote.
Mark Booth
0

Une des raisons pour lesquelles les cartes à 80 colonnes peuvent être associées au «perforateur manuel» qui était probablement utilisé avant les machines à perforer les cartes électroniques. C’est celui que j’avais utilisé au début des années 70 sur un site principal ICL System 4-50. Il fallait percer une section de trois? poinçons couteaux dans le chariot en même temps.

Ray Denton
la source