๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Computer Science

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ํ‰๊ฐ€ ๊ธฐ์ค€

by Leica 2019. 10. 16.
๋ฐ˜์‘ํ˜•

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋Œ€ํ‘œ์ ์ธ ํ‰๊ฐ€ ๊ธฐ์ค€์œผ๋กœ ๋‹ค์Œ์˜ 9๊ฐ€์ง€๋ฅผ ๊ผฝ์„ ์ˆ˜ ์žˆ๋‹ค.

 

ํ‰๊ฐ€ ๊ธฐ์ค€ ์˜๋ฏธ
์ž‘์„ฑ๋ ฅ ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์‹์ด๋‚˜ ๋ฌธ์žฅ, ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ
๊ฐ€๋…์„ฑ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ณด๊ณ  ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŠน์„ฑ
์‹ ๋ขฐ์„ฑ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ค๋ฅ˜์— ๋น ์ง€๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ด๋Š” ํŠน์„ฑ
์ง๊ต์„ฑ ์–ธ์–ด ๊ธฐ๋Šฅ์ด ์„œ๋กœ ๊ฐ„์„ญํ•˜์ง€ ์•Š๊ณ  ์ž์œ ๋กญ๊ฒŒ ์กฐํ•ฉ๋  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ
์ผ๊ด€์„ฑ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ
ํ™•์žฅ์„ฑ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ
ํšจ์œจ์„ฑ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŠน์„ฑ
์œ ์—ฐ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์œ ์—ฐํ•˜๊ฒŒ ์ˆ˜์šฉํ•˜๋Š” ํŠน์„ฑ
์ด์‹์„ฑ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค๋ฅธ ์‹คํ–‰ ํ™˜๊ฒฝ์œผ๋กœ ์ด์ „ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ

 

์ž‘์„ฑ๋ ฅ

ํ”„๋กœ๊ทธ๋žจ ์ˆ˜์‹์ด๋‚˜ ๋ฌธ์žฅ, ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ

์ž‘์„ฑ๋ ฅ์€ ์ˆ˜์‹์ด๋‚˜ ๋ฌธ์žฅ, ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•จ์œผ๋กœ์จ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜๋„๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ง€์›๋˜๋Š” ๊ตฌ๋ฌธ ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๊ฒฐํ• ์ˆ˜๋ก ์ž‘์„ฑ๋ ฅ์ด ์ข‹๋‹ค. ์ง€์›๋˜๋Š” ๊ตฌ๋ฌธ ๊ตฌ์กฐ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์ž‘์„ฑ๋ ฅ์˜ ์ €ํ•˜ ์š”์ธ์ด ๋œ๋‹ค. ์†Œ์ˆ˜์˜ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด '1๋ถ€ํ„ฐ 5๊นŒ์ง€์˜ ์ •์ˆ˜ ์ค‘ 3์ด ์žˆ์œผ๋ฉด ๋ฌธ์žฅ์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ'์„ ์ž‘์„ฑํ•˜๋ ค ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๋‹ค์Œ์€ ๊ฐ๊ฐ Python๊ณผ C๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

 

if 3 in [1,2,3,4,5]: print("3์ด ์žˆ์Šต๋‹ˆ๋‹ค")	# Python

 

#include <stdio.h>

int main()	// C
{
	int numArr[5] = { 1, 2, 3, 4, 5 };
	for(int i = 0; i < 5; i++) {
    	if (numArr[i] == 3) {
        	printf("3์ด ์žˆ์Šต๋‹ˆ๋‹ค.\n");
    	}
    }
    
    return 0;
}

 

๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ ๊ธธ์ด๋ถ€ํ„ฐ๊ฐ€ ๋‹ค๋ฅด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ œ์‹œ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ ค ํ•  ๋•Œ Python์€ C์™€ ๋น„๊ตํ•˜์—ฌ ํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ  ์˜๋„๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ Python์€ ์ž‘์„ฑ๋ ฅ์ด ๋›ฐ์–ด๋‚œ ์–ธ์–ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์ž‘์„ฑ๋ ฅ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์š”๊ตฌ์‚ฌํ•ญ ์ค‘ ํ‘œํ˜„ ํ’๋ถ€์„ฑ๊ณผ ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์„ ์ง€์›ํ•œ๋‹ค. ์ฆ‰ Python์€ ๋น„๊ต์  ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์•„์ด๋””์–ด๋ฅผ ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ  ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ฒŒ ์œ ์ง€๋ณด์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์ด๋‹ค.

 

๊ฐ€๋…์„ฑ

์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ฒŒ ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŠน์„ฑ

ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•  ์ˆ˜๋ก(์—ฌ๊ธฐ์„œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š์ง€๋งŒ '๊ฐ„๊ฒฐ์„ฑ'๋„ ํ‰๊ฐ€ ๊ธฐ์ค€ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.) ๊ฐ€๋…์„ฑ์€ ๋‚ฎ์•„์ง„๋‹ค. ์ด๋Š” C์˜ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

a์˜ ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œํ‚ฌ๋•Œ C๋Š” ์ฆ๊ฐ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ a++;๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ์— ๋ฐ˜ํ•ด PASCAL์€ a:=a+1;๋กœ, COBOL์€ ADD a TO 1 GIVING a;๋กœ ํ‘œํ˜„๋œ๋‹ค.

 

a์˜ ๊ฐ’์— 1์„ ๋”ํ•˜์—ฌ a์— ์ €์žฅํ•œ๋‹ค.
C a++;
PASCAL a:=a+1;
COBOL ADD a TO 1 GIVING a;

C -> PASCAL -> COBOL ์ˆœ์œผ๋กœ ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ  ์—ญ์œผ๋กœ COBOL -> PASCAL -> C ์ˆœ์œผ๋กœ ๊ฐ„๊ฒฐ์„ฑ์ด ์ข‹๋‹ค. COBOL์€ ์˜์–ด์™€ ๋ฌธ๋ฒ•์ด ์œ ์‚ฌํ•˜์—ฌ ๊ฐ€๋…์„ฑ์ด ์ข‹์€ ์–ธ์–ด์ด๋‹ค.

 

์‹ ๋ขฐ์„ฑ

์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ์˜ค๋ฅ˜์— ๋น ์ง€๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์ค„์ด๋Š” ํŠน์„ฑ

์‹ ๋ขฐ์„ฑ์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ์š”์ธ๋“ค๋กœ๋Š” ํƒ€์ž… ๊ฒ€์‚ฌ(Type Checking), ์˜ˆ์™ธ์ฒ˜๋ฆฌ(Exception Handling), ๋ณ„์นญ(Aliasing)์ด ์žˆ๋‹ค.

 

ํƒ€์ž… ๊ฒ€์‚ฌ(Type Checking)

- compile ํ˜น์€ ์‹คํ–‰ ์‹œ type error ๊ฒ€์ถœ
- type error๋Š” ์ผ์ฐ ๊ฒ€์ถœ๋ ์ˆ˜๋ก ์˜ค๋ฅ˜ ์ˆ˜์ • ๋น„์šฉ์ด ์ ๋‹ค.
- compile ์‹œ ๊ฒ€์ถœํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋ฉฐ ์‹คํ–‰ ์‹œ์—๋Š” ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ
์˜ˆ์™ธ์ฒ˜๋ฆฌ(Exception Handling)

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์‹œ run-time error๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ, ์ด๋ฅผ ์ธ์‹ํ•˜๊ณ  ์˜ค๋ฅ˜๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•„์š”ํ•œ ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ
๋ณ„์นญ(Aliasing)

๋ฉ”๋ชจ๋ฆฌ์˜ ํ•œ ์ €์žฅ ์žฅ์†Œ๋ฅผ ์—ฌ๋Ÿฌ ์ด๋ฆ„์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

 ์‹ ๋ขฐ์„ฑ ํ•˜๋ฝ

 

์ง๊ต์„ฑ

์–ธ์–ด ๊ธฐ๋Šฅ์ด ์„œ๋กœ ๊ฐ„์„ญํ•˜์ง€ ์•Š๊ณ  ์ž์œ ๋กญ๊ฒŒ ์กฐํ•ฉ๋  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ

์–ธ์–ด์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ž„์˜๋กœ ์กฐํ•ฉํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์˜๋ฏธ์ ์œผ๋กœ ์„œ๋กœ ๋…๋ฆฝ์ ์ด์–ด์•ผ ํ•œ๋‹ค. ์ด ํŠน์„ฑ์ด ๋ถ€์กฑํ•œ ์–ธ์–ด์—์„œ๋Š” ๊ตฌ์„ฑ ์š”์†Œ์˜ ์‚ฌ์šฉ ๊ทœ์น™์— ์˜ˆ์™ธ์ ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์™„๋ฒฝ์— ๊ฐ€๊นŒ์šด ์ง๊ต์„ฑ์„ ์ง€์›ํ•˜๋Š” ์–ธ์–ด๋Š” ๊ฐ€๋…์„ฑ์„ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ์–ธ์–ด๊ฐ€ ์ง๊ต์„ฑ์ด ์šฐ์ˆ˜ํ•˜๋‹ค.

๋ง์…ˆ ์—ฐ์‚ฐ์ž๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด์ž. C๋Š” ๋ฌธ์ž์—ด์— ๋ง์…ˆ ์—ฐ์‚ฐ์„ ์ ์šฉํ•  ์ˆ˜ ์—†์ง€๋งŒ Python์€ ๊ฐ€๋Šฅํ•˜๋‹ค.(๋ฌธ์ž์—ด ๋ง์…ˆ์„ ํ—ˆ์šฉํ•˜๋Š” C ์ปดํŒŒ์ผ๋Ÿฌ๋„ ๋ฌธ์ž์—ด ์ž์ฒด๋ฅผ ์ ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํฌ์ธํ„ฐ ๋ง์…ˆ์œผ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ๊ณ„์‚ฐํ•œ๋‹ค.)

 

print("hello" + "world")

์ถœ๋ ฅ ๊ฒฐ๊ณผ: helloworld

 

์ด๋Ÿฐ ์ธก๋ฉด์—์„œ Python์ด C๋ณด๋‹ค ์ง๊ต์„ฑ์ด ์šฐ์ˆ˜ํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Python๋„ ์™„์ „ํžˆ ์ง๊ต์„ฑ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ง‘ํ•ฉ์˜ ๊ฒฝ์šฐ ๋ง์…ˆ ์—ฐ์‚ฐ์„ ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

์ผ๊ด€์„ฑ

์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ

์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ง€์›ํ•˜๋Š” ํŠน์„ฑ์„ ๋œปํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด C++์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ๋•Œ์™€ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ๋ชจ๋‘ ์ค‘๊ด„ํ˜ธ ์Œ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•  ๋•Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํด๋ž˜์Šค ์ •์˜ ๋์— ๋ฐ˜๋“œ์‹œ ์„ธ๋ฏธ์ฝœ๋ก ์„ ์จ์•ผํ•œ๋‹ค.

 

class ํด๋ž˜์Šค {
	ํด๋ž˜์Šค ์ •์˜
};	//์„ธ๋ฏธ์ฝœ๋ก O

int ํ•จ์ˆ˜() {
	ํ•จ์ˆ˜ ์ •์˜
}	//์„ธ๋ฏธ์ฝœ๋ก X

 

์ด๋Š” ์ผ๊ด€์„ฑ์ด ๊ฒฐ์—ฌ๋œ ์‚ฌ๋ก€๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

ํšจ์œจ์„ฑ

์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ํšจ์œจ์ ์œผ๋กœ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŠน์„ฑ

์„ค๊ณ„๋œ ์–ธ์–ด๊ฐ€ ๋ฒˆ์—ญ๊ธฐ(์ปดํŒŒ์ผ๋Ÿฌ/์ธํ„ฐํ”„๋ฆฌํ„ฐ)๋กœ ๋น ๋ฅด๊ฒŒ ๋ฒˆ์—ญํ•˜์—ฌ ์‹คํ–‰์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ์„ ๋œปํ•œ๋‹ค. ํšจ์œจ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์€ ์ƒ๋ฐ˜๋œ๋‹ค. ๋ฒˆ์—ญ๊ธฐ๊ฐ€ ๊ฒ€์‚ฌ๋ฅผ ์ ๊ฒŒ ํ•˜๋ฉด ํšจ์œจ์ ์ด์ง€๋งŒ ์‹ ๋ขฐ์„ฑ์€ ๋–จ์–ด์ง„๋‹ค.

C ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ์šฐ assert๋ผ๋Š” ๋งคํฌ๋กœ๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ๋„์ค‘ ํŠน์ • ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

assert(x != NULL);	//x๊ฐ€ NULL์ธ์ง€ ๊ฒ€์‚ฌ

 

์ˆ˜ํ–‰ ์ค‘์— ํ•ด๋‹น ์ง€์ ์—์„œ x๊ฐ€ NULL์ด๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ค‘๋‹จํ•˜๊ณ  ์‹คํŒจํ•œ ์œ„์น˜๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค. assert๋Š” ์‹ ๋ขฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ง€๋งŒ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์‹œ ๋งค๋ฒˆ ๊ฒ€์‚ฌ๋ฅผ ํ•ด์•ผํ•˜๋ฏ€๋กœ ํšจ์œจ์„ฑ์€ ๋–จ์–ด๋œจ๋ฆฐ๋‹ค.(C ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ์ „์ฒ˜๋ฆฌ๊ธฐ ์˜ต์…˜ NDEBUG๋ฅผ ์‚ฌ์šฉํ•ด์„œ assert ๊ฒ€์‚ฌ๋ฅผ ๋Œ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ ์žˆ๋‹ค.)

 

์œ ์—ฐ์„ฑ

ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ํ‘œํ˜„ํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์œ ์—ฐํ•˜๊ฒŒ ์ˆ˜์šฉํ•˜๋Š” ํŠน์„ฑ

C์—์„œ ์œ ์—ฐ์„ฑ์˜ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ๋ก€๋กœ union์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ์€ C๋กœ ์ž‘์„ฑ๋œ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆ˜๋ฅผ ๋ฌด๋ถ€ํ˜ธ ์ •์ˆ˜๋กœ ๋ฐ”๊พธ์–ด ํ•ด์„ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

unsigned int function_example(float f) {
	union {
    	float f;
        unsigned int i;
    } u;
    
    u.f = f;
    
    return u.i;
}

 

C์—์„œ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆ˜๋ฅผ ์ •์ˆ˜๋กœ ํ˜• ๋ณ€ํ™˜ํ•˜๋ฉด ์†Œ์ˆ˜์  ์ดํ•˜ ๋ฒ„๋ฆผ์ด ๋ฐœ์ƒํ•˜์ง€๋งŒ ์œ„์™€ ๊ฐ™์ด union์„ ํ†ตํ•ด ๋ณ€ํ™˜ํ•˜๋ฉด ๊ฐ’ ์ค‘์‹ฌ์˜ ๋ณ€ํ™”๊ฐ€ ์•„๋‹ˆ๋ผ float ๋‚ด๋ถ€ ํ‘œ๊ธฐ ๊ตฌ์กฐ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ํฐ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ด์‹์„ฑ

ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค๋ฅธ ์‹คํ–‰ ํ™˜๊ฒฝ์œผ๋กœ ์ด์ „ํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ

์ด์‹์„ฑ์ด ์ข‹์€ ๋Œ€ํ‘œ์ ์ธ ์–ธ์–ด๋Š” JAVA์ด๋‹ค. JAVA๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์™€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์˜ ์ค‘๊ฐ„ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ๋‹ค. ์ปดํŒŒ์ผ ๊ฒฐ๊ณผ๋กœ ์ค‘๊ฐ„ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๋ฉฐ JVM์ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ์ค‘๊ฐ„ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. JVM ๋•๋ถ„์— ํ•œ ๋ฒˆ ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์€ ์—ฌ๋Ÿฌ ์ปดํ“จํ„ฐ์—์„œ ์•„๋ฌด ์ˆ˜์ • ์—†์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. ์‹คํ–‰ ํ™˜๊ฒฝ์— ์ข…์†์ ์ด์ง€ ์•Š๋‹ค.

 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ํ‰๊ฐ€ ๊ธฐ์ค€ ์‚ฌ์ด์˜ ๊ด€๊ณ„

<์‹ ๋ขฐ์„ฑ ↔ ํšจ์œจ์„ฑ>, <์‹ ๋ขฐ์„ฑ ↔ ์œ ์—ฐ์„ฑ>, <์ž‘์„ฑ๋ ฅ → ์‹ ๋ขฐ์„ฑ>, <๊ฐ€๋…์„ฑ ์‹ ๋ขฐ์„ฑ>

- ์‹ ๋ขฐ์„ฑ์„ ๋†’์ด๋ ค๋ฉด ๋” ๋งŽ์ด ๊ฒ€์‚ฌํ•ด์•ผํ•˜๊ณ  ์ด๋Š” ๊ฒ€์‚ฌ ๋น„์šฉ์— ๋”ฐ๋ฅธ ํšจ์œจ์„ฑ ์ €ํ•˜๋ฅผ ์ผ์œผํ‚จ๋‹ค.

- ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ์‹œ ์ œ์•ฝ์ด ์ ์œผ๋ฉด ์•ˆ์ •์„ฑ์ด ๋‚ฎ์•„์ง„๋‹ค.

- ํ”„๋กœ๊ทธ๋žจ์„ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ์ด ์ ์–ด์ ธ ์‹ ๋ขฐ์„ฑ์ด ํ–ฅ์ƒํ•œ๋‹ค.

- ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ํ”„๋กœ๊ทธ๋žจ์€ ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ์ด ์ ์–ด์ ธ ์‹ ๋ขฐ์„ฑ์ด ํ–ฅ์ƒํ•œ๋‹ค.

 

<์ž‘์„ฑ๋ ฅ ↔ ๊ฐ€๋…์„ฑ>,

- ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•  ์ˆ˜๋ก ๊ฐ€๋…์„ฑ์€ ๋‚ฎ์•„์ง„๋‹ค.

 

<์ง๊ต์„ฑ → ์ž‘์„ฑ๋ ฅ>, <์ง๊ต์„ฑ ๊ฐ€๋…์„ฑ>

- ๊ฐ„๊ฒฐํ•œ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋Š” ์ž‘์„ฑ๋ ฅ์ด ์ข‹๋‹ค.

- ์™„๋ฒฝ์— ๊ฐ€๊นŒ์šด ์ง๊ต์„ฑ์€ ๊ฐ€๋…์„ฑ์˜ ์ €ํ•˜ ์š”์ธ์ด์ง€๋งŒ ์ž‘์„ฑ๋ ฅ์—๋Š” ์ข‹๋‹ค.

 

ํฌ์ŠคํŒ… ๋งˆ์นจ.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€