KTUGFaq

KTUG FAQ

·Î±×ÀÎ:
ºñ¹Ð¹øÈ£:
°¡ÀÔ
Every purchase has its price.
FrontPage › LiterateProgramming

r1.71°ú ÇöÀç ¹öÀüÀÇ Â÷ÀÌÁ¡

@@ -1,3 +1,7 @@
attachment:lpcover.jpg
À§ ÄÚµå´Â KnuthÀÇ Àú¼­ ''Literate Programming'' ÀÇ Ç¥Áö¿¡ ³ª¿ÍÀÖ´Â ÄÚµåÀÔ´Ï´Ù.
[[TableOfContents]]

== ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö À̶õ? ==
@@ -37,281 +41,46 @@
* [http://proedvid.stanford.edu/seminars/knuth/871021-cs209/871021-cs209-100.wmv Literate Programming(1)] (°­ÀÇ ¿ä¾àº»: attachment:lp1.pdf)
* [http://proedvid.stanford.edu/seminars/knuth/871023-cs209/871023-cs209-100.wmv Literate Programming(2)] (°­ÀÇ ¿ä¾àº»: attachment:lp2.pdf)

== CWEB ½Ã½ºÅÛ = =
$$\hbox{CWEB}=\hbox{C programming language}+\hbox{\TeX}$$
from KTUGContrib:3195 (by ÀÛÀº³ª¹«)
KnuthÀÇ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀ¸·Î °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â °ÍÀÌ ¾Æ¸¶ CWEBÀÏ °ÍÀÔ´Ï´Ù. ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀº ±âº»ÀûÀ¸·Î Á¶ÆǾð¾î¿Í ÄÄÇ»ÅÍÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ±¸¼ºµÇ´Âµ¥, CWEBÀº °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â Á¶ÆǾð¾îÀÎ TeX°ú °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â C¾ð¾îÀÇ Á¶ÇÕÀ¸·Î ±¸¼ºµÈ ½Ã½ºÅÛÀÔ´Ï´Ù. µû¶ó¼­ CWEBÀÌ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ½Ã½ºÅÛÀ̶ó°í Çؼ­ ÀÌ»óÇÒ °ÍÀÌ Çϳªµµ ¾ø°ÚÁö¿ä?
=== CWEB ¼Ò°³ ¿¡ ´ëÇÑ ¾ÖÁ¤ ===
¾Æ·¡ÀÇ ±ÛÀº CWEB »ç¿ëÀÚ ¼³¸í¼­(cwebman)ÀÇ ''Introduction''À» ¹ø¿ªÇÑ ³»¿ëÀÔ´Ï´Ù [http://www.
CWEBÀÇ ¹è°æÀÌ µÇ´Â öÇÐÀº, ÀÚ½ÅÀÌ ÀÛ¼ºÇÏ°í ÀÖ´Â ÇÁ·Î±×·¥¿¡ ´ëÇؼ­ °¡´ÉÇÑ ÃÖ»óÀÇ ¹®¼­¸¦ Á¦°øÇÏ°íÀÚ ÇÏ´Â ÇÁ·Î±×·¡¸Ó´Â
¹®¼­ Á¶ÆÇÀ» À§Çؼ­ TeX°ú °°Àº ¾ð¾î¿Í ÇÁ·Î±×·¡¹ÖÀ» À§Çؼ­ C ¾ð¾î¿Í °°Àº µÎ °¡Áö µµ±¸°¡ µ¿½Ã¿¡ ÇÊ¿äÇÏ´Ù´Â °ÍÀÔ´Ï´Ù tug.
ÀÌ µÎ °¡Áö ¾ð¾î Áß ¾î´À ÇÑ °¡Áö¸¸ °¡Áö°í´Â ÃÖ»óÀÇ ¹®¼­¸¦ Á¦°øÇÒ ¼ö ¾ø½À´Ï´Ù org/TUGboat/Contents/contents26-3. ÇÏÁö¸¸ ÀÌ µÎ °¡Áö ¾ð¾î¸¦ ÀûÀýÈ÷ Á¶ÇÕÇϸé,
°¢°¢ÀÇ ¾ð¾î°¡ Á¦°øÇÒ ¼ö ÀÖ´Â ±â´Éº¸´Ù ´õ¿í À¯¿ëÇÑ ±â´ÉÀ» °®Ãá ½Ã½ºÅÛÀ» ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±×·¥ÀÇ ±¸Á¶´Â ³»ºÎÀûÀ¸·Î ¸¹Àº ÀÛÀº ºÎºÐµéÀÌ ¼­·Î ±ä¹ÐÈ÷ ¿¬°áµÇ¾î ÀÖ´Â "À¥ html TUGboat Volume 26 ( web 2005) ¡± À̶ó°í »ý°¢ÇÒ ¼ö
ÀÖ½À´Ï´Ù. ±×·¯ÇÑ ÇÁ·Î±×·¥À» ¹®¼­È­Çϱâ Çϱâ À§Çؼ­ ±× À¥À» ±¸¼ºÇÏ´Â °¢°¢ÀÇ °³º°ÀûÀÎ ºÎºÐµéÀ» ¼³¸íÇÏ°í, ±× ºÎºÐµéÀÌ
±×ÀÇ ÀÌ¿ôµé°ú ¾î¶°ÇÑ ¿¬°üÀÌ ÀÖ´ÂÁö¸¦ ¼³¸íÇÏ´Â °ÍÀÌ ÁÁÀº ¹æ¹ýÀÏ °ÍÀÔ´Ï´Ù No. TeXÀ¸·Î Á¦°øµÇ´Â Á¶ÆÇ µµ±¸´Â °¢ ºÎºÐÀ»
Àбâ ÁÁ°Ô ÇØ ÁÜÀ¸·Î½á ±×ÀÇ ±¸Á¶¸¦ ½±°Ô ÆÄ¾Ç ÇÒ ¼ö ÀÖ°Ô ÇØÁÖ°í, C ¾ð¾î·Î Á¦°øµÇ´Â ÇÁ·Î±×·¡¹Ö µµ±¸´Â ¾Ë°í¸®ÁòµéÀ»
º¸´Ù ¼öÇÐÀûÀ¸·Î ¸íÈ®ÇÏ°Ô ±â¼úÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù 3]¿¡ [http://www. ÀÌ·¯ÇÑ µÎ °¡Áö µµ±¸¸¦ Á¶ÇÕÇÔ À¸·Î¼­, ¼ÒÇÁÆ®¿þ¾îÀÇ º¹ÀâÇÑ ±¸Á¶¸¦
½±°Ô ÆÄ¾Ç ÇÒ ¼ö ÀÖµµ·ÏÇÏ´Â ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÕ´Ï´Ù tug. µ¿½Ã¿¡ ±× ¹®¼­È­µÈ ÇÁ·Î±×·¥Àº ±â°èÀûÀ¸·Î ¼ÒÇÁÆ®¿þ¾î ½Ã½ºÅÛÀ¸·Î
º¯È¯µÇ¾î ½ÇÇà ½Ã½ºÅÛÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù org/TUGboat/Articles/tb26-3/tb84knut.
CWEB ½Ã½ºÅÛÀº CWEAVE ¿Í CTANGLE À̶ó°í ºÒ¸®´Â µÎ °³ÀÇ ÇÁ·Î±×·¥À¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù pdf Interview with Donald E. CWEB ÇÁ·Î±×·¡¹ÖÀ» ÇÒ
¶§´Â, CWEB ÆÄÀÏ ÀÌ Knuth]¶ó °í ºÒ¸®´Â ÇϳªÀÇ ÆÄÀÏ¿¡ C ÄÚµå¿Í ¹®¼­È­¸¦ À§ÇÑ Äڵ带 µ¿½Ã¿¡ ÀÛ¼ºÇÏ°í, ÀϹÝÀû Á¦¸ñÀ¸·Î something.w
°ú °°ÀÌ À̸§ Áþ½À´Ï´Ù. ´ÙÀ½°ú °°Àº ¸í·É¾î ¡®cweave something¡¯´Â something.tex ÆÄÀÏÀ» »ý¼ºÇÏ°í, ÀÌ ÆÄÀÏÀº TEX
À» ÅëÇÏ¿© something.wÀ» ÆäÀÌÁö ·¹À̾ƿô°ú ÇÁ·Î±×·¥ KnuthÀÇ µé¿©¾² ÀÎÅÍºä ±â , ±×¸®°í ¿¹¾à¾î³ª º¯¼ö¸í ȤÀº ¼öÇÐ ±âÈ£µéÀ» °¢°¢
´Ù¸¥ ÆùÆ®·Î Ç¥ÇöÇÏ´Âµî ¿ì¸®µéÀÌ ½±°Ô ÀÐÀ» ¼ö ÀÖµµ·Ï ¸ÚÁø Ãâ·Â¹°·Î ¸¸µé¾î ³À´Ï´Ù. ÀÌ Ãâ·Â¹°¿¡´Â cweave ¸í·É¾î »ç°¡ ÀÚ
µ¿ÀûÀ¸·Î ¸¸µé¾î ³½ »öÀεµ Æ÷ÇԵ˴ϴÙ. ºñ½ÁÇÏ°Ô, ¡®ctangle something¡¯ À̶õ ¸í·ÉÀ» ½Ç ÇàÇϸé something.c¶õ À̸§ÀÇ
C ÆÄÀÏÀ» ¾òÀ» ¼ö ÀÖ°í, ÀÌ ÆÄÀÏÀº ÄÄÆÄÀÏÀ» ÅëÇÏ¿© ½ÇÇà ÆÄÀÏÀ» ¾òÀ» ¼ö ÀÖ ·È½À´Ï´Ù.
CWEBÀº C ÇÁ·Î±×·¡¹Ö¿¡ ´Ü¼øÈ÷ ¹®¼­È­ µµ±¸¸¦ Á¦°øÇÑ´Ù´Â °Í ¿Ü¿¡, C ¾ð¾î¸¦ º¸´Ù °­È­½ÃÅ°´Â Ãø¸éÀÌ ÀÖ½À´Ï´Ù. Áï
º¸ÅëÀÇ C ÇÁ·Î±×·¡¹Ö ±â»ç¿¡¼­ ´Â ºÒ°¡´ÉÇÑ, Àüü ÇÁ·Î±×·¥ TeXÀ» ¿©·¯ ÀÛÀº Á¶°¢ ¸¸µé ·Î ³ª´©°í ±× Á¶°¢µéÀ» ¿©±â Àú±â »õ·Ó°Ô ¹èÄ¡ÇÒ ¼ö
ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î ÇÁ·Î±×·¥À» ¼øÂ÷ÀûÀ¸·Î ¼³¸íÇÏ´Â °ÍÀ̾ƴ϶ó, ¾Ë°í¸®Áò ȤÀº ÀÚ·á ±¸Á¶ÀûÀ¸·Î ÀǹÌÀûÀ¸·Î °ü·ÃÀÖ´Â
ºÎºÐµéÀ» ¼½¼ÇÀ̶ó´Â À̸§À¸·Î ÇÑ °÷¿¡ ¹èÄ¡ À§Çؼ­ ÀÚ¼¼È÷ ¼³¸íÇÔÀ¸·Î½á °¢ ¼½¼ÇÀ» ÀÚ¼¼È÷ ¼³¸íÇÏ°í, ±×·¯ÇÑ ¼½¼ÇµéÀÇ
¿¬°ü °ü°è¸¦ ¼³¸íÇÔÀ¸·Î Àüü ÇÁ·Î±×·¥À» º¸´Ù ÀÌÇØÇϱ⠽±°Ô ¼³¸íÇÒ ¼ö ÀÖ½À´Ï´Ù. CTANGLE ÇÁ·Î±×·¥Àº ÀÌó·³ C
¹®¹ý¿¡ ¾î ±ß³­ ¹æ½ÄÀ¸·Î ÀÛ¼ºµÈ CWEB ÇÁ·Î±×·¥ ¶² ÅøÀ» C ¾ð¾î ¹®¹ý¿¡ ¸Â°Ô ´Ù½Ã Àç¹èÄ¡ Çϱ⠶§¹®¿¡ ctangle À̶ó´Â À̸§À» ¾ò°Ô
µÇ¾ú½À´Ï´Ù. CWEB À¸·Î ÇÁ·Î±×·¡¹ÖÇÏ¸é ¾òÀ» ¼ö ÀÖ´Â ÀÕÁ¡Àº °¢ ¼½¼ÇÀ» °³º°ÀûÀ¸·Î ¼³¸íÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀÌ¿ëÇؼ­
ÇÁ·Î±×·¥¿¡ »ç¿ë µÈ ¾Ë°í¸®ÁòµéÀ» ÀÌ·¯ÇÑ ¼½¼ÇµéÀ» ÀÌ¿ëÇÏ¿© ¹­¾î¼­ ÇÑ °÷¿¡¼­ ¡°untangle¡±ÀÇ ÇüÅ·ΠǥÇöÇÒ ¼ö ÀÖ´Ù Çß´Â
Á¡ÀÔ´Ï´Ù. CWEAVE ÇÁ·Î±×·¥Àº CWEB ÆÄÀÏÀ» ÀÔ·Â ¹Þ¾Æ¼­ °¢ ¼½¼ÇÀ» ±¸¼ºÇÏ´Â TeX ºÎºÐ°ú C ºÎºÐÀ» ¼­·Î ¿«Àº ÈÄ¿¡
(intertwine) ±×·¯ÇÑ sectionµé·Î ±¸¼ºµÈ Á÷¹°(fabric)·ÎºÎÅÍ ÇϳªÀÇ ±¸Á¶È­µÈ ¹®¼­¸¦ Â¥³»±â(weave) ¶§¹®¿¡ cweave ¶ó´Â
À̸§À» ¾ò¾ú½À´Ï´Ù.(ÀÌÇØ°¡ µÇ½Ê´Ï±î?) ¿µ¾î ´Ü¾î ¡°weave¡±¿¡ ÇØ´çÇÏ´Â µ¶ÀÏ ´Ü¾î°¡ ''webe''ÀÌ°í, ±×¿¡ ÇØ´çÇÏ´Â ¶óƾ¾î°¡
''texe'' ¶ó´Â °Í Áú¹®¿¡ ´Â ¾Æ¸¶µµ ÀÏÁ¾ÀÇ ±íÀº ¿¬°üÀ» °ÍÀÔ´Ï´Ù.
¿©·¯ºÐÀÌ CWEBÀ» »ç¿ëÇÏ°íÀÚ ´ëÇÑ ´Ù¸é, ¹Ýµå½Ã C ÇÁ·Î±× ·¡¹Ö ¾ð¾î¿¡ Àͼ÷ÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù. ÃÖ¼ÒÇÑÀÇ TeX¿¡ ´ë ÇÑ Áö½Äµµ
ÀÖÀ¸¸é ÁÁ°ÚÁö¸¸, CWEB ÇÁ·Î±×·¡¹ÖÀ» Çϸ鼭 TeX¿¡ ´ëÇÑ Áö½ÄÀº ÀÚµ¿ÀûÀ¸·Î ¾ò°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÌ´Â TeX ´ä¿¡¼­ »ç¿ëµÇ´Â
´Ü¼øÇÑ ÅؽºÆ®´Â TeX¿¡ ´ëÇÑ Áö½ÄÀÌ °Å KnuthÀÇ ¾ø¾îµµ °¡´ÉÇϱ⠶§¹®ÀÔ´Ï´Ù. ¹°·Ð C ¾ð¾î¿Í TeX¿¡ ¸ðµÎ Àͼ÷ÇÑ µ¶ÀÚ´Â CWEB
À» ¸Å¿ì ½±°Ô ¹è¿ï ¼ö ÀÖ½À´Ï´Ù.
¾Æ·¡ ÷ºÎÆÄÀÏÀº CWEBÀÇ ¸Þ´º¾óÀÎ cwebman.texÀÇ ÃʹݺÎÀÇ ³»¿ëÀÎ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö °ú CWEBÀÇ °³³äÀ» ¹ø¿ª ¿¡ ´ëÇÑ °ÍÀÔ´Ï´Ù. ¸Þ´º¾óÀÇ ÈĹݺδ ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹Ö¿¡ °ü·ÃµÈ ºÎºÐÀ̶ó »ý·«Çß½À´Ï´Ù.
attachment:korean_cwebman.pdf
CWEB ½Ã½ºÅÛ ¸»°íµµ ¸¹Àº ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛµéÀÌ Á¸ÀçÇÕ´Ï´Ù. [http://www.literateprogramming.com literateprogramming.com] À¥»ç ÀÌÆ®¸¦ ¹æ¹®ÇØ º¸½Ã¸é, ¸Å¿ì ´Ù¾çÇÑ ½Ã½ºÅÛµé ¶ûÀ» Á¢ÇÒ ¿³º¼ ¼ö ÀÖ ½À´Ï´Ù. ÀÌ »çÀÌÆ®´Â KnuthÀÇ À¥ÆäÀÌÁö¿¡µµ ¼Ò°³µÈ ¸Å¿ì ÈǸ¢ÇÑ À¥»çÀÌÆ®ÀÔ´Ï´Ù.
=== CWEB »ç¿ë¹ý ===
$$\hbox{cweb}=\hbox{ctangle}+\hbox{cweave}$$
* È®ÀåÀÚ°¡ .wÀÎ ÅؽºÆ® ÆÄÀÏ, ¿¹¸¦µé¾î foo.w À̶õ ÆÄÀÏÀ» ¸¸µì´Ï´Ù.
foo.w´Â web ȤÀº cweb ÆÄÀÏÀε¥, ÇÁ·Î±×·¡¹Ö ¼Ò½º¿Í ±×¿¡ ÇØ´çÇÏ´Â µµÅ¥¸ÕÆ®¸¦ µ¿½Ã¿¡ °¡Áö°í ÀÖ´Â ÆÄÀÏÀÔ´Ï´Ù. cweb ÇÁ·Î±×·¡¹ÖÀ» ÇÒ¶§´Â, ÀÌó·³ ÇÁ·Î±×·¡¹Ö°ú µµÅ¥¸ÕÆ®¸¦ µ¿½Ã¿¡ »ý°¢ÇØ¾ß ÇÕ´Ï´Ù.
* ¾Æ·¡¿Í °°Àº ¸í·É¾î·Î cweb ÆÄÀÏ foo.w·ÎºÎ ÅÍ ÇÁ·Î±×·¡¹Ö ¼Ò½º ÆÄÀÏ foo.c(ȤÀº foo.cpp)À» ¸¸µé¾î³À´Ï´Ù.
{{{
% ctangle foo
}}}
* ctangle·Î ºÎÅÍ »ý¼ºµÈ foo.c¸¦ gcc°°Àº C ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇؼ­ ½ÇÇà ÆÄÀÏÀ» ¸¸µé¾î ³À´Ï´Ù.
* ´ÙÀ½ÀÇ ¸í·É¾î·Î´Â foo.w·Î ºÎÅÍ TeX ÆÄÀÏÀÎ foo.texÀ» ¾ò½À´Ï´Ù.
{{{
% cweave foo
}}}
* cweave·Î ºÎÅÍ ³ª¿Â foo.texÀº PlainTeXÀ» ÀÌ¿ëÇÏ¿© foo.dvi¸¦ ¸¸µì´Ï´Ù.
{{{
% tex foo
}}}
¶Ç´Â, pdfÀÇ ±â´ÉÀ» ½ÊºÐ ¹ßÈÖÇÏ°í ½ÍÀ¸½Ã´Ù¸é, ´ÙÀ½°ú °°ÀÌ ÇÏ½Ã¸é µË´Ï´Ù.
{{{
% tex "\let\pdf+ \input foo"
}}}
* ¿ø·¡ÀÇ cweb ½Ã½ºÅÛÀº PlainTeX ¸ÅÅ©·Î¸¦ ÀÌ¿ëÇÕ´Ï´Ù¸¸, LaTeXÀ» ÀÌ¿ëÇÑ cwebµµ ÀÖ ½À´Ï´Ù.
(LaTeX¿ë CWEB: attachment:cweb-user.pdf)
À§ °úÁ¤À» ±×¸²À¸·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °°½À´Ï´Ù.
attachment:cweave.jpg
=== Microsoft Visual C++¿¡¼­ CWEB ÇÁ·Î±×·¡¹Ö Çϱâ ===
CWEB ÇÁ·Î±×·¡¹Ö ÀÛ¾÷Àº ÀüÅëÀû(?)À¸·Î ¸í·ÉÇà¿¡ ¼­ ÀÌ·ç¾îÁ® ¿Ô½À´Ï´Ù (¹Ï°Å³ª ¸»°Å³ª). ÇÏÁö¸¸ ½Ã°£ÀÌ È帧¿¡ µû¶ó ´õÀÌ»óÀº °í¸®Å¸ºÐÇÏ°Ô º¸ÀÏ ¼öµµ ÀÖ´Â ¸í·ÉÇà¿¡¼­ÀÇ ÀÛ¾÷À» °íÁýÇÒ ¼ö ¾ø´Â »óȲÀÌ µÇ¾ú³ª ¿Å°Ü º¾ ´Ï´Ù. °³¹ß ȯ°æÀº IDE¶ó´Â ¼ö·ÁÇÏ°í Æí¸®ÇÑ ÅëÇÕ °³¹ß ȯ°æÀ¸·Î ´ëüµÈÁö ÀÌ¹Ì ¿À·¡ÀÔ´Ï´Ù. ÀÌ¿¡ cweb ÇÁ·Î±×·¡¹Ö ÀÛ¾÷ ¿ª½Ã º¯È­ÀÇ È帧¿¡ ¹ß ¸ÂÃ߾ IDEÀÇ ´ëÇ¥°ÝÀ̶ó°í ÇÒ ¼ö ÀÖ´Â Microsoft Visual C++¿Í ¼ÕÀ» Àâ¾Ò½À´Ï´Ù.
attachment:cwebmsvc.pdf
À§ ¹®¼­´Â Visual C++¿¡¼­ cweb ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§ÇÑ ¼¼Æà ¹æ¹ý°ú »ç¿ë ¹æ¹ý, ¿©·¯°¡Áö cweb ÆÁÀÌ µé¾îÀÖ´Â À¯¿ëÇÑ ¹®¼­¶ó°í »ý°¢µË´Ï´Ù.

=== CWEB ¿¹Á¦ ===
Àú´Â C ÇÁ·Î±×·¡¹ÖÀ» ÇؾßÇÒ ¶§¸é, ¾ðÁ¦³ª CWEBÀ¸·Î ÇÁ·Î±×·¡¹ÖÀ» ÇÏ°í Àִµ¥, CWEB ÇÁ·Î±×·¡¹ÖÀº Á¤¸» Àç¹ÌÀÖ½À´Ï´Ù. Á¦ ¸»À» ¸ø ¹ÏÀ¸½Ã°Ú´Ù¸é, Knuth ¸»Àº ¹ÏÀ¸½Ã°ÚÁÒ? Knuth´Â Á¾Á¾ ±×ÀÇ Áý ¿¬±¸½Ç¿¡¼­ ³ª¿Ã ¶§ ÀÌ·¸°Ô ¸»ÇѴٳ׿ä. "'' CWEB programming The tools I used were home grown and became known as Literate Programming. I am enormously biased about Literate Programming, which is such fun!''"
* Knuth°¡ ¼Õ¼ö ÀÛ¼ºÇÑ CWEBÀÇ ´ëÇ¥ÀûÀÎ ¿¹Á¦: attachment:wc surely the greatest thing since sliced bread. pdf
* CWEB ÇÁ·Î±×·¥ÀÇ ÁÖ¿Á°°Àº ¿¹Á¦µé (http://www I continue to use it to write programs almost every day, and it helps me get efficient, robust, maintainable code much more successfully than any other way I know. literateprogramming Of course, I realize that other people might find other approaches more to their liking; but wow, I love the tools I¡¯ve got now. com/fexamples.html)
* Vector rotation CWEB ¿¹Á¦: attachment:vrotate.tar I couldn¡¯t have written difficult programs like the MMIX meta-simulator at all if I hadn¡¯t had Literate Programming; the task would have been too difficult. gz
* Á¸º¥Æ²¸®ÀÇ '' Programming Pearls'' Á¦1Ä÷³¿¡ ³ª¿À´Â ºñÆ®¸Ê Á¤·ÄÀ» cwebÀ¸·Î ÀÛ¼ºÇÑ ¿¹Á¦: attachment:bitmap.pdf "

=== ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö °ü·Ã ±Û ===
* attachment:fine_art_programming.pdf : [http://www.freesoftwaremagazine.com/ Free Software Magazine] Issue 6¿¡ ½Ç¸° ±Û·Î½á, Free software¿Í ¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀÇ ¹Ì·¡¿¡ ´ëÇÑ ±ÛÀÔ´Ï´Ù. Àо ¸¸ÇÕ´Ï´Ù. (Âü°í·Î ÀúÀÚ Matt BartonÀº St. Cloud State University in MinnesotaÀÇ ¿µ¹®ÇÐ ±³¼ö¶ó°í ÇÕ´Ï´Ù.)
=== ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö °ü·Ã »çÀÌÆ® ===
* http://www-cs-faculty.stanford.edu/~uno/
* http://www-cs-faculty.stanford.edu/~uno/lp.html
* http://www.literateprogramming.com/
* http://www.literateprograms.org
* http://www-cs-faculty.stanford.edu/~uno/cweb.html
* http://kldp.net/docman/view.php/842/453/intro.html

== ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛ ==
¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀº ÇÁ·Î±×·¥ ¼Ò½º¿Í ±×¿¡ ´ëÇÑ ¹®¼­È­ ÀÛ¾÷À» µ¿½Ã¿¡ ÇÏ´Â °ÍÀÌ´Ù. µû¶ó¼­ ¹®ÇÐÀû ÇÁ·Î±×·¥ÀÇ ¼Ò½º´Â Å©°Ô ÇÁ·Î±×·¡¹Ö ºÎºÐ°ú ¹®¼­È­ ºÎºÐÀ¸·Î ³ª´µ¾îÁø´Ù. ÇÁ·Î±×·¡¹Ö ºÎºÐÀº ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ µû¶ó ´Ù¸£Áö¸¸, ¹®¼­È­ ºÎºÐÀº ±âº»ÀûÀ¸·Î LaTeX ȤÀº plain TeXÀ» ÀÌ¿ëÇÑ´Ù. µû¶ó¼­ ¹®¼­È­ ºÎºÐ¿¡ ¾î¶² TeXÀ» »ç¿ëÇÏ´À³Ä¿¡ µû¶ó ³ª´· ¼ö ÀÖ°Ú´Ù.
=== LaTeXÀ» ÀÌ¿ëÇÑ CWEB ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ===
WEB/CWEB Àº ±âº»ÀûÀ¸·Î TeX À» »ç¿ëÇϵµ·Ï ¼³°èµÇ¾î ÀÖÁö¸¸ ¿©·¯°¡Áö ¹æ¹ýÀ» ÀÌ¿ëÇؼ­ LaTeX ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. Å©°Ô ´ÙÀ½ÀÇ µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.
* CWEB [noweb]À» ÀÌ¿ëÇÏ´Â ¹æ¹ý
* NOWEB [CWEB]À» ÀÌ¿ëÇÏ´Â ¹æ¹ý

==== [noweb] À» ÀÌ¿ëÇÏ´Â ¹æ¹ý ====
[noweb] Àº LaTeX À» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï, ¶Ç ¿©·¯°¡Áö ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï º¯°æÇÑ, WEB ÀÌ´Ù. ½ÇÁ¦·Î LaTeX À» »ç¿ëÇϱâ À§Çؼ­´Â [noweb] À» »ç¿ëÇÏ´Â °ÍÀÌ Á¤´äÀ̶ó°í º¼ ¼ö ÀÖ´Ù.
* ÀåÁ¡ : ½ºÅ¸ÀÏ ÆÄÀϸ¸À» Á¦°øÇÔÀ¸·Î¼­ ±âÁ¸ÀÇ Å¬·¡½ºµé°ú È¥¿ëÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ¿©·¯°¡Áö ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ Á¦°øÇÑ´Ù.
* ´ÜÁ¡ : nawk µî ´Ù¸¥ À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ¿© ¼Ò½º¸¦ ÄÄÆÄÀÏ ÇÏ°Ô µÇ¹Ç·Î Á÷°üÀûÀÌÁö ¾ÊÀº ¼³Ä¡°úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. ±âÁ¸ÀÇ CWEB ¾ð¾î¿Í´Â Á¶±Ý ´Ù¸£´Ù.
==== CWEB À» ÀÌ¿ëÇÏ´Â ¹æ¹ý ====
CWEBÀº LaTeXÀ» ÀÌ¿ëÇÑ ¹æ¹ýµµ ÀÖÁö¸¸, LaTeXÀ» ÀÌ¿ëÇÏ·Á¸é, [noweb]À» ±ÇÀåÇÑ´Ù.
CWEBÀ¸·Î ÀÛ¼ºµÈ w ÆÄÀÏÀ» ±â¹ÝÀ¸·Î ÇÑ´Ù. cweb.cls ¶ó°í Çϴ Ŭ·¡½º ÆÄÀÏÀÌ ÀÖÀ¸¹Ç·Î À̸¦ ÀÌ¿ëÇÏ°Ô µÈ´Ù.
* ÀåÁ¡ : ±âÁ¸ÀÇ w ÆÄÀϵéÀ» ¸î°¡Áö º¯°æÇÔÀ¸·Î¼­ LaTeX »ó¿¡¼­ »ç¿ëÀÌ °¡´ÉÇÏ´Ù.
* ´ÜÁ¡ : Ŭ·¡½º ÆÄÀϸ¸À» Á¦°øÇÔÀ¸·Î¼­ º»°ÝÀûÀÎ È®ÀåÀÌ °ÅÀÇ ºÒ°¡´É ÇÏ´Ù. ¿¹¸¦ µé¾î¼­ ¸Þ¸ð¾Æ¿Í °°ÀÌ »ç¿ëÇϱâ À§Çؼ­´Â Ŭ·¡½º ÆÄÀÏÀÎ cweb.cls ¸¦ .sty ÆÄÀÏ·Î º¯°æÇØ¾ß Çϴµ¥, ÀÌ ³ë·ÂÀº °ÅÀÇ ¹«ÀÇ¹Ì ÇÏ´Ù°í »ý°¢ÀÌ µÈ´Ù.
==== NOWEB À» ÀÌ¿ëÇÏ´Â ¹æ¹ý ====
NOWEB Àº LaTeX À» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï, ¶Ç ¿©·¯°¡Áö ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï º¯°æÇÑ, °£·«È­ÇÑ CWEB ÀÌ´Ù. ½ÇÁ¦·Î LaTeX À» »ç¿ëÇϱâ À§Çؼ­´Â NOWEB À» »ç¿ëÇÏ´Â °ÍÀÌ Á¤´äÀ̶ó°í º¼ ¼ö ÀÖ´Ù.
* ÀåÁ¡ : ½ºÅ¸ÀÏ ÆÄÀϸ¸À» Á¦°øÇÔÀ¸·Î¼­ ±âÁ¸ÀÇ Å¬·¡½ºµé°ú È¥¿ëÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ¿©·¯°¡Áö ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ Á¦°øÇÑ´Ù.
* ´ÜÁ¡ : nawk µî ´Ù¸¥ À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ¿© ¼Ò½º¸¦ ÄÄÆÄÀÏ ÇÏ°Ô µÇ¹Ç·Î Á÷°üÀûÀÌÁö ¾ÊÀº ¼³Ä¡°úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. ±âÁ¸ÀÇ CWEB ¾ð¾î¿Í´Â Á¶±Ý ´Ù¸£´Ù.
==== ±âŸ ÀÚ·á ====
LaTeX¿¡¼­ CWEB ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ ¹æ¹ýÀÌ ¼³¸íµÇ¾î ÀÖ ½À´Ï´Ù.
* KTUGContrib:3252 (by [smcho])
* KTUGContrib:3236 (by [smcho])
=== CWEBÀÇ ÇѱÛÈ­ ===
CWEBÀÇ ÇѱÛÈ­¿¡ ÃÖ´ë °É¸²µ¹ À̾ú´ø ÇÑ±Û ºÏ¸¶Å© ¹®Á¦°¡ ±èµµÇö´ÔÀÇ ¼ö°í·Î ÇØ°á µÇ¾ú½À´Ï´Ù. (KTUGContrib:3258)
ÀÌÁ¦´Â CWEB ÇÁ·Î±×·¡¹ÖÀÇ »õ·Î¿î ¼½¼Ç ±×·ìÀ» ½ÃÀÛÇÏ´Â º°Ç¥¼½¼Ç(starred section: @*) ¹× ¼½¼Ç Á¦¸ñµé(@<...@>)¿¡ ÇѱÛÀ» »ç¿ëÇÒ ¶§, ÇØ´ç ºÏ¸¶Å©¿¡ ÇѱÛÀÌ ³ª¿ÀÁö ¾Ê´Â Çö»óÀÌ ¾ø¾îÁ³½À´Ï´Ù. ÀÌ·Î ÀÎÇÏ¿© º¸´Ù Àб⠽¬¿î ÇÁ·Î±×·¥ ÀÛ¼ºÀÌ °¡´ÉÇØ Á³½À´Ï´Ù.
ÇѱÛÀÌ Æ÷ÇÔµÈ CWEB ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§´Â, ±èµµÇö´ÔÀÇ ±Û¿¡ ¼Ò°³µÇ¾î ÀÖµíÀÌ, ÀÛ¼ºÇÏ´Â ¼Ò½º ÆÄÀÏ(.w)ÀÇ in limbo¸¦
{{{
\input ucsplain
\input cwbucsol
}}}
·Î ½ÃÀÛÇÏ¸é µË´Ï´Ù.
* PlainTeX''' Âü°í''' : KTUGContrib:3261 (by [ÀÛÀº³ª¹«]) CWEBÀÇ ÇѱÛÈ­¸¦ Å×½ºÆ®ÇÑ ³» À» ÀÌ¿ë ÀÔ´Ï´Ù. ´Ü¼øÇÑ ¿µ¾î ¹® ±¸¸¦ Çѱ۷Π¹Ù²Û °ÍÀÔ´Ï´Ù. Á» ´õ ¼¼½ÉÇÑ ÀÛ¾÷ÀÌ ÁøÇà µÇ¾î¾ß ÇÕ´Ï´Ù.
=== CWEB ¼³Ä¡ ½Ã ÇѱÛ(UTF-8) °í·Á»çÇ× ===
'''ÁÖÀÇ''': ÀÌ ÀýÀÇ ³»¿ëÀº Hangul-ucs¸¦ ÀÌ¿ëÇÏ¿© ucsplain.tex¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡¸¸ ÇØ´çÇÏ´Â °ÍÀÌ°í, HLaTeXÀ» ÀÌ¿ëÇÏ¿©, htex.texÀ» »ç¿ëÇϽô ºÐÀ̶ó¸é, °ü°è¾ø´Â ³»¿ëÀÔ´Ï´Ù.
¸ÕÀú, utf-8·Î ÀÛ¼ºµÈ ¼Ò½º ÆÄÀÏ(.w)·Î cweb ÇÐÀû ÇÁ·Î±×·¡¹Ö À» ÇϱâÀ§Çؼ­´Â cwebÀ» ´Ù½Ã ¼³Ä¡ÇØ¾ß ÇÕ´Ï´Ù. ===
* [ ftp://ftp.cs.stanford.edu/pub/cweb/cweb.tar.gz cweb.tar.gz CWEB] ¸¦ ´Ù¿î ¹ÞÀ¸½Ã°í, ¾Æ·¡ ³»¿ëÀ» Âü°í ÇÏ½Ã¸é µË´Ï´Ù.
UTF-8 * [CTWILL]: ÁÖ·Î µÈ ÇѱÛÀ» Æ÷ÇÔÇÏ´Â cwebÀÇ ¼Ò½º ÆÄÀÏÀÎ .w ÆÄÀϷκÎÅÍ
ctangle°ú cweave ¸í·É¾î¸¦ ÀÌ¿ëÇؼ­ C ÇÁ·Î±×·¥ ÆÄÀÏÀÎ .c ÆÄÀÏ°ú
TeX ÆÄÀÏÀÎ .tex Ã¥À» ¸¸ µé´Ùº¸¸é, ÀÔ·ÂÀÌ ³Ê¹« ±æ´Ù µå´Â °æ°í ¸Þ½ÃÁö°¡ ³ª¿É´Ï´Ù.
ÀÌ´Â À§¸í·É¾îµéÀÌ ÆÄÀÏÀ» ó¸®Çϱâ À§Çؼ­ ³»ºÎÀûÀ¸·Î ¹öÆÛ(char ¹è¿­)¸¦
°¡Áö°í ÀÖ°í, ±× ¹öÆÛÀÇ ³¡À» ³ªÅ¸³»´Â buffer_end°¡ À۾Ƽ­ ³ª¿À´Â
°æ°í ¸Þ½ÃÁöÀÔ´Ï´Ù. ÀÌ °æ¿ì ´Â ¹öÆÛÀÇ ³¡À» ³ªÅ¸³»´Â º¯¼ö buffer_end¸¦
ÃæºÐÈ÷ Å©°ÔÇØÁÖ¸é ¹ß»ýÇÏÁö ¾Ê´Â °æ°í ¸Þ½ÃÁöÀÔ´Ï´Ù.
¿µ¾îÀÇ °æ¿ì´Â ¾ËÆĺª Çѹ®ÀÚ°¡ 1¹ÙÀÌÆ®À̱⠶§¹®¿¡ ±×·¯ÇÑ °æ°í ¸Þ½ÃÁö°¡ ¾ø½À´Ï´Ù.
(¹°·Ð ¿µ¾îÀÇ °æ¿ìµµ ÇÑ ÁÙÀ» ³Ê¹« ±æ°ÔÇÏ¸é ±×·± ¸Þ½ÃÁö°¡ ³ª¿À°ÚÁÒ.)
utf-8·Î µÈ °æ¿ì´Â ÇÑ ¹®ÀÚ¸¦ 1¹ÙÀÌ Æ®¿¡¼­ ÃÖ´ë 4¹ÙÀÌÆ®±îÁö Ç¥ÇöÇÑ´Ù°í ÇÕ´Ï´Ù.
µû¶ó¼­ utf-8·Î ÀÛ¼º ¿ëµÈ ¼Ò½ºÀÇ °æ¿ì¸¦ À§Çؼ­ buffer_end¸¦ ÃÖ´ë 4¹è°¡ µÇ°ÔÇϸé
µË´Ï´Ù.
ctangle°ú cweaveÀÇ È­ÀÏ ÀÔÃâ·Â¿¡ ´ëÇÑ ºÎºÐÀ̳ª °øÅë ºÎºÐÀº
common.w¿¡ Àִµ¥, buffer_end¿¡ ´ëÇÑ ³»¿ëÀÌ ¹Ù·Î ÀÌ ÆÄÀÏ¿¡ ÀÖ½À´Ï´Ù.
common.wÀÇ ÀϺÎ
{{{
@d buf_size 100 /* for \.{CWEAVE} and \.{CTANGLE} */
@d longest_name 1000
@d long_buf_size (buf_size+longest_name) /* for \.{CWEAVE} */
...
@<Definitions...@>=
char buffer[ long_buf_size]; http:/ * where each line of input goes */
char *buffer_end=buffer+buf_size ankh- 2; /* end of |buffer| */
morpork. maths. qmul.
}}}
µû¶ó¼­ buf_size¸¦ ÃÖ´ë 4¹è Å©°ÔÇÏ´ø°¡, ¾Æ´Ï¸é, buffer_end¸¦ Á¤ÀÇÇÏ´Â ºÎºÐ¿¡
»ç¿ëÇÑ buf_size ´ë½Å¿¡ long_buf_size¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù ac.
Àú´Â cwebÀ» ¼³Ä¡ÇÒ¶§, µÎ¹ø° ¹æ¹ýÀ» »ç¿ëÇؼ­ ¼³Ä¡Çؼ­, utf-8·Î µÈ ¹®¼­¸¦
ÄÄÆÄÀÏÇÒ¶§µµ ctangleÀ̳ª cweave°¡ ¹¬¹¬È÷ ±×Àú Á¦ ÇÒ ÀÏÀ» ÇÕ´Ï´Ù.
ÀÌ°ÍÀÌ utf-8·Î µÈ ¹®¼­ÀÇ ±Ùº»ÀûÀÎ ÇØ°áÃ¥ÀÎÁö, ÀӽùæÆíÀûÀÎ ¹æ¹ýÀÎÁö´Â
¸ð¸£°ÚÀ¸³ª, Àû¾îµµ À§ÀÇ °æ°í ¸Þ½ÃÁö¸¦ ¾ø¾Ù ¼ö´Â ÀÖ½À´Ï´Ù.
'''Âü°í''' cweb¿¡ °ü·ÃÇÑ ÇÁ·Î±×·¥ ¼Ò½º¸¦ °íÄ¥ ÀÏÀÌ ÀÖÀ» ¶§, ÇØ´ç ¼Ò½º¸¦ Á÷Á¢ °íÄ¡´Â ÀÏÀº ¿Ã¹Ù¸¥ ¹æ¹ýÀÌ ¾Æ´Õ´Ï´Ù.
cweb¿¡´Â ÀÌ·¯ÇÑ °æ¿ì¸¦ À§Çؼ­ È®ÀåÀÚ°¡ .ch ÀÎ change ÆÄÀÏ ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. ¿¹¸¦µé¾î À§ÀÇ °æ¿ì ó·³
common.w ÆÄÀÏÀ» ¼öÁ¤ÇÒ ÀÏÀÌ ÀÖÀ¸¸é, comm-utf8.ch ¿Í °°Àº ÆÄÀÏÀ» ¸¸µé¾î¼­ common.c ÆÄÀÏÀ» ¸¸µé¾î ³¾¶§,
{{{
ctangle common.w comm-utf8.ch
}}}
¿Í °°ÀÌ ÇÏ¸é µË´Ï´Ù. comm-utf8.ch¿¡ µé¾î°¡´Â ³»¿ëÀº
{{{
@x
char *buffer_end=buffer+buf_size-2; uk/ * end of |buffer| * ~saha/
@y
char *buffer_end=buffer+long_buf_size-2; comp/ * end of |buffer| * rambutan/
@z
}}}
¿Í °°ÀÌ ÇÏ½Ã¸é µË´Ï´Ù. (.ch ÆÄÀÏÀ» ¸¸µå´Â ¹æ¹ýÀº cweb »ç¿ëÀÚ ¼³¸í¼­ÀÎ cwebman.pdf¸¦ º¸½Ã¸é Àß ³ª¿ÍÀÖ½À´Ï´Ù.)
¿øº» .w ÆÄÀÏÀ» Á÷Á¢ ¼öÁ¤Çϼŵµ ¹®Á¦°¡ µÉ °ÍÀº ¾ø½À´Ï´Ù¸¸ Á¤¼®ÀÌ ¾Æ´Ï¶ó´Â °ÍÀÌÁÒ.
== CTWILL ½Ã½ºÅÛ ==
=== ¼Ò°³ ===
CWEB ½Ã½ºÅÛÀ¸·Î ÇÏ´Â ¹®ÇÐÀû Rambutan]: ÇÁ·Î±×·¡¹Ö Àº ÄÄÇ»ÅÍ ÇÁ ¾ð¾î·Î ±×·¡¸Óµé·Î ÇÏ¿©±Ý ¸¶Ä¡ ÀÚ½ÅÀÌ ¼Ò¼³À̳ª
¼öÇÊÀ» ¾²°í ÀÖ´Â µíÇÑ Âø°¢À» ºÒ·¯ ÀÏÀ¸Å³ Á¤µµ·Î ÇÁ·Î±×·¡¹Ö ÀÛ¾÷À» Áñ°Ì°ÔÇÏ¿© ÁÝ´Ï´Ù.
»Ó¸¸¾Æ´Ï¶ó, ±× ÀÛ¾÷ °á°ú ¶ÇÇÑ ¸Å¿ì ±ò²ûÇÏ°í ÈǸ¢ÇÕ´Ï´Ù. ƯÈ÷, ÇÁ·Î±×·¥ µµÅ¥¸ÕÆ® ¸Ç µÚ¿¡
ÀÚµ¿À¸·Î »ý¼ºÇØÁÖ´Â À妽º´Â ¸Å¿ì À¯¿ëÇÕ´Ï´Ù.
ÇÑ ÆíÀÇ ÂªÀº ¿¡¼¼ÀÌ Á¤µµ ±æÀÌÀÇ ÇÁ·Î±×·¥À̶ó¸é ±× À妽º°¡ ¸Å¿ì À¯ÀÍÇÒÅÙµ¥, ÀåÆí ¼Ò¼³ °°Àº
ÇÁ·Î±×·¥À̶ó¸é »óȲÀÌ ´Þ¶óÁý´Ï´Ù. ¿ÀÈ÷·Á µµÅ¥¸ÕÆ® ¸Ç µÚ¿¡ ³ª¿À´Â À妽º´Â °ñÄ©°Å¸®°¡ µÉ ¼öµµ
ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¥ ¼Ò½º Java¸¦ Àд´ٴ °ÍÀº º¸ÅëÀÇ ¼Ò¼³À̳ª ¼öÇÊÀ» Àд °Í°ú´Â ¾à°£ Â÷ÀÌ°¡ À־,
±× ¼Ò½º¿¡ »ç¿ë µÈ º¯¼ö³ª ÇÔ¼öµî °¢Á¾ ½Äº°ÀÚµéÀÇ Á¤ÀÇ¿Í ¾²ÀÓ»õµîÀ» ¼¼¼¼È÷ ÀÚÁÖ ÆľÇÇÒ ÇÊ¿ä°¡
ÀÖ½À´Ï´Ù. ±×·² ¶§¸¶´Ù, Áï ¾î¶² º¯¼öÀÇ Á¤Àdzª ¾²ÀÌ´Â °÷À» ã±â À§Çؼ­
µµÅ¥¸ÕÆ®ÀÇ ¸Ç µÚÀÇ À妽º¸¦ ã¾Æ¼­ ÇØ´ç ÆäÀÌÁö·Î °¡´Â °ÍÀº ¸Å¿ì ±ÍÂúÀº ÀÛ¾÷ÀÔ´Ï´Ù.
¿ì¸®¿¡°Ô Ä£¼÷ÇÑ TeX: The Program ¿ª½Ã web ½Ã½ºÅÛÀ¸·Î ÀÛ¼ºµÈ ¹®ÇÐÀû ÇÁ·Î±×·¥Àε¥, ±× ¼Ò½ºÀÇ
µµÅ¥¸ÕÆ® ÆäÀÌÁö°¡ 500 ÆäÀÌÁö°¡ ÈξÀ ³Ñ°í, ¸Ç µÚ¿¡ ³ª¿À´Â À妽º¸¸µµ 30 ÆäÀÌÁö°¡ ³Ñ½À´Ï´Ù .
ÀÌ·¯ÇÑ »óȲÀ» ÇØ°áÇϱâ À§ÇÑ ¹æ¹ý ÁßÀÇ Çϳª´Â À妽º¸¦ ¸Ç µÚ¿¡¸¸ µÎ´Â °Í »Ó¸¸ ¾Æ´Ï¶ó, µµÅ¥¸ÕÆ®
Àü¹Ý¿¡ °ÉÃļ­ ¸Å ¿À¸¥ÂÊ ÆäÀÌÁö¿¡ µÐ´Ù »©¸é , ÇöÀç ÆäÀÌÁö¿¡¼­ »ç¿ëµÈ º¯¼ö³ª ÇÔ¼öµéÀ» ½±°Ô ã¾Æ º¼ ¼ö
ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ À妽º¸¦ ¹Ì´Ï À妽º(mini-indexes) ¶ó°í Çϴµ¥,
ctwill ½Ã½ºÅÛÀº ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ÇÒ ¶§¿¡ ¹Ì´Ï À妽º¸¦ »ý¼ºÇϵµ·Ï µµ¿ÍÁÝ´Ï´Ù.
Knuth´Â ±×ÀÇ Ã¥ [ http://www-cs-faculty.stanford.edu/~knuth/sgb.html The Stanford GraphBase CWEB] ´Â ctwillÀ» °ú ¸ðµç °ÍÀÌ ¿ëÇؼ­ ¹Ì´Ï À妽º¸¦ °®Ãá ¸ÚÁø Ã¥ÀÔ´Ï´Ù.
=== ±¸¼º ===
CTWILL ½Ã½ºÅÛÀº Å©°Ô ¼¼ °³ÀÇ ÇÁ·Î±×·¥À¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù.
* '''ctwill'''
ÀÌ ÇÁ·Î±×·¥Àº cweave¸¦ º¯ÇüÇÑ two-pass ÇÁ·Î±×·¥ÀÔ´Ï´Ù. cweave°¡ cwebmac.tex ¸ÅÅ©·Î ÆÄÀÏÀ» »ç¿ëÇÏ´Â ¹Ý¸é, ctwill ÇÁ·Î±×·¥Àº cwebmac.tex ¸ÅÅ©·Î°ú °ÅÀÇ µ¿ÀÏÇÏ Áö¸¸, ¹Ì´Ï À妽º »ý¼ºµî Ã¥À» ¸¸µå´Â µ¥¿¡ º¸´Ù ÃÊÁ¡À» ¸ÂÃá ctwimac.tex ¸ÅÅ©·Î ÆÄÀÏÀ» ÀÌ¿ëÇÕ´Ï´Ù.
* '' javaweave' refsort' ''
foo.w¶ó´Â cweb ÆÄÀÏ¿¡ ctwill ÇÁ·Î±×·¥À» Àû¿ëÇÏ°í ³ª¸é, foo.ref¶ó´Â ¹Ì´Ï À妽º »ý¼º¿¡ ÇÊ¿äÇÑ reference ÆÄÀÏÀÌ »ý±â´Âµ¥, ÀÌ foo.ref ÆÄÀÏÀ» Á¤·ÄÇÏ¿©, ¼ÒÆ®µÈ ¹öÀüÀÇ foo.sref¸¦ ¸¸µé¾î ³À´Ï´Ù.
* '''twinx'''
ctwill ½Ã½ºÅÛÀº ¸Å¿ì Å« ÇϳªÀÇ cweb ÇÁ·Î±×·¥À¸·Î Ã¥À» ¸¸µé°Å³ª, ¿©·¯ °³ÀÇ ÀÛÀº cweb ÆÄÀÏÀ» ¹­¾î¼­ Ã¥À» ¸¸µå´Â °æ¿ì¿¡ »ç¿ëµË´Ï´Ù. ([ http://www-cs-faculty.stanford.edu/~knuth/sgb.html The Stanford GraphBase CWEB] ´Â ÈÄÀÚÀÇ °æ¿ì cweave¿¡ ÇØ´ç ÇÕ´Ï´Ù. ) Ãâ·Â Æ÷¸äÀÌ ·¯ÇÑ °æ¿ì, ¹Ì´Ï À妽º »Ó¸¸ ¾Æ´Ï¶ó ¿©·¯ cweb ¼Ò½ºµéÀÇ major indexesµµ ÇÊ¿äÇѵ¥, twinx´Â ÀÌ °æ¿ì¿¡ »ç¿ëµË´Ï´Ù.
=== »ç¿ë¹ý ===
Knuth´Â ctwillÀ» ¸¸µé°í³ª¼­ Âü ÀÌ»óÇÑ ÀÏÀ» ÇÕ´Ï´Ù.
cweb ½Ã½ºÅÛÀÇ °æ¿ì´Â cwebman.texÀ̶ó´Â »ç¿ëÀÚ ¼³¸í¼­µµ ¸¸µé°í °÷°÷¿¡¼­ ÀÎÅͺä
([ http://tex.loria.fr/historique/interviews/knuth-clb1993.html Donald Knuth-CLB Interview CWEB] )µîÀ» ÅëÇؼ­ cwebÀ» È«º¸Çϱâ À§Çؼ­ ¸¹Àº ¾Ö¸¦ ½è½À´Ï °ú ¶È°°´Ù.
* ÇÏÁö¸¸ , ctwillÀ» ¸¸µé°í ³ª¼­´Â ¾Æ¹«·± È«º¸µµ, ½ÉÁö¾î´Â »ç¿ëÀÚ ¼³¸í¼­µµ ¸¸µéÁö ¾Ê¾Ò½À´Ï´Ù.
À¯ÀÏÇÑ ¼³¸í¼­´Â KnuthÀÇ paper "Mini-indexes for literate programs" (attachment:milp.pdf)¿Í
[ftp://ftp.cs.stanford.edu/pub/ctwill/ctwill.tar.gz ctwill.tar.gz]¿¡ µé¾î ÀÖ´Â ctwill.w, refsort.w, twinx.w µéÀÇ cweb ÆÄÀÏ¿¡¼­ µµÅ¥¸ÕÆ®¸¦ ¸¸µé¾î³»¼­ Àоî¾ß ÇÕ´Ï´Ù.
==== ¼³Ä¡ ====
ctwill.tar.gz³»ÀÇ Makefile¿¡´Â ±× ÈçÇÑ make installµµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. -_-;
1. ctwill.tar.gzÀÇ ¾ÐÃàÀ» Ç®°í, cweb ¼³Ä¡ ÇÒ¶§¿Í ±Û°ú ºÏ¸¶ Âù Å©°¡ Áö·Î ÇѱÛ(utf-8)À» ÀÌ¿ëÇϱâ À§Çؼ­ common.w ÆÄÀÏÀÇ buffer_end Á¤ÀÇÇÑ °÷¿¡¼­ buffer_size¸¦ long_buffer_size·Î ¹Ù²ß´Ï ¾ÈµÈ´Ù.
2. make ctwill, make refsort, make twinx¸¦ ÅëÇؼ­ ½ÇÇà ÆÄÀÏÀ» ¸¸µé¾î path°¡ ÀâÇô ÀÖ´Â, ¿¹¸¦µé¾î, /usr/local/bin¿¡ µÓ´Ï´Ù.
3. ctwimac.tex, twinxmac.tex µî ¸ÅÅ© * Java ÇÁ·Î ÆÄÀÏ ±×·¡¹ÖÀ» texÀÌ ¾Ë ¼ö ÀÖ´Â µð·ºÅ丮¿¡ µÓ´Ï´Ù.
==== »ç¿ë ¿¹ ====
[DeleteMe] KnuthÀÇ ºÎ½ÇÇÑ ¼³¸í¼­ ¶§ ÇÏ¿© ¹® ¿¡ »ç¿ë¹ýÀ» ¾Ë±â±îÁö ÂüÀ¸·Î ¸¹Àº »ðÁúÀ» ÇؾßÇß½À´Ï´Ù.
±¸Ã¼ ÇÐÀû ÀÎ ¼³¸íÀ» À§Çؼ­, n°³ÀÇ cwebÆÄÀÏÀ» °¡Áö°í, Ã¥À» ¸¸µç´Ù°í °¡Á¤ÇÏ°Ú½À´Ï´Ù.
1. ¸ÕÀú n°³ÀÇ cweb ÇÁ·Î±× ·¥ ¼Ò½º¸¦ bar1.w, bar2.w, ... barn.w ·¡¹ÖÀ» ¸¸µì´Ï´Ù. °¢°¢ÀÇ cweb ÆÄÀÏÀº °¢ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀ» ´ã°í ÀÖ½À´Ï´Ù.
2. À§ÀÇ n°³ÀÇ cweb ÆÄÀÏÀ» Æ÷ÇÔÇÏ ÇÒ ¶§´Â foo.w [noweb]À» ¸¸µì´Ï´Ù. foo.w ÆÄÀÏ¿¡´Â ¸¸µé°íÀÚ Çϴ åÀÇ ÀüüÀûÀÎ ¼³¸íÀ» ´ã°í ÀÖ½À´Ï´Ù. foo.w¾È¿¡ À§ÀÇ n°³ÀÇ cweb ÆÄÀÏÀ» Æ÷ÇÔÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.
{{{
@i bar1.w
@i bar2.w
...
@i barn.w
}}}
ÀÌÁ¦ Ã¥À» ¸¸µé Áغñ°¡ ´Ù ³¡³µ½À´Ï´Ù.
3. ¸ÕÀú ctwill ÇÁ·Î±×·¥À¸·Î foo.{tex,idx,scn,aux} ÆÄÀϵéÀ» ¸¸µì´Ï´Ù.
{{{
ctwill foo.w
}}}
4. À§¿¡¼­ »ý¼º ÃßõÇÑ foo.tex À¸·ÎºÎÅÍ foo.{ref,log,dvi} ÆÄÀϵéÀ» ¸¸µé¾î ³À´Ï´Ù
{{{
tex foo. tex
}}}
5. À§ ´Ü°è¿¡¼­ »ý¼ºÇÑ reference ÆÄÀÏ, foo.ref¸¦ ¼ÒÆ®ÇÏ¿© foo.sref¸¦ ¸¸µì´Ï´Ù.
{{{
refsort < foo.ref > foo.sref
}}}
6. ÃÖÁ¾ÀûÀ¸·Î texÀ» ÇÑ ¹ø ´õ ½ÇÇàÇÕ´Ï´Ù.
{{{
tex foo.tex
}}}
7. twinx¸¦ ÀÌ¿ëÇÏ¿© master À妽º¸¦ »ý¼ºÇÕ´Ï´Ù.
{{{
twinx foo.tex > index.tex
}}}
8. À妽º ÆÄÀÏ, index.texÀ» ÄÄÆÄÀÏ ÇÕ´Ï´Ù.
{{{
tex index.tex
}}}
9. À§ÀÇ 6, 8 ´Ü°è¿¡¼­ »ý¼ºÇÑ foo.tex, index.texÀ¸·Î Ã¥À» ¸¸µì´Ï´Ù.
{{{
dvipdfmx foo
dvipdfmx index
}}}=== ctwill ¿¹Á¦ ===
* KnuthÀÇ ´ëÇ¥ÀûÀÎ ctwill »ç¿ë ¿¹Á¦: Hamiltonian circutis (ham.w) KTUGContrib:3268 (by [ÀÛÀº³ª¹«])



lpcover.jpg

À§ ÄÚµå´Â KnuthÀÇ Àú¼­ Literate Programming ÀÇ Ç¥Áö¿¡ ³ª¿ÍÀÖ´Â ÄÚµåÀÔ´Ï´Ù.

¸ñÂ÷

1 ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö À̶õ?
1.1 ±â¿ø ¹× ¼Ò°³
1.2 KnuthÀÇ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö °­ÀÇ
1.3 KnuthÀÇ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¾ÖÁ¤
1.4 ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö °ü·Ã ±Û
1.5 ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö °ü·Ã »çÀÌÆ®
2 ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛ
2.1 LaTeXÀ» ÀÌ¿ëÇÑ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö
2.1.1 noweb À» ÀÌ¿ëÇÏ´Â ¹æ¹ý
2.1.2 CWEB À» ÀÌ¿ëÇÏ´Â ¹æ¹ý
2.1.3 ±âŸ ÀÚ·á
2.2 PlainTeXÀ» ÀÌ¿ëÇÑ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö

1 ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö À̶õ?

¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö(literate programming)Àº ÇÁ·Î±×·¡¹Ö ¹æ¹ý·ÐÀÇ ÇÑ °¡Áö·Î, ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§ ÄÄÇ»ÅÍ·Î ÄÄÆÄÀÏ °¡´ÉÇÑ Äڵ带 ¸¸µå´Â °Íº¸´Ù »ç¶÷ÀÌ ÀÌÇØÇϱ⠽¬¿î Äڵ带 ¸¸µå´Â °Í¿¡ ÁßÁ¡À» µÎ´Â ¹æ¹ýÀÌ´Ù. Áï, »ç¶÷ÀÌ º¸°í ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ¹®¼­¸¦ ¸¸µéµíÀÌ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â °ÍÀÌ ¸ñÀûÀÌ´Ù. '¸¶Ä¡ ¹®ÇÐÀÛÇ°À» Àд °Íó·³ ÇÁ·Î±×·¡¹ÖÀ» ÀÐÀ» ¼ö ÀÖµµ·Ï ¸¸µå´Â °Í'ÀÌ ¸ñÇ¥À̹ǷΠ'¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö'À̶ó´Â À̸§À» Áö¾ú´Ù. (Ãâó: [http]¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö-À§Å°¹é°ú)

1.1 ±â¿ø ¹× ¼Ò°³

¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀº ¿ì¸®¿¡°Ô TeXÀÇ ÀúÀÚ·Î ¾Ë·ÁÁø Knuth°¡ ¸¸µé¾î³½ ÇÁ·Î±×·¡¹ÖÀÇ »õ·Î¿î Æз¯´ÙÀÓÀÔ´Ï´Ù. Knuth°¡ ÀÌ¿¡ ´ëÇÑ °³³äÀ» ±¸Ã¼È­Çϱ⠽ÃÀÛÇÑ °ÍÀÌ 1980³â´ë ÃʹÝÀ̴ϱî 2006³â ÇöÀç·Î½á´Â '»õ·Î¿î'À̶õ ´Ü¾î°¡ Á» ¹«»öÇØ Áý´Ï´Ù. ÇÏÁö¸¸ ÇöÀç±îÁöµµ ±×¸® ³Î¸® ÀÌ¿ëµÇ°í ÀÖÁö´Â ¾ÊÀ¸µí ½Í½À´Ï´Ù.

Àü»êÇп¡´Â Àü»êÇÐÀÇ ³ëº§»óÀ̶ó ºÒ¸®´Â Æ©¸µ»ó([http]A. M. Turing Award) ÀÌ ÀÖ½À´Ï´Ù. 1974³â Æ©¸µ»ó ¼ö»óÀÚ´Â ¾Ë°í¸®ÁòÀÇ ºÐ¼®°ú ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ µðÀÚÀÎ ±×¸®°í, The art of computer programming À̶ó´Â Àú¼­·Î ±× ºÐ¾ß¿¡ ¸¹Àº °øÇåÀ» ÇÑ Knuth ¿´½À´Ï´Ù.

°ü·Ê(?)·Î½á ±× ÇØ Æ©¸µ»óÀ» ¹ÞÀº »ç¶÷Àº ACM Turing Award Lecture¶ó´Â À̸§À¸·Î °­ÀǸ¦ ÇÏ°Ô µÇ¾î Àִµ¥, 1974³â ±× °­ÀÇÀÇ Á¦¸ñÀº Computer Programming as an Art(»õ·Î¿î ÷ºÎ "knuth-turingaward.pdf)¿´½À´Ï´Ù"ÆÄÀÏ ¾÷·Îµå. Knuth´Â ¿©±â¼­ ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀ» ´Ü¼øÇÑ ±â¼úÀÌ ¾Æ´Ñ À½¾Ç, ¹Ì¼ú, ¹®Çаú °°Àº Á¾·ùÀÇ ÇϳªÀÇ ¿¹¼ú È°µ¿À̶ó°í °­Á¶ÇÏ°í ÀÖ½À´Ï´Ù. ±×¸®°í °á·ÐºÎ¿¡´Â ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¸Ó ÀÚ½ÅÀÌ ¿¹¼ú°¡¶ó´Â ÀνÄÀ» °¡Áö°í ÇÁ·Î±×·¡¹Ö ÀÛ¾÷¿¡ ÀÓÇϸé, ÇÁ·Î±×·¡¹ÖÀÌ ´õ¿í Áñ°Ì°í, ±× °á°ú ¶ÇÇÑ ´õ¿í ÁÁÀ» °ÍÀ̶ó°í ¸»ÇÕ´Ï´Ù.

To summarize: We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. Therefore we can be glad that people who lecture at computer conferences speak about the state of the Art.

¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀº ÀÌ·¸°Ô ½ÃÀÛÇß³ªº¾´Ï´Ù. ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀ» ¿¹¼ú·Î º¸´Â ´ë°¡·Î ºÎÅÍ ¸»ÀÔ´Ï´Ù. À§ÀÇ °­ÀǸ¦ ½ÃÀÛÀ¸·Î ´«¿¡ º¸ÀÌ´Â º»°ÝÀûÀÎ ¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀÇ ½ÃÀÛ ¶ÇÇÑ KnuthÀÇ ³í¹® Literate Programming (@knuthweb.pdf (257.24 KB) ) ¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù. ÀÌ ³í¹®¿¡¼­ Knuth´Â ´õÀÌ»ó ÄÄÇ»Å͸¦ À§ÇØ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â ½Ã´ë´Â Áö³µ´Ù°í ¸»ÇÕ´Ï´Ù. »ç¶÷À» À§ÇÑ ÇÁ·Î±×·¡¹ÖÀ» ÇÏÀÚ°í ÇÕ´Ï´Ù. ¹°·Ð ÇÁ·Î±×·¡¹ÖÀ̶ó´Â °ÍÀÌ ÄÄÇ»ÅÍ¿¡ ÀÏÀ» ½ÃÅ°±â À§ÇÑ ¸í·ÉµéÀÇ ÁýÇÕÀÌÁö¸¸, ÀÌ°Í¿¡ ¿¬¿¬ÇÏ¿© ³Ê¹« ÄÄÇ»ÅÍ¿¡¸¸ ÃÊÁ¡À» ¸ÂÃßÁö ¸»°í, »ç¶÷µé¿¡°Ô ´«À» µ¹¸®ÀÚ´Â °ÍÀÌÁö¿ä. ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀÇ ¸£³×»ó½º ½Ã´ë°¡ ¿Â °ÍÀÌÁö¿ä.

ÀÌ ³í¹®¿¡¼­ ¿ª½Ã ÀÏ°üµÇ°Ô ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀ» ¹®ÇÐ ÀÛÇ°(works of literature) À¸·Î °£ÁÖÇÏ°í, Àç¹ÌÀÖ´Â ¸»ÀÎ Literate Programming À̶õ ¸»À»¸¸µé¾î ³Â½À´Ï´Ù. Knuth´Â ¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀ» ´Ü¼øÇÑ ¸»Àå³­¿¡ ±×Ä¡´Â °ÍÀ» ½È¾îÇؼ­ WEBÀ̶ó´Â ½Ã½ºÅÛÀ» ¸¸µé¾î ³Â½À´Ï´Ù. TeXÀÌ WEB ½Ã½ºÅÛÀ¸·Î ¸¸µé¾îÁ³´Ù´Â °ÍÀº Àß ¾Ë·ÁÁø »ç½ÇÀÌÁö¿ä.

I believe that the time is ripe for significantly better documentation of programs, and that we can best achieve this by considering programs to be works of literature. Hence, my title: Literate Programming. Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.

  • WEB À¸·Î ÀÛ¼ºµÈ TeX ¼Ò½º: [http]tex.web
    ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀ» º»°ÝÀûÀ¸·Î ÀÍÈ÷°íÀÚ ÇÏ´Â »ç¶÷µéÀº ¹Ýµå½Ã ÀоîºÁ¾ß ÇÑ´Ù°í ÇÕ´Ï´Ù. TeX¿¡ Àͼ÷ÇØÁö¸é Çѹø µµÀüÇØ º¸°íÀÚ ÇÕ´Ï´Ù.
  • °ü½ÉÀÖ´Â ºÐÀ» À§ÇÏ¿©: pdf ÆÄÀÏÀ» ¸¸µé¾î³»´Â °úÁ¤À» ´ÙÀ½°ú °°½À´Ï´Ù. À§ÀÇ tex.webÀ» ´Ù¿î¹ÞÀ¸½Ã°í,
    % weave tex.web      <-- tex.web ÆÄÀÏ¿¡¼­ tex.tex ÆÄÀÏÀ» ¾ò½À´Ï´Ù.
    % tex tex.tex        <-- texÀÌ ¼¼¹øÀ̳ª ¾²¿´³×¿ä. 
    % dvipdfmx tex.dvi
    
    À§Ã³·³ ÇÏ¿© ¸¸µé¾î Áø Ã¥ÀÌ ¹Ù·Î KnuthÀÇ Àú¼­ Computers & Typesetting ½Ã¸®ÁîÀÇ Volume BÀÎ TeX: The Program ÀÔ´Ï´Ù.

  • Âü°í: À©µµ¿ìÁî¿¡¼­ MiKTeXÀ» ÀÌ¿ëÇϽô ºÐÀº KTUGContrib:3247 (by µµÀºÀ̾ƺü) À» Âü°í ÇÏ¸é µË´Ï´Ù.

  • 1.2 KnuthÀÇ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö °­ÀÇ

    Knuth´Â 1987³â 10~12¿ù¿¡ ½ºÅÄÆ÷µå´ëÇп¡¼­ Mathematical WritingÀ̶õ Á¦¸ñÀ¸·Î °­ÀǸ¦ ÇÏ¿´½À´Ï´Ù. ±× Áß ÀϺΰ¡ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö¿¡ °üÇÑ ³»¿ëÀÔ´Ï´Ù. ¿µ¾î°¡ ª¾Æ¼­ ´Ù ¾Ë¾ÆµèÁö´Â ¸øÇϴµ¥, ÇÑ°¡Áö ´ÙÇàÀÎ Á¡Àº °­ÀÇ Á¦¸ñ°ú µ¿ÀÏÇÑ Mathematical Writing À̶õ Ã¥ÀÌ Àִµ¥, ±× Ã¥Àº ÀÌ °­ÀǸ¦ ¼ö°­ÇÑ Çлýµé°ú Knuth°¡ ¸¸µç Ã¥À¸·Î "°­ÀÇ ³ëÆ®"ÀûÀÎ ¼º°ÝÀÌ Â£½À´Ï´Ù. ÀÌ¿¡ ±× Ã¥¿¡¼­ ÇØ´ç °­ÀÇ ºÎºÐÀ» ¿Ã¸³´Ï´Ù. µ¿¿µ»ó ½Ãû¿¡ ¸¹Àº µµ¿òÀÌ µÇ¸®¶ó º¾´Ï´Ù.

    1.3 KnuthÀÇ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ ¾ÖÁ¤

    [http]TUGboat Volume 26 (2005), No.3¿¡ [http]Interview with Donald E. Knuth¶ó´Â Á¦¸ñÀ¸·Î KnuthÀÇ ÀÎÅÍºä ±â»ç°¡ ½Ç·È½À´Ï´Ù. ÀÌ ±â»ç¿¡¼­ TeXÀ» ¸¸µé±â À§Çؼ­ ¾î¶² ÅøÀ» »ç¿ëÇߴ°¡¶ó´Â Áú¹®¿¡´ëÇÑ ±×ÀÇ ´ë´ä¿¡¼­ KnuthÀÇ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇÑ »ç¶ûÀ» ¿³º¼ ¼ö ÀÖ´Â ºÎºÐÀÌ Àֱ⿡ ¿Å°Ü º¾´Ï´Ù.

    "The tools I used were home grown and became known as Literate Programming. I am enormously biased about Literate Programming, which is surely the greatest thing since sliced bread. I continue to use it to write programs almost every day, and it helps me get efficient, robust, maintainable code much more successfully than any other way I know. Of course, I realize that other people might find other approaches more to their liking; but wow, I love the tools I¡¯ve got now. I couldn¡¯t have written difficult programs like the MMIX meta-simulator at all if I hadn¡¯t had Literate Programming; the task would have been too difficult."

    1.4 ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö °ü·Ã ±Û

    • @fine_art_programming.pdf (54.54 KB) : [http]Free Software Magazine Issue 6¿¡ ½Ç¸° ±Û·Î½á, Free software¿Í ¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀÇ ¹Ì·¡¿¡ ´ëÇÑ ±ÛÀÔ´Ï´Ù. Àо ¸¸ÇÕ´Ï´Ù. (Âü°í·Î ÀúÀÚ Matt BartonÀº St. Cloud State University in MinnesotaÀÇ ¿µ¹®ÇÐ ±³¼ö¶ó°í ÇÕ´Ï´Ù.)

    2 ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛ

    ¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀº ÇÁ·Î±×·¥ ¼Ò½º¿Í ±×¿¡ ´ëÇÑ ¹®¼­È­ ÀÛ¾÷À» µ¿½Ã¿¡ ÇÏ´Â °ÍÀÌ´Ù. µû¶ó¼­ ¹®ÇÐÀû ÇÁ·Î±×·¥ÀÇ ¼Ò½º´Â Å©°Ô ÇÁ·Î±×·¡¹Ö ºÎºÐ°ú ¹®¼­È­ ºÎºÐÀ¸·Î ³ª´µ¾îÁø´Ù. ÇÁ·Î±×·¡¹Ö ºÎºÐÀº ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ µû¶ó ´Ù¸£Áö¸¸, ¹®¼­È­ ºÎºÐÀº ±âº»ÀûÀ¸·Î LaTeX ȤÀº plain TeXÀ» ÀÌ¿ëÇÑ´Ù. µû¶ó¼­ ¹®¼­È­ ºÎºÐ¿¡ ¾î¶² TeXÀ» »ç¿ëÇÏ´À³Ä¿¡ µû¶ó ³ª´· ¼ö ÀÖ°Ú´Ù.

    2.1 LaTeXÀ» ÀÌ¿ëÇÑ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö

    WEB/CWEB Àº ±âº»ÀûÀ¸·Î TeX À» »ç¿ëÇϵµ·Ï ¼³°èµÇ¾î ÀÖÁö¸¸ ¿©·¯°¡Áö ¹æ¹ýÀ» ÀÌ¿ëÇؼ­ LaTeX ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. Å©°Ô ´ÙÀ½ÀÇ µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù.
    • nowebÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ý
    • CWEBÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ý

    2.1.1 noweb À» ÀÌ¿ëÇÏ´Â ¹æ¹ý

    noweb Àº LaTeX À» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï, ¶Ç ¿©·¯°¡Áö ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï º¯°æÇÑ, WEB ÀÌ´Ù. ½ÇÁ¦·Î LaTeX À» »ç¿ëÇϱâ À§Çؼ­´Â noweb À» »ç¿ëÇÏ´Â °ÍÀÌ Á¤´äÀ̶ó°í º¼ ¼ö ÀÖ´Ù.
    • ÀåÁ¡ : ½ºÅ¸ÀÏ ÆÄÀϸ¸À» Á¦°øÇÔÀ¸·Î¼­ ±âÁ¸ÀÇ Å¬·¡½ºµé°ú È¥¿ëÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ¿©·¯°¡Áö ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ Á¦°øÇÑ´Ù.
    • ´ÜÁ¡ : nawk µî ´Ù¸¥ À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ¿© ¼Ò½º¸¦ ÄÄÆÄÀÏ ÇÏ°Ô µÇ¹Ç·Î Á÷°üÀûÀÌÁö ¾ÊÀº ¼³Ä¡°úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. ±âÁ¸ÀÇ CWEB ¾ð¾î¿Í´Â Á¶±Ý ´Ù¸£´Ù.

    2.1.2 CWEB À» ÀÌ¿ëÇÏ´Â ¹æ¹ý

    CWEBÀº LaTeXÀ» ÀÌ¿ëÇÑ ¹æ¹ýµµ ÀÖÁö¸¸, LaTeXÀ» ÀÌ¿ëÇÏ·Á¸é, nowebÀ» ±ÇÀåÇÑ´Ù.

    CWEBÀ¸·Î ÀÛ¼ºµÈ w ÆÄÀÏÀ» ±â¹ÝÀ¸·Î ÇÑ´Ù. cweb.cls ¶ó°í Çϴ Ŭ·¡½º ÆÄÀÏÀÌ ÀÖÀ¸¹Ç·Î À̸¦ ÀÌ¿ëÇÏ°Ô µÈ´Ù.
    • ÀåÁ¡ : ±âÁ¸ÀÇ w ÆÄÀϵéÀ» ¸î°¡Áö º¯°æÇÔÀ¸·Î¼­ LaTeX »ó¿¡¼­ »ç¿ëÀÌ °¡´ÉÇÏ´Ù.
    • ´ÜÁ¡ : Ŭ·¡½º ÆÄÀϸ¸À» Á¦°øÇÔÀ¸·Î¼­ º»°ÝÀûÀÎ È®ÀåÀÌ °ÅÀÇ ºÒ°¡´É ÇÏ´Ù. ¿¹¸¦ µé¾î¼­ ¸Þ¸ð¾Æ¿Í °°ÀÌ »ç¿ëÇϱâ À§Çؼ­´Â Ŭ·¡½º ÆÄÀÏÀÎ cweb.cls ¸¦ .sty ÆÄÀÏ·Î º¯°æÇØ¾ß Çϴµ¥, ÀÌ ³ë·ÂÀº °ÅÀÇ ¹«ÀÇ¹Ì ÇÏ´Ù°í »ý°¢ÀÌ µÈ´Ù.

    2.1.3 ±âŸ ÀÚ·á

    LaTeX¿¡¼­ CWEB ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ ¹æ¹ýÀÌ ¼³¸íµÇ¾î ÀÖ´Ù.

    2.2 PlainTeXÀ» ÀÌ¿ëÇÑ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö

    • CWEB
    • CTWILL: ÁַΠåÀ» ¸¸µå´Â °æ¿ì¿¡ ÀÌ¿ëµÈ´Ù.
    • [http]Rambutan: ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î Java¸¦ »ç¿ëÇÑ´Ù´Â °Í¸¸ »©¸é CWEB°ú ¸ðµç °ÍÀÌ µ¿ÀÏÇÏ´Ù.
      • javaweave(CWEBÀÇ cweave¿¡ ÇØ´ç) Ãâ·Â Æ÷¸äÀÌ CWEB°ú ¶È°°´Ù.
      • ÇÏÁö¸¸ Çѱ۰ú ºÏ¸¶Å©°¡ ¾ÈµÈ´Ù.
      • Java ÇÁ·Î±×·¡¹ÖÀ» ÀÌ¿ëÇÏ¿© ¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§´Â nowebÀ» ÃßõÇÑ´Ù.