PEP 666 – 어리석은 들여쓰기 거부
- Author:
- Laura Creighton <lac at strakt.com>
- Status:
- Rejected
- Type:
- Standards Track
- Created:
- 03-Dec-2001
- Python-Version:
- 2.2
- Post-History:
- 05-Dec-2001
번역·라이선스 안내
이 비공식 한국어 번역은 원문 Copyright 절의 Public Domain 조건에 따라 제공합니다. 원저자와 공식 원문은 그대로 표시합니다. 수정되지 않은 기준 원문 · 공식 최신판
초록
탭과 공백을 섞는 것이 나쁜 생각이라는 데에는 모두가 동의합니다. 일부 사람들은 이것만으로는 부족하다고 생각합니다. 사람들이 원하는 Python 동작을 무엇이든 정의할 수 있도록 하여, 자신이 원하는 방식으로만 실행되고 원하지 않는 방식으로는 실행되지 않게 하자고 제안합니다. 명령줄 스위치를 사용하여 이를 구현합니다. 프로그래머가 원하는 방식으로 형식이 지정되지 않은 프로그램은 IndentationError를 발생시킵니다.
python -TNone은 탭이 하나라도 있으면 실행을 거부합니다.python -Tn은 탭이 정확히n개의 공백이 아닐 때 실행을 거부합니다.python -TOnly는 블록이 탭 이외의 것으로 들여쓰기되었을 때 실행을 거부합니다.
탭과 공백을 섞는 사람들은 당연히 자신의 프로그램이 실행되지 않는다는 것을 알게 됩니다. 안타깝게도 원격으로 그들에게 가축 몰이 막대기로 찌르는 것과 같은 전기 충격을 줄 방법은 아직 찾지 못했습니다. (누군가 그렇게 할 방법을 알아낸다면, 이 옵션을 PEP에 추가하게 되어 기쁠 것입니다.)
근거
Python-list@python.org(즉, comp.lang.python)는 주기적으로 탭과 공백에 관한 논의로 넘쳐납니다. Python에서는 들여쓰기가 구문적으로 중요하므로 이는 필연적입니다. 이러한 논의는 지금까지 아무것도 해결하지 못했고, 여러 사람을 좌절하고 화나게 만들 뿐입니다. 결국 사람들은 서로에게 무례한 말을 하기 시작하며, 이는 우리 모두에게 슬픈 일입니다. 또한 Python으로 무언가를 만드는 데 쓸 수 있는 소중한 시간을 낭비하고 있다는 점도 슬픈 일입니다. 더욱이 대외 홍보의 관점에서 Python 커뮤니티 전체에 이는 매우 유감스러운 일입니다. 탭과 공백에 관해 글을 올리지 않는 사람들은 (놀랍지도 않게) 보이지 않는 반면, 글을 올리는 사람들은 나머지 우리를 다소 어리석어 보이게 만듭니다.
문제는 ‘당신의 소중한 시간과 내 시간을 낭비하는 일을 그만두십시오.’라고 정중하게 말할 방법이 없다는 것입니다. 이미 설전 한가운데 있는 사람들은 당신이 자신들을 불쌍히 여겨 행동한다고 믿을 만한 상태가 아니며, 자신의 시간은 자신이 원하는 대로 쓸 수 있는 것이라고 아주 정당하게 주장합니다. 그들은 이 끔찍한 논쟁에 당밀 속의 파리처럼 꼼짝 못 하고 있으며, 빠져나올 수 없다는 것은 자명합니다. 빠져나올 수 있었다면 이미 그렇게 했을 것이기 때문입니다.
하지만 오늘은 ‘n’ 키가 달라붙기 때문에 키보드를 청소하는 데 시간을 써야 했습니다. 그래서 이 사람들에게 연민을 느끼는 한편으로 상당히 짜증이 납니다. 제가 이 PEP를 작성하면 Guido에게 이를 신속히 거부해 달라고 요청할 수 있고, 이후 이 논쟁이 다시 시작되면 ‘Guido는 탭을 싫어하는 사람들이나 탭만 사용하는 사람들의 비위를 맞추기 위해 변경하지 않으므로, 이 대화는 시간 낭비입니다.’라고 말할 수 있다고 생각합니다. 그러면 모두가 조용히 a) 자신이 옳고 b) 다른 사람들은 바보이며 c) 자신들은 바보들과 연구실을 함께 사용하지 않아도 되는, 의심할 여지 없이 운이 좋은 사람들이라고 믿을 수 있습니다(이는 논쟁하는 사람들이 _now_ 할 수 있는 일이지만, 아무래도 잊어버린 듯합니다).
그러면 python-list는 새로 온 사람들에게 너무 적대적인지 걱정하는 대신, 자신들이 너무 잘난 체하는지 걱정하는 일로 돌아갈 수 있습니다. 누군가 2.2의 비클래식 클래스에서 __getattr__와 __getattribute__의 차이가 무엇인지 설명해 줄 수도 있을 것입니다. 이는 현재 탭 스레드 한가운데 제가 어리석게 올린 질문입니다. 그 질문에 대한 답을 알고 싶습니다 [1].
이 제안이 받아들여진다면 아마 누군가에게 엄청나게 많은 일을 의미할 것입니다. 하지만 저는 이것이 받아들여지기를 원하지 않으므로 상관하지 않습니다.
참고 자료
Copyright
This document has been placed in the public domain.