새로운 질서 위키

문학적 프로그래밍

문학적 프로그래밍(literate programming)은 프로그램의 설명과 코드를 함께 조직해 사람이 읽고 이해할 수 있는 문서로 만드는 방법론이다. 도널드 커누스는 프로그램을 컴퓨터에 대한 명령뿐 아니라 사람에게 전달하는 글로 다루자고 제안했다. 단순히 주석을 많이 쓰거나 변수 이름을 아름답게 고르는 일로 한정되지 않는다. 설명의 흐름과 코드 조각의 관계를 조직하고, 그 자료에서 실행에 필요한 코드와 읽기 위한 문서를 만들어내는 방식이 중요하다. 코딩을 글쓰기로 배우기가 표현과 학습의 연결을 살핀다면, 이 개념은 설명과 실행물을 함께 유지하는 구체적인 작성 방법을 다룬다.

커누스와 실비오 레비(Silvio Levy)의 CWEB에서는 하나의 원본 파일을 CTANGLE로 처리해 컴파일할 C 코드를 얻고, CWEAVE로 처리해 TeX 문서를 얻는다. 같은 자료에서 두 결과를 만드는 구조라서 설명을 별도 안내문으로만 관리하는 방식과 비교할 수 있다.

  • 숫자 목록을 정렬할 규칙부터 말로 설명해보자.
  • 각 판단에 필요한 코드를 곁에 붙이자. 설명 옆에 놓는 코드를 작게 만드는 연습이다.

도구를 사용하지 않은 이런 연습은 방법의 일부를 익히는 제안이며, 설명과 코드의 동기화를 자동으로 보장하지는 않는다. 코드와 설명의 불일치는 프로그램을 고친 뒤 무엇을 함께 확인해야 하는지 다룰 다음 주제다.

#개념 #프로그래밍 #글쓰기 #교육