스킬캠퍼스

오늘 끝나면

코드는 어떻게 실행되나

  • 코드는 어떻게 실행되나의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 코드는이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

내가 쓴 글자가 동작이 되기까지 — 컴파일 vs 인터프리터 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

개발 · Day 7

코드는 어떻게
실행되나

내가 쓴 코드는 사람 글이고, CPU는 0 1만 안다. 그 사이를 메우는 일이 번역이다.

P.01개발 · Day 7

둘은 서로 다른 언어

price = 1000은 사람이 읽으라고 쓴 글이다.

CPU가 아는 것은 켜짐과 꺼짐, 즉 0 1뿐이다. 그래서 코드는 누군가 0과 1로 바꿔줘야 돈다.

그 바꿔주는 일을 번역이라 부른다. 번역 방식은 두 갈래로 갈린다.

사람 글 vs 기계어
사람이 읽는 글price = 1000qty = 3total =price * qty번역CPU가 아는 것1010 0001 00111010 0010 00000110 1100 00011111 0000 1010켜짐·꺼짐뿐

같은 뜻, 전혀 다른 표기. 그 사이를 번역이 메운다

P.02개발 · Day 7

미리 통째 vs 그때그때

번역하는 타이밍이 두 방식을 가른다.

컴파일은 실행 전에 통째로 미리 번역해 둔다. 처음엔 기다리지만, 그 뒤 실행은 이미 0과 1이라 빠르다.

인터프리터는 기다림 없이 바로 시작한다. 대신 줄마다 그때그때 번역하니 매 줄이 느리다.

번역 방식 · 직접 돌려보기
사람이 쓴 글
price = 1000
qty = 3
total = price * qty
print(total)
번역
CPU가 아는 0/1
···· ···· ····
···· ···· ····
···· ···· ····
···· ···· ····
출력
걸린 시간
0.00s
대기 중
먼저 4줄을 통째로 번역하느라 처음엔 기다린다. 대신 그 다음 실행은 쭉쭉 빠르다.
P.03개발 · Day 7

번역이 끼는 위치

소스코드에서 실행까지, 길은 두 갈래다.

컴파일러.c 파일을 통째로 번역해 실행파일(이미 0과 1 덩어리)을 한 번 만들어 둔다. 그 다음부터는 그 파일만 돈다.

인터프리터는 실행파일을 만들지 않는다. .py 파일을 돌릴 때마다 한 줄씩 읽고 바로 실행한다.

그래서 C는 “먼저 빌드”, 파이썬은 “그냥 실행”이다.

소스 → 번역 → 실행
컴파일 (C).c 소스사람 글번역 1회실행파일0/1 덩어리돌림결과빠름한 번 빌드하면 그 뒤론 빠르게 반복 실행인터프리터 (파이썬).py 소스사람 글한 줄씩읽고→번역→실행매 줄 반복 ↺결과편함빌드 없이 고치고 바로 실행
P.04개발 · Day 7

속도냐 편함이냐

둘은 맞바꾸는 관계다.

컴파일(C)은 빠르다. 미리 다 번역해 뒀으니 실행이 군더더기 없다. 대신 고칠 때마다 다시 빌드해야 해서 번거롭다.

인터프리터(파이썬)는 편하다. 고치고 바로 돌려보면 된다. 대신 매번 번역하느라 더 느리다.

속도가 생명이면 C, 빨리 만들고 고치는 것이 중요하면 파이썬을 고른다. 옳고 그름이 아니라 골라 쓰는 것이다.

코드 보기, 같은 일, 두 언어
// C, 먼저 빌드해야 돈다
int total = price * qty;
printf("%d", total);

# 파이썬, 그냥 바로 돈다
total = price * qty
print(total)
트레이드오프
실행 속도고칠 때 편함컴파일C빠름번거로움인터프리터파이썬느림고치고 바로 실행옳고 그름이 아니라, 골라 쓰는 것

3줄 요약

  1. 1내가 쓴 글자가 동작이 되기까지 — 컴파일 vs 인터프리터
  2. 2코드는 어떻게 실행되나은 코딩 기본 → 인터넷과 웹 → 프론트/백엔드 → 데이터 → 배포 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

코드는

내가 쓴 글자가 동작이 되기까지 — 컴파일 vs 인터프리터

입력

프로그램이 받아들이는 값이나 사용자 행동

규칙

입력을 처리하는 코드의 절차