๐ ๋ณธ ํฌ์คํธ๋ '๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive' ๋์๋ฅผ ๋ฐํ์ผ๋ก ํต์ฌ ๊ฐ๋ ๋ฐ ๋ด์ฉ์ ์์ฝํ ํฌ์คํธ์ ๋๋ค.
01์ฅ ํ๋ก๊ทธ๋๋ฐ
1.1 ํ๋ก๊ทธ๋๋ฐ์ด๋?
ํ๋ก๊ทธ๋๋ฐ์ด๋?
ํ๋ก๊ทธ๋๋ฐ์ด๋ ์ปดํจํฐ์๊ฒ ์คํ์ ์๊ตฌํ๋ ์ผ์ข ์ ์ปค๋ฎค๋์ผ์ด์ (communication)์ด๋ค. ์ฆ, ํ๋ก๊ทธ๋๋ฐ์ ์์ ์ปดํจํฐ์๊ฒ ๋ฌด์์ ์คํ์ํค๊ณ ์ถ์ ์ง์ ๋ํ ์ ์๊ฐ ํ์ํ๋ฉฐ ์ด๋ ์๊ตฌ๋๋ ๊ฒ์ด ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ด๋ค.
๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ด๋?
ํํ ๋์ผ์ํ๋ ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๋ ํฐ ์ฐจ์์ ๋ฅ๋ ฅ์ผ๋ก, ๋ณต์กํ๊ณ ๋ช ํํ์ง ์์ ๋ฌธ์ (์๊ตฌ์ฌํญ)์ ๋ช ํํ ์ดํดํ๊ณ ๋ณต์กํจ์ ๋จ์ํ๊ฒ ๋ถํดํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ด๋ ์ป์ด๋ธ ์๋ฃ๋ฅผ ์ ๋ฆฌ, ๊ตฌ๋ถํ๊ณ ์์์ ๋ง๊ฒ ํ์๋ฅผ ๋ฐฐ์ดํ๋ ๊ฒ์ด ํฌํจ๋๋ค.
์ฆ, ๋ค์ ๋งํ์ฌ ํ๋ก๊ทธ๋๋ฐ์ 0๊ณผ 1๋ฐ์ ์์ง ๋ชปํ๋ ๊ธฐ๊ณ๊ฐ ํน์ ๋์์ ์คํํ ์ ์๋๋ก ์ ํํ๊ณ ์์ธํ๊ฒ ์๊ตฌ์ฌํญ์ ์ค๋ช ํ๋ ์์ ์ด๋ฉฐ, ์ด ๊ณผ์ ์์ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ๊ณผ ์ปดํจํ ์ฌ๊ณ (Computational thinking)์ด ํ์ํ๋ค.
์ปดํจํฐ์ ์ฌ๋์ ์ฌ๊ณ , ์ธ์ง ๋ฐฉ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋, ์ปดํจํฐ์ ๊ด์ ์์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ํด๊ฒฐ ๋ฐฉ์์ ๋์ถํด์ผ ํ๋ค. ์ปดํจํฐ์ ํด๊ฒฐ ๊ณผ์ ๋ฅผ ์์ ๋จ์๋ก ๋ถํดํ๊ณ ํจํดํํด์ ์ถ์ถํ๊ณ , ํ๋ก๊ทธ๋๋ฐ ๋ด์์ ์ฌ์ฉ๋ ๋ชจ๋ ๊ฐ๋ ๋ค์ ํ๊ฐ(evaluate)๊ฐ ๊ฐ๋ฅํด์ผ ํ๋ค.
์ ๋ก๋ด ์ฒญ์๊ธฐ์ "์ฒญ์" ๊ธฐ๋ฅ์ ๋์์ธํ๊ธฐ ์ํด์๋ ํ๋จํด์ผ ํ๋ ์ํ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ํ๋ฅผ ํ๋จํ๋ ์๊ธฐ, ํ๋จ ๊ธฐ์ค์ด ์ ์๋์ด์ผ ํ๋ฉฐ, ์ด๋ฅผ ๋ฐํ์ผ๋ก ๋ถํด๋ ์ฒ๋ฆฌ์ ์คํ ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋๋ค. ์์์๋ '๋ฐฐํฐ๋ฆฌ ๋ฎ์'์ ๋ํ ์์นํ๋ ์กฐ๊ฑด์ด ํ์ํ ๊ฒ์ด๋ค.
1.2 ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ์ปดํจํฐ์์ ์ปค๋ฎค๋์ผ์ด์ ์์ ์ฌ์ฉ๋๋ ์ผ์ข ์ ํํ ์๋จ์ผ๋ก, ์ฌ๋๊ณผ ์ปดํจํฐ(์ปดํ์ผ๋ฌ ๋๋ ์ธํฐํ๋ฆฌํฐ) ๋ชจ๋๊ฐ ์ดํดํ ์ ์๋ ์ฝ์๋ ํํ์ ์ธ๊ณต์ด์ด๋ค.
์ด๋ ์ฌ๋์ด ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์์ ๊ธฐ๊ณ์ด๋ก ์ง์ ๋ช ๋ น์ ์ ๋ฌํ๋ ๊ฒ์ ๋์ ํ ์ ์๋ ๊ฐ์ฅ ์ ์ฉํ ๋์์ด๋ค.
์ฆ, ์ฌ๋์ด ์์ฑํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํด ์์ฑํ ์ฝ๋๋ฅผ ์ปดํ์ผ๋ฌ๋ ์ธํฐํ๋ฆฌํฐ๊ฐ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ์ฌ ์ปดํจํฐ์๊ฒ ์ ๋ฌํ๋ค.
1.3 ๊ตฌ๋ฌธ๊ณผ ์๋ฏธ
์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๊ตฌ๋ฌธ(syntax)๊ณผ ์๋ฏธ(semantics)์ ์กฐํฉ์ผ๋ก ํํ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ญ์ ์ธ์ด์ด๊ธฐ์ ๋ฌธ๋ฒ(syntax)์ ๋ง๋ ๊ตฌ์ฑํ๋ ๊ฒ์ ๋ฌผ๋ก ์๋ฏธ(semantics)๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ์ธ์ด์ ์ญํ ์ ๋คํ ์ ์๋ค.
์๋ ํ ๊ฐ์ง ์์๋ฅผ ์ดํด๋ณด์.
const number = "string";
console.log(number * number); //NaN
์ ์ฝ๋๋ ๋ฌธ๋ฒ์์ผ๋ก๋ ์๋ฌด๋ฐ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค. ํ์ง๋ง number๋ผ๋ ์ด๋ฆ์ ๋ณ์์ ๋ฌธ์์ด์ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธ์ ์ผ๋ก ์ณ์ง ์๋ค. ์ด ๊ฒฝ์ฐ์๋ number ๋ณ์์๋ ์ซ์๋ฅผ ํ ๋นํ๋ ๊ฒ์ด ์๋ฏธ์ ์ผ๋ก ์ณ๋ค๊ณ ๋ณผ ์ ์๋ค.
์ฐ๋ฆฌ๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ํตํ์ฌ ์์ฑํ๋ค๋ ์ ์ ๋ช ์ฌํด์ผ ํ๋ค. ์ด๋ฌํ ์ด์ ๋ก ์ํํ๊ณ ์ ํ๋ ๋ฐ๋ฅผ ์ ํํ ์ํํ ์ ์๋๋ก ์๋ฏธ์ ์ผ๋ก ์ณ๊ฒ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์์ฑํ์ฌ ์๊ตฌ์ฌํญ์ ์คํ์ํค๋ ๊ฒ์ด ์ค์ํ๋ค.