ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ์ ์ธ ํ๊ฐ ๊ธฐ์ค์ผ๋ก ๋ค์์ 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 ๊ฒ์ถ |
์ ๋ขฐ์ฑ ํฅ์ |
์์ธ์ฒ๋ฆฌ(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 ๋๋ถ์ ํ ๋ฒ ์์ฑํ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ์ปดํจํฐ์์ ์๋ฌด ์์ ์์ด ์ํ๋ ์ ์๋ค. ์คํ ํ๊ฒฝ์ ์ข ์์ ์ด์ง ์๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ๊ฐ ๊ธฐ์ค ์ฌ์ด์ ๊ด๊ณ
<์ ๋ขฐ์ฑ ↔ ํจ์จ์ฑ>, <์ ๋ขฐ์ฑ ↔ ์ ์ฐ์ฑ>, <์์ฑ๋ ฅ → ์ ๋ขฐ์ฑ>, <๊ฐ๋
์ฑ → ์ ๋ขฐ์ฑ>
- ์ ๋ขฐ์ฑ์ ๋์ด๋ ค๋ฉด ๋ ๋ง์ด ๊ฒ์ฌํด์ผํ๊ณ ์ด๋ ๊ฒ์ฌ ๋น์ฉ์ ๋ฐ๋ฅธ ํจ์จ์ฑ ์ ํ๋ฅผ ์ผ์ผํจ๋ค.
- ํ๋ก๊ทธ๋จ ์์ฑ ์ ์ ์ฝ์ด ์ ์ผ๋ฉด ์์ ์ฑ์ด ๋ฎ์์ง๋ค.
- ํ๋ก๊ทธ๋จ์ ์ฝ๊ฒ ์์ฑํ ์ ์์ผ๋ฉด ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ด ์ ์ด์ ธ ์ ๋ขฐ์ฑ์ด ํฅ์ํ๋ค.
- ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ํ๋ก๊ทธ๋จ์ ์ค๋ฅ ๊ฐ๋ฅ์ฑ์ด ์ ์ด์ ธ ์ ๋ขฐ์ฑ์ด ํฅ์ํ๋ค.
<์์ฑ๋ ฅ ↔ ๊ฐ๋
์ฑ>,
- ํ๋ก๊ทธ๋จ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํ ์๋ก ๊ฐ๋ ์ฑ์ ๋ฎ์์ง๋ค.
<์ง๊ต์ฑ → ์์ฑ๋ ฅ>, <์ง๊ต์ฑ ↔ ๊ฐ๋ ์ฑ>
- ๊ฐ๊ฒฐํ ๊ตฌ๋ฌธ ๊ตฌ์กฐ๋ฅผ ์กฐํฉํ์ฌ ์ฌ์ฉํ ์ ์๋ ์ธ์ด๋ ์์ฑ๋ ฅ์ด ์ข๋ค.
- ์๋ฒฝ์ ๊ฐ๊น์ด ์ง๊ต์ฑ์ ๊ฐ๋ ์ฑ์ ์ ํ ์์ธ์ด์ง๋ง ์์ฑ๋ ฅ์๋ ์ข๋ค.
ํฌ์คํ ๋ง์นจ.
๋๊ธ