ํฌ์ŠคํŠธ

๐ŸŒš ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด - ์–ธ์–ด ์„ค๊ณ„์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์š”์†Œ๋“ค

๐ŸŒ‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์ผ๋ถ€ ์–ธ์–ด์—๋งŒ ํ•ด๋‹น๋˜๋Š” ํŠน์ˆ˜ ์ผ€์ด์Šค๋Š” ์ œ์™ธํ•˜๊ณ , ๋Œ€๋ถ€๋ถ„ ์–ธ์–ด์—์„œ ํ†ต์šฉ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋‚ด์šฉ๋งŒ ์ •๋ฆฌํ–ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด Fortran๊ณผ Ada๋Š”, ๋ฐฐ์—ด์˜ ์›์†Œ ์ฐธ์กฐ๋ฅผ ์œ„ํ•ด ์†Œ๊ด„ํ˜ธ ()๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„ ์–ธ์–ด์—์„œ ๋Œ€๊ด„ํ˜ธ []๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐฐ์—ด ์›์†Œ ์ฐธ์กฐ์— ๋Œ€ํ•œ ์„ค๋ช…์— ์›์†Œ ์ฐธ์กฐ๋ฅผ ์œ„ํ•ด ๋Œ€๊ด„ํ˜ธ []๋ฅผ ์‚ฌ์šฉ ๋ผ๊ณ  ํ‘œํ˜„ํ–ˆ๋‹ค.
๋•Œ๋ฌธ์— ํŠน์ • ์–ธ์–ด์—๋Š” ๋งž์ง€ ์•Š๋Š”, ์˜ˆ์™ธ์ธ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
๋˜ํ•œ, ๋น„์ฃผ๋ฅ˜ ์–ธ์–ด์— ๋Œ€ํ•œ ๋‚ด์šฉ์€, ๊ผญ ํ•„์š”ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ์ƒ๋žตํ–ˆ๋‹ค. (ํ•„์ž์˜ ์ฃผ๊ด€์œผ๋กœ)


๐Ÿ’ซ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์„ค๊ณ„์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์š”์†Œ๋“ค


์ปดํ“จํ„ฐ ๊ตฌ์กฐ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก 

๐Ÿ’ซ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ


@ U ์ค‘๊ฐ„๊ณ ์‚ฌ ์ถœ์ œ : ์–ธ์–ด ์„ค๊ณ„์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์š”์†Œ๋Š” ๋ฌด์—‡์ด ์žˆ๊ณ , ๊ทธ ์ค‘ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ๋Š” ์™œ ์˜ํ–ฅ์„ ์ฃผ๋Š”๊ฐ€?

๐Ÿซง ํฐ ๋…ธ์ด๋งŒ ๊ตฌ์กฐ - Von Neumann Architecture

ํฐ ๋…ธ์ด๋งŒ์ด ๊ณ ์•ˆํ•œ ์ปดํ“จํ„ฐ ๊ตฌ์กฐ๋กœ, ํ”„๋กœ๊ทธ๋žจ ๋‚ด์žฅ ๋ฐฉ์‹ (๋ฉ”๋ชจ๋ฆฌ์— ๋ช…๋ น์–ด/๋ฐ์ดํ„ฐ ์ €์žฅ)๊ณผ ๋ช…๋ น์–ด์˜ ์ˆœ์ฐจ์  ์‹คํ–‰, CPU Cycle(๋ช…๋ น์–ด ์ธ์ถœ, ํ•ด์„, ์‹คํ–‰)์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค.

@ vs ํ”„๋กœ๊ทธ๋žจ ์™ธ์žฅ ๋ฐฉ์‹ (๊ธฐ๊ณ„ ์ž์ฒด์—)

๐Ÿซง ๋ช…๋ นํ˜• ์–ธ์–ด - Imperative Language

๊ธฐ๊ณ„ ๊ตฌ์กฐ ๊ด€์ ์—์„œ ๋ชจ๋ธ๋ง๋œ, ํฐ ๋…ธ์ด๋งŒ ๊ตฌ์กฐ ๊ธฐ๋ฐ˜์˜ ์–ธ์–ด์ด๋‹ค. ๋ณ€์ˆ˜, ๋ฐ˜๋ณต๋ฌธ, ๋ฐฐ์ •๋ฌธ(Assignment)์ด ํŠน์ง•์ด๋‹ค. ํšจ์œจ ์ธก๋ฉด์—์„œ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด๋‚˜ ๋…ผ๋ฆฌํ˜• ์–ธ์–ด์— ๋น„ํ•ด ๋›ฐ์–ด๋‚˜๋‹ค.

๐Ÿ’ซ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก 


  • 1960๋…„๋Œ€ ๋ง, ํ•˜ํ–ฅ์‹ ์„ค๊ณ„์™€ ๊ธฐ๋Šฅ ๋‹จ์œ„ ๋‹จ๊ณ„์  ์„ธ๋ถ„ํ™” (์„œ๋ธŒ ํ”„๋กœ๊ทธ๋žจ), GOTO ์ง€์–‘์— ๊ด€ํ•œ ๊ตฌ์กฐํ™” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์šด๋™
  • 1970๋…„๋Œ€ ๋ง, ํ”„๋กœ์„ธ์Šค-์ง€ํ–ฅ โ†’ ๋ฐ์ดํ„ฐ-์ง€ํ–ฅ (๋ฐ์ดํ„ฐ ์ถ”์ƒํ™”, Simula 67)
  • 1980๋…„๋Œ€ ์ดˆ, ๊ฐ์ฒด-์ง€ํ–ฅ

์ด์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก , SW ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ๋“ค์€ ์ดํ›„ ๋งŒ๋“ค์–ด์ง€๋Š” ์–ธ์–ด ์„ค๊ณ„์— ํฐ ์˜ํ–ฅ์„ ์ฃผ์—ˆ๋‹ค.

๐Ÿซง ์ถ”์ƒํ™” - Abstraction

๋ณต์žกํ•˜๊ณ /์‹ค์ œ์ ์ด๊ณ /๊ตฌ์ฒด์ ์ธ ๊ฐœ๋…์„ ์ˆจ๊ธฐ๊ณ  ์š”์•ฝํ•˜์—ฌ, ๋ณด๋‹ค ๋†’์€ ์ˆ˜์ค€์˜ ๊ฐœ๋…์„ ์œ ๋„ํ•˜๋Š” ๊ณผ์ •.
์ปดํ“จํ„ฐ(๋ช…๋ นํ˜• ์–ธ์–ด)์—์„œ ๋ฐ์ดํ„ฐ์™€ ํ๋ฆ„ ์ œ์–ด๋ฅผ ์ถ”์ƒํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ถ”์ƒํ™” - Data Abstraction

  • ๊ธฐ๋ณธ ์ถ”์ƒํ™”
    • ๋ณ€์ˆ˜ Variable : ๋ฐ์ดํ„ฐ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ
    • ์ž๋ฃŒํ˜• DataType : int, float, double, โ€ฆ
  • ๊ตฌ์กฐ์  ์ถ”์ƒํ™”
    • ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ : ๋ฐฐ์—ด, ๋ ˆ์ฝ”๋“œ (๊ตฌ์กฐ์ฒด)

์ถ”์ƒ ์ž๋ฃŒํ˜•

๋ฐ์ดํ„ฐ์™€ ๊ทธ์™€ ๊ด€๋ จ๋œ ์—ฐ์‚ฐ์„ ํ•จ๊ป˜ ์บก์Šํ™”ํ•˜์—ฌ ์ •์˜ํ•œ ์ž๋ฃŒํ˜•์„ ๋œปํ•œ๋‹ค.
C++์˜ Stack, Queue, Deck ๋“ฑ์˜ ํด๋ž˜์Šค๋ฅผ ์ถ”์ƒ ์ž๋ฃŒํ˜•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ๋ฆ„ ์ œ์–ด ์ถ”์ƒํ™” - Flow Control Abstraction

  • ๊ธฐ๋ณธ ์ถ”์ƒํ™”
    • ๊ธฐ๊ณ„ ๋ช…๋ น์–ด ๋ช‡ ์ค„์„ ์š”์•ฝ
    • ๋Œ€์ž…๋ฌธ x = x + 3 โ† (Load, Add, Store), Goto โ† Jump
  • ๊ตฌ์กฐ์  ์ œ์–ด ์ถ”์ƒํ™”
    • ์ค‘์ฒฉ๋œ? ๊ธฐ๊ณ„ ๋ช…๋ น์–ด ์š”์•ฝ
    • if, switch, for, while ๋“ฑ
    • ์ค‘์ฒฉ ๊ฐ€๋Šฅ โ†’ ์ค‘์ฒฉ for๋ฌธ, While ์•ˆ์— For, โ€ฆ
  • ์„œ๋ธŒ ํ”„๋กœ๊ทธ๋žจ : ํ•จ์ˆ˜, ํ”„๋กœ์‹œ์ €, ๋ฉ”์†Œ๋“œ
    • ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜์˜ ์ด๋ฆ„์œผ๋กœ ์š”์•ฝ

ํ๋ฆ„ ์ œ์–ด ์ถ”์ƒํ™”๋ฅผ ํ†ตํ•ด, ๊ธฐ๊ณ„์— ๋Œ€ํ•œ ์ถ”์ƒํ™”์™€ ์š”์•ฝ๋œ ๊ด€์ ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.