Douglas McIlroy에 대한 Wikipedia 기사를 읽고 언급 한 인용문을 찾았습니다.
"프로그래밍의 진정한 영웅은 부정적인 코드를 작성하는 사람입니다."
그게 무슨 뜻이야?
Douglas McIlroy에 대한 Wikipedia 기사를 읽고 언급 한 인용문을 찾았습니다.
"프로그래밍의 진정한 영웅은 부정적인 코드를 작성하는 사람입니다."
그게 무슨 뜻이야?
답변:
중복을 제거하거나 더 간결한 구문을 사용하여 코드 줄을 줄이는 것을 의미합니다.
예를 들어 원래 Apple Lisa 개발자 팀의 유명한 일화 를 참조하십시오 .
Lisa 팀이 1982 년에 소프트웨어를 완성하려고하자 프로젝트 관리자는 프로그래머가 작성한 코드 줄 수에 대한 주간 양식을 제출하도록 요구했습니다. 빌 앳킨슨 (Bill Atkinson)은 이것이 어리 석다고 생각했습니다. 그는 QuickDraw의 영역 계산 루틴을 6 배 더 빠르고 2000 줄 더 짧게 재 작성한 주 동안 "-2000"을 양식에 넣었습니다. 몇 주 후에 관리자들은 그에게 양식을 작성하라는 요청을 중단하고 기꺼이 응했다.
코드 단위로 프로그래머 생산성을 측정하는 라인에는 빌 게이츠 (Bill Gates)의 인용문이 있습니다.
LOC 메트릭이 너무 긴 언어를 사용하고 할당량을 충족시키기 위해 의도적으로 바퀴를 재창조하도록 장려했다고 덧붙이고 싶습니다.
제가 고등학교에 다닐 때, 그리고 예, 우리는 70 년대에 컴퓨터를 가지고 있었지만 돌 칼을 사용하여 동물의 가죽으로 컴퓨터를 만들어야했지만 수학 교사 중 한 명이 프로그래밍 콘테스트를 진행했습니다. 규칙은 우승 프로그램이 올바른 출력을 생성하고 코드 시간 라인의 실행 시간이 가장 작은 프로그램이라는 것이 었습니다. 즉, 프로그램이 100 줄의 코드를 사용하여 5 초 동안 실행하면 점수는 500이됩니다. 다른 사람이 90 줄의 코드를 작성하고 6 초 동안 실행하면 점수는 540이됩니다. 골프와 같이 낮은 점수가 이깁니다.
간결함과 성능을 모두 보상하는 뛰어난 점수 시스템으로 저를 놀라게했습니다.
그러나 기술적으로 우승 기준을 충족 한 출품작은 실격되었다. 문제는 100 미만의 모든 소수 목록을 인쇄하는 것이 었습니다. 실격 된 출품작은 다음과 같이 진행되었습니다 (대부분의 학생들은 BASIC을 사용했습니다).
100 print "2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,"
110 print "67, 71, 73, 79, 83, 87, 89, 91, 97"
이 글을 쓴 학생은 짧고 매우 효율적일뿐만 아니라 프로그래밍에 대한 최소한의 지식 만 있으면 누구나 프로그램을 유지 관리 할 수 있도록 알고리즘이 분명해야한다고 지적했습니다.
혀가 뺨입니다. 평균 코드 라인 당 $ N의 비용이 든다면 "네거티브 라인"을 코딩하는 것이 확실히 승자입니다.
이것은 실제적인 조언으로서, 작업을 수행하는 작은 코드가 동일한 일을하는 큰 코드보다 훨씬 뛰어나다는 것을 의미합니다.
Thilo의 대답 은 역사적으로 가장 정확하지만 "음수 코드"는 또한 성능과 메모리 사용을 포함 할 수 있습니다. 실제로 필요할 때까지 무언가의 실행 또는 할당을 연기하려는 노력입니다.
이 "미루는 대가"는 "무언가를하는 것이 항상 무언가를하는 것보다 빠르다", "가장 빠른 코드는 절대로 실행되지 않는 코드", "만약 당신이 그것을 길게 할 수 있다면 당신은 그것을 할 필요가 없을지도 모른다 "
부정적인 코드를 실현하는 한 가지 기술은 문제의 초기 가정과 정의에 이의를 제기하는 것입니다. "sticky issue # 3"이 범주 적으로 불가능하도록 문제 / 입력 도메인을 재정의 할 수 있다면, sticky issue # 3을 다루는 시간이나 코드를 소비 할 필요가 없습니다. 디자인을 최적화하여 코드를 제거했습니다.