상사는 "hello world"프로그램을 작성하도록 요청합니다. 코드 라인에 대한 비용을 지불하므로 가능한 한 복잡하게 만들고 싶습니다. 그러나 말도 안되는 줄을 추가하거나 쓸모가 없거나 난해한 것을 추가하면 코드 검토를 통해 얻을 수 없습니다. 그러므로 도전은 :
코드의 모든 복잡성에 대해 "정의"를 제공 할 수있는 조건에서 가능한 한 복잡한 "hello world"프로그램을 작성하십시오.
프로그램의 필수 동작은 한 줄의 "Hello world"(인용 부호는 없지만 끝에 줄 바꿈)를 출력 한 다음 성공적으로 종료하는 것입니다.
"정의"는 다음을 포함합니다 :
- 유행어 호환성 ( "현대 소프트웨어는 객체 지향입니다!")
- 일반적으로 좋은 프로그래밍 관행 ( "모두가 모델과 뷰를 분리해야한다는 것을 알고 있음")
- 유지 보수성 ( "이렇게하면 나중에 더 쉽게 XXX 할 수 있습니다")
- 물론 실제 코드에 (다른 상황에서) 사용하는 것을 상상할 수있는 다른 모든 정당화.
어리석은 정당화는 인정되지 않을 것입니다.
또한 언어 선택을 "정의"해야합니다. 따라서 본질적으로 장황한 언어를 선택하면 왜 "올바른"선택인지를 정당화해야합니다. Unlambda 또는 Intercal과 같은 재미있는 언어는 사용할 수 없습니다 (언어 를 사용 하는 데 있어 아주 좋은 근거를 제시 할 수 없다면 ).
자격 항목의 점수는 다음과 같이 계산됩니다.
- 각 진술에 대해 1 포인트 (또는 귀하가 선택한 언어로 진술에 해당하는 것이 무엇이든).
- 함수, 유형, 변수 등의 각 정의에 대해 1 점 (해당되는 경우 기본 함수 제외).
- 각 모듈 사용 문장, 파일 포함 지시문, 네임 스페이스 사용 문장 또는 이와 유사한 것에 대해 1 포인트.
- 각 소스 파일 당 1 포인트
- 필요한 각 포워드 선언에 대해 1 포인트 (코드를 다시 정렬하여 제거 할 수있는 경우 선택한 배열이 "올바른"이유를 "정의"해야합니다).
- 각 제어 구조에 대해 1 포인트 (if, while, for 등)
각 한 줄을 "정의"해야합니다.
선택한 언어가이 체계를 적용 할 수 없을만큼 충분히 다른 경우 (및 사용에 대한 "맞춤형"을 제공 할 수있는 경우), 선택한 언어에 대해 위와 가장 유사한 스코어링 방법을 제안하십시오.
참가자는 참가 점수를 계산하여 답변에 기록해야합니다.