κΈ°λ³Έ κ°œλ°œμš©μ–΄ μ•Œμ•„λ³΄κΈ°

λ°˜μ‘ν˜•

🐞 디버그

λ””λ²„κΉ…μ΄λž€ μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œ λ°œμƒν•˜λŠ” 문제의 원인을 μ°Ύμ•„ ν•΄κ²°ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€.

λ¬Όλ‘  ν”„λ‘œκ·Έλž¨μ— μ‹€μ œ 였λ₯˜κ°€ λ°œμƒν–ˆμ„ λ•Œλ„ λ‹Ήμ—°νžˆ 디버깅을 ν•˜μ§€λ§Œ
μ½”λ“œλ₯Ό μ§œλŠ” μ‹œκ°„μ˜ 상당뢀뢄은 디버깅에 ν• μ• λ˜μ£ .

μ½”λ“œλž€ 게 μ–Έμ œλ‚˜ ν•œ λ²ˆμ— λ§ˆμŒλŒ€λ‘œ μž‘λ™ν•˜μ§€λŠ” μ•ŠκΈ° λ•Œλ¬Έμ—
μ œλŒ€λ‘œ λŒλ„λ‘ μ™„μ„±ν•˜κΈ°κΉŒμ§€λ„ 디버깅이 ν•„μš”ν•˜κ±°λ“ μš”.

κΈ°λ‚˜κΈ΄ ν”„λ‘œκ·Έλž˜λ° μ½”λ“œμ—μ„œ 였λ₯˜μ˜ 원인을 μ°ΎλŠ” 건 λ¨Έλ¦¬μ•„ν”ˆ 일이기 λ•Œλ¬Έμ—
μ½”λ”© ν”„λ‘œκ·Έλž¨λ“€, IDEλ“€μ—μ„œλŠ” 이λ₯Ό 도와주기 μœ„ν•œ
κ°•λ ₯ν•œ 디버깅 κΈ°λŠ₯듀을 μ œκ³΅ν•΄μš”.


 

πŸ“š 컴파일

μš°λ¦¬κ°€ μ½”λ”©ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° 언어듀은
μ‚¬λžŒμ΄ μ•Œμ•„λ³΄κ³  μž‘μ„±ν•˜κΈ° 쉽도둝 λ§Œλ“€μ–΄μ§„ μ–Έμ–΄λ“€μ΄μ—μš”.

0κ³Ό 1의 μ‹ ν˜Έλ§Œ μ•Œμ•„λ“£λŠ” μ»΄ν“¨ν„°λŠ” 이λ₯Ό μ΄ν•΄ν•˜μ§€ λͺ»ν•˜μ£ .

λ•Œλ¬Έμ— μš°λ¦¬κ°€ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κ³  λ‚˜μ„œ 이λ₯Ό μ»΄ν“¨ν„°μ—μ„œ 돌리렀면
μ½”λ“œλ₯Ό 컴퓨터가 μ•Œμ•„λ“£λŠ” μ–Έμ–΄λ‘œ λ²ˆμ—­ν•΄μ•Ό ν•΄μš”.

이 λ²ˆμ—­μ„ 코딩을 마치고 λ°”λ‘œ, 즉 μ½”λ“œλ‘œ 짜인 μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό 돌리기 μ „ 미리 ν•΄λ†“λŠ” 것을
'컴파일'이라고 ν•©λ‹ˆλ‹€.

이 컴파일 μž‘μ—…μ΄ μš”κ΅¬λ˜λŠ” 언어듀을 '컴파일러 μ–Έμ–΄'라고 ν•˜μ£ .
C, C++, Java λ“±μ˜ 언어듀이 λŒ€ν‘œμ μ΄μ—μš”.

μ»΄ν“¨ν„°λŠ” μ΄λ ‡κ²Œ μ»΄ν“¨ν„°μ˜ μ–Έμ–΄λ‘œ 미리 λ²ˆμ—­λœ μ½”λ“œλ₯Ό
λ°”λ‘œ 읽기만 ν•˜λ©΄ 되기 λ•Œλ¬Έμ— 컴파일러 μ–Έμ–΄λŠ” 싀행속도가 λΉ λ¦…λ‹ˆλ‹€.
λŒ€μ‹  μ½”λ“œλ₯Ό μ™„μ„±ν•  λ•Œλ§ˆλ‹€ 컴파일 μž‘μ—…μ„ ν•΄μ•Ό ν•˜λŠ” 뢈편이 있죠.

컴파일 μ–Έμ–΄λŠ” μš©λ„μ™€ ν•„μš”μ— 따라, 0κ³Ό 1둜 된 기계어 뿐 μ•„λ‹ˆλΌ
ν”„λ‘œκ·Έλž˜λ° 언어와 μ»΄ν“¨ν„°μ˜ μ–Έμ–΄ 쀑간 λ‹¨κ³„μ˜ μ—¬λŸ¬ ν˜•νƒœλ‘œ μ½”λ“œλ₯Ό λ²ˆμ—­ν•΄μš”.


 

πŸŽ™ 인터프리터

컴파일러 μ–Έμ–΄μ™€λŠ” 달리, νŒŒμ΄μ¬μ΄λ‚˜ 루비, μžλ°”μŠ€ν¬λ¦½νŠΈ λ“±μ˜ 언어듀은
λ²ˆμ—­μž‘μ—…μ„ 미리 해놓지 μ•Šκ³ , 싀행될 λ•Œλ§ˆλ‹€ '인터프리터'λž€ ν”„λ‘œκ·Έλž¨μ΄
μ»΄ν“¨ν„°μ—κ²Œ μ½”λ“œλ₯Ό κΈ°κ³„μ–΄λ‘œ λ²ˆμ—­ν•΄μ€˜μš”.

μ΄λŸ¬ν•œ 언어듀을 '인터프리터 μ–Έμ–΄'라고 ν•©λ‹ˆλ‹€.

컴파일 과정이 ν•„μš”μ—†κΈ° λ•Œλ¬Έμ— μ½”λ“œμˆ˜μ •μ΄ μž¦μ€ μ œν’ˆλ“€μ˜ 경우 배포가 νŽΈν•˜μ§€λ§Œ
μ‹€ν–‰ μ†λ„λŠ” 컴파일러 언어에 λΉ„ν•΄ 느릴 μˆ˜λ°–μ— μ—†κ³ 
ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ§  μ½”λ“œκ°€ κ·ΈλŒ€λ‘œ λ…ΈμΆœλ  수 μžˆλ‹€λŠ” 단점이 μžˆμ–΄μš”.

이런 νŠΉμ„±λ“€μ„ κ°μ•ˆν•΄μ„œ, ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ€ λ‘˜ 쀑 μ ν•©ν•œ μ–Έμ–΄λ₯Ό μ„ νƒν•˜μ—¬ μ œν’ˆμ„ λ§Œλ“­λ‹ˆλ‹€.


μ˜μƒμ—λŠ” λ‚˜μ˜€μ§€ μ•Šμ§€λ§Œ, 인터프리터 μ–Έμ–΄λ‘œ μ»΄νŒŒμΌλ˜λŠ” κ²½μš°λ„ μžˆμ–΄μš”.

μžλ°”μŠ€ν¬λ¦½νŠΈλ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλž€ μ–Έμ–΄κ°€ μžˆμ–΄μš”.
μžλ°”μŠ€ν¬λ¦½νŠΈμ— 더 λ‹€μ–‘ν•˜κ³  κ°•λ ₯ν•œ κΈ°λŠ₯듀을 넣은 μ–Έμ–΄μ£ .

그런데 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ μ½”λ“œλ₯Ό μ§œλ„
이λ₯Ό 돌릴 ν™˜κ²½μ€ μžλ°”μŠ€ν¬λ¦½νŠΈ μ „μš©μ΄λΌ ν•΄λ‹Ή μ½”λ“œλ₯Ό 읽지 λͺ»ν•΄μš”.

κ·Έλž˜μ„œ μ‹€ν–‰ν•  λ•ŒλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ λ²ˆμ—­, μ»΄νŒŒμΌμ„ ν•΄ μ€˜μ•Ό ν•˜μ£ .

κ·Έλ ‡κ²Œ μžλ°”μŠ€ν¬λ¦½νŠΈλ‘œ λ²ˆμ—­μ΄ 된 책은 λ‹€μ‹œ μ»΄ν“¨ν„°μ˜ μ–Έμ–΄λ‘œ
톡역, μΈν„°ν”„λ¦¬νŠΈκ°€ λ˜λ©΄μ„œ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λŠ”κ±°μ—μš”.
μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 인터프리터 μ–Έμ–΄λ‹ˆκΉŒμš”.

이처럼 컴파일 언어와 인터프리터 μ–Έμ–΄μ˜ ꡬ뢄이 λͺ¨ν˜Έν•œ 것듀도 μžˆλŠ”κ±°μ£ .


 

πŸ›  λΉŒλ“œ

ν”„λ‘œκ·Έλž¨ μ½”λ“œλ“€μ€ 보톡 ν•œ 파일이 μ•„λ‹ˆλΌ
μˆ˜μ‹­ μˆ˜λ°±κ°œκ°€ λ„˜λŠ” νŒŒμΌλ“€μ— 걸처 μž‘μ„±μ΄ λΌμš”.

이λ₯Ό μ™„μ„±ν•˜μ—¬ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ λ°°ν¬ν•˜λ €λ©΄
이듀을 νŠΉμ • ν˜•νƒœλ‘œ μ••μΆ•ν•˜κ±°λ‚˜ λ³€κ²½ν•΄μ•Ό ν•˜λŠ”λ°
이 과정을 'λΉŒλ“œ'라고 ν•©λ‹ˆλ‹€.

컴파일러 μ–Έμ–΄λŠ” λ‹Ήμ—°νžˆ λΉŒλ“œμ— 컴파일 과정이 ν¬ν•¨λ˜μ£ .

λΉŒλ“œλŠ” μ½”λ“œλ“€μ„ λͺ¨μ•„ ν•˜λ‚˜μ˜ μ‹€ν–‰νŒŒμΌμ„ λ§Œλ“€κΈ°λ„ ν•˜κ³ 
μ½”λ“œ νŒŒμΌλ“€μ˜ 크기λ₯Ό 쀄여 더 적은 μš©λŸ‰μ˜ νŒŒμΌλ“€λ‘œ λ§Œλ“€κΈ°λ„ ν•˜κ³ 
남듀이 μ½”λ“œλ₯Ό μ•Œμ•„λ³΄μ§€ λͺ»ν•˜λ„둝 λ‚œλ…ν™”ν•˜κΈ°λ„ ν•©λ‹ˆλ‹€.

λΉŒλ“œμ˜ ν˜•νƒœμ™€ λͺ©μ λ„ 이처럼 λ‹€μ–‘ν•œκ±°μ—μš”.


 

πŸ–¨ 배포

λ°°ν¬λž€ 말 κ·ΈλŒ€λ‘œ, ν”„λ‘œκ·Έλž˜λ¨Έκ°€ μ½”λ”©ν•œ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό
μ‚¬μš©μžλ“€μ΄ μ“Έ 수 μžˆλ„λ‘ λ°°ν¬ν•˜λŠ” 과정을 λ§ν•©λ‹ˆλ‹€.

μ›Ήμ‚¬μ΄νŠΈμ˜ 경우, μž‘μ—…ν•œ κ²°κ³Όλ₯Ό μ‚¬μš©μžλ“€μ΄ λ„λ©”μΈμœΌλ‘œ μ ‘μ†ν•΄μ„œ
λΈŒλΌμš°μ €λ‘œ λ³Ό 수 μžˆλ„λ‘ λ°˜μ˜ν•˜λŠ” μž‘μ—…μ„ λ§ν•΄μš”.


 

🌏 ν™˜κ²½λ³€μˆ˜

ν™˜κ²½λ³€μˆ˜λž€ μ†Œν”„νŠΈμ›¨μ–΄κ°€ λŒμ•„κ°€λŠ” ν™˜κ²½(μ†Œν”„νŠΈμ›¨μ–΄κ°€ κΉ”λ¦° 컴퓨터 λ“±)λ§ˆλ‹€
νŠΉμ • λ³€μˆ˜λͺ…에 μ§€μ •λœ κ°’λ“€μž…λ‹ˆλ‹€.

ν™˜κ²½λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄λ“€μ€, 각자의 ν™˜κ²½μ— μ§€μ •λœ
이 λ³€μˆ˜λ“€μ„ κΈ°μ€€μœΌλ‘œ λ™μž‘ν•˜κ²Œ λΌμš”.

각 μ»΄ν“¨ν„°μ˜ μ‘°κ±΄μ΄λ‚˜ μš©λ„μ— 맞게 μ†Œν”„νŠΈμ›¨μ–΄κ°€ λŒλ„λ‘ ν•˜κ±°λ‚˜
λ³΄μ•ˆμƒ λ―Όκ°ν•œ 정보듀을 μ½”λ“œλ‘œλΆ€ν„° λΆ„λ¦¬ν•˜λŠ” λ“±
ν™˜κ²½λ³€μˆ˜λ„ λ‹€μ–‘ν•œ λͺ©μ κ³Ό ν˜•νƒœλ‘œ ν™œμš©λ©λ‹ˆλ‹€.


 

🧩 라이브러리

ν”„λ‘œκ·Έλž˜λ¨Έ ν˜Όμžμ„œ λͺ¨λ“  μ½”λ“œλ₯Ό λ‹€ μž‘μ„±ν•˜λŠ” κ²½μš°λŠ” λ“œλ¬Όμ–΄μš”.
보톡은 μ‹ λ’°ν•  λ§Œν•œ κΈ°μ—…μ΄λ‚˜ 단체, 개인이 μž‘μ„±ν•œ μ–‘μ§ˆμ˜ μ½”λ“œλ“€μ„
μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“œλŠ” 데 κ°€μ Έλ‹€ ν™œμš©ν•©λ‹ˆλ‹€.

이처럼 λˆ„κ΅°κ°€ κ°€μ Έλ‹€ ν•„μš”μ— 맞게 μ‚¬μš©ν•  수 μžˆλ„λ‘
νŠΉμ • κΈ°λŠ₯듀을 μ½”λ“œλ‘œ μž‘μ„±ν•΄λ†“μ€ 것을 '라이브러리'라고 ν•΄μš”.

집을 지을 λ•Œ λ¬Έμ΄λ‚˜ μ°½ν‹€ λ“±μ˜ μžμž¬λ“€μ„ κ΅¬μž…ν•΄λ‹€ μ‚¬μš©ν•  수 μžˆλ“―μ΄
이처럼 λ‚΄κ°€ λ§Œλ“œλŠ” μ†Œν”„νŠΈμ›¨μ–΄μ— 적절히 뢙여넣을 수 μžˆλŠ” μ½”λ“œλ“€μΈκ±°μ£ .


 

🦴 ν”„λ ˆμž„μ›Œν¬


μœ„μ˜ λΌμ΄λΈŒλŸ¬λ¦¬κ°€, λ‚΄κ°€ λ§Œλ“€κ³  μžˆλŠ” μ†Œν”„νŠΈμ›¨μ–΄μ— 갖닀뢙일 수 μžˆλŠ” 것이라면
ν”„λ ˆμž„μ›Œν¬λŠ” 이미 νŠΉμ • ν˜•νƒœμ˜ μ†Œν”„νŠΈμ›¨μ–΄κ°€ κΈ°λ³Έ 틀이 κ°–μΆ°μ Έ 있고 κ·Έ μœ„μ— λ‚΄ μ½”λ“œλ₯Ό 덧뢙여넣어 λ§Œλ“€ 수 μžˆλ„λ‘ λ˜μ–΄μžˆλŠ” 것듀을 λ§ν•΄μš”.
ꡬ쑰가 λ³΅ν•©ν•˜κ³ , 널리 μ‚¬μš©λ˜λŠ” ν˜•νƒœμ˜ μ†Œν”„νŠΈμ›¨μ–΄μΈ 경우 이와 같은 ν”„λ ˆμž„μ›Œν¬λ“€μ΄ μ œκ³΅λ˜μ–΄ 이λ₯Ό 기반으둜 μ œν’ˆμ„ λ§Œλ“­λ‹ˆλ‹€.
μŠ€ν”„λ§μ΄λ‚˜ μž₯κ³  등이 κ·Έ μ˜ˆμ‹œμ£ . ν”„λ‘œκ·Έλž˜λ¨Έκ°€ 이λ₯Ό μ²˜μŒλΆ€ν„° λ‹€ λ§Œλ“€λ €λ©΄ ν•΄μ•Ό ν•  것이 λ„ˆλ¬΄ λ§Žκ±°λ“ μš”.
μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§Œλ“€ λ•ŒλŠ” 일반적으둜 μ΄λŸ¬ν•œ ν”„λ ˆμž„μ›Œν¬λ₯Ό λ‹€μš΄λ°›μ•„ 이λ₯Ό 기반으둜 μ½”λ”©ν•˜λ©΄μ„œ ν•„μš”ν•œ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ„ 덧뢙여 μž‘μ—…ν•œλŠκ²Œ λ³΄ν†΅μ΄μ—μš”.

λ°˜μ‘ν˜•