Back to Blog

Blog Post

Hello World

Published on April 28, 2026

'헬로 월드'는 컴퓨터를 공부하는 사람들이라면 누구나 한 번 쯤 들어봤을 문장이다. 만약 들어보지 못했다면 당신은 컴퓨터 전공이 아니거나, 공학에 뜻을 둔 사람이 아닐 것이다.

대부분은 스쳐 지나가지만, 필자를 비롯해 꽤나 많은 사람들이 이 문장의 유래를 궁금해 할 것이다. 그래서 한 번즈음 검색을 해 본기억이 대부분 있을것이다.


'Hello World'는 어떻게 프로그래밍의 표준 인사가 되었나?

새로운 기술을 배울 때 우리가 무심코 입력하는 "Hello, World!"는 단순한 관습 그 이상의 의미를 지닌다. 이 문구는 컴퓨터 과학의 역사와 함께 호흡하며 수백만 개발자의 첫걸음을 함께해 왔다. 따라서 이 문장에는 새로운 언어를 배우는 설레임, 두려움이 내포되어 있다고도 감히 말할 수 있다.

1970년대 벨 연구소. B언어로 부터 시작한 'Hello world'

'Hello World'의 탄생을 이해하려면 1970년대 초반, 전설적인 개발자들이 모여 있던 벨 연구소(Bell Labs)로 시간을 되돌려야 한다.

1.1 B 언어와 브라이언 커니핸의 실험

오피셜하게, 이 문구의 창시자는 브라이언 커니핸(Brian Kernighan)이다. 그는 1972년 작성한 내부 기술 문서 "A Tutorial Introduction to the Language B"에서 최초로 이 인사를 사용했다. 재미있는 점은 당시의 코드가 현대의 관점에서는 상당히 생소한 형태였다는 사실이다. 아래의 코드를 보자.

/* 1972년 B 언어 매뉴얼에 등장한 최초의 형태. 참으로 가증스럽고 경악스럽지 않을 수 없다. */
main( ) {
    extern a, b, c;
    putchar(a); putchar(b); putchar(c); putchar('!*n');
}
1 'hell';
2 'o, w';
3 'orld';

B 언어라는 것에서 눈치 챈 사람도 있을테지만, 이는 C언어의 이전 버전이다. 당시 하드웨어는 메모리 자원이 극도로 제한적이었기에 문자열을 한 번에 처리하지 못하고 분할하여 출력해야 했다(실제 위의 코드를 보면 char 4개씩 끊어서 문자열을 만든 것을 볼 수 있다). 이 불편한 코드가 바로 인류 최초의 'Hello World'였다.

1.2 C 언어의 보급과 표준화

이후 1978년, 브라이언 커니핸과 데니스 리치가 공동 집필한 "The C Programming Language" (K&R)가 출간되면서 이 문구는 전 세계로 퍼져 나갔다. 이 책의 첫 번째 예제가 바로 printf("hello, world\n");였고, 이 후 C 언어가 업계 표준으로 등극하며 이 문구 또한 업계 표준을 배우기 위해 공부하는 전 세계 프로그래머가 가장 먼저 실습하는 예제가 된 것이다.

저기요, 왜 "Hello, World"였나요?

Source : wikipedia.org

여러 인터뷰에서 이 질문을 접한 브라이언 커니핸은 "특별한 의도는 없었다"고 말해왔다. 하지만 문장이 어쨌건, 디스플레이에 저 문장이 출력되는 순간! 두 가지 부분에서 의미가 생긴다.

  1. 이 코드가 작동한다는 것은 컴파일러 설치, 라이브러리 링크, 표준 출력 장치 설정이 모두 완벽하다는 것을 의미한다. 즉, 개발 환경 구축의 '최종 확인' 단계로서 가장 효율적인 수단이다.

  2. 과거의 컴퓨터는 차갑고 딱딱한 계산기에 불과했다. 하지만 "Hello"라는 인사를 건네는 순간, 컴퓨터는 사용자와 상호작용하는 능동적인 매체로 변모한다. (오늘날에는 사회적으로 고립된 수많은 개발자들의 대화상대가 되어주기도 한다)

의도와 상관없이, 기존 빠른 수학적 계산이나 정확한 연산을 추구하던 컴퓨터를 보다 인간적이고, 범용적으로 다룰 수 있도록 한 하나의 인간적인 도구로 자리매김 시키게 만들었다고 할 수 있다.

현대 언어들에서의 'Hello World'

오늘날 각 프로그래밍 언어는 자신만의 문법과 철학으로 이 인사를 재해석한다.

  • Python (실용주의): print("Hello, World!") - 인간의 언어와 가장 닮은 간결함을 추구한다.

  • Java (구조주의): 객체와 메소드라는 엄격한 틀 안에서만 인사를 허용한다. 이는 대규모 시스템 설계의 안정성을 중시하는 철학의 반영이다. (심지어 콘솔에 뭐 하나만 찍으려고 해도 System.out이라는 불편한 출력 라이브러리를 항상 달고 다녀야 한다.)

  • Web Standard (시각적 소통): print라는 함수에서 벗어나서, 브라우저 환경에서는 텍스트 출력을 넘어 UI 컴포넌트로서의 첫 인사를 건넨다.

마치며

첫 포스팅의 주제로 당당히 낙점된 'Hello World'. 무언가를 시작하고, 도전 할 때 항상 초심을 지켜게 해 주는 원흉이다. 하지만 전 세계 개발자들에게 이보다 더 친숙하고 그리운 문장이 있을까? 단언컨데 없다고 본다. 그만큼, 여러 사람들에게 친숙하면서도 조금이라도 도움이 되고, 무엇보다 나의 기록을 남기고자 블로그 포스팅을 시작해 본다.

Written by MiTornAve

Previous / Next

Next: [1 - 1 퍼셉트론] AI의 첫 번째 세포: 0과 1로 세상을 분류하다