Home > Archive > CS > ๐Ÿ’พ [CS] ์†Œ์Šค์ฝ”๋“œ์™€ ๋ช…๋ น์–ด

๐Ÿ’พ [CS] ์†Œ์Šค์ฝ”๋“œ์™€ ๋ช…๋ น์–ด
CS

์†Œ์Šค์ฝ”๋“œ์™€ ๋ช…๋ น์–ด.

  • โ€˜์ปดํ“จํ„ฐ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๊ณ„โ€™
  • ๋ช…๋ น์–ด๋Š” ์ปดํ“จํ„ฐ๋ฅผ ์‹ค์งˆ์ ์œผ๋กœ ์ž‘๋™์‹œํ‚ค๋Š” ๋งค์šฐ ์ค‘์š”ํ•œ ์ •๋ณด
  • ๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ(C, C++, Java, Python ๊ณผ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋งŒ๋“  ์†Œ์Šค ์ฝ”๋“œ)๋Š” ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ๋ช…๋ น์–ด๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

๊ณ ๊ธ‰ ์–ธ์–ด์™€ ์ €๊ธ‰ ์–ธ์–ด

  • ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•˜๋Š” ์–ธ์–ด๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๊ณ  ์ž‘์„ฑํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด
    • ์ด๋ ‡๊ฒŒ โ€˜์‚ฌ๋žŒ์„ ์œ„ํ•œ ์–ธ์–ดโ€™๋ฅผ ๊ณ ๊ธ‰ ์–ธ์–ด(high-level programming language) ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํ“จํ„ฐ๊ฐ€ ์ง์ ‘ ์ดํ•ดํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด
    • ์ €๊ธ‰ ์–ธ์–ด(low-level programming language) ํ•˜๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด๋Š” ์˜ค์ง ์ €๊ธ‰ ์–ธ์–ด๋ฟ์ž…๋‹ˆ๋‹ค.
    • ๊ทธ๋ž˜์„œ ๊ณ ๊ธ‰ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ €๊ธ‰ ์–ธ์–ด, ์ฆ‰ ๋ช…๋ น์–ด๋กœ ๋ณ€ํ™˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ €๊ธ‰ ์–ธ์–ด์—๋Š” ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ธฐ๊ณ„์–ด
      • 0๊ณผ 1์˜ ๋ช…๋ น์–ด ๋น„ํŠธ๋กœ ์ด๋ฃจ์–ด์ง„ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
      • ๋‹ค์‹œ ๋งํ•ด 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๋ช…๋ น์–ด ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.
    • ์–ด์…ˆ๋ธ”๋ฆฌ์–ด
      • 0๊ณผ 1๋กœ ํ‘œํ˜„๋œ ๋ช…๋ น์–ด(๊ธฐ๊ณ„์–ด)๋ฅผ ์ฝ๊ธฐ ํŽธํ•œ ํ˜•ํƒœ๋กœ ๋ฒˆ์—ญํ•œ ์–ธ์–ด

์ปดํŒŒ์ผ ์–ธ์–ด์™€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด

  • ๊ณ ๊ธ‰ ์–ธ์–ด๋Š” ์ €๊ธ‰ ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ปดํŒŒ์ผ ๋ฐฉ์‹
      • ์ปดํŒŒ์ผ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ปดํŒŒ์ผ ์–ธ์–ด
    • ์ธํ„ฐํ”„๋ฆฌํŠธ ๋ฐฉ์‹
      • ์ธํ„ฐํ”„๋ฆฌํŠธ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด

์ปดํŒŒ์ผ ์–ธ์–ด

  • ์ปดํŒŒ์ผ ์–ธ์–ด
    • ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์†Œ์Šค ์ฝ”๋“œ ์ „์ฒด๊ฐ€ ์ €๊ธ‰ ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๋˜๋Š” ๊ณ ๊ธ‰ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ(Compile)
    • ์ปดํŒŒ์ผ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์†Œ์Šค ใ…‹์ฝ”๋“œ๋Š” ์ „์ฒด๊ฐ€ ์ €๊ธ‰ ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๋Š”๋ฐ ์ด ๊ณผ์ •์„ โ€œ์ปดํŒŒ์ผโ€์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ๋Ÿฌ(Compiler)
    • ์ปดํŒŒ์ผ์„ ์ˆ˜ํ–‰ํ•ด ์ฃผ๋Š” ๋„๊ตฌ
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ ์ „์ฒด๋ฅผ ์ญ‰ ํ›‘์–ด๋ณด๋ฉฐ ์†Œ์Šค ์ฝ”๋“œ์— ๋ฌธ๋ฒ•์ ์ธ ์˜ค๋ฅ˜๋Š” ์—†๋Š”์ง€, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์ธ์ง€, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ์ธ์ง€, ์‹คํ–‰ํ•˜๋Š” ๋ฐ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ์—†๋Š”์ง€ ๋“ฑ์„ ๋”ฐ์ง€๋ฉฐ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ์ €๊ธ‰ ์–ธ์–ด๋กœ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.
      • ์ด๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ ๋‚ด์—์„œ ์˜ค๋ฅ˜๋ฅผ ํ•˜๋‚˜๋ผ๋„ ๋ฐœ๊ฒฌํ•˜๋ฉด ํ•ด๋‹น ์†Œ์Šค ์ฝ”๋“œ๋Š” ์ปดํŒŒ์ผ์— ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
  • ๋ชฉ์  ์ฝ”๋“œ(Object Code)
    • ์ปดํŒŒ์ผ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์†Œ์Šค ์ฝ”๋“œ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ €๊ธ‰ ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
      • ์ด๋ ‡๊ฒŒ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ €๊ธ‰ ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋œ ์ฝ”๋“œ๋ฅผ ๋ชฉ์  ์ฝ”๋“œ(Object code) ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ธํ„ฐํ”„๋ฆฌ์–ด ์–ธ์–ด

  • ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด
    • ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ์˜ํ•ด ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„์”ฉ ์‹คํ–‰๋˜๋Š” ๊ณ ๊ธ‰ ์–ธ์–ด์ž…๋‹ˆ๋‹ค
      • ๋Œ€ํ‘œ์ ์ธ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋กœ Python์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธํ„ฐํ”„๋ฆฌํ„ฐ
    • ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์ €๊ธ‰ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹คํ–‰ํ•ด ์ฃผ๋Š” ๋„๊ตฌ
  • ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋Š” ์ปดํ“จํ„ฐ์™€ ๋Œ€ํ™”ํ•˜๋“ฏ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์Šค ์ฝ”๋“œ ์ „์ฒด๋ฅผ ์ €๊ธ‰ ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    • ์†Œ์Šค ์ฝ”๋“œ ๋‚ด์— ์˜ค๋ฅ˜๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด ์ปดํŒŒ์ผ์ด ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ์ปดํŒŒ์ผ ์–ธ์–ด์™€๋Š” ๋‹ฌ๋ฆฌ, ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„์”ฉ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์†Œ์Šค ์ฝ”๋“œ N๋ฒˆ์งธ ์ค„์— ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋”๋ผ๋„ N-1๋ฒˆ์งธ ์ค„๊นŒ์ง€๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋Š” ์ปดํŒŒ์ผ ์–ธ์–ด๋ณด๋‹ค ๋Š๋ฆฝ๋‹ˆ๋‹ค.
    • ์ปดํŒŒ์ผ์„ ํ†ตํ•ด ๋‚˜์˜จ ๊ฒฐ๊ณผ๋ฌผ, ์ฆ‰ ๋ชฉ์  ์ฝ”๋“œ๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ €๊ธ‰ ์–ธ์–ด์ธ ๋ฐ˜๋ฉด, ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋Š” ์†Œ์Šค์ฝ”๋“œ ๋งˆ์ง€๋ง‰์— ์ด๋ฅผ ๋•Œ๊นŒ์ง€ ํ•œ ์ค„ ํ•œ ์ค„์”ฉ ์ €๊ธ‰์–ธ์–ด๋กœ ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ชฉ์  ํŒŒ์ผ vs ์‹คํ–‰ ํŒŒ์ผ

  • ๋ชฉ์  ํŒŒ์ผ
    • ๋ชฉ์  ์ฝ”๋“œ๋กœ ์ด๋ฃจ์–ด์ง„ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
  • ์‹คํ–‰ ํŒŒ์ผ
    • ์œˆ๋„์šฐ์˜ .exe ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ์ด ๋Œ€ํ‘œ์ ์ธ ์‹คํ–‰ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
  • ๋ชฉ์  ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ ํŒŒ์ผ์ด ๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋งํ‚น์ด๋ผ๋Š” ์ž‘์—…์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งํ‚น
    • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์˜ค๋ธŒ์ ํŠธ ํŒŒ์ผ์ด๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญํ•œ ํ›„ ๋ง์ปค(Linker)๊ฐ€ ์ด๋Ÿฌํ•œ ๊ธฐ๊ณ„์–ด ์ฝ”๋“œ๋“ค์„ ๋ชจ์•„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํ‚ค์›Œ๋“œ๋กœ ์ •๋ฆฌํ•˜๋Š” ํ•ต์‹ฌ ํฌ์ธํŠธ

  • ๊ณ ๊ธ‰ ์–ธ์–ด๋Š” ์‚ฌ๋žŒ์ด ์ดํ•ดํ•˜๊ณ  ์ž‘์„ฑํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • ์ €๊ธ‰ ์–ธ์–ด๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ง์ ‘ ์ดํ•ดํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • ์ €๊ธ‰ ์–ธ์–ด๋Š” 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๋ช…๋ น์–ด๋กœ ๊ตฌ์„ฑ๋œ ๊ธฐ๊ณ„์–ด์™€ ๊ธฐ๊ณ„์–ด๋ฅผ ์‚ฌ๋žŒ์ด ์ฝ๊ธฐ ํŽธํ•œ ํ˜•ํƒœ๋กœ ๋ฒˆ์—ญํ•œ ์–ด์…ˆ๋ธ”๋ฆฌ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ ์–ธ์–ด๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ์†Œ์Šค ์ฝ”๋“œ ์ „์ฒด๊ฐ€ ์ €๊ธ‰ ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๋˜๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค.
  • ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ์˜ํ•ด ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„์”ฉ ์ €๊ธ‰ ์–ธ์–ด๋กœ ๋ณ€ํ™˜๋˜์–ด ์‹คํ–‰๋˜๋Š” ์–ธ์–ด ์ž…๋‹ˆ๋‹ค.

Q1. Swift๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณ ๊ธ‰ ์–ธ์–ด๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค. Swift์˜ ์–ด๋–ค ํŠน์ง•์ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๊ณ ๊ธ‰ ์–ธ์–ด์˜ ์žฅ์ ์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋‚˜์š”?

Swift๋Š” ๊ณ ๊ธ‰ ์–ธ์–ด์˜ ํŠน์ง•์œผ๋กœ ๋†’์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”, ๊ฐ•๋ ฅํ•œ ํƒ€์ž… ์‹œ์Šคํ…œ, ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „์„ฑ, ๊ทธ๋ฆฌ๊ณ  ๋น ๋ฅธ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Swift์˜ ์˜ต์…”๋„ ํƒ€์ž…๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์€ ์•ˆ์ „ํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์„ ๋•๊ณ , ARC๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

Q2. ๊ณ ๊ธ‰ ์–ธ์–ด์™€ ์ €๊ธ‰ ์–ธ์–ด์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋‚˜์š”?

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

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

Q3. Java๋Š” ๊ณ ๊ธ‰ ์–ธ์–ด ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. Java์—์„œ ์ €๊ธ‰ ์–ธ์–ด์˜ ํŠน์„ฑ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ๋‚˜์š”?

Java๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ณ ๊ธ‰ ์–ธ์–ด์˜ ํŠน์„ฑ์„ ๋งŽ์ด ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, JNI(Java Native Interface)๋ฅผ ํ†ตํ•ด ์ €๊ธ‰ ์–ธ์–ด ์ฝ”๋“œ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JNI๋Š” Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ C๋‚˜ C++๊ณผ ๊ฐ™์€ ์ €๊ธ‰ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ํŠน์ • ์ž‘์—…์„ ์œ„ํ•ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด๋‚˜ ํ•˜๋“œ์›จ์–ด ์ง์ ‘ ์ œ์–ด์™€ ๊ฐ™์€ ์ €๊ธ‰ ์–ธ์–ด์˜ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ฑ์„ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๊ณ ์„ฑ๋Šฅ์„ ์š”๊ตฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํŠน์ • ๋ถ€๋ถ„์—์„œ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Q4. Java์—์„œ ๊ณ ๊ธ‰ ์–ธ์–ด์˜ ํŠน์„ฑ์ด ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ์–ด๋–ค ์žฅ์ ์„ ์ œ๊ณตํ•˜๋‚˜์š”?

Java์˜ ๊ณ ๊ธ‰ ์–ธ์–ด ํŠน์„ฑ์€ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์—์„œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์žฅ์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, ๊ฐ•๋ ฅํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ์ง€์›์œผ๋กœ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ, ํ™•์žฅ์„ฑ, ์œ ์ง€ ๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ๋‘˜์งธ, ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์™€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ฉฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ๋œ ์‹ ๊ฒฝ ์“ฐ๊ณ  ๋กœ์ง ๊ฐœ๋ฐœ์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์…‹์งธ, ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ, ๊ทธ๋ฆฌ๊ณ  ๊ฐ•๋ ฅํ•œ ๊ฐœ๋ฐœ ๋„๊ตฌ์™€ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์›์œผ๋กœ ๊ฐœ๋ฐœ ์†๋„์™€ ํšจ์œจ์„ฑ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, Java๋Š” ํ”Œ๋žซํผ ๋…๋ฆฝ์ ์ธ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ๋‹ค์–‘ํ•œ ์šด์˜ ์ฒด์ œ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.