01 / 15
SESSION 08 · Part 2 개발자처럼 생각하기

추상화와
함수

복잡함을 숨기고 이름 하나로 불러쓰는 기술

02 / 15
🎯

이 세션에서
배우는 것

🎭
추상화
복잡한 내부를 숨기고 필요한 것만 드러내는 방법을 이해한다
🛠️
함수
함수를 왜 만들고, 언제 만들어야 하는지 안다
🎁
매개변수 · 반환값
함수의 입력과 출력 구조를 설명할 수 있다
03 / 15
🎭

추상화는
"몰라도 되게" 해준다

자동차 운전에 엔진 구조를 알 필요 없다.
핸들, 페달, 기어 — 필요한 인터페이스만 있으면 된다.

프로그래밍도 똑같다. 한 번 잘 만들어두면 이름만 부르면 끝. 이것이 함수다.

04 / 15

함수 없이 vs 있을 때

같은 일을 세 번 할 때 — 차이가 극명해진다.

😵 함수 없이
같은 코드를 복붙 3번
수정하려면 3곳 모두 고쳐야
한 군데 빠뜨리면 버그
읽기 어렵고 길어짐
🎁 함수로
한 번만 정의 — 여러 번 호출
수정은 한 곳만 고치면 전체 반영
이름만 봐도 의도가 드러남
코드가 짧고 재사용 가능
05 / 15
🎭

추상화가 없다면 —
더 깊게 이해하기

추상화가 없다면 프로그래머는 무슨 일을 해야 할까? 스마트폰 카메라 촬영을 예로 보자.

1
추상화 없이: 셔터 버튼을 누를 때
센서 전압 제어 → ADC 변환 → ISP 처리 → JPEG 인코딩 → 저장 → ... 수천 줄의 저수준 코드를 직접 작성해야 한다.
2
추상화 있을 때: camera.takePicture() 한 줄
OS가 하드웨어를 추상화했기 때문에 앱 개발자는 한 줄이면 된다. 내부 수만 줄이 숨겨진 것이다.
3
추상화의 계층: 하드웨어 → OS → 프레임워크 → 앱
각 층이 아래 층의 복잡함을 숨긴다. 앱 개발자는 프레임워크만 알면 되고, OS 개발자만 하드웨어를 다룬다.
4
결과: 생산성의 폭발적 증가
추상화 덕분에 혼자서도 수십만 줄짜리 앱을 만들 수 있다. 거인의 어깨 위에 서는 것이다.
06 / 15

함수 호출의 흐름

매개변수를 넣으면, 블랙박스 안에서 처리되어 반환값이 나온다.

입력
매개변수
→
함수
처리 로직
→
출력
반환값
# 한 번 정의하면
def greet(name):
  return "안녕, " + name + "!"

# 여러 번 불러 쓴다
greet("철수") # "안녕, 철수!"
greet("영희") # "안녕, 영희!"
07 / 15
📦

함수 → 모듈 →
실제로는 어떻게?

함수 하나가 어떻게 대규모 라이브러리로 성장하는지 따라가 보자.

함수 작성
add(), multiply()
→
파일로 묶기
math_utils.py
→
공개·배포
npm/pip 등록
→
전 세계 사용
import 한 줄

핵심: React·TensorFlow·카카오 로그인 API — 모두 함수와 추상화로 만들어진 모듈. import 한 줄로 수년의 노력을 얹는다.

08 / 15
📦

모듈 — 함수의 묶음

함수 여러 개를 모아놓은 파일. 남이 만든 모듈을 import만 하면 즉시 사용 가능.

1
함수를 모아 모듈로
math_utils.py 파일에 add, subtract, multiply 등을 모은다.
2
다른 파일에서 불러오기
import math_utils — 한 줄이면 끝.
3
오픈소스 패키지 활용
전 세계 개발자가 만든 수십만 개 패키지 — npm, pip로 설치 후 바로 사용.
4
거인의 어깨 위에서
바퀴를 다시 발명하지 말라. 검증된 코드를 조립해 나만의 제품을 만든다.
09 / 15
📱

실생활에서
이렇게 쓰여요

우리가 매일 사용하는 앱과 서비스 속에 이 개념이 녹아 있다.

📷
카메라 앱
수십 만 줄의 하드웨어 코드가 추상화되어 "셔터 버튼 누름" 하나로 동작한다.
💳
결제 API
카드사·은행·보안 시스템과의 복잡한 통신이 pay(amount) 함수 하나로 추상화된 인터페이스로 제공된다.
🔑
카카오 로그인
OAuth 인증 흐름 전체가 loginWithKakao() 한 줄로 추상화. 내부는 수백 줄이지만 개발자는 몰라도 된다.

💡 이 개념이 없다면 앱 하나 만들기 위해 OS부터 다시 개발해야 한다

10 / 15
💡

자주 하는
오해 바로잡기

이렇게 생각하기 쉽지만, 실제로는 조금 다릅니다.

❌ 흔한 오해
  • 추상화 = 단순화 (같은 말이다)
  • 함수 = 수학 함수 (같은 개념이다)
  • API = 추상화 (같은 것이다)
✓ 실제로는
  • 추상화는 복잡함을 숨기는 것. 단순화는 실제로 복잡도를 줄이는 것 — 다른 개념이다
  • 프로그래밍 함수는 입력→처리→출력의 코드 블록. 수학처럼 순수하지 않아도 된다
  • API는 추상화를 사용하지만, 추상화보다 더 넓은 개념 (네트워크 인터페이스 포함)
11 / 15
☕

함수는 커피 머신이다

어려운 개념도 익숙한 것에 빗대면 쉬워진다.

☕ 커피 머신 비유
물 + 원두
=
매개변수 — 함수에 넣는 입력
머신 내부
=
함수 본체 — 처리 로직(몰라도 된다)
나오는 커피
=
반환값 — 결과
버튼만 누르면 끝
=
추상화 — 내부 원리 없이도 사용 가능
12 / 15
🤖

이걸 알면
AI와 이렇게 대화해요

이 개념을 이해하면 Claude나 ChatGPT를 훨씬 잘 활용할 수 있다.

👤
같은 코드를 계속 반복 작성하고 있어요
🤖
반복 코드는 함수로 묶는 리팩토링이 필요합니다. 코드를 보여주시겠어요?
👤
이 반복 코드를 함수로 리팩토링하는 방법 알려줘. 매개변수와 반환값도 어떻게 설계해야 할지 설명해줘
🤖
반복되는 부분에서 변하는 값을 찾아 매개변수로, 결과로 필요한 값을 반환값으로 설계합니다. 예: function formatUser(name, age) { return `${name}(${age}세)` } — 이렇게 추상화하면 어디서든 재사용 가능합니다.
13 / 15
✅

이렇게
이해하셨나요?

✅
맞게 이해하셨어요
추상화는 복잡한 내부를 숨기고 인터페이스(사용법)만 제공한다. 커피 머신의 버튼처럼.
❌
이렇게는 아니에요
추상화하면 성능이 항상 좋아진다. (추상화는 성능보다 생산성·유지보수를 위한 것이다)
✅
맞게 이해하셨어요
함수는 같은 코드를 반복 작성하지 않고, 이름 하나로 여러 번 호출해 재사용하는 블록이다.
❌
이렇게는 아니에요
함수는 반드시 값을 반환해야 한다. (반환값 없이 동작만 하는 함수도 많다)

💪 추상화와 함수를 이해했다면, 이제 남이 만든 라이브러리를 두려움 없이 사용할 수 있어요!

14 / 15
📌

핵심 정리

🎭
추상화
복잡한 내부를 숨기고
인터페이스만 제공
🛠️
함수
이름이 붙은
재사용 가능한 코드 블록
🎁
매개변수
함수로 전달하는
입력 값
🎯
반환값
함수가 내놓는
결과 값
📦
모듈
함수들의 묶음 —
import로 재사용
🧱
조립의 미학
작은 함수를 쌓아
거대한 시스템으로
15 / 15
🚀

다음 Part 3
운영체제의 세계로

코드를 실제로 실행시키는 배경 시스템 — 운영체제(OS).
Windows, macOS, Linux는 무엇이 다르고, 왜 필요한가?

💡 기억할 것: 같은 코드를 두 번 쓰지 말자. 바로 함수로 만들 때다.

슬라이드 목록