태지쌤

로봇 & 코딩교육 No.1 크리에이터

자세히보기

IT관련

while(true)는 알고리즘일까?무한 루프로 보는 알고리즘의 유한성

태지쌤 2026. 5. 20. 18:10
반응형

https://link.coupang.com/a/dT2KTWi4Lk

 

 

LG전자 2026 그램 15 코어 Ultra5 - 노트북 | 쿠팡

현재 별점 4.8점, 리뷰 239개를 가진 LG전자 2026 그램 15 코어 Ultra5! 지금 쿠팡에서 더 저렴하고 다양한 노트북 제품들을 확인해보세요.

www.coupang.com

 

while(true)는 알고리즘일까?
무한 루프로 보는 알고리즘의 본질

 

 

매일 쓰는 앱과 OS는 왜 꺼지지 않을까? 컴퓨터 과학의 고전적 정의에서 출발해 정지 문제까지, 무한 루프가 던지는 깊은 질문을 따라가 봅니다.

1. 알고리즘의 고전적 정의 — "반드시 끝나야 한다"

컴퓨터 과학의 바이블로 불리는 Knuth의 The Art of Computer Programming은 알고리즘의 조건을 5가지로 정의합니다. 그 중 하나가 바로 유한성(Finiteness)입니다.

"알고리즘은 반드시 유한한 단계 후에 종료되어야 한다."

즉, 입력을 받아 정해진 단계를 거쳐 반드시 종료되고 결과를 내는 것. 이것이 알고리즘의 전통적인 정의입니다.

그렇다면 아무것도 하지 않고 영원히 도는 while(true) {}는 어떻게 봐야 할까요? 이 코드는 유한성 조건을 만족하지 못합니다. 따라서 엄밀한 의미에서 알고리즘이 아닙니다.

Knuth 본인도 이 한계를 인식하고, 종료하지 않는 절차를 따로 "계산적 방법(Computational Method)"이라고 구분했습니다.

2. 실제 프로그램은 왜 꺼지지 않을까?

여기서 현실과 이론 사이의 흥미로운 간극이 생깁니다.

우리가 매일 쓰는 윈도우 OS, 스마트폰 앱, 로봇 제어 프로그램은 켜자마자 꺼지지 않습니다. 끌 때까지 계속 대기하죠. 이것은 알고리즘 이론이 틀린 게 아니라, 소프트웨어 공학에서 말하는 이벤트 루프(Event Loop) 또는 반응형 시스템(Reactive System)의 개념입니다.

구분 종료 보장 이론적 틀 예시
알고리즘 ✅ 있음 알고리즘 이론 정렬, 최단경로 탐색
프로세스 / 반응형 시스템 ❌ 없음 (의도적) 프로세스 대수, 반응형 시스템 이론 OS 커널, 웹 서버, 로봇 제어

웹 서버나 OS는 종료하지 않는 것이 버그가 아니라 설계 의도입니다.

표면적 무한 vs 내부적 유한

핵심은 여기에 있습니다. 프로그램 전체는 무한히 도는 것처럼 보이지만, 루프 안의 각 동작은 모두 유한하게 시작과 끝을 맺습니다.

while(true) {
    readSensor();  // 센서 값을 읽는다 → 종료
    compute();     // 계산한다         → 종료
    actuate();     // 모터를 움직인다  → 종료
}

전체 루프는 멈추지 않지만, 그 안의 하나하나는 반드시 끝납니다. 이것이 임베디드 시스템과 실시간 시스템(RTOS) 설계의 핵심 원칙입니다.

3. 아이들에게 설명하는 팁 — 자판기 비유

💡 교육 현장 팁

"자판기는 우리가 돈을 넣을 때까지 하루 종일 켜져 있지? 이건 '무한 반복'하며 기다리는 거야. 하지만 돈을 넣었을 때 음료수를 떨어뜨려 주는 과정은 정확히 계산이 끝나면 멈추지? 즉, 전체 프로그램은 무한히 반복되더라도, 그 안의 하나하나의 명령어 세트(알고리즘)는 유한성을 가지고 끝이 나야 해."

여기서 한 가지 주의할 점이 있습니다. "알고리즘이 끝나지 않으면 음료수가 계속 나온다"고 설명하기 쉬운데, 실제 동작은 다릅니다.

상황 직관적 묘사 실제 동작
내부 알고리즘이 무한루프에 빠지면 음료수가 계속 나온다 ⚠️ 시스템 전체가 먹통(freeze)

무한루프에 빠진 CPU는 그 루프만 계속 실행하므로 다음 명령으로 넘어가지 못합니다. 모터 신호 자체를 보내지 못하니 오히려 아무것도 안 나오는 먹통이 됩니다. 우리가 일상에서 경험하는 "앱 응답 없음", "화면이 굳었다"가 바로 이 현상입니다.

"음료수를 주는 알고리즘이 끝나지 않으면, 자판기가 멈춰서 아무 버튼도 안 눌리고 음료수도 안 나오는 먹통이 되겠지?" ← 이 표현이 더 정확합니다.

유한성만으로는 부족하다 — 데드라인(Deadline)

내부 알고리즘이 유한하게 끝나는 것만으로는 충분하지 않습니다. 제때 끝나야 합니다.

자판기가 돈을 받고 10분 뒤에 음료수를 준다면 고장난 것으로 느껴지겠죠. 이것이 실시간 시스템에서 말하는 데드라인(Deadline) 개념입니다. "유한하게 끝난다"를 넘어 "충분히 빨리 끝난다"까지 요구하는 것입니다.

4. 더 깊은 질문 — 종료하는지조차 알 수 없다면?

while(true)보다 훨씬 더 철학적으로 흥미로운 경우가 있습니다. 바로 종료 여부를 알 수 없는 프로그램입니다.

// 콜라츠 추측 (Collatz Conjecture)
n이 1이 될 때까지:
    n이 짝수면 → n = n / 2
    n이 홀수면 → n = 3n + 1

어떤 양의 정수에서 시작해도 결국 1에 도달하는 것처럼 보이지만, 수학적으로는 아직 증명되지 않았습니다. 이 코드가 알고리즘인지조차 현재로선 확정할 수 없는 셈입니다.

이것이 바로 정지 문제(Halting Problem)의 핵심과 연결됩니다. 앨런 튜링은 1936년에 다음을 증명했습니다.

"임의의 프로그램이 종료하는지를 항상 판단할 수 있는 알고리즘은 존재하지 않는다."

알고리즘의 유한성 조건은 단순한 정의 문제가 아니라, 계산 가능성 이론의 근본적인 한계와 맞닿아 있습니다.


📌 핵심 정리

  • 알고리즘의 유한성 — 반드시 종료되어야 한다 (Knuth)
  • 이벤트 루프 / 반응형 시스템 — 전체는 무한, 내부 단위는 각각 유한
  • 실시간 시스템의 데드라인 — 유한하게 끝나는 것을 넘어 제때 끝나야 함
  • 정지 문제 — 종료 여부를 일반적으로 판단하는 것은 원리적으로 불가능

while(true)라는 코드 한 줄이 던지는 질문은 생각보다 깊습니다. 작은 질문 하나가 컴퓨터 과학의 가장 근본적인 개념들을 관통합니다.

#알고리즘 #무한루프 #whiletrue #이벤트루프 #정지문제 #HaltingProblem #콜라츠추측 #컴퓨터과학 #CS기초 #프로그래밍개념 #소프트웨어공학 #실시간시스템 #임베디드시스템 #코딩교육 #알고리즘유한성 #반응형시스템 #튜링 #계산가능성 #코딩입문 #개발자블로그
반응형