E D R , A S I H C RSS

Yet Another Text Menu

이번에도 역시나 텍스트 메뉴를 입력도구로 사용하는 프로그램이다.

보통 ToyProblems를 내줄 때, 입력양식으로 텍스트 메뉴를 이용하라는 요구사항이 주어지기도 한다. JuNe이 보기에는 이것은 "단견"이다. 학생들은 매번 비슷한 방식으로 텍스트 메뉴 프로그램을 만들 것이고, 매번 거기에 일정 시간을 빼앗길 것이다. 재미있게도 텍스트 메뉴를 사용하는 프로그램을 작성하면, 학생들이 만드는 프로그램 역시 그 메뉴의 구조를 닮는다. 이것은 그다지 바람직하지 않은 경우가 많다.

텍스트 메뉴에서 찾는 장점이라면 인터액티브하게 테스트해보기 좋다는 것 정도 될까? 그런데 이는 표준 입출력을 사용하되 버퍼링을 쓰지 않으면 역시 인터액티브하게 테스트 가능하다. 일종의 커맨드 쉘을 제공하는 셈이다(실제로 이를 좀 더 발전시키도록 하면 학생들은 많은 것을 배울 것이다).

차라리 "텍스트 메뉴" 자체를 Event Driven Programming 개념을 전달하기 위한 toy problem으로 쓰는 건 어떨까? 간단한 구조를 통해, 콜백 함수가 무엇인지 등을 배울 수 있을 것이다.

텍스트 메뉴를 쓰지 않으면 어떻게 하라는 말인가?

유닉스의 철학을 배우자. 유닉스는 작고 잘 만들어진 레고 블럭들을 조립해서 멋진 성을 만들게 해준다. SoftwareTools라는 고전의 교훈이다.

표준 입, 출력으로 간단하게 입력 받고 출력하게 하라. 입력자료는 다른 프로그램의 출력일 수 있다고 가정하고, 출력자료는 다른 프로그램의 입력으로 들어갈 수 있다고 가정하라.

ICPC 등 외국 컴퓨터 프로그래밍 경진 대회를 보면 대부분 이런 식으로 문제가 나온다.

YetAnotherTextMenu? No, thanks.

--JuNe
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:28:28
Processing time 0.0563 sec