Hello, world!

1 개요

신에게 빛이 있으라가 있다면, 프로그래머에겐 Hello, World! 가 있다.

그 정체는 프로그래밍의 출력 코드를 공부할 때 쓰이는 대표적인 예시.

2 유래

1978년에 브라이언 커니핸과 데니스 리치가 쓴 "The C Programming Language" 교재의 첫 번째 예제가 화면에 "Hello, world!"를 출력하는 것이었고, 이것이 유명해지면서 모든 프로그래밍 언어의 첫번째 예제로 굳어지게 되었다.[1][2]
사실 브라이언 커니핸은 예전에 자신이 집필한 책에서도 비슷한 예제를 낸 적이 있다. 오리지널은 대소문자나 띄어쓰기 등 모두 구분해 정확하게 "Hello, world!"이며, 프로그래밍 언어나 구현방식, 오타 여부에 따라 대/소문자, 쉼표나 느낌표가 조금씩 바뀐다.


main( ) {
puts("Hello, world!");
return 0;
}

The C Programming Language의 원본으로 당시 C가 아직 표준화 되지 않았기 때문에 현재의 문법과는 차이가 있다. 일단 가장 눈에 확 들어오는게 출력 코드에서 printf가 아닌 puts를 썼다.


#include 
main() 
{
printf("hello, world\n");
}

TCPL 2판에서는 stdio.h 헤더가 include 되고 베프 printf()가 등장하고, Hello의 H가 소문자로 적혀있다. 그리고, 이유는 알수 없지만 return 문이 사라졌다.


#include 
int main(void) 
{
printf("hello, world\n");
return 0;
}

ANSI C 문법에서 권장한 내용을 모두 포함하여 프로그래밍 할 경우는 위와 같다. 설명하자면 main 함수에 전달된 파라미터가 없으므로 void 를 명시하고, main 함수의 타입은 int 로 명시해주고, int 함수이므로 종료시 return 0; 도 추가해준다. 다만, 이는 ANSI C 에서 권장하는 바이지 의무사항은 아니다. 이를 모두 생략하고 앞의 코드처럼 작성해도 컴파일에는 문제가 없다.

비주얼 스튜디오 등의 일부 프로그래밍 툴에서는 새 프로그램을 작성할 때 이 예제를 기본적으로 제공하기도 한다. 프로그래밍 언어를 공부할 때 대부분 등장하기 때문에 The Hello World Collection이라는 사이트도 있다. [3]

프로그래밍 언어를 새로 배울 때만 보게 되는 게 아니다. 뭘 해도 처음엔 헬로월드 표시하는 것부터 만들고 보는 것이다. GUI프로그램을 하나 처음 만들어도 표시하는 것은 헬로월드, 3D 엔진을 하나 처음 만들어도 띄우는 것은 헬로 월드… 말 그대로 지겹게 볼 수 있다. 심지어는 기껏 예외라고 제시했던 Hadoop MapReduce마저 입력은 헬로월드이니 더 이상 말할 필요가 없다. 입력이든 출력이든 헬로월드는 꼭 따라다닌다.

때문에, 새로운 전자기기가 등장한 상용 OS나 펌웨어가 등장했을때, 이 보안을 뚫고 홈브류를 만드는 해커들이 제일먼저 하는 것 또한 Hello, world!. 이것이 떴다면 그 기기는 루팅이 되어 커스텀 펌웨어를 올릴 수 있는 첫 단추를 꿴 것이다. PSP,아이폰등 홈브류 프로그램이 많았던 하드들은 전부 이 과정을 거쳤다고 할 수 있다.

여기 에서 코딩된 걸 보고 어떤 언어인지 알아맞추는 퀴즈를 풀어볼 수 있다. 본인이 프로그래밍 언어를 몇 종류나 알고 있는지 궁금하다면 한번 도전해 보자. 얼마나 알고 있냐지 몇개를 잘 알고 있냐가 아니다

프로그래밍 언어/코드 예제에 언어별 예제가 있다.

3 기타

  • 범프 오브 치킨이 부른 혈계전선 오프닝 제목도 여기에서 따 왔다. 심지어 뮤직비디오의 맨 처음에 무대 바닥에 C언어의 Hello World 예제가 깔린다(...).
  • 엘브리사의 자기소개 메시지를 바꾸지 않았다면 처음에 설정되어 있는 멘트가 "헬로우, 월드!"이다.
  • Hello World의 Hello 에서 o만 빠지면 Hell World가 된다. 지옥문이 열렸다 2015년도 정보올림피아드 지역예선 문제중 보기가 Hello World인게 있어서 수험생들 대부분이 골랐지만 정답은 Hell World였다. 애초에 프로그램문제는 한문제 푸는데 길게는 20분넘게 걸리니 찍는게 당연하다.문제도 앞쪽문제고 딱봐도 5분도 안되서 풀 문제다
  • 프로그래밍 언어 처리에서 Hello, world!가 있다면, 2D 그래픽 처리에서는 Lenna가 있다. 이미지 압축 알고리듬 예제를 공부한다면 지겹게 볼 사진. 그리고 3D 그래픽 처리에서는 스탠포드 토끼유타 주전자가 있다.
  • 유럽우주국(ESA)의 혜성 탐사선의 [[로제타|]]의 동면 후 첫 교신 메세지 또한 Hello World! 이다.
  1. 물론 예외는 극히 드물게 있는데, Hadoop MapReduce의 경우 첫 프로그램이, 어절의 수를 출력하는 WordCount이다. 그런데 이것마저도 입력 파일의 내용은 "Hello World"이다(……).또한 일부 초보자를 위한 C언어 책은 Hello, World!가 아닌 한국어를 쓰거나 일단 죽이되던 밥이되던 제대로된 간이 프로그램을 한번 만들고 봐라.라는 식으로 가르치는 경우도 있다. 혹은 컴퓨터가 아주 융통성이 없다는 사실을 알려주기 위해 printf없이 10+5;같은 것만 적도록 시키는 경우도 있다.
  2. 함수형 언어들의 소개에도 언어의 본질이 아닌 부작용에 불과한 입출력을 다루는 "Hello World"가 아니라, 피보나치 수열을 구현하는 등의 예시를 많이 든다.
  3. 물론 C 언어보다 더 먼저 만들어진 FORTRAN이나 COBOL, BASIC 같은 프로그래밍 언어 입문서에는 애당초 Hello, world라는 구문을 출력하는 예제가 없었다. 하지만 이 구문이 유명해지자 요즘에는 언급한 오래된 컴퓨터 언어의 입문서에서도 볼 수 있다. 아희도 들어가 있다...