πŸͺ΄ μ„±μž₯일지

μ±… ν–‰λ³΅ν•œ 이기주의자(웨인 닀이어)의 λ‚΄μš©μ— μžκ·Ήλ°›μ•„ μ‹œμž‘ν•˜λŠ” μ†Œλ°•ν•œ μ„±μž₯기둝

μ‚΄μ•„μžˆλŠ” 꽃과 죽은 꽃은 μ–΄λ–»κ²Œ κ΅¬λ³„ν•˜λŠ”κ°€?
μ„±μž₯ν•˜κ³  μžˆλŠ” 것이 μ‚΄μ•„ μžˆλŠ” 것이닀.
생λͺ…μ˜ μœ μΌν•œ μ¦κ±°λŠ” μ„±μž₯이닀!

🌳 ν‚€μ›Œλ“œ μ΅œλŒ€ν•œ κ°„λ‹¨ν•˜κ²Œ 정리, 좔후에 λ³΄λ©΄μ„œ 슀슀둜 μ„€λͺ…

JavaScript ECMAScript

ECMAScriptλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν‘œμ€€ 사양인 ECMA-262λ₯Ό λ§ν•œλ‹€. ECMA-262μ—μ„œλŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ κ°’, νƒ€μž…, 객체와 ν”„λ‘œνΌν‹°, ν•¨μˆ˜, λ“±μ˜ 핡심 문법을 κ·œμ •

각 λΈŒλΌμš°μ € μ œμ‘°μ‚¬λŠ” ECMAScript 사양을 μ€€μˆ˜ν•˜λ©΄μ„œ λΈŒλΌμš°μ €μ— λ‚΄μž₯λ˜λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진을 κ΅¬ν˜„

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 크게 λ² μ΄μŠ€κ°€ λ˜λŠ” ECMAScript와 μ‹€ν–‰ ν™˜κ²½μ— λ”°λ₯Έ ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ WEB APIλ₯Ό μ•„μš°λ₯Έλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ 단일 μ“°λ ˆλ“œμ΄μ§€λ§Œ μ–΄λ–»κ²Œ 비동기 μ²˜λ¦¬κ°€ κ°€λŠ₯ν•œμ§€κ°€ 이와 κ΄€λ ¨μžˆλ‹€. μΆ”ν›„ 이벀트 루프와 ν…ŒμŠ€ν¬ 큐와 ν•¨κ»˜ μžμ„Ένžˆ 닀뀄볼 μ˜ˆμ •

JavaScript νŠΉμ§•

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” HTML, CSS와 ν•¨κ»˜ 웹을 κ΅¬μ„±ν•˜λŠ” μš”μ†Œ 쀑 ν•˜λ‚˜λ‘œμ„œ μ›Ή λΈŒλΌμš°μ €μ—μ„œ λ™μž‘ν•˜λŠ” μœ μΌν•œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄
λ˜ν•œ, κ°œλ°œμžκ°€ λ³„λ„μ˜ 컴파일 μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ” 인터프리터 μ–Έμ–΄λ‘œ λŒ€λΆ€λΆ„μ˜ λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진(크둬의 V8, νŒŒμ΄μ–΄ν­μŠ€μ˜ SpiderMonkey λ“±)은 인터프리터 방식에 컴파일러의 μž₯점을 κ²°ν•©ν•΄ 처리 속도가 느린 μΈν„°ν”„λ¦¬ν„°μ˜ 단점을 해결함

  • 컴파일러 μ–Έμ–΄

    • μ½”λ“œκ°€ μ‹€ν–‰λ˜κΈ° μ „ 컴파일 μ‹œ, μ†ŒμŠ€μ½”λ“œ 전체λ₯Ό λ¨Έμ‹ μ½”λ“œλ‘œ λ³€ν™˜ ν›„ μ‹€ν–‰
    • μ‹€ν–‰ νŒŒμΌμ„ 생성
    • μ»΄νŒŒμΌμ„ ν•œλ²ˆλ§Œ ν•˜λ©΄ 이후 싀행을 λ°˜λ³΅ν•¨μ— μžˆμ–΄ 속도가 λΉ λ₯΄λ‹€.
  • 인터프리터 μ–Έμ–΄

    • μ½”λ“œκ°€ μ‹€ν–‰λ˜λŠ” λŸ°νƒ€μž„ λ•Œ, ν•œ 쀄씩 λ°”μ΄νŠΈμ½”λ“œλ‘œ λ³€ν™˜ ν›„ μ‹€ν–‰
    • μ‹€ν–‰ νŒŒμΌμ„ μƒμ„±ν•˜μ§€ μ•ŠμŒ
    • μΈν„°ν”„λ¦¬νŠΈ μžμ²΄κ°€ 곧 싀행을 ν•˜λ©° μ΄λ€„μ§€λ―€λ‘œ μ‹€ν–‰ λ•Œλ§ˆλ‹€ μΈν„°ν”„λ¦¬νŠΈ 단계λ₯Ό 반볡, λ”°λΌμ„œ μ‹€ν–‰ 속도가 비ꡐ적 느림

λŒ€λΆ€λΆ„μ˜ λͺ¨λ˜ λΈŒλΌμš°μ €κ°€ μ‚¬μš©ν•˜λŠ” μΈν„°ν”„λ¦¬ν„°λŠ” μ•„μ£Ό 전톡적인 컴파일 방식은 μ•„λ‹ˆμ§€λ§Œ, λ‚˜λ¦„μ˜ λ³΅μž‘ν•œ 과정을 거치며 일뢀 μ†ŒμŠ€μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•˜κ³  μ‹€ν–‰
단, μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λŸ°νƒ€μž„μ— 컴파일되고 λ”°λ‘œ μ‹€ν–‰ 파일이 μƒμ„±λ˜μ§€ μ•ŠλŠ” 점, 인터프리터 없이 싀행될 수 μ—†κΈ° λ•Œλ¬Έμ— 컴파일러 언어라고 ν•  수 μ—†λ‹€.

이와 κ΄€λ ¨λœ 사항은 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό 찾아보면 μ’‹λ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” λͺ…λ Ήν˜•, ν•¨μˆ˜ν˜•, ν”„λ‘œν† νƒ€μž… 기반의 객체지ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ μ§€μ›ν•˜λŠ” λ©€ν‹° νŒ¨λŸ¬λ‹€μž„ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄