코드 너비에 대해 80자가 '표준'제한 인 이유는 무엇입니까?


572

코드 너비에 80 문자가 "표준"제한 인 이유는 무엇입니까? 왜 79, 81 또는 100이 아닌 80입니까? 이 특정 가치의 기원은 무엇입니까?



14
아아! 묻기 전에 일주일을 기다릴 수 없었습니까? 이것은 콘테스트 수상 질문 이 될 수 있습니다 .
yannis 2016 년

12
누군가가이 질문에 다른 대답을 추가 생각하기 전에 제발 허용 대답 읽기 마크 부스의 답변을 . 이들은 질문에 포괄적으로 답변합니다. 펀치 카드가 먼저 나왔습니다.
ChrisF

4
이 한계 사소한 일이 139 개의 공짜를 갖는 이유는 저를 넘어선 것입니다. 한편, 첫 페이지에서 (좋은 또는 나쁜) 거의 모든 다른 문제는이 방법으로 적은 표를. 우리의 집단 투표 기준이 너무 어려웠습니까? : ((@ fredley 이것은 당신에 대한 비판이 아니라 우리 커뮤니티에 대한 것입니다)
Andres F.

6
@AndresF. 이 게시물이 잘 된 이유는 좋은 제목 뒤에 많은 사람들이 관심을 가질만한 것이기 때문입니다. 그것은 수퍼 콜 라이더의 상단에서 하루를 보냈고 그것을 해커 뉴스 (Hacker News) 등에 만들었습니다.
Fredley

답변:


734

이 한계에 대해 IBM 펀치 카드 에 감사 할 수 있습니다 . 80 개의 열이 있습니다.

IBM 펀치 카드


64
초기 텔레타이프 이후의 비디오 터미널은 표준 너비로 80 열 (및 132 열)을 사용했습니다.
LapTop006 11:15에

262
이제 질문은 IBM 펀치 카드에 80 개의 열이있는 이유는 무엇입니까?
Factor Mystic

139
@FactorMystic – 펀치 카드 크기는 1880 년대 말 홀레리스 가 1890 년대 인구 조사 를 지원하도록 설계했을 때의 통화 크기를 기준으로 합니다.

56
1890 년에 CTR은 통화 캐리어 (달러는 당시보다 더 컸음)를 인구 조사 데이터 카드를 운반하기 위해 재사용하기를 원했기 때문에 그 크기입니다.
Al Biglan

89
@AlBiglan 통화가 왜 그 크기입니까?
fredley

249

으로 오디드 언급이 일반적인 코딩 표준은 IBM의 1928의 결과이다 (80) 열 천공 카드 포맷 많은 코딩 표준 다시 프로그램을 한 번에 펀치 카드, 하나 개 카드 / 줄에 기록 된 시간을 날짜 이후, 심지어 전환 화면을 넓히면 코드가 더 넓어지기가 어렵다는 사실을 바꾸지 않았습니다.

펀치 카드 의 wikipedia 페이지에서 :

문화적 영향

  • 80 컬럼 펀치 카드 형식의 유산은 문자 기반 터미널을 설계 할 때 행당 80자를 표시하는 것이 일반적인 선택이라는 것입니다. 2011 년 11 월 현재 Microsoft Windows의 명령 프롬프트 창 너비와 같은 일부 문자 인터페이스 기본값은 80 열로 설정되어 있으며 FITS와 같은 일부 파일 형식은 여전히 ​​80 자 카드 이미지를 사용합니다.

이제 허먼 홀러리스 (Herman Hollerith) 가 이전에 24 및 45 컬럼 카드를 사용한 1928 년에 IBM이 80 컬럼 카드를 선택한 이유는 무엇입니까?

결정적인 대답을 찾을 수는 없지만 선택은 당시의 타자기 줄 당 일반적인 문자 수를 기반으로 한 것으로 생각 됩니다.

필자가 본 역사적 타자기의 대부분은 약 9 인치 의 플래 튼 너비를 가졌으며 이는 너비가 8 "-8.5"인 용지 크기의 표준화에 해당합니다 (미국 8 ½ "x 11의 표준 용지 크기는 왜입니까? 참조). "?ISO216역사 시리즈 용지 표준 ).

인치당 10-12 문자의 일반적인 타자기 피치를 추가하면 여백의 크기에 따라 너비가 72-90자인 문서가됩니다.

따라서 줄당 80 문자는 동일한 카드 크기를 유지하면서 구멍 피치 (작은 사각형 대 큰 둥근 구멍)와 줄 길이 사이의 좋은 절충안을 나타냅니다.


덧붙여서, 어느 곳에서나 코딩 표준에서 80 문자 선 너비를 지정하지는 않습니다. 여기서 작업 할 때 132 문자 제한이 있습니다. 여기에는 일반적인 와이드 라인 프린터 너비 , 12pt 가로 A4 출력 및 패키지 탐색기 후 Eclipse의 편집기 창 (1920x1200 화면에서 최대화 됨)에 남아있는 일반적인 줄 너비에 해당합니다. 개요보기가 고려됩니다.

그럼에도 불구하고 여전히 80 문자 너비의 코드를 선호하므로 옆으로 스크롤하거나 (항상 나쁘게) 줄 바꿈 (코드 형식을 파괴하는)하지 않고 파일의 세 가지 개정판을 나란히 비교하는 것이 더 쉽기 때문에 선호합니다. 80 자 너비 코드를 사용하면 한 화면에서 편안하게 전체 3 방향 병합 (일반 조상, 로컬 지점 및 원격 지점) 을 볼 수있는 240 자 너비의 화면 (문자 당 8 픽셀의 1920 픽셀) 만 있으면 됩니다.


2
다른 추측 페스티벌을 시작하지는 않지만 Hollerith의 카드에는 IBM 5081 의 사각형이 아닌 원형 구멍이 있습니다. 그리고 나중에 IBM의 시스템 / 3 형식 카드는 3 개의 수평 밴드 밴드에 96 개의 원형 구멍이있었습니다.
로스 패터슨

9
큰 화면에서도 80자를 계속 사용하는 좋은 이유는 많은 프로그래머가 항상 전체 화면을 유지하지 않고 작은 터미널 (또는 IDE) 창을 사용하는 것을 선호하기 때문입니다.
rkulla

4
@rkulla 그래서 몇 십년 동안 80 자로 글자 제한을 계속해야합니까? 짧은 식별자를 가진 C와 같은 일부 언어는 문제가 없지만 긴 식별자를 가진 C #과 같은 언어는 문제가 될 수 있습니다. 운 좋게도, 우리는 지금 132 개의 문자 제한을 부과하지만 80에서 특히 짜증이납니다. 특히 Python에서
Basic

5
@Basic은 80 자 이내로 작업 할 수 없다면 식별자가 지나치게 상세하거나 한 줄에 너무 많은 것을 시도 한다는 주장이 있습니다 . 우리의 눈과 뇌는 수년 동안 책, 신문 및 열 너비가 제한된 웹 페이지 (이와 같은)를 통해 훈련되어 왔기 때문에 대부분의 사람들은 매우 긴 줄보다 더 좁은 줄의 열에 더 편합니다. 매우 긴 줄을 이해 합니다.
Mark Booth

5
@MarkBooth 종교적인 문제이기 때문에 너무 많이 끌지 않지만 PEP8이 너무 길어서 플래그를 붙인 것은 ...`(8 공백) return HttpResponse (JsonLib (). encode (Ret) , content_type = "application / json")`그렇습니다. 여러 줄로 나눌 수 있지만 다양한 컨트롤러에 흩어져 있으며 80 문자 "표준"을 충족하는 것 외에는 분할 할 가치가없는 것처럼 보입니다.
기본

59

나는 또한 오래된 터미널의 크기가 80x24 자이기 때문에 80x24 터미널 시대에 ...

편집하다:

80x24 및 80x25 형식이 초기 I / O 터미널 및 개인용 컴퓨터에서 가장 일반적인 화면 모드이기 때문에 80 바이트는 편집기에서 코드 너비에 대한 현재 "일반적으로 허용되는"제한입니다. VT52 -thanks Sandman4).

이 한계는 여전히 유효하고 어떻게 든 중요한 두 가지 이유로 IMHO가 중요합니다. 많은 Linux 배포판이 새로 생성 된 터미널 창에 할당하는 기본 지오메트리는 여전히 80x24이며 많은 사람들 크기를 조정하지 않고 그대로 사용합니다 . 또한 커널, 실시간 및 임베디드 프로그래머는 종종 창 관리자없이 "헤드리스"환경에서 작업합니다. 다시 기본 화면 해상도는 종종 80x24 (또는 80x25)이며 이러한 상황에서는이 기본 설정을 변경하기가 어려울 수도 있습니다.

따라서 커널, 실시간 또는 임베디드 프로그래머라면 코드를 읽어야하는 프로그래머에게 조금 더 친숙해 지도록이 한계를 존중해야합니다.


8
그러나 오래된 터미널은 프로그래머
.stackexchange.com / a

9
-1 사전 답변을 읽지 않고 "80x24 터미널 시대에 인기있는 유닉스 게임의 원작자 중 한 사람은 종종 자신의 코드가 얼마나 잘 주석 처리되었는지에 대해 칭찬을 받았다는 쓸모없는 링크에 대해 " 그는 코딩 할 때 항상 냄비를 피우고 화면이 스크롤 될 때 생각의 기차를 잃을 것이기 때문에 그렇게한다. "
gnat

7
환영 Avio 죄송합니다, 당신은 매우 인기있는 게시물에 뛰어 들었다! 우리는이 주변의 다른 인터넷과는 조금 다르게 일을합니다. 우리는 무엇보다도 복제를 싫어합니다. 시작 하려면 FAQ 를 읽고 다시 again 기를 바랍니다!
fredley

6
downvote를 정당화하려면 +1하십시오. 다른 코드 +1 (I있을 경우) 때문에 80 문자 제한이 있기 때문에 80 열 단말 하고는 차례 또는 펀치 카드와 관련되지 않을 수있다.
Sandman4

4
@RossPatterson의 downvote에 대항하기 위해 +1. 위키 백과 참조에는 80CPR을 펀치 카드로 표시하는 인용이 없습니다. 그것은 우연의 일치 일 수도 있고 실제로는 사실이 아닌 "진실"을 일반적으로 받아들입니다. IBM 펀치 카드 표준을 따르고 있다고 VT52를 사양 한 최초의 엔지니어 중 한 명과의 인터뷰를 보여주십시오.
Jeremy Holovacs

52

아마도 80 자 제한의 원래 이유는 아니지만 널리 채택 된 이유는 단순히 인체 공학을 읽는 것입니다 .

  • 줄이 너무 짧으면 읽는 동안 한 줄에서 다음 줄로 계속 이동해야하므로 텍스트를 읽기가 어렵습니다.
  • 줄이 너무 길면 다음 줄의 시작 부분으로 돌아가는 동안 "줄을 잃어"서 줄 점프가 너무 어려워집니다 (줄 간격이 더 커지면 완화 될 수 있지만 공간이 낭비됩니다).

이것은 타이포그래피에서 널리 알려져 있고 수용됩니다. 표준 권장 사항 (도서의 텍스트 등)은 한 40-90 자 , 이상적으로는 약 60 자 (예 : Wikipedia , Markus Itkonen : 타이포그래피 및 가독성 )를 사용하는 것이 좋습니다.

한 줄에 60자를 목표로하는 경우, 가끔 긴 표현 (및 여백 마커 및 줄 번호와 같은 것)을 수용 할 수 있도록 상한이 약간 높아야하므로 70-80의 상한을 갖는 것이 좋습니다.

이것은 아마도 많은 다른 시스템이 80자를 제한 한 이유를 설명합니다.


1
이 답변은 특정 기술을 뛰어 넘고 "진정한"독창적 인 기술을 추구하지 않기 때문에이 답변을 좋아합니다.
kakyo

26

관련 질문은 "80 개의 열이 지속 된 이유"입니다. 이 페이지의 응답조차 대략 그 너비입니다. 80 열의 역사적인 이유에 동의하지만 표준이 지속 된 이유가 문제입니다. 나는 가독성과 주장에 대한 가독성을 주장 할 것이다. 우리의 마음은 한 번에 너무 많은 정보를 흡수 할 수 있습니다. 나는 명령문이 너무 길고 모호해질 때를 상기시키기 위해 여전히 코드 편집기에서 80 열 마커를 사용합니다. 또한 브라우저와 지원하는 IDE 창에 대한 많은 화면 공간을 남겨 둡니다. 긴 라이브 80 열-가이드가 아닌 규칙.


4
타이포그래피 토론에서 언급 된 80 자 (최대)의 최대 너비를 보았습니다.
nkorth

12

고정 피치 글꼴 시대의 또 다른 일반적인 줄 길이 제한은 72 자입니다. 예 : 포트란 코드, 메일, 뉴스.

한 가지 이유는 펀치 카드의 열 73-80이 일련 번호로 예약되어 있기 때문입니다. 왜 일련 번호입니까? 카드 데크를 떨어 뜨린 경우 원하는 순서대로 카드를 집어 들고 왼쪽 위 모서리 (항상 대각선 절단 부분이 있음)를 정렬 한 다음 카드 정렬 기계를 사용하여 순서대로 되돌릴 수 있습니다.

72 자 제한의 또 다른 이유는 일반적인 글꼴의 높이가 10 포인트, 너비가 6 포인트 (1/12 ") 였기 때문입니다. A4 또는 8.5"너비 페이지는 6 "너비 열에 72자를 저장할 수 있으며 여백을위한 여지가 있습니다. 인치 이상.


7

인쇄 할 때 줄 바꿈이나 코드 손실이 발생하기 때문에 줄 끝에서 "약 80 열"을 고수합니다.

펀치 카드 레거시도 있지만 레이저 프린터 또는 8.5x11 인치 용지가 펀치 카드 제한을 준수하도록 설정되지 않았다고 생각합니다.


내 대답 @CMike 에서 제안한 것처럼 펀치 카드 너비는 타자기 인자 판의 크기와 관련이 있으며 따라서 용지 크기 (또는 그 반대)와 관련이 있다고 생각합니다.
Mark Booth

4

프린터 용지의 스크롤은 레터 크기 또는 너비 15 "입니다.

코드 또는 보고서의 하드 카피를위한 80 cps 라인 프린터였으며 나중에 Epson은 132 cps 압축 인쇄를 지원합니다 (축소 인쇄의 경우 이스케이프 코드 \ 015).


특히이 페이지에 쓰여진 경우 (여러 번!)!
Fredley

12
@Ross : Q & A 사이트 에서 무언가를 알지 못하는 사람을 공감해서는 안됩니다 !
abatishchev

6
@ abatishchev-하지만 언급 된 답변은 이 페이지에 있습니다.
ChrisF

10
@abatishchev 사실, 이것이 바로 Exchange Exchange 사이트의 아이디어입니다. 스스로 판단 할 수없는 미래의 독자들이 답변에 대한 커뮤니티의 의견을 알 수 있도록 "좋은"답변은 상향 투표하고 "나쁜"답변은 하향 투표해야합니다.
로스 패터슨

2
@abatishchev 마음에 들지 않는 답변에 투표하는 것이 아니라 유용하지 않은 답변에 투표하는 것에 관한 것 입니다. 투표 버튼의 마우스 오버 텍스트를 참조하십시오.
Mark Booth

0

80 컬럼 카드의 이유 중 하나는 전자 카드 펀치 기계 이전에 사용되었던 '핸드 펀치'와 관련이있을 수 있습니다. 70 년대 초 ICL 시스템 4-50 메인 프레임 컴퓨터 사이트에서 사용한 것입니다. 하나는 세 부분을 펀치해야 했습니까? 캐리지에서 동시에 나이프를 펀칭하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.