¼Ò¼³°°ÀºC#  Á¦1°­ÀÇ C#ÀÇ ±âÃÊ  02. ´å³Ý ȯ°æ°ú C#  

 

1.2 ´å³Ý ȯ°æ°ú C#

 

´å³Ý ȯ°æÀ̶õ ¾î¶°ÇÑ ¿î¿µÃ¼Á¦¿¡¼­µµ ´å³Ý Ç÷§Æû¸¸ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é Ç÷§Æû µ¶¸³ÀûÀ¸·Î ÇÁ·Î±×·¥µéÀ» ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¹ÙÀÇ Ç÷§Æû µ¶¸³¼ºÀº ´å³ÝÀÇ Ç÷§Æû µ¶¸³¼º°ú ÀÏÄ¡ÇÕ´Ï´Ù. ÇöÀç ÀÚ¹Ù´Â UNIX, Window, MacµîÀÇ Ç÷§Æû¿¡¼­ µ¿ÀÛÇÏÁö¸¸ ´å³Ý Ç÷§ÆûÀº ¾ÆÁ÷ À©µµ¿ì ȯ°æ¹Û¿¡´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. °¡±î¿î ¹Ì·¡¿¡´Â Ç÷§ÆûÀÇ µ¶¸³¼ºÀ» Áö¿øÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

 

 

 

Common Type System¿Í Common Language Specification

´å³Ý¿¡¼­ Áö¿øÇÏ´Â ¾ð¾î´Â ¿©·¯ Á¾·ù°¡ ÀÖ½À´Ï´Ù. ¿¹·Î ÀÚ¹Ù°¡»ó¸Ó½Å¿¡¼­ µ¿ÀÛÇÏ´Â ÇÁ·Î±×·¥Àº ÀÚ¹Ù·Î ÀÏÃà µË´Ï´Ù. ÇÏÁö¸¸ ´å³ÝÀº C# À̿ܿ¡ ´Ù¾çÇÑ ¾ð¾î¸¦ Áö¿øÇϰí ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¾ð¾îÀÇ »óÈ£ À¶Å뼺À» ¹ßÈÖÇÏ°Ô ÇØ ÁÖ´Â °ÍÀÌ ¹Ù·Î CTS(Common Type System)¿Í CLS(Common Language Specification)ÀÔ´Ï´Ù.

 

¢Ã ´å³Ý¿¡¼­ ¾ð¾îÀÇ È£È¯¼ºÀ» À§ÇÑ µµ±¸

q                 CTS(Common Type System)

n                   .Netȯ°æ¿¡¼­ µ¥ÀÌÅÍÀÇ ÇüÀ» °ü¸®ÇÏ´Â ½Ã½ºÅÛ

q                 CLS(Common Lanaguae Specification)

n                   CTS¿¡¼­ Áö¿øÇÏ´Â ¾ð¾îÀÇ ÀϹÝÀûÀÎ ±Ô¾àÀ» Á¤ÀÇ

 

CTS´Â ¼­·Î ´Ù¸¥ ¾ð¾î·Î ÀÛ¼ºµÇ¾ú´Ù ÇÏ´õ¶óµµ .Net¿¡¼­ ÀÌÇØÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍ Çü½ÄÀÎÁö ¾Æ´ÑÁö¸¦ Å×½ºÆ®ÇÏ°í °ËÁõ °ü¸®ÇÏ´Â ¿ªÇÒÀ» ´ã´çÇÕ´Ï´Ù. .Net ³»¿¡¼­ µ¿ÀÛÇÒ ¼ö ÀÖ´Â µ¥ÀÌÅÍ Çü¿¡ ´ëÇÑ °ü¸®¸¦ ÇØÁÖ´Â °ÍÀÌ ¹Ù·Î CTS(Common Type System)ÀÔ´Ï´Ù. ±×¸®°í CLS(Common Language Specification)´Â .NetÀ» À§ÇÑ ¸ðµç ÄÄÆÄÀÏ·¯°¡ Áö¿øÇØ¾ß ÇÏ´Â ÃÖ¼ÒÇÑÀÇ Ç¥ÁØ ±Ô¾àÀÔ´Ï´Ù.Áï, CLS´Â .NetÀÇ CTS¿Í ILÀ» Áö¿øÇϱâ À§ÇÑ ÃÖ¼ÒÇÑÀÇ ±Ô¾àÀ» ¸»ÇÏ´Â °ÍÀÔ´Ï´Ù. Àû¾îµµ .Net¿¡¼­ µ¿ÀÛÇϱâ À§Çؼ­´Â ¹Ýµå½Ã ÁöÄÑ¾ß ÇÏ´Â ¾ð¾î ½ºÆåÀÎ °ÍÀÔ´Ï´Ù.

 

°á·ÐÀûÀ¸·Î CTS¸¦ À§ÇÑ ¾ð¾îÀûÀÎ ±ÔÄ¢À» CLS¿¡¼­ ¸í½ÃÇϰí ÀÖ´Ù°í »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ Visual C++¿¡¼­ ¸¸µç ÇÁ·Î±×·¥À» C#¿¡¼­ ÀÌ¿ëÇϰíÀÚ Çϰųª Visual Basic¿¡¼­ ¸¸µç ÇÁ·Î±×·¥À» C#¿¡¼­ ÀÌ¿ëÇϰíÀÚ ÇÑ´Ù¸é Visual C++´Â Managed C++ ÇÁ·Î±×·¥ Çü½ÄÀ¸·Î µÇ¾î ÀÖ¾î¾ß Çϸç CLSÀÇ ±ÔÄ¢À» µû¶ó¾ß¸¸ÀÌ C#¿¡¼­ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð, VB.Net ¶ÇÇÑ CLSÀÇ ±ÔÄ¢À» µû¶ó¾ß ÇÏ´Â °ÍÀº ¸¶Âù°¡Áö ÀÔ´Ï´Ù.

 

 

 

±â°è¾î¿Í Áß°£¾ð¾î(Intermediate Lanaguage)

¾ð¾îÀÇ »óÈ£À¶Å뼺À» °¡´ÉÇÏ°Ô ÇØÁÖ´Â °­·ÂÇÑ ¿ä¼Ò°¡ Áß°£¾ð¾î(IL) ÇüÅ·ΠÄÄÆÄÀÏÀÌ µÈ´Ù´Â °ÍÀÔ´Ï´Ù. .NetÀ» Á÷Á¢ Áö¿øÇÏ´Â ÄÚµå(Managed Code)´Â ¹Ýµå½Ã Áß°£¾ð¾î ÇüÅ·ΠÄÄÆÄÀÏ µË´Ï´Ù.

 

°í·¡Àû ±â°è¾î¸¦ »ý°¢ÇØ º¸ÁÒ. ±â°è¾î´Â ¿ÏÀüÇÑ 2Áø ÄÚµå·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù. Àΰ£ÀÌ ±â°è¸í·ÉÀ» 2Áø ÄÚµå·Î Á÷Á¢ ³»¸®´Â °ÍÀº °ÅÀÇ ºÒ°¡´ÉÇÕ´Ï´Ù. ¹°·Ð, 2ÁøÄÚµå ¸í·ÉÀ» Á÷Á¢ ã¾Æ¼­ ³»¸°´Ù¸é ¾î¿ ¼ö ¾ø°ÚÁÒ. ÀÌ·¯ÇÑ ¹®Á¦ÀÇ ÇØ°áÀ» À§Çؼ­ Áß°£´Ü°è·Î 2Áø ÄÚµå ¸í·É¿¡ »ç¶÷ÀÌ ¾Ë±â ½¬¿î À̸§À» ºÙÀÌ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¹æ½ÄÀ¸·Î 2Áø ÄÚµå ¸í·É¿¡ ÀνÄÇÒ ¼ö ÀÖ´Â À̸§À» ºÙÀÎ ¾ð¾î°¡ ¾î¼Àºí¸®(Assembly) ¾ð¾îÀÔ´Ï´Ù. ¹°·Ð, ÀÌ Assembly´Â ±â°è¾î¿Í °ÅÀÇ 1:1 ¸ÅĪ µÉ Á¤µµ·Î ±â°è¾î¿¡ °¡±î¿î ¾ð¾î¿´½À´Ï´Ù.

 

¢Ñ Assembly

À̰÷¿¡¼­ ³íÇÏ´Â Assembly´Â ¾ð¾îÀÇ ÀÏÁ¾À¸·Î µÚ¿¡¼­ ¼³¸íÇÒ C#ÀÇ Assembly¿Í´Â ÀüÇô ´Ù¸¥ °³³äÀÌ´Ù. Ãʱâ C¾ð¾î ÀÌÀüÀÇ ±â°è¾î¿¡ °¡±î¿î ¾ð¾î¸¦ Assembly ¾ð¾î¶ó°í ÇÏ¿´À¸¸ç C#¿¡¼­´Â ÄÄÆÄÀÏÇÑ ÈÄ ¿©·¯ ÆÄÀÏÀ» ¹­¾î¼­ ¶óÀ̺귯¸® ÇüÅ·Π¹­¾î µÐ ÇüŸ¦ Assembly¶ó°í ÇÑ´Ù.

 

¼¼¿ùÀº Èê·¯ ¾ð¾î°¡ ´õ¿í ¹ßÀüÀ» ÇÏ°í °í±ÞÀ¸·Î °¡¸é¼­ ÀÌ °úÁ¤Àº Á¡Á¡ Àΰ£ÀÌ ÀÌÇØÇϱ⠽¬¿î ¹üÁÖ·Î ¹Ù²î¾ú½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ ¾ð¾î´Â ¹Ýµå½Ã ±â°è¾î·Î ¹Ù²î¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. Áï, ±â°è°¡ ÀÌÇØÇÒ ¼ö ÀÖ´Â ¾ð¾î·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ´ëºÎºÐÀÇ A¶ó´Â ¾ð¾î´Â A¾ð¾îÀÇ ÇØ¼®±â°¡ ±â°è¾î·Î ¹Ù²Ü ¼ö ÀÖ¾ú½À´Ï´Ù. ÇÏÁö¸¸ ¾ð¾î¿¡ µû¶ó ±â°è¾î·Î º¯È¯ÇÏ´Â ¹æ¹ýÀº ÀüºÎ ´Ù¸¥ ¾ð¾î ÀÇÁ¸ÀûÀÎ ÇüÅÂÀÔ´Ï´Ù.

 

¢Ã Áß°£¾ð¾î(Intermediate Language)

q                 JavaÀÇ ¹ÙÀÌÆ®ÄÚµå(Byte Code)

n                   ÀÚ¹ÙÀÇ Áß°£ÀûÀÎ °³³äÀÇ ¾ð¾î ÇüŸ¦ ¹ÙÀÌÆ®ÄÚµå¶ó°í ÇÔ

q                 C#ÀÇ Áß°£¾ð¾î(IL)

n                   C#ÀÇ Áß°£ÀûÀÎ °³³äÀÇ ¾ð¾î ÇüŸ¦ ILÀ̶ó°í ÇÔ

q                 ¹ÙÀÌÆ®ÄÚµå, Áß°£¾ð¾î(IL)

n                   ÀÚ¹ÙÀÇ ¹ÙÀÌÆ®ÄÚµå¿Í .NetÀÇ Áß°£¾ð¾î °³³äÀº ¶È °°Àº °³³äÀÌ´Ù.

q                 Â÷ÀÌÁ¡

n                   ¹ÙÀÌÆ®ÄÚµå´Â ÀÚ¹Ù¸¸À» À§ÇÑ ÄÚµåÀÌÁö¸¸ Áß°£¾ð¾î(IL)Àº VB.Net, C#, Managed C++, JScript.Net µî ´Ù¾çÇÑ ¾ð¾î¸¦ Áß°£ ÄÚµå ÇüÅ·Π¸¸µç´Ù.

 

ÀÌ·¯ÇÑ ´Ü°è¿¡¼­ .NetÀº °á·ÐÀ» ³»¸³´Ï´Ù. ¸ðµç ¾ð¾î´Â Áß°£¾ð¾î(IL)·Î ¸¸µé¸é µÈ´Ù´Â °ÍÀÔ´Ï´Ù. Áï, ¾ð¾î¿Í ±â°è¾î »çÀÌ¿¡ ÇÑ ´Ü°è¸¦ ´õ µÎ´Â °ÍÀÔ´Ï´Ù. C#°ú VB.Net »ç¿ëÀÚµéÀº ÄÄÆÄÀÏÀ» ÇØ¼­ ±â°è¾î·Î ¹Ù²î´Â °ÍÀÌ ¾Æ´Ï¶ó ±â°è°¡ ÀÌÇØÇϱ⠽±µµ·Ï ¸¸µç Áß°£¾ð¾î ÇüÅ·Π¸¸µç´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ Áß°£¾ð¾î ÇüÅÂÀÇ Ç¥ÁØÀ» CTS¿Í CLS°¡ Ã¥ÀÓÁö´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ¾ð¾î »çÀÌÀÇ È£È¯¼º ¹®Á¦ »Ó¸¸ ¾Æ´Ï¶ó Ç÷§Æû¿¡ µ¶¸³ÀûÀÎ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ¸¶ À̰ÍÀÌ ¹ü¿ëÀûÀ¸·Î ¸ðµç ¾ð¾î¿¡ Àû¿ëµÈ´Ù¸é MS´Â ¶Ç´Ù½Ã ÇÁ·Î±×·¥ ¼¼°èÀÇ Á¦¿ÕÀÌ µÉ °ÍÀÔ´Ï´Ù.

 

±×·¸´Ù¸é ¿ÏÀüÇÑ ±â°è¾î´Â ´©°¡ ¸¸µé±î¿ä. À̰ÍÀº .NetÀÌ ¾Ë¾Æ¼­ ÇØÁÝ´Ï´Ù. .Net¿¡¼­ Áß°£¾ð¾î°¡ ·Îµå µÇ¾úÀ» ¶§ ¼ø°£ÀûÀ¸·Î ÄÄÆÄÀÏÀ» ÇØÁÖ´Â JIT(Just-In-Time) ÄÄÆÄÀÏ·¯°¡ ¾Ë¾Æ¼­ ÇØ ÁÝ´Ï´Ù.

 

 

 

.Net°ú Java

.NetÀº CLS, CTS, IL, JIT ÄÄÆÄÀÏ·¯ÀÇ Àý¹¦ÇÑ Á¶È­·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù. .NetÀº ¿©·¯ ¾ð¾î¸¦ ÇѲ¨¹ø¿¡ Áö¿øÇϸç À̰ÍÀº ´å³ÝÀÇ °³³äµéÀÌ À̸¦ µÞ¹Þħ ÇØÁֱ⠶§¹®¿¡ °¡´ÉÇÑ °ÍÀÔ´Ï´Ù. ´ëºÎºÐÀÇ ´å³ÝÀÇ ¿ë¾î¿¡ CommonÀ̶ó´Â ¿ë¾î°¡ ¸»ÇØ ÁÖµíÀÌ °øÅëµÈ ¾ð¾î½ºÆå(CLS), °øÅëµÈ ŸÀԽýºÅÛ(CTS)À̶ó°í ÇÏ´Â °Íµµ ´å³ÝÀÇ ´Ù¾çÇÑ ¾ð¾îÀÇ ¼ö¿ë ¶§¹®¿¡ ±×·± °ÍÀÔ´Ï´Ù.

 

ȤÀÚ´Â ÀÌ·¯ÇÑ ¸»À» ÇÒ °ÍÀÔ´Ï´Ù. ÀÚ¹Ù´Â ÀÎÅÍÇÁ¸®ÅÍ ¾ð¾îÀ̱⠶§¹®¿¡ ¹ÙÀÌÆ® Äڵ带 ÄÄÆÄÀÏÀ» ÇÏÁö ¾Ê°í ¹Ù·Î ÇØ¼®Çϱ⠶§¹®¿¡ ºü¸£´Ù. ÇÏÁö¸¸ .NetÀº Áß°£¾ð¾î¸¦ JIT¸¦ ÀÌ¿ëÇÏ¿© ÄÄÆÄÀÏÀ» ´Ù½Ã ÇÏÁö ¾Ê´À³Ä. ±×·¯¸é ¾öû ´À¸± °ÍÀÌ´Ù. ÀÌ