CnUnix

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ CnUnix ] in KIDS
글 쓴 이(By): shanx (rlatio)
날 짜 (Date): 2002년 4월 17일 수요일 오전 01시 44분 19초
제 목(Title): Re: [질문] CWEB ???

저도 아주 오래전에 CWEB으로 프로그래밍 해 본 적이 있습니다.
원래는 Knuth가 TeX을 만들면서 파스칼을 기반으로 한 WEB이란 이름의
Literature programming language를 창안했습니다.
TeX이 WEB이란 언어로 짜여져 있다는 이야기입니다.
아마도 WEB이 최초의 LP 언어가 아닐까합니다.

TeX의 경우에 tex.web이 TeX의 소스 코드죠.
이걸 tangle로 돌리면 파스칼로 나오고 이걸 컴파일하면 TeX실행코드가 나옵니다.
tex.web를 weave로 돌리면 tex.tex이라는 TeX문서로 나오죠.
이걸 다시 앞에서 tangle로 만든 TeX으로 돌리면 TeX의 소스 코드의 문서가 
나오게 됩니다.
참고로 TeX의 5권의 시리즈 책 중에 하나인 TeX 소스코드 책이 이렇게 만들어진 
겁니다.

똑같은 코드에서부터 결과물이 하나는 컴퓨터를 위한 실행파일이 나오고 
또 하나는 사람이 쉽게 읽을 수 있는 형태의 소스 코드의 상세한 문서가
나오는 거죠.

Literature programming이라는 것이 사람이 소스코드를 잘 이해하고 조직화시켜서
마치 책을 쓰듯 프로그래밍을 합니다.
Top-down, buttom-up 스타일이 적절히 쓰이면서 프로그램 소스의 구조와 알고리즘
을 완전한 문서 형식으로 프로그래밍을 하게 됩니다.

요샌 web, cweb말고도 많은 LP언어가 있는데 요샌 특히 HTML로 소스 문서를 만들어
주기도 합니다.

그런데 실용적인 측면에서 C대신 CWEB을 쓰면 CWEB을 모르는 다른 프로그래머가
이해를 못하고 짜는 사람도 나중엔 문서화하면서 프로그래미을 해야하니 
머리가 아파지는 경우가 많아서 역시 LP 스타일은 실용성보다는 
프로그래밍 교육용에 더  적합하다고 볼 수 있습니다.

엄밀히 말하면 javadoc은 LP가 아니지만 넓은 의미에서 보면 
javadoc도 LP의 일종이라 보면 됩니다.
javadoc 같은 경우엔 자바 언어 자체가 바뀌지 않고 단지 커멘트 스타일만
추가되고 소스 코드 전체가 문서화 되지 않고 API 부분만 문서화 되니까
실용적인 측면이 강조되었다 보시면 됩니다.

[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.