ํฌ์ŠคํŠธ

๐ŸŒš ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด - Primitive Data Type

๐Ÿ’ซ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž… - Primitive Data Type


@ U ๊ธฐ๋ง๊ณ ์‚ฌ ์ถœ์ œ : ์–ธ์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š”, ๋˜ํ•œ ๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ์ •์˜๋˜์ง€ ์•Š๋Š” ํƒ€์ž…์„ ๋งํ•œ๋‹ค.
  • ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ ํƒ€์ž…(๋ฐฐ์—ด, ๊ตฌ์กฐ์ฒด ๋“ฑ)์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์šฉ๋œ๋‹ค.

  • ํ•˜๋“œ์›จ์–ด ๋ฐ˜์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…: ์ •์ˆ˜(int), ์‹ค์ˆ˜(float)
  • ์•ฝ๊ฐ„์˜ ๋น„ํ•˜๋“œ์›จ์–ด์  ์ง€์›์„ ๋ฐ›๋Š” ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋„ ์žˆ์„ ์ˆ˜ ์žˆ์Œ

๐Ÿ’ซ ์ˆ˜์น˜ ํƒ€์ž…


  • ์ดˆ๊ธฐ๋ถ€ํ„ฐ ์˜ค๋Š˜๋‚ ๊นŒ์ง€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์ˆ˜์น˜ ํƒ€์ž…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๊ณ  ์žˆ๋‹ค.

๐Ÿซง ์ •์ˆ˜

  • ํ˜„๋Œ€์˜ ์ปดํ“จํ„ฐ๋Š” ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ ์ •์ˆ˜ ํƒ€์ž…์„ ์ง€์›ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋˜ํ•œ ์ด๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ์ง€์›
    • Java ๋ถ€ํ˜ธํ™” ์ •์ˆ˜ : byte, short, int, long
    • C/C++ ๋ถ€ํ˜ธํ™”/๋น„๋ถ€ํ˜ธํ™” ์ •์ˆ˜ : int, unsigned int, short, unsigned short, โ€ฆ
    • Python : ๊ธธ์ด์— ์ œ์•ฝ์ด ์—†๋Š” ์ •์ˆ˜ ํƒ€์ž…
      • ํ•˜๋“œ์›จ์–ด์— ์˜ํ•ด ์ง์ ‘ ์ง€์›๋˜์ง€ ์•Š๋Š” ์ •์ˆ˜ ํƒ€์ž… (๋น„ํ•˜๋“œ์›จ์–ด์  ์ง€์›์„ ๋ฐ›๋Š” ์ •์ˆ˜ ํƒ€์ž…)
  • ์Œ์˜ ์ •์ˆ˜ ํ‘œํ˜„
    • ๋ถ€ํ˜ธ-ํฌ๊ธฐ ํ‘œ๊ธฐ๋ฒ•
      • ๋ถ€ํ˜ธ ๋น„ํŠธ๊ฐ€ 0์ด๋ฉด ์–‘์ˆ˜, 1์ด๋ฉด ์Œ์ˆ˜
      • ํฌ๊ธฐ๋Š” ์ ˆ๋Œ€๊ฐ’์„ ํ‘œํ˜„
      • ๋ฌธ์ œ์ : ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์œ„ํ•œ ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด ์ œ์ž‘์ด ๋งค์šฐ ์–ด๋ ต๋‹ค
    • 2์˜ ๋ณด์ˆ˜ ํ‘œ๊ธฐ๋ฒ•
      • ์Œ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ 2์˜ ๋ณด์ˆ˜ ํ‘œ๊ธฐ๋ฒ• ์‚ฌ์šฉ
      • ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์œ„ํ•œ ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด ์ œ์ž‘์ด ์•„์ฃผ ์‰ฝ๋‹ค
      • 1์˜ ๋ณด์ˆ˜๋ฅผ ๋งŒ๋“  ํ›„ 1์„ ๋”ํ•ด์ค˜์„œ 2์˜ ๋ณด์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์ƒ์„ฑ ๊ฐ€๋Šฅ

๐Ÿซง ๋ถ€๋™ ์†Œ์ˆ˜์ 

  • ์‹ค์ˆ˜ ๊ฐ’, ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ ์‹ค์ˆ˜ ๊ฐ’์— ๋Œ€ํ•œ ๊ทผ์‚ฌ๊ฐ’
  • ์‚ฐ์ˆ ์—ฐ์‚ฐ ์‹œ์— ์ •ํ™•๋„๋ฅผ ์ƒ์‹คํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ 
  • ๊ณผ๊ฑฐ์—๋Š” ์ปดํ“จํ„ฐ๋งˆ๋‹ค ๋ถ€๋™ ์†Œ์ˆ˜์ ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์ด ๋‹ฌ๋ž์œผ๋‚˜, IEEE์—์„œ ๋ถ€๋™ ์†Œ์ˆ˜์  ํ‘œํ˜„์„ ํ‘œ์ค€ํ™” ํ•จ -> IEEE 754
    • ๋‹จ์ •๋„(Single precision) -> float, ๋ฐฐ์ •๋„(Double precision) -> double

@ PIC 0001, 0002

๐Ÿซง ๊ณ ์ • ์†Œ์ˆ˜์ , ์‹ญ์ง„์ˆ˜

@ PIC 0003

  • ์‹ญ์ง„์ˆ˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๊ณ ์ •๋œ ์ˆ˜์˜ ์‹ญ์ง„์ˆ˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์†Œ์ˆ˜์ ์€ ๊ณ ์ •๋œ ์œ„์น˜๋ฅผ ๊ฐ€์ง

  • ์ œํ•œ๋œ ๋ฒ”์œ„์— ํฌํ•จ๋œ ์‹ญ์ง„์ˆ˜ ๊ฐ’๋“ค์„ ์ •ํ™•ํ•˜๊ฒŒ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ์Œ
    • ์‚ฌ๋ฌด์šฉ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ํƒ€์ž…
  • ์ปดํ“จํ„ฐ์˜ ์‹ญ์ง„์ˆ˜ ํ‘œํ˜„(BCD: Binary Coded Decimal) ์ง€์› ์—ฌ๋ถ€
    • ์‚ฌ๋ฌด ์‹œ์Šคํ…œ ์‘์šฉ ๋ถ„์•ผ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ํฐ ๊ทœ๋ชจ์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ปดํ“จํ„ฐ์—์„œ ์‹ญ์ง„์ˆ˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์œ„ํ•œ ํ•˜๋“œ์›จ์–ด ์ง€์›์„ ํฌํ•จ
    • Intel CPU์˜ ๊ฒฝ์šฐ ์ œํ•œ์  ์ง€์›
    • ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ BCD์ฒ˜๋ฆฌ๊ฐ€ ์ง€์›๋˜๋Š” ๊ฒฝ์šฐ ํ•˜๋“œ์›จ์–ด์ ์œผ๋กœ ์ฒ˜๋ฆฌ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์†Œํ”„ํŠธ์›จ์–ด ์ ์œผ๋กœ ์ฒ˜๋ฆฌ(์—๋ฎฌ๋ ˆ์ดํŒ…) ํ•จ
1
2
3
4
5
double doubleTemp = 0.1 + 0.2;
Console.WriteLine(doubleTemp == 0.3); // false

decimal decimalTemp = 0.1m + 0.2m;
Console.WriteLine(decimalTemp == 0.3m); // true

๐Ÿซง ๋ถˆ๋ฆฌ์•ˆ ํƒ€์ž…

  • ์ฐธ๊ณผ ๊ฑฐ์ง“์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ํƒ€์ž…

  • ์Šค์œ„์น˜๋‚˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
    • ์ •์ˆ˜์™€ ๊ฐ™์€ ํƒ€๋ฅธ ํƒ€์ž…์ด ์ด๋Ÿฐ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ฐ€๋…์„ฑ ์ธก๋ฉด์—์„œ, ๋ถˆ๋ฆฌ์•ˆ ํƒ€์ž… ์‚ฌ์šฉ
  • ํ•œ ๋น„ํŠธ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‚˜ ์ปดํ“จํ„ฐ์—์„œ์˜ ์ตœ์†Œํ•œ์˜ ์ ‘๊ทผ ๋‹จ์œ„ ๋•Œ๋ฌธ์— ํ•œ ๋ฐ”์ดํŠธ๋กœ ๊ตฌํ˜„

  • ์ˆ˜์น˜์‹์ด ์กฐ๊ฑด์‹์œผ๋กœ ํ—ˆ์šฉ๋˜๋Š” ์–ธ์–ด๋„ ์žˆ๊ณ , ์•ˆ๋˜๋Š” ์–ธ์–ด๋„ ์žˆ๊ณ 
    • 0 false, 1 true

๐Ÿซง ๋ณต์†Œ์ˆ˜

  • Python : ๋ณต์†Œ์ˆ˜์™€ ๋ณต์†Œ์ˆ˜ ์—ฐ์‚ฐ์„ ์ง€์›, ํ—ˆ์ˆ˜๋ถ€๋Š” j ํ˜น์€ J๋กœ ํ‘œํ˜„
1
2
3
4
>>> (5 + 2j) + (7 + 2j)
(12 + 4j)
>>> (5 + 2j) * (7 + 2j)
(31 + 24j)

๐Ÿซง ๋ฌธ์ž

  • ๋‹จ์ผ ๋ฌธ์ž ๋ฐ์ดํ„ฐ. ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋Š” ์ˆ˜์น˜ ์ฝ”๋”ฉ์œผ๋กœ ์ปดํ“จํ„ฐ์— ์ €์žฅ
  • ASCII, ISO 8859-1, Unicode, โ€ฆ

๐Ÿซง ๋ฌธ์ž์—ด

โ€ฆ

๐Ÿ’ซ ๋ฌธ์ž์—ด - Char String


  • ์ผ๋ จ์˜ ๋ฌธ์ž๋“ค๋กœ ๊ตฌ์„ฑ๋˜๋Š” ํƒ€์ž…

  • ๋ฌธ์ž์—ด ์ƒ์ˆ˜๋Š” ์ถœ๋ ฅ์— ๋ ˆ์ด๋ธ”์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ชจ๋“  ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ์ธ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์€ ํ”ํžˆ ๋ฌธ์ž์—ด ๊ด€์ ์—์„œ ์ด๋ฃจ์–ด์ง

  • ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ

    • ๋ฌธ์ž์—ด์ด ๋‹จ์ˆœํžˆ ๋ฌธ์ž ๋ฐฐ์—ด์˜ ํŠน์ˆ˜ํ•œ ์œ ํ˜•์ธ๊ฐ€ ํ˜น์€ ๊ธฐ๋ณธ ํƒ€์ž…์ธ๊ฐ€?
    • ๋ฌธ์ž์—ด์ด ์ •์  ๊ธธ์ด ํ˜น์€ ๋™์  ๊ธธ์ด๋ฅผ ๊ฐ–๋Š”๊ฐ€?

๐Ÿซง ๋ฌธ์ž์—ด๊ณผ ์—ฐ์‚ฐ

  • ๊ฐ€์žฅ ๊ณตํ†ต์ ์ธ ์—ฐ์‚ฐ : ๋ฐฐ์ •, ์ ‘ํ•ฉ, ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ฐธ์กฐ, ๋น„๊ต, ํŒจํ„ด ๋งค์นญ, โ€ฆ

  • ๋ฐฐ์ •, ๋น„๊ต์˜ ๊ณ ๋ ค์‚ฌํ•ญ : ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๊ฐ„ ๋ฐฐ์ •๊ณผ ๋น„๊ต๋Š” ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€?

  • ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ฐธ์กฐ(Substring reference)
    • ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์— ๋Œ€ํ•œ ์ฐธ์กฐ -> ์Šฌ๋ผ์ด์Šค(Slices)
  • in c/cpp
    • char ๋ฐฐ์—ด๋กœ ๋ฌธ์ž์—ด ์ €์žฅ
      • ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž โ€˜\0โ€™์œผ๋กœ ๋๋‚˜์•ผ ํ•จ
      • ๊ธธ์ด ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜์ง€ ์•Š๊ณ , โ€˜\0โ€™๋กœ ๋์„ ํ‘œ์‹œ
      • ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์˜ ๊ฒฝ์šฐ, ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ โ€˜\0โ€™์„ ์ฒจ๊ฐ€
        • i.e. char str[] = โ€œapplesโ€;
    • ํ‘œ์ค€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์„ ์ œ๊ณต
      • ๋ฌธ์ž์—ด ์—ฐ์‚ฐ ํ•จ์ˆ˜๋Š” โ€˜\0โ€™์„ ๋งŒ๋‚ ๋•Œ๊นŒ์ง€ ํ•ด๋‹น ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰
        • strcpy, strcat, strcmp, strlen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
char temp[4] = ['T', 'e', 'm', 'p'];
char temp[5] = ['T', 'e', 'm', 'p', '\0'];
char temp[5] = "Temp"; // ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋์— \0 ์ถ”๊ฐ€

// Data ์˜์—ญ์— ReadOnly๋กœ "Temp"๊ฐ€ ์ €์žฅ๋˜๊ณ 
// Stack์—์„œ temp ๋ณ€์ˆ˜๊ฐ€ "Temp"๋ฅผ ๊ฐ€๋ฆฌํ‚ด
char* temp = "Temp"; // ๋ณ€์ˆ˜ ํฌ๊ธฐ : ์ฃผ์†Œ ํฌ๊ธฐ
char temp[] = "Temp"; // ๋ณ€์ˆ˜ ํฌ๊ธฐ : ๋ฌธ์ž ์ˆ˜ ๋งŒํผ

// Heap, malloc์œผ๋กœ ๋งŒ๋“ค๊ธฐ

char a[10];
char b[6] = "Hello";
char c = "Hello World";
strcpy(a, c);
printf("%s\n", b); // "d" ์ถœ๋ ฅ
  • C
    • ํ‘œ์ค€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฌธ์ž์—ด ์กฐ์ž‘ ํ•จ์ˆ˜๊ฐ€ ์•ˆ์ „ํ•˜์ง€ ์•Š์Œ
    • ๋ชฉ์ ์ง€ ๋ฌธ์ž์—ด์—์„œย ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณดํ˜ธํ•˜์ง€ ์•Š์Œ
    • i.e. strcpy(dest, src) : src๊ฐ€ dest๋ณด๋‹ค ๊ธธ์ด๊ฐ€ ๊ธด๊ฒฝ์šฐ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒ
  • C++
    • ํ‘œ์ค€ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ ๋ฌธ์ž์—ด(string) ์ง€์›
    • C ๋ฌธ์ž์—ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ถˆ์•ˆ์ •์„ฑ์„ ๋ณด์™„ํ•˜๊ธฐ์œ„ํ•ด ๊ฐ€๊ธ‰์  string์„ ์‚ฌ์šฉ ๊ถŒ๊ณ 
  • Python, JS, Ruby, โ€ฆ
    • ๋ฌธ์ž์—ด์„ ๊ธฐ๋ณธ ํƒ€์ž…์œผ๋กœ ์ œ๊ณตํ•˜๋ฉฐ Immutable

๐Ÿซง ๋ฌธ์ž์—ด ๊ธธ์ด ์„ ํƒ์‚ฌํ•ญ

  • ์ •์  ๊ธธ์ด ๋ฌธ์ž์—ด
    • ๋ฌธ์ž์—ด ๊ธธ์ด๋Š” ์ •์ ์ด๊ณ  ๋ฌธ์ž์—ด์ด ์ƒ์„ฑ๋  ๋•Œ ์„ค์ •
      • C++ string ํƒ€์ž…
  • ์ œํ•œ๋œ ๋™์  ๊ธธ์ด ๋ฌธ์ž์—ด
    • ๋ณ€์ˆ˜ ์ •์˜์— ์„ ์–ธ๋˜๊ณ  ๊ณ ์ •๋œ ์ตœ๋Œ€ ๊ธธ์ด๊นŒ์ง€์˜ ๊ฐ€๋ณ€์ ์ธ ๊ธธ์ด๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์„ ํ—ˆ์šฉ
      • C ๋ฌธ์ž์—ด, C++์—์„œ์˜ C ์Šคํƒ€์ผ ๋ฌธ์ž์—ด
  • ๋™์  ๊ธธ์ด ๋ฌธ์ž์—ด
    • ๋ฌธ์ž์—ด์ด ์ตœ๋Œ€ ๊ธธ์ด ์ œํ•œ์—†์ด ๊ฐ€๋ณ€๊ธธ์ด๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์„ ํ—ˆ์šฉ
      • ๋™์  ๊ธฐ์–ต์žฅ์†Œ์˜ ํ• ๋‹น๊ณผ ํ•ด์ œ๋กœ ์„ฑ๋Šฅ์— ๋ถ€๋‹ด์ด ์žˆ์œผ๋‚˜ ์ตœ๊ณ ์˜ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณต
      • ์›น ๋ฐ์ดํ„ฐ๋Š” ๋Œ€๋ถ€๋ถ„ ๋ฌธ์ž์—ด์ด๋‹ค ๋ณด๋‹ˆ ๋งŽ์ด ์“ฐ์—ฌ์„œ

๐Ÿซง ํ‰๊ฐ€

  • ๋ฌธ์ž์—ด ํƒ€์ž…์€ ์–ธ์–ด์˜ ์ž‘์„ฑ๋ ฅ์— ์ค‘์š”ํ•œ ์˜ํ–ฅ์„ ๋ฏธ์นจ

  • C ์Šคํƒ€์ผ์˜ ๋ฌธ์ž์—ด ์ง€์› ๋ฐฉ์‹์˜ ๋ถ€์ž์—ฐ์Šค๋Ÿฌ์›€
    • C์—์„œ๋Š” ๋ฌธ์ž์—ด์ด ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์•„๋‹ˆ๊ณ  ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌ
      • ๋งŒ์•ฝ strcpy๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฌธ์ž์—ด์˜ ๋‹จ์ˆœ ๋ฐฐ์ •๋„ ๋ฃจํ”„๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ
  • ๋ฌธ์ž์—ด์„ ๊ธฐ๋ณธ ํƒ€์ž…์— ํฌํ•จ์‹œํ‚ค๋Š” ๊ฒƒ์˜ ๋น„์šฉ์ด ๋งŽ์ง€ ์•Š์Œ
    • ๋”ฐ๋ผ์„œ ์˜ค๋Š˜๋‚  ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด์—์„œ ๋ฌธ์ž์—ด์„ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐํƒ€์ž…์œผ๋กœ ํฌํ•จ
    • ๋‹จ์ˆœ ๋ฌธ์ž์—ด ๋น„๊ต๋‚˜ ๋ฌธ์ž์—ด ์ ‘ํ•ฉ ์—ฐ์‚ฐ์ด ๊ธฐ๋ณธ ์ œ๊ณต

๐Ÿซง ๋ฌธ์ž์—ด ํƒ€์ž…์˜ ๊ตฌํ˜„

  • ๋ฌธ์ž์—ด ํƒ€์ž…์„ ํ•˜๋“œ์›จ์–ด๋กœ ์ง์ ‘ ์ง€์›ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๊ธฐ์–ต๊ณต๊ฐ„, ๊ฒ€์ƒ‰, ์กฐ์ž‘์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์†Œํ”„ํŠธ์›จ์–ด์ ์œผ๋กœ ์ ‘๊ทผ
  • ๋ฌธ์ž์—ด์ด ๋ฌธ์ž ๋ฐฐ์—ด๋กœ ํ‘œํ˜„๋  ๋•Œ (C์˜ ๊ฒฝ์šฐ) ์–ธ์–ด์—์„œ ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์„ ๊ฑฐ์˜ ์ œ๊ณตํ•˜์ง€ ์•Š์Œ -> ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ๊ณต

๐Ÿ’ซ ๋ ˆ์ฝ”๋“œ ํƒ€์ž…


@ U ๊ธฐ๋ง๊ณ ์‚ฌ ์ถœ์ œ : ๋ ˆ์ฝ”๋“œ ํƒ€์ž…์— ๋Œ€ํ•˜์—ฌ ์„ค๋ช…ํ•˜๊ณ  ๊ทธ ์˜์˜๋ฅผ ์„ค๋ช…ํ•˜์‹œ์˜ค.

  • ๊ฐ ์š”์†Œ๋“ค์ด ์ด๋ฆ„์œผ๋กœ ์‹๋ณ„
  • ๊ตฌ์กฐ์˜ ์‹œ์ž‘๋ถ€ํ„ฐ ์˜คํ”„์…‹์„ ํ†ตํ•ด ์ ‘๊ทผ
    • ๊ฐœ๊ฐœ์˜ ์›์†Œ๋“ค์ด ๋™์ผํ•œ ํƒ€์ž…์ด๋‚˜ ํฌ๊ธฐ๊ฐ€ ์•„๋‹Œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์ž„์„ ๋ชจ๋ธ๋ง ํ•  ๋•Œ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์‚ฌ์šฉ

@ ? Java ๊ตฌ์กฐ์ฒด ๋”ฐ๋กœ ์—†๋Š”๋ฐ?
@ TODO : Java ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ
class loading (code + data)
stack
heap (managed by JVM GC)

๐Ÿซง ํ‰๊ฐ€_๋ ˆ์ฝ”๋“œ ํƒ€์ž…

์„ค๊ณ„๋Š” ๊ฐ„๋‹จํ•˜๋ฉฐ ์‚ฌ์šฉ์€ ์•ˆ์ „ํ•˜๋‹ค.

  • vs ๋ฐฐ์—ด
    • ๋ ˆ์ฝ”๋“œ๋Š” ์ด์งˆ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉ
    • ๋ ˆ์ฝ”๋“œ์˜ ์š”์†Œ๋Š” ํ•„๋“œ๋กœ ์ ‘๊ทผ (์ƒ‰์ธ X)
    • ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•  ํ•„์š”๊ฐ€ ์—†์Œ

๐Ÿ’ซ ํŠœํ”Œ


  • ๋ ˆ์ฝ”๋“œ ํƒ€์ž…๊ณผ ๋น„์Šทํ•˜๋‚˜ ์š”์†Œ๋“ค์„ ์ด๋ฆ„์œผ๋กœ ๋ช…๋ช…ํ•˜์ง€๋Š” ์•Š์Œ
    • ๋ ˆ์ฝ”๋“œ ํƒ€์ž…์ฒ˜๋Ÿผ ์š”์†Œ๋“ค์ด ์ด์งˆ์ ์ธ ํƒ€์ž…์œผ๋กœ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
  • Python์€ immutableํ•œ ํŠœํ”Œ ํƒ€์ž…์„ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์œผ๋กœ ์ œ๊ณต
    • ์ด์งˆ์ ์ธ ์š”์†Œ๋ฅผ ํ—ˆ์šฉํ•˜๋ฉฐ ์š”์†Œ์— ์ ‘๊ทผ์‹œ์—๋Š” ์ฒจ์ž๋กœ ์ ‘๊ทผ
  • ํŠœํ”Œ์€ ํ•จ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด

@ TODO : Python ๊ด„ํ˜ธ ์ข…๋ฅ˜์— ๋”ฐ๋ฅธ ์ปจํ…Œ์ด๋„ˆ ์ข…๋ฅ˜

๐Ÿ’ซ ๋ฆฌ์ŠคํŠธ


  • C#, Java :ย ํ‘œ์ค€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, List, ArrayList

  • Python : ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ํƒ€์ž…
    • ๋Œ€๊ด„ํ˜ธ
    • mutable (ํŠœํ”Œ์€ immutable)
    • ์š”์†Œ ์‚ญ์ œ del temp[1]
  • Pythonย List Comprehension
    • ๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋งค์ปค๋‹ˆ์ฆ˜์œผ๋กœ ์ง‘ํ•ฉ ํ‘œ๊ธฐ๋ฒ•์— ๊ธฐ๋ฐ˜
      • [์‹ forย ์š”์†Œ in ๋ฐฐ์—ด if ์กฐ๊ฑด]
      • i.e. [x * x for x in range(12) if x % 3 == 0]
    • ์Šฌ๋ผ์ด์Šค ์—ฐ์‚ฐ๋„ ์ œ๊ณต

๐Ÿ’ซ ๊ณต์šฉ์ฒด(Union) ํƒ€์ž…


1
2
3
4
5
6
7
8
9
10
11
12
13
union FlexType
{
	int intE1;
	float floatE1;
};

union FlexType el1;
float x;

// ...

eli.intE1 = 27;
x = eli.floatE1;
  • C/C++๋Š” ํƒ€์ž… ๊ฒ€์‚ฌ์— ๋Œ€ํ•œ ์–ธ์–ด ์ง€์›์ด ์—†๋Š” ์ž์œ ย ๊ณต์šฉ์ฒด ๊ตฌ์กฐ๋ฅผ ์ œ๊ณต
    • C/C++์—์„œ union ํ‚ค์›Œ๋“œ๋Š” union ๊ตฌ์กฐ์ฒด๋ฅผ ๋ช…์„ธํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
    • i.e. el1.floatE1์„ x์—ย ๋ฐฐ์ •, ์ด๋•Œ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•˜์ง€ ์•Š์Œ
    • ์™œ ์“ฐ๋ƒ? Low-level ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ณต์šฉ์ฒด๋ฅผ ์‚ฌ์šฉ (์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ/๋„คํŠธ์›Œํฌ)
  • ๋ณ€์ˆ˜๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋‹ค๋ฅธ ์‹œ๊ธฐ์— ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž…
  • ์„ค๊ณ„ ๊ณ ๋ ค์‚ฌํ•ญ
    • ํƒ€์ž… ๊ฒ€์‚ฌ๊ฐ€ ์š”๊ตฌ๋˜๋Š”๊ฐ€?
    • ๊ณต์šฉ์ฒด๊ฐ€ ๋ ˆ์ฝ”๋“œ์— ํฌํ•จ๋  ์ˆ˜ ์žˆ๋Š”๊ฐ€?
  • ํŒ๋ณ„ ๊ณต์šฉ์ฒด์™€ ์ž์œ  ๊ณต์šฉ์ฒด
    • ์ž์œ  ๊ณต์šฉ์ฒด: ํƒ€์ž… ๊ฒ€์‚ฌ์— ๋Œ€ํ•œ ์–ธ์–ด ์ง€์›์ด ์—†๋Š” ํ˜•ํƒœ์˜ ๊ณต์šฉ์ฒด: C/C++
    • ํŒ๋ณ„ ๊ณต์šฉ์ฒด: ๊ณต์šฉ์ฒด ๊ตฌ์กฐ์— ํƒ€์ž… ์ง€์‹œ์ž(ํŒ๋ณ„์ž)๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ์–ด์„œย ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณต์šฉ์ฒด
  • ํ‰๊ฐ€
    • ๊ฐ•ํƒ€์ž… ์–ธ์–ด๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, ๊ณต์šฉ์ฒด๋Š” ์•ˆ์ „์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ
      • C/C++ ์€ ๊ฐ•ํƒ€์ž… ์•„๋‹˜
      • Java/C#์€ ๊ณต์šฉ์ฒด๊ฐ€ ์—†์Œ
  • vs ๊ตฌ์กฐ์ฒด
    • ๊ตฌ์กฐ์ฒด์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•
    • ๊ตฌ์กฐ์ฒด๋Š” ๊ฐ ์š”์†Œ๊ฐ€ ๊ฐ์ž์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ฐ€์ง
    • ๊ณต์šฉ์ฒด๋Š” ๋ชจ๋“  ์š”์†Œ๊ฐ€ ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๊ณต์œ 
      • ์š”์†Œ๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ์š”์†Œ ํฌ๊ธฐ ๋งŒํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„
    • ๊ณต์œ ํ•˜๋Š” ๋˜‘๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์–ด๋–ค ํƒ€์ž…์œผ๋กœ ์ ‘๊ทผํ•˜๋ƒ - ์–ด๋–ค ๋ชจ๋“œ๋กœ ์ ‘๊ทผํ• ๊ฑฐ๋ƒ
  • ์™œ ์”€?
    • ๋ฉ”๋ชจ๋ฆฌ ์ ˆ์•ฝ
    • ํ˜„๋Œ€์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋„๋„ํ•ด์ ธ์„œ ๊ตฌ์กฐ์ฒด ์“ฐ๊ธฐ ๊ณต์šฉ์ฒด๋Š” ์ž˜ ์•ˆ์“ฐ๋Š” ๋“ฏ?
์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.