#1 楼
您可以感谢IBM打孔卡的这一限制-它有80列:评论
在早期的电传打字机之后,后来的视频终端使用80列(然后是132列)作为标准宽度。
–LapTop006
2012年5月15日上午11:43
现在的问题是:为什么IBM打孔卡有80列?
–因素神秘主义者
2012年5月15日下午14:23
@FactorMystic-打孔卡的大小基于1880年代后期Hollerith设计它们以协助1890年人口普查时使用的货币大小。
–user54095
2012年5月15日14:51
卡片的大小之所以如此,是因为1890年,CTR希望重新使用货币载体(当时美元更大)来携带人口普查数据卡。
– Al Biglan
2012年5月15日17:30
@AlBiglan为什么货币那么大?
–弗雷德利
2012年5月15日23:13
#2 楼
如前所述,该通用编码标准是IBM 1928年80列打孔卡格式的结果,因为许多编码标准都可以追溯到将程序写在打孔卡上的时间,一次只能写一张卡/行,甚至过渡在更宽的屏幕上显示并不会改变代码变得更难阅读的事实。从打孔卡上的Wikipedia页面上:
80列打孔卡格式的传统是,在基于字符的终端设计中,每行显示80个字符是常见的选择。截至2011年11月,某些字符界面默认设置(例如Microsoft Windows中命令提示符窗口的宽度)仍设置为80列,而某些文件格式(例如FITS)仍使用80个字符的卡图像。
现在的问题是,当赫尔曼·霍勒里斯(Herman Hollerith)以前使用24列和45列卡时,为什么IBM在1928年选择80列卡?确切的答案,我怀疑这种选择是基于当时每行打字机的典型字符数。
我见过的大多数历史打字机的压纸板宽度都在9英寸左右,这对应于大约8“ -8.5”宽的纸张尺寸标准化(请参阅为什么美国的标准纸张尺寸为8½“ x 11”?以及ISO216 A系列纸张标准的历史)。
典型的打字机间距为每英寸10-12个字符,这取决于文档的大小,将导致文档宽度在72到90个字符之间这样一来,每行80个字符将代表孔间距(小矩形孔与较大的圆孔)和线长之间的良好折衷,同时保持相同的卡尺寸。
顺便提及,并不是每个地方都在其编码标准中指定80个字符的行宽。我工作的地方有132个字符的限制,这与yore的典型宽行打印机的宽度,12pt的横向A4打印输出以及Package Explorer和Eclipse的编辑器窗口中剩余的典型行宽(在1920x1200屏幕上最大)一致。即使考虑了大纲视图。
我仍然更喜欢80个字符宽的代码,因为它可以轻松并排比较文件的三个修订版本,而无需横向滚动(总是很差) )或换行(破坏代码格式)。使用80个字符宽的代码,您只需要一个240个字符的宽屏幕(1920个像素,每个字符8个像素)就可以在一个屏幕上舒适地看到完整的三向合并(共祖先,本地分支和远程分支)。 >
评论
并不是要开始另一个炒作活动,而是Hollerith的卡片有圆孔,而不是IBM 5081等人的矩形。 IBM后来进军System / 3格式的卡,在3个水平列带中有96个圆形孔。
–罗斯·帕特森(Ross Patterson)
2012年5月15日17:44
即使在较大的屏幕上也要继续使用80个字符的一个很好的理由是,许多程序员更喜欢使用较小的终端(甚至是IDE)窗口,而不是始终保持全屏状态。
– rkulla
2013年1月3日17:34
@rkulla那么,我们应该在几十年内继续施加80个字符的限制?当然,对于某些带有短标识符的语言(如C)来说,这很好,但是对于诸如带有长标识符的C#之类的语言,则可能会很麻烦。幸运的是,我们现在的位置限制为132个字符,但过去我对80感到非常恼火,尤其是在Python中
–基本
13年4月30日在15:21
@Basic有一个论点,即如果您不能在80个字符的行数限制内工作,则标识符可能过于冗长,或者您试图在一行上做太多事情。大多数人都比较喜欢长行而不是长行的窄列,因为我们的眼睛和大脑已经通过书籍,报纸和受列宽限制的网页(像这样)训练了多年,这意味着我们很难扫描并理解很长的行。
– Mark Booth
13年4月30日在16:46
@MarkBooth我不会将其拖出太多,因为这是一个宗教问题,但是被PEP8标记为太长的是...`(8个空格)return HttpResponse(JsonLib()。encode(Ret) ,content_type =“ application / json”)`是的,它可以分成多行,但分散在各个控制器中,除了满足80个字符的“标准”外,似乎不值得拆分。
–基本
13-4-30在17:05
#3 楼
我说这也是因为旧终端的大小(主要是80x24个字符):回到80x24终端的时代...编辑:
要更精确地回答更彻底地回答这个问题,因为80x24和80x25格式是早期I / O终端和个人计算机(VT52-感谢Sandman4)中最常见的屏幕模式,所以80个字符是编辑器中当前“普遍接受的”代码宽度限制。
该限制仍然有效,并且在某种程度上很重要,恕我直言,主要有两个原因:许多Linux发行版分配给新生成的终端窗口的默认几何形状仍为80x24,许多人按原样使用它们,而没有调整大小。而且,内核,实时和嵌入式程序员经常在没有任何窗口管理器的“无头”环境中工作。同样,默认屏幕分辨率通常为80x24(或80x25),在这种情况下,甚至可能很难更改此默认设置。
因此,如果您是内核,实时或嵌入式程序员,您应该强迫自己遵守这一限制,对要读取您的代码的任何程序员都更加“友好”。
评论
但是由于程序员的原因,旧终端的宽度为80个字符.stackexchange.com / a / 148678/4767
–奥德
2012年5月15日14:33
-1表示不阅读先前的答案,并且没有用的链接仅表示“在80x24终端的时代,流行的unix游戏的原始作者之一经常对他的代码的评论程度表示赞赏。他说,他必须这样做是因为他在编码时总是抽烟,而在屏幕滚动时会失去思路。”
– gna
2012年5月15日下午14:40
很抱歉,Avio受到欢迎,您刚好偶然看到了一篇非常受欢迎的帖子!我们做的事情与这里其他地方的互联网有些不同。我们最讨厌重复。阅读常见问题以开始使用,希望再次与您见面!
–弗雷德利
2012年5月15日下午14:51
+1表示赞成。另一个+1(如果可以的话),因为代码的80个字符的限制是由于80列的终端,因此又可能与打孔卡无关。
– Sandman4
2012年5月15日15:00
+1以抵消@RossPatterson的不满意。在任何维基百科参考上都没有引用将80CPR归于打孔卡;这可能是完全巧合的,而且通常接受的“真相”实际上并不是真的。让我看一下采访VT52的原始工程师之一,他说他们遵循IBM打孔卡标准。
– Jeremy Holovacs
2012年5月15日20:07
#4 楼
虽然可能不是80个字符限制的最初原因,但被广泛接受的原因只是阅读人体工程学:如果行太短,则文本将变得难以阅读,因为您必须不断地从一个字符跳
如果行太长,则行跳转变得太困难,因为您在回到下一行的开始时“丢失了行”(可以通过设置较大的行距来缓解行间距,但这也会浪费空间。)
这在印刷术中是众所周知的。标准建议(用于书籍中的文本等)是每行使用40-90个字符左右的字符,理想情况下使用大约60个字符(例如参见Wikipedia,Markus Itkonen:版式和可读性。
如果您希望每行60个字符,您的上限显然必须更高一些才能容纳偶尔的长表达式(以及边距标记和行号之类的东西),因此上限为70-80才有意义。为什么80个字符的限制被许多其他系统接管。
评论
我喜欢这个答案,因为它超越了特定技术,并且避免了追求“真正的”原始技术。
– kakyo
19年1月10日在15:33
每行80个字符完全破坏了阅读人体工程学。您会看到Wikipedia如何最适合阅读,并且比其他网站(包括该网站)特别广泛。一般规则是,使您的代码需要更多滚动才能读取是个坏主意,因为您会丢失上下文,并且必须浪费时间滚动才能读取某些内容。我有大量的代码证明了这一点,并且我正在研究一个计算可读性指数的公式,该公式证明您是错误的,短线是最糟糕的。
– Pablo Ariel
3月30日19:45
@PabloAriel:如果您不同意我的回答,请随时写自己的答案。这就是这个网站的目的。
–sleske
3月30日20:38
我可以,但我最好不要。我宁愿让他们去做,并用它来促进我的工作。一般而言,除了有偏见的程序员外,每个人都宁愿在更大的屏幕/窗口上工作,因此很容易将其出售给具有2个工作神经元的人,向他们展示有些人不那么聪明,而他们实际上将尝试在尽可能小的屏幕上工作并认为这是一种好处。
– Pablo Ariel
4月1日下午6:24
虚假链接。不去提到的PDF。
–迷宫
6月22日14:53
#5 楼
一个相关的问题是“为什么80列仍然存在”。即使在此页面上的响应也大约等于该宽度。我同意80根色谱柱的历史原因,但问题是为什么该标准仍然存在。我要求可读性-散文和代码。我们的头脑只能吸收那么多信息。当语句变得太长且晦涩时,我仍然在代码编辑器中使用80列标记来提醒我。这也给我留了很多浏览器的屏幕空间,以及支持IDE的窗口。 80柱万岁-作为指导而不是常规。评论
我看过版式讨论中提到的最大80个字符(大约)的宽度-显然,它确实有助于提高可读性,是否支持等宽字体。
–nkorth
2012年8月13日在1:40
您的头脑一次只能吸收很少的代码。那我一定是个天才。突变体之类的。
– Pablo Ariel
3月30日19:46
#6 楼
在固定间距字体时代,另一个常见的行长限制是72个字符。例如:Fortran代码,邮件,新闻。一个原因是打孔卡的第73-80列通常保留用于序列号。为什么要序列号?如果您放下了卡片组,则可以按任意顺序拾起卡片,将左上角(始终有对角线)对齐,然后使用卡片分类机将它们重新整理好。
限制72个字符的另一个原因是普通字体高10点,宽6点(1/12“)。A4或8.5”宽页面可以在6“中容纳72个字符。宽列,仍然有超过一英寸的页边空白。
#7 楼
我个人坚持使用“大约80列”作为我的行尾,因为在打印时它还会导致换行或丢失代码。还有打孔卡,但我不认为它是激光打印机打印机或8.5x11英寸的纸张已设置为符合打孔卡的限制。
评论
正如我在@CMike的答案中所建议的那样,我确实认为打孔卡的宽度可能与打字机压纸盘的尺寸以及纸张尺寸有关(反之亦然)。
– Mark Booth
2014年3月31日23:02
那么,您为最不常见的用例订购了代码吗?
– Pablo Ariel
3月30日19:49
#8 楼
在打印机中滚动查看的是Letter尺寸或15英寸宽的纸张。这是80 cps的行式打印机,用于硬拷贝代码或报告,后来在Epson上支持132 cps的简明打印(密文的转义码\ 015)打印)。
评论
特别是在此页面上写过(几次!)时!
–弗雷德利
2012年5月15日17:46
@罗斯:您不应该对不知道问答网站上任何内容的人投以反对票!
– abatishchev
2012年5月15日18:30
@abatishchev-但要引用的答案在此页上。
–ChrisF♦
2012年5月15日20:35
@abatishchev实际上,这正是StackExchange网站的想法。应该评选“好”答案,并评选“差”答案,以确保将来可能无法自行判断的读者了解社区对答案的看法。
–罗斯·帕特森(Ross Patterson)
2012年5月15日在22:54
@abatishchev不是要投票拒绝您不喜欢的答案,而是要投票拒绝没有用的答案。请参阅投票按钮的鼠标悬停文字。
– Mark Booth
2014年3月31日23:04
评论
stackoverflow.com/questions/578059/…在任何人考虑为该问题添加其他答案之前,请阅读已接受的答案和Mark Booth的答案。这些全面回答了问题。打孔卡排在第一位。
它仍然是标准吗?我们还不能克服吗?我想说140超出了当前显示器(甚至是智能手机)所能接受的范围。我选择了140,因为这是Twitter的限制,但是160(是以前的限制)也很合适...