๊ด€๋ฆฌ ๋ฉ”๋‰ด

Ming's develop story

1์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ณธ๋ฌธ

D E V E L O P ๐Ÿ’ป/์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

1์žฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

Ming 2022. 2. 16. 22:55

1.1 ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?

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

์ด๋•Œ ์š”๊ตฌ๋˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์ด๋‹ค. 

๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ(์š”๊ตฌ์‚ฌํ•ญ)๋Š” ๋ณต์žกํ•˜๋ฉฐ ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฌธ์ œ(์š”๊ตฌ์‚ฌํ•ญ)๋ฅผ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์šฐ์„ ๋˜์–ด์•ผ ํ•˜๋ฉฐ ๋ณต์žกํ•จ์„ ๋‹จ์ˆœํ•˜๊ฒŒ ๋ถ„ํ•ดํ•˜๊ณ  ์ž๋ฃŒ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ๊ตฌ๋ถ„ํ•ด์•ผ ํ•˜๋ฉฐ ์ˆœ์„œ์— ๋งž๊ฒŒ ํ–‰์œ„๋ฅผ ๋ฐฐ์—ดํ•ด์•ผ ํ•œ๋‹ค.

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

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ๊ณ ๋ คํ•  ๋•Œ ์ปดํ“จํ„ฐ์˜ ์ž…์žฅ์—์„œ ๋ฌธ์ œ๋ฅผ ๋ฐ”๋ผ๋ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด Computational thinking(์ปดํ“จํŒ… ์‚ฌ๊ณ )์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด "๋“ฃ๋‹ค"๋ผ๋Š” ํ–‰์œ„๋ฅผ ์‚ฌ๋žŒ์€ ํ•˜๋‚˜์˜ ๊ฐ„๋‹จํ•˜๊ณ  ๋‹น์—ฐํ•œ ๊ธฐ๋Šฅ์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ปดํ“จํ„ฐ์—๊ฒŒ ์ด ํ–‰์œ„๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€ ๋‹จ์ˆœํ•˜์ง€ ์•Š๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ๋žŒ์€ ์†Œ๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ "ํฌ๋‹ค" ๋˜๋Š” "์ž‘๋‹ค"๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ € ๋‘ ํ‘œํ˜„์˜ ์˜๋ฏธ๋Š” ์ƒ๋Œ€์ ์ธ ๊ฐœ๋…์œผ๋กœ ๊ธฐ์ค€์ด ๋ถˆ๋ช…ํ™•ํ•˜๋‹ค. ์ปดํ“จํ„ฐ์—๊ฒ "๋ณผ๋ฅจ์„ 20์œผ๋กœ ๋ฐ”๊ฟ”๋ผ" ๊ฐ™์ด ๋ช…๋ นํ•ด์•ผ ํ•œ๋‹ค.

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

 

1.2 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์ด์ฒ˜๋Ÿผ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •์˜๋œ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์€ ์ปดํ“จํ„ฐ์—๊ฒŒ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ๋ช…๋ น์„ ์ˆ˜ํ–‰ ํ•  ์ฃผ์ฒด๋Š” ์ปดํ“จํ„ฐ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ž์—ฐ์–ด๊ฐ€ ์•„๋‹Œ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด, ์ฆ‰ ๊ธฐ๊ณ„์–ด๋กœ ๋ช…๋ น์„ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค. 

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

์˜ˆ๋ฅผ ๋“ค๋ฉด console.log("Hello world")๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ด๊ฒƒ์„ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์ปดํ“จํ„ฐ์—๊ฒŒ ์‹คํ–‰์„ ์š”๊ตฌํ•˜๋Š” ์ผ์ข…์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ๊ตฌ๋ฌธ(syntax)๊ณผ ์˜๋ฏธ(semantics)์˜ ์กฐํ•ฉ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค.

 

1.3 ๊ตฌ๋ฌธ๊ณผ ์˜๋ฏธ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ•™์Šต์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋Š” ์™ธ๊ตญ์–ด ํ•™์Šต๊ณผ ์œ ์‚ฌํ•œ๋ฐ ๋ฌธ๋ฒ•์„ ์ž˜ ์•ˆ๋‹ค๊ณ  ํ•ด์„œ ์™ธ๊ตญ์–ด๋ฅผ ์ž˜ํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์—†๋‹ค.

์™ธ๊ตญ์–ด๋ฅผ ์ž˜ํ•˜๋ ค๋ฉด ๋ง์ด๋‚˜ ๋ฌธ์žฅ์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•œ ํ›„, ๋ฌธ๋งฅ์— ๋”ฐ๋ฅธ ์ ์ ˆํ•œ ์–ดํœ˜ ์„ ํƒ, ๊ทธ๋ฆฌ๊ณ  ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒฐ๋ก ์„ ํ–ฅํ•ด ๋‚˜์•„๊ฐ€๋Š” ๋ฌธ์žฅ ๊ตฌ์„ฑ์ด ํ•„์š”ํ•˜๋‹ค. ์ฆ‰, ๋ฌธ๋ฒ•์— ๋งž๋Š” ๋ฌธ์žฅ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ก  ์˜๋ฏธ(semantics)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ์–ธ์–ด์˜ ์—ญํ• ์„ ์ถฉ์‹คํžˆ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

const number = 'string';
console.log(number * number); // NaN

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜์—๋Š” ์–ด๋– ํ•œ ํƒ€์ž…์˜ ๊ฐ’๋„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ์˜ˆ์ œ๋Š” ๋ฌธ๋ฒ•์ ์œผ๋กœ ์ „ํ˜€ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์˜๋ฏธ์ ์œผ๋กœ๋Š” ์˜ณ์ง€ ์•Š๋‹ค. number๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜์— ๋ฌธ์ž์—ด์ด ํ• ๋‹น๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. number๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜์—๋Š” ์ˆซ์ž๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์ด ์˜๋ฏธ์ ์œผ๋กœ ์˜ณ๋‹ค.

 

๊ฒฐ๊ตญ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด๋‚ธ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด ํ‘œํ˜„ํ•œ๋‹ค. ์ฆ‰, ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์˜ ๊ตฌ์ฒด์  ๊ตฌํ˜„๋ฌผ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์— ๋ถ€ํ•ฉํ•˜๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๊ณ  ์ˆ˜ํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ”๋ฅผ ์ •ํ™•ํžˆ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ, ์ฆ‰ ์š”๊ตฌ์‚ฌํ•ญ์ด ์‹คํ˜„(๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ)๋˜์–ด์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค.

 

๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” "๋ณ€์ˆ˜์™€ ๊ฐ’", "์—ฐ์‚ฐ์ž", "์กฐ๊ฑด๋ฌธ", "ํ•จ์ˆ˜", "๊ฐ์ฒด" ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ์ด๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฃŒ๋ฅผ ๊ตฌ์กฐํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฒฐ๊ตญ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์š”๊ตฌ์‚ฌํ•ญ์˜ ์ง‘ํ•ฉ์„ ๋ถ„์„ํ•ด์„œ ์ ์ ˆํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ํ•จ์ˆ˜์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, ๊ทธ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

Comments