개발 도구 & IDE 정리
2026. 7. 8. 00:04ㆍ기타/포스팅
개발 도구 3종 세트
프로그래밍은 서로 독립적인 세 가지 요소가 합쳐져서 돌아간다.
| 요소 | 역할 | 예시 |
| 에디터/IDE | 코드를 "쓰는" 도구 | VSCode, 이클립스 |
| 언어 엔진 | 코드를 "번역+실행"하는 진짜 프로그램 | Python 인터프리터, JDK(JVM) |
| 확장/플러그인 | 에디터와 언어 엔진을 "연결"해주는 다리 | Python Extension, Java Extension Pack |
IDE vs 코드 에디터
| 순수 에디터 | VSCode | 전통 IDE (이클립스 등) | |
| 기본 기능 | 문법강조, 자동완성만 | 문법강조, 자동완성 | 컴파일, 디버깅, 실행 기본 내장 |
| 컴파일/실행 | 직접 터미널에서 | 확장 설치 시 가능 | 처음부터 다 갖춤 |
- IDE = 코드 작성 + 컴파일 + 디버깅 + 실행을 한 곳에서 처리하는 종합 도구
- VSCode는 원래 가벼운 에디터였지만, 확장(Extenstion)으로 IDE 기능까지 갖출 수 있는 하이브리드
VSCode 확장이 실제로 하는 일
VSCode의 "Python 확장" 같은 것은 파이썬 언어 자체를 설치해주는 게 아니다.
확장은 어디까지나 "이미 설치된 언어 엔진을 편하게 연결해주는 다리" 역할만 한다.
확장이 실제로 하는 일
- 문법 강조 — 코드에 색깔을 입혀줌 (엔진 없이도 가능, 단순 패턴 인식)
- 기본 자동완성 — 함수명, 변수명 자동완성 (엔진 없이도 어느 정도 가능)
- 언어 엔진과 연결 — 컴퓨터에 이미 설치된 엔진을 찾아서 실행 버튼과 연결 (엔진 필수)
- 디버깅 UI 제공 — 중단점, 변수 확인 화면 등 (엔진 필수)
설치 순서: ① 언어 엔진 설치(진짜 엔진) → ② IDE 설치 → ③ IDE에 해당 언어 확장 설치(연결 다리).
①이 없으면 ③을 해도 실행 시 에러가 남.
IDE의 "Run 버튼"이 하는 일
버튼 하나로 실행되는 것처럼 보여도, 내부에서는 아래가 순차적으로 자동 진행된다.
① IDE가 내부적으로 컴파일러 호출 (예: javac)
② 컴파일 성공 시 바로 실행기 호출 (예: java)
- 이클립스 같은 IDE는 타이핑 도중에도 실시간으로 미리 컴파일해두는 증분 컴파일을 수행해서 체감 속도가 더 빠르게 느껴짐
- 이 과정에서 실제로 언어 엔진(컴파일러/인터프리터)이 컴퓨터에 설치되어 있어야만 동작함 (자세한 내부 원리는 「언어 실행원리 정리」 문서 참고)
빨간 줄(실시간 오류 표시)의 원리
에디터에 오타를 치면 바로 빨간 줄이 뜨는 이유:
① 타이핑하는 동안
② 확장(Language Server)이 설치된 언어 엔진에게 "이 코드 파싱해줘" 요청
③ 엔진이 문법만 분석 (실행은 안 함, 안전하게 파싱만)
④ 문제 있으면 위치를 알려줌 → 에디터가 빨간 줄로 표시
- 언어 엔진이 컴퓨터에 설치되어 있어야 하고, 에디터와 연결(확장)되어 있어야만 가능
- 이 과정은 "실행"이 아니라 "안전한 문법 분석"이라 파일 삭제 같은 부작용 없이 반복 가능
- 엔진이 설치 안 되어 있으면: 문법 강조는 되지만 빨간 줄(오류 감지)은 안 뜨거나, "인터프리터를 선택해주세요" 같은 경고가 뜸
디버깅(Debugging)이란?
"버그(오류)를 찾아서 고치는 작업". 컴파일 오류는 IDE가 실행 전에 미리 잡아주지만, 런타임 오류나 "실행은 되는데 결과가 이상한" 문제는 실행해서 직접 들여다봐야만 원인을 찾을 수 있다. 이때 코드 실행을 잠깐 멈추고 내부를 들여다보는 작업이 디버깅이다.
테스트와의 차이
| 테스트 | 디버깅 | |
| 목적 | 문제가 있는지 감지 | 발견된 문제의 원인 추적 |
| 결과 | 통과(Pass) / 실패(Fail) | 어느 줄이 왜 잘못됐는지 파악 |
| 순서 | 먼저 실행해서 문제 발견 | 그다음 원인을 파고들어 해결 |
테스트 실행 → "실패했다!" (문제 발견)
↓
디버깅 시작 → "어느 줄이 문제지?" (원인 추적)
↓
코드 수정 → 다시 테스트 → 통과 확인
IDE가 디버깅을 위해 제공하는 것
언어 엔진 자체에도 디버깅 기능은 있지만, 터미널에서 직접 조작하려면 매우 번거롭다. IDE는 이를 클릭 몇 번으로 가능하게 해준다.
- 중단점(breakpoint) 찍는 UI — 코드 줄 번호 옆을 클릭하면 "여기서 멈춰라" 표시가 생김
- 디버그 실행 버튼 — 중단점까지 실행하고 자동으로 멈춤
- 변수 확인 창 — 멈춘 시점의 모든 변수 값을 자동으로 보여줌
- 진행 컨트롤 — 한 줄만 더 실행(Step Over), 함수 안으로 들어가기(Step Into), 계속 진행(Continue) 등
디버깅 예시
def calculate_average(numbers):
total = 0
for n in numbers:
total += n
return total / len(numbers)
print(calculate_average([10, 20, 30]))
# 기대: 20
# 실제 출력: 6.666... ← 뭔가 이상함! (에러는 안 나지만 결과가 틀림)
디버깅 과정:
- total += n 줄에 중단점을 건다
- Debug 버튼 클릭 → 그 줄에서 실행이 멈춤
- 변수 창에서 total, n 값을 한 단계씩 확인
- 1번째: n=10, total=10 ✅
- 2번째: n=20, total=30 ✅
- 3번째: n=30, total=60 ✅
- return total / len(numbers) 줄에서 total=60인데 len(numbers)가 예상(3)과 다른 값으로 나오는 걸 발견
- 함수를 호출하는 다른 곳에서 리스트를 잘못 만들고 있었다는 원인을 찾아냄
핵심: 중단점으로 멈추고 → 변수 값을 하나씩 확인하며 → "예상과 다른 값이 나오는 지점"을 좁혀나가는 것이 디버깅의 실제 과정이다.
한눈에 정리하는 최종 그림
[VSCode 에디터] --(확장으로 연결)--> [언어 엔진: Python/JDK]
| |
코드 작성 컴파일(번역) + 실행 담당
| |
빨간 줄 표시 ←--------- 문법 분석 결과 ----------┘
- 에디터: 코드 작성 + 결과를 보여주는 창구
- 언어 엔진: 실제 번역/실행을 수행하는 엔진
- 확장: 이 둘을 연결하는 다리 (엔진 없이는 무용지물