IT

🏠 컴파일 μ–Έμ–΄ vs. 인터프리터 μ–Έμ–΄: μ‹€ν–‰ λ°©μ‹μ˜ 근본적인 차이점 πŸ–₯

ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μ»΄ν“¨ν„°μ—μ„œ μ‹€μ œλ‘œ μž‘λ™ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ‚¬λžŒμ΄ μž‘μ„±ν•œ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ»΄ν“¨ν„°μ˜ 쀑앙 처리 μž₯치(CPU)κ°€ 이해할 수 μžˆλŠ” κΈ°κ³„μ–΄λ‘œ λ³€ν™˜ν•˜λŠ” 과정이 ν•„μš”ν•©λ‹ˆλ‹€. 이 λ³€ν™˜μ„ μˆ˜ν–‰ν•˜λŠ” 방식에 따라 μ–Έμ–΄λŠ” 크게 컴파일 언어와 인터프리터 μ–Έμ–΄λ‘œ λ‚˜λ‰©λ‹ˆλ‹€.


1️⃣ 컴파일 μ–Έμ–΄ (Compiled Languages)

컴파일 μ–Έμ–΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κΈ° 전에 전체 μ†ŒμŠ€ μ½”λ“œλ₯Ό ν•œ λ²ˆμ— κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­ν•˜λŠ” 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€.

  • λ³€ν™˜ κ³Όμ •:
    1. μ†ŒμŠ€ μ½”λ“œ μž‘μ„± (예: C, Java)
    2. μ»΄νŒŒμΌλŸ¬λΌλŠ” νŠΉλ³„ν•œ ν”„λ‘œκ·Έλž¨μ΄ 전체 μ½”λ“œλ₯Ό 읽어 λ“€μž…λ‹ˆλ‹€.
    3. μ»΄νŒŒμΌλŸ¬λŠ” μ½”λ“œλ₯Ό κΈ°κ³„μ–΄λ‘œ 이루어진 μ‹€ν–‰ 파일 (Executable file, 예: .exe λ˜λŠ” .app)둜 λ³€ν™˜ν•©λ‹ˆλ‹€.
  • μ‹€ν–‰ μ‹œμ : μ‚¬μš©μžλŠ” 이 μ‹€ν–‰ νŒŒμΌμ„ 직접 μ‹€ν–‰ν•©λ‹ˆλ‹€. μ†ŒμŠ€ μ½”λ“œλŠ” λ‹€μ‹œ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
  • μ£Όμš” νŠΉμ§•:
    • 속도: ν•œ 번 컴파일된 ν›„μ—λŠ” κΈ°κ³„μ–΄λ‘œ λ°”λ‘œ μ‹€ν–‰λ˜λ―€λ‘œ μ‹€ν–‰ 속도가 맀우 λΉ λ¦…λ‹ˆλ‹€. πŸš€
    • 였λ₯˜ κ²€μΆœ: 컴파일 κ³Όμ •μ—μ„œ λŒ€λΆ€λΆ„μ˜ 문법적 였λ₯˜λ₯Ό 미리 λ°œκ²¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • 이식성 (Portability): νŠΉμ • 운영체제(OS)와 CPU μ•„ν‚€ν…μ²˜μ— 맞게 컴파일된 μ‹€ν–‰ νŒŒμΌμ€ λ‹€λ₯Έ ν™˜κ²½μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. (재컴파일이 ν•„μš”ν•¨)
    • μ˜ˆμ‹œ: C, C++, Java, Go (μ—„λ°€νžˆ 말해 JavaλŠ” λ°”μ΄νŠΈ μ½”λ“œλΌλŠ” 쀑간 단계가 μžˆμ§€λ§Œ, κΈ°κ³„μ–΄λ‘œ 사전 λ³€ν™˜λœλ‹€λŠ” μ μ—μ„œ 컴파일 방식에 κ°€κΉμŠ΅λ‹ˆλ‹€.)

2️⃣ 인터프리터 μ–Έμ–΄ (Interpreted Languages)

인터프리터 μ–Έμ–΄λŠ” ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜λŠ” λ™μ‹œμ— μ†ŒμŠ€ μ½”λ“œλ₯Ό ν•œ 쀄씩 읽어 λ“€μ—¬ κΈ°κ³„μ–΄λ‘œ λ³€ν™˜ν•˜κ³  λ°”λ‘œ μ‹€ν–‰ν•˜λŠ” 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€.

  • λ³€ν™˜ κ³Όμ •:
    1. μ†ŒμŠ€ μ½”λ“œ μž‘μ„± (예: Python, JavaScript)
    2. μΈν„°ν”„λ¦¬ν„°λΌλŠ” ν”„λ‘œκ·Έλž¨μ΄ μ†ŒμŠ€ μ½”λ“œλ₯Ό ν•œ 쀄씩 μ½μŠ΅λ‹ˆλ‹€.
    3. 읽은 ν•œ 쀄을 μ¦‰μ‹œ κΈ°κ³„μ–΄λ‘œ λ³€ν™˜ν•˜κ³  μ‹€ν–‰ν•©λ‹ˆλ‹€. μ†ŒμŠ€ μ½”λ“œκ°€ μ‹€ν–‰ μ‹œμ μ— 항상 ν•„μš”ν•©λ‹ˆλ‹€.
  • μ‹€ν–‰ μ‹œμ : μ½”λ“œλ₯Ό μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€ 인터프리터가 ν•„μš”ν•©λ‹ˆλ‹€.
  • μ£Όμš” νŠΉμ§•:
    • 속도: μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€ λ³€ν™˜ 과정이 ν•„μš”ν•˜λ―€λ‘œ 일반적으둜 컴파일 언어보닀 μ‹€ν–‰ 속도가 λŠλ¦½λ‹ˆλ‹€. 🐒 (μ΅œκ·Όμ—λŠ” JIT(Just-In-Time) 컴파일러 λ“±μ˜ 기술둜 속도가 많이 κ°œμ„ λ¨)
    • 였λ₯˜ κ²€μΆœ: μ‹€ν–‰ν•˜λ €λŠ” 쀄에 도달해야 였λ₯˜κ°€ λ°œκ²¬λ©λ‹ˆλ‹€. (λŸ°νƒ€μž„ 였λ₯˜)
    • 이식성 (Portability): μ†ŒμŠ€ μ½”λ“œκ°€ μžˆλ‹€λ©΄ μ–΄λ–€ OSλ“  ν•΄λ‹Ή μ–Έμ–΄μ˜ μΈν„°ν”„λ¦¬ν„°λ§Œ μ„€μΉ˜λ˜μ–΄ 있으면 λ°”λ‘œ μ‹€ν–‰ κ°€λŠ₯ν•©λ‹ˆλ‹€. (OS에 λ…λ¦½μ μž„)
    • μ˜ˆμ‹œ: Python, JavaScript, Ruby, PHP

3️⃣ 🏠 핡심 차이점 μš”μ•½ ν…Œμ΄λΈ” πŸ–₯

κ΅¬λΆ„μ»΄νŒŒμΌ 언어인터프리터 μ–Έμ–΄
λ³€ν™˜ μ‹œμ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 전에 전체 λ³€ν™˜ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑에 ν•œ 쀄씩 λ³€ν™˜
λ³€ν™˜ λ„κ΅¬μ»΄νŒŒμΌλŸ¬ (Compiler)인터프리터 (Interpreter)
결과물기계어 μ‹€ν–‰ 파일 (Executable)μ†ŒμŠ€ μ½”λ“œ (μ‹€ν–‰ μ‹œ ν•„μš”)
μ‹€ν–‰ 속도빠름 πŸš€μƒλŒ€μ μœΌλ‘œ 느림 🐒
였λ₯˜ λ°œκ²¬μ‹€ν–‰ 전에 λŒ€λΆ€λΆ„ λ°œκ²¬μ‹€ν–‰ 쀑에 발견 (λŸ°νƒ€μž„ 였λ₯˜)
λŒ€ν‘œ μ˜ˆμ‹œC, C++, Java, GoPython, JavaScript, Ruby

4️⃣ μ‹€μ œ μ˜ˆμ‹œ: C μ–Έμ–΄ vs. Python μ–Έμ–΄ ❌

C (컴파일 μ–Έμ–΄)

C둜 μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ€ λ¨Όμ € 컴파일 과정을 거쳐 νŠΉμ • OS와 CPU에 μ΅œμ ν™”λœ μ‹€ν–‰ 파일(.exe λ“±)둜 λ§Œλ“€μ–΄μ§‘λ‹ˆλ‹€. 이 μ‹€ν–‰ 파일이 μƒμ„±λœ ν›„μ—λŠ” μ†ŒμŠ€ μ½”λ“œλ₯Ό μˆ˜μ •ν•˜μ§€ μ•ŠλŠ” ν•œ λ³€ν•˜μ§€ μ•ŠμœΌλ©°, 맀우 λΉ λ₯΄κ²Œ μ‹€ν–‰λ©λ‹ˆλ‹€.

  • μž₯점: κ³ μ„±λŠ₯이 ν•„μš”ν•œ μ‹œμŠ€ν…œ ν”„λ‘œκ·Έλž˜λ°, κ²Œμž„ μ—”μ§„ 등에 μ ν•©ν•©λ‹ˆλ‹€.
  • 단점: μ½”λ“œλ₯Ό 쑰금만 μˆ˜μ •ν•΄λ„ 전체 재컴파일이 ν•„μš”ν•©λ‹ˆλ‹€.

Python (인터프리터 μ–Έμ–΄)

Python으둜 μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ€ λ³„λ„μ˜ μ‹€ν–‰ 파일 생성 과정이 μ—†μŠ΅λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μ½”λ“œλ₯Ό μ‹€ν–‰ν•  λ•Œλ§ˆλ‹€ Python 인터프리터가 μ†ŒμŠ€ μ½”λ“œλ₯Ό 읽어 μ¦‰μ‹œ μ‹€ν–‰ν•©λ‹ˆλ‹€.

  • μž₯점: μ½”λ“œλ₯Ό μˆ˜μ •ν•˜κ³  λ°”λ‘œ μ‹€ν–‰ν•΄λ³Ό 수 μžˆμ–΄ 개발 속도가 λΉ λ₯΄κ³  νŽΈλ¦¬ν•©λ‹ˆλ‹€.
  • 단점: μ‹€ν–‰ 속도가 C/C++ 같은 컴파일 언어에 λΉ„ν•΄ 느릴 수 μžˆμŠ΅λ‹ˆλ‹€.

결둠적으둜, 컴파일 μ–Έμ–΄λŠ” β€œλ―Έλ¦¬ μ€€λΉ„ν•΄μ„œ λΉ λ₯΄κ²Œβ€, 인터프리터 μ–Έμ–΄λŠ” β€œμ¦‰μ„μ—μ„œ μœ μ—°ν•˜κ²Œβ€ μ‹€ν–‰ν•œλ‹€κ³  μ΄ν•΄ν•˜μ‹œλ©΄ μ‰½μŠ΅λ‹ˆλ‹€.

infodori1234

Recent Posts

πŸ–₯ NetBIOS over TCP IP NBT μ™„μ „ κ°€μ΄λ“œ

둜컬 λ„€νŠΈμ›Œν¬ ν™˜κ²½μ„ μ‘°κΈˆμ΄λΌλ„ 닀뀄본 μ‚¬λžŒμ΄λΌλ©΄ ν•œ λ²ˆμ―€μ€ λ§ˆμ£ΌμΉ˜λŠ” μ΅μˆ™ν•œ 단어가 μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ NetBIOS와 NBTμž…λ‹ˆλ‹€.…

2κ°œμ›” ago

🏠 JSON Schema: 데이터 μœ νš¨μ„± κ²€μ¦μ˜ ν‘œμ€€ 섀계도 πŸ–₯

μ•ˆλ…•ν•˜μ„Έμš”! ν˜„λŒ€ μ›Ή κ°œλ°œμ—μ„œ 데이터 κ΅ν™˜μ˜ 핡심인 JSON(JavaScript Object Notation)을 λ”μš± κ°•λ ₯ν•˜κ³  μ•ˆμ •μ μœΌλ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” 도ꡬ,…

2κ°œμ›” ago

🏠 ECMAScript 3 ν˜Έν™˜μ„± μ™„μ „ 정리 κ°€μ΄λ“œ

❌ ECMAScript 3(E3)λž€ λ¬΄μ—‡μΌκΉŒ ECMAScript 3λŠ” 1999년에 κ³΅μ‹ν™”λœ μžλ°”μŠ€ν¬λ¦½νŠΈ ν‘œμ€€μ΄λ‹€. μ§€κΈˆ 보면 였래된 기술 κ°™μ§€λ§Œ,…

2κ°œμ›” ago

πŸ–₯ CoffeeScript μ™„μ „ κ°€μ΄λ“œ

CoffeeScriptλŠ” ν•œλ•Œ ν”„λ‘ νŠΈμ—”λ“œ 개발 μƒνƒœκ³„μ—μ„œ 맀우 인기 μžˆμ—ˆλ˜ μ–Έμ–΄μ˜€κ³ , μ§€κΈˆλ„ νŠΉμ • ν”„λ‘œμ νŠΈλ‚˜ λ ˆκ±°μ‹œ μ‹œμŠ€ν…œ, κ°„κ²°ν•œ…

2κ°œμ›” ago

🏠 λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak) μ‰½κ²Œ μ΄ν•΄ν•˜κΈ°: πŸ–₯ λ‚­λΉ„λ˜λŠ” μ»΄ν“¨ν„°μ˜ κΈ°μ–΅λ ₯ ❌

ν˜„λŒ€μ μΈ ν”„λ‘œκ·Έλž˜λ° ν™˜κ²½μ—μ„œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak)λŠ” μ—¬μ „νžˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯ μ €ν•˜μ™€ μΆ©λŒμ„ μΌμœΌν‚€λŠ” μ£Όμš” 원인 쀑…

2κ°œμ›” ago

πŸ–₯️ λΈŒλΌμš°μ € λ Œλ”λ§ κ³Όμ • (CRP) : μ›ΉνŽ˜μ΄μ§€κ°€ λˆˆμ•žμ— λ‚˜νƒ€λ‚˜κΈ°κΉŒμ§€μ˜ λ§ˆλ²•

(Critical Rendering Path, 핡심 λ Œλ”λ§ 경둜 μ™„λ²½ 이해) μ›Ή λΈŒλΌμš°μ €μ— μ£Όμ†Œλ₯Ό μž…λ ₯ν•˜κ³  μ—”ν„°λ₯Ό λˆ„λ₯΄λŠ” μˆœκ°„,…

2κ°œμ›” ago