문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Hello, world! (문서 편집) [include(틀:다른 뜻1, other1=동음이의어, rd1=Hello world)] [목차] == 개요 == ||{{{#!wiki style="margin: -5px -10px" [[파일:HelloWorldBackground.png|width=100%]]}}}|| || Hello, World! 모음집[* 자세히 보면 몇 군데가 잘려 있다. --그나저나 뭔가 이상한 게 끼어있는데...?--] || >'''Hello, World!''' 많은 프로그래밍 언어 서적에서 맨 처음 소개하는 예제. Hello, world!를 출력하는 것이 프로그래밍 언어를 배우는 첫 번째 단계로 일종의 암묵적인 룰이 되었다. 그야말로 [[프로그래머]]들에게는 국룰인 단어이다.[* 물론 매번 새로운 언어를 배울 때마다 그거부터 배운다고 지겨워하는 사람들이 존재하기에 레퍼토리를 바꾸는 교수나 강사도 꽤 많다.] == 유래 == 1978년에 브라이언 커니핸과 [[데니스 리치]]가 쓴 "The [[C(프로그래밍 언어)|C]] Programming Language" 교재의 첫 번째 예제가 화면에 "Hello, world!"를 출력하는 것이었고, 이것이 유명해지면서 모든 [[프로그래밍 언어]]의 첫번째 예제로 굳어지게 되었다.[* 물론 예외는 극히 드물게 있는데, Hadoop MapReduce의 경우 첫 프로그램이, 어절의 수를 출력하는 WordCount이다. 그런데 이것마저도 입력 파일의 내용은 "Hello World"이다(…). 또한 일부 초보자를 위한 C언어 책은 Hello, World!가 아닌 한국어를 쓰거나 '''일단 [[죽이 되든 밥이 되든]] 제대로 된 간이 프로그램은 한 번 만들고 보라'''는 식으로 가르치는 경우도 있다. 혹은 컴퓨터가 아주 융통성이 없다는 사실을 알려주기 위해 printf없이 10+5만 치라고 시키는 경우도 있다. 이런 구문일 뿐인 명령어조차도 바로 인터프리팅하는 [[파이썬]]이 독특한 것.][* 함수형 언어들의 소개에도 언어의 본질이 아닌 부작용에 불과한 입출력을 다루는 "Hello World"가 아니라, 피보나치 수열을 구현하는 등의 예시를 많이 든다. 또는 [[액션스크립트]]의 경우 [[어도비 플래시|프로그램]] 자체가 기본적으로 그래픽 프로그램에서 파생된 사실상의 [[게임 엔진]]이기 때문에 프레임 조작 메서드 정도로 시작한다.] 사실 브라이언 커니핸은 예전에 자신이 집필한 책에서도 비슷한 예제를 낸 적이 있다. 오리지널은 대소문자나 띄어쓰기 등 모두 구분해 정확하게 '''"Hello, world!"'''이며, 프로그래밍 언어나 구현방식에 따라 대/소문자, 쉼표나 느낌표가 조금씩 바뀐다. {{{#!syntax cpp main( ) { puts("Hello, world!"); return 0; } }}} The C Programming Language의 원본으로 당시 C가 아직 표준화 되지 않았기 때문에 현재의 문법과는 차이가 있다. 일단 가장 눈에 확 들어오는게 출력 코드에서 printf가 아닌 puts를 썼다. {{{#!syntax cpp #include main() { printf("hello, world\n"); } }}} TCPL 2판에서는 stdio.h 헤더가 include 되고-- 베프-- printf()가 등장하고, Hello의 H가 소문자로 적혀있다. 느낌표도 없어졌다. 그리고, 부가 설명하기 귀찮은지 return 문이 사라졌다.[* 프로그래밍 언어를 처음 하는 사람에게 return이 무엇인지 설명하려면, 한참 뒤에나 등장하게 될 함수가 무엇인지를 설명해야 한다. 그런 혼란을 없애고자 빼버린 것으로 보인다.] {{{#!syntax cpp #include int main(void) { printf("hello, world\n"); return 0; } }}} ANSI C 문법에서 권장한 내용을 모두 포함하여 프로그래밍 할 경우는 위와 같다. 설명하자면 main 함수에 전달된 파라미터(매개변수)가 없으므로 void 를 명시하고, main 함수의 타입(자료형)은 int 로 명시해주고[* 다시 말해 정수형 int로 main 함수를 쓰겠다고 선언한 것이다. int는 integer(정수)의 줄임말이다.], int 함수이므로 종료시 return 0;도 추가해준다. 다만, 이는 ANSI C에서 권장하는 바이지 의무사항은 아니다. 이를 모두 생략하고 앞의 코드처럼 작성해도 컴파일은 가능하고 실행도 된다. 다만 컴파일할 때 수많은 경고(Warning)를 발생시킨다. 간혹 프로그램이 바로 종료돼서 "Hello world"를 보지 못하는 경우가 있을 수 있는데, 일단 따로 콘솔창을 띄워서 콘솔창의 명령을 통해 프로그램을 실행시키면 바로 종료되더라도 Hello world를 볼 수 있다. 이 문제가 발생했을 경우 문자 하나를 입력받도록 해서 "Hello world"를 볼 수 있다. {{{#!syntax cpp #include #include int main(void) { printf("hello, world\n"); _getch(); return 0; } }}} [[Visual Studio]] 등의 일부 프로그래밍 툴에서는 새 프로그램을 작성할 때 이 예제를 기본적으로 제공하기도 한다. 프로그래밍 언어를 공부할 때 대부분 등장하기 때문에 [[http://helloworldcollection.de/|The Hello World Collection]]이라는 사이트도 있다. 물론 C언어보다 더 먼저 만들어진 [[포트란|FORTRAN]]이나 [[코볼|COBOL]], [[BASIC]] 같은 프로그래밍 언어 입문서에는 애당초 Hello, world라는 구문을 출력하는 예제가 없었다. 하지만 이 구문이 유명해지자 요즘에는 언급한 오래된 컴퓨터 언어의 입문서에서도 볼 수 있다. 뿐만 아니라 특이한 프로그래밍 언어도 소개할 때에도 이것을 출력하는 코드를 보여주는 것이 암묵의 룰. 개발자들은 이 구문을 프로그래밍 언어를 새로 배울 때에만 보게 되는 것이 아니다. 개발의 시작은 헬로 월드를 표시하는 것부터 만들고 보는 것이 거의 기본 상식이다. GUI 프로그램을 하나 처음 만들어도 표시하는 것은 헬로 월드, 3D 엔진을 하나 처음 만들어도 띄우는 것은 헬로 월드 등 정말 지겹게 볼 수 있다. 이는 프로그래머의 중요한 업무 중 하나가 개발에 필요한 여러 프레임워크, 모듈, 패키지들을 버젼에 맞게 잘 설치하여 개발 환경을 제대로 세팅하였는지 체크하는 것이기 때문이다. 고차원의 개발을 진행할수록 날것의 통합 개발환경을 쓰는 것 보다는 이미 만들어진 것들을 가져와서 쓰는 경우가 많은데 워낙 다양하고 버젼에 따라 호환성 여부가 중요하기 때문에 이를 체크하는 과정이 반드시 선행되어야 한다. 심지어 [[Docker]]를 쓰더라도 해당 컨테이너가 제대로 개발 환경을 구성하고 있는지 체크해볼 필요가 있기 때문에 일단 찍고 본다. 이는 [[빅데이터]] 분야에서도 마찬가지인데, Hadoop MapReduce를 다뤄도 헬로 월드를 출력해보며, 심지어 [[기계학습]]을 위한 라이브러리인 [[텐서플로]]를 처음 사용할 때에는 텐서플로가 잘 임포팅되었는지 체크해보기 위해 변수가 아닌 '''텐서로 헬로 월드'''를 출력해보기도 한다. '''즉, 개발자 인생에서 헬로 월드는 꼭 따라다닌다.'''[* 이를 Smoke Testing 또는 Sanity Check 라고 한다.] 때문에, 새로운 전자기기가 등장한 상용 OS나 펌웨어가 등장했을때, 이 보안을 뚫고 홈브루를 만드는 해커들이 제일 먼저 하는 것 또한 Hello, world!. 이것이 떴다면 그 기기는 루팅이 되어 커스텀 펌웨어를 올릴 수 있는 첫 단추를 꿴 것이다. PSP, 아이폰 등 홈브루 프로그램이 많았던 하드들은 전부 이 과정을 거쳤다고 할 수 있다. 사족으로, 보통 여기서 한 걸음 더 나갔다는 걸 증명하기 위해 하는 일은 클래식 [[DOOM]]의 구동이다. [[http://helloworldquiz.com/|여기]]에서 '''코딩된 걸 보고 어떤 언어인지 알아맞히는 퀴즈'''를 풀어볼 수 있다. 본인이 프로그래밍 언어를 몇 종류 본 적 있는지 궁금하다면 한번 도전해 보자. == 예제 == [include(틀:상세 내용, 문서명=프로그래밍 언어/코드 예제)] == 기타 == * [[타이거 우즈]]가 프로 데뷔 전 기자 회견에서 첫 마디로 "Hello World!"를 말했다. * [[니트로 플러스]]의 [[Hello world#s-2.1|“Hello, world.”]]또한 여기서 따온 제목이다. * [[메구리네 루카]]의 노래 [[헬로 월드(VOCALOID 오리지널 곡)|Hello World]]의 유래이다. * [[리듬게임]] [[Tone Sphere]]의 수록곡 Hello World !!의 제목도 여기서 따왔다. * [[범프 오브 치킨]]이 부른 [[혈계전선(애니메이션 1기)|혈계전선]] 오프닝 [[Hello,world!]]도 여기에서 따 왔다. 심지어 뮤직비디오의 맨 처음에 무대 바닥에 C언어의 Hello World 예제가 깔린다(...). * [[마인크래프트 자바 에디션]] 타이틀 화면에 뜨는 문구 중에 '''Hello, World!'''가 있다. * [[Two Steps From Hell]]의 곡 중에 Hello World가 존재한다. [[https://youtu.be/4PQPRUd9bdA|#]] 댓글을 보면 프로그래머들이 파티를 벌이고 있다(...). * [[엘브리사]]의 자기소개 메시지를 바꾸지 않았다면 처음에 설정되어 있는 멘트가 "헬로우, 월드!"이다. * 프로그래밍 언어 처리에서 Hello, world!가 있다면, 2D 그래픽 처리에서는 [[레나 포르센|Lenna]]가 있다. 이미지 압축 알고리듬 예제를 공부한다면 지겹게 볼 사진. 그리고 3D 그래픽 처리에서는 [[스탠퍼드 토끼]]와 [[유타 주전자]]가 있다. * [[ESA|유럽 우주국]]의 혜성 탐사선 [[로제타(탐사선)|로제타]]의 동면 후 [[http://www.zdnet.co.kr/news/news_view.asp?artice_id=20140121133235|첫 교신 메세지]] 또한 Hello World! 이다. * 스마트폰 팽이 게임인 [[Spin-Tops]]에서는 게임에 처음 접속하면 달성하게 되는 업적이 Hello World!이다. * [[오버워치]]의 [[젠야타]]에게는 "반갑구나, 세상아."라는 대사가 [[젠야타/대사#s-4|있다]]. 해당 캐릭터 본인이 [[옴닉]]이라는 것에 착안한 말장난. * [[소녀전선]]의 등장 캐릭터인 [[엘리사(소녀전선)|엘리사]]도 일본어로 "안녕, 세계."라는 대사가 있다. 마찬가지로 해당 캐릭터가 AI라는 점에서 있는 대사로 추정된다. [[https://youtu.be/7CGI1rWYIH4?t=57|#]] * [[C(프로그래밍 언어)|C언어]]를 창조한 [[데니스 리치]]가 타계했을 때 수많은 사람들이 그를 추모하면서 남긴 말은 [[작별|Goodbye, world!]]였다. * [[파이널 판타지 14]]의 레이드 오메가 알파편 영웅난이도 최종보스인 [[오메가(파이널 판타지)|오메가]]의 기믹이기도 하다. 아예 이후엔 8명 각자에게 디버프를 주고 운동회를 시키는 기믹들을 통틀어서(ex. 재생4층 시간압축, 연옥4층 개념지배) 헬로 월드라고 부르기도 한다. * [[fhána]]의 Hello!My World!! 뮤직 비디오에서 맞추고 있는 조각이 Hello World 코드다. [[https://youtu.be/EQNE-VwOl04|#]] * 래퍼 [[허클베리피]]가 MIC Swagger 시즌 2 진행할 때, 인트로 벌스에서 많이 언급하였다. * [[쿠키런: 오븐브레이크]]의 [[사이보그맛 쿠키]]의 도전 젤리배치와 [[알로에맛 쿠키]]의 능력발동 연출을 통해서도 이 문장이 나온다. * 애니메이션 SF영화 [[HELLO WORLD]]의 제목또한 내용이 프로그램 관련으로 과거의 기록된 세계가 주된 세상이기에 제목을 그렇게 지은 것 같다. 참고로 Hello world를 검색하면 당연하게도 해당 영화로 연결된다. 해당영화제목의 어원을 봤을때 아이러니한 부분이다. * [[슈퍼 마리오 메이커 2/스토리 모드]]에서 3번째 코스의 이름이 Hello, 3DWorld!이다. * [[Plazma Burst 2]] 맵 에디터에서 글자 장식을 만든 후 글자를 띄우지 않으면 Hello, world! 대신 Hello world!가 출력된다. * [[BLACKPINK]]의 [[제니(BLACKPINK)|제니]]가 처음으로 올린 유튜브 동영상의 제목이 Hello world . From Jennie이다. * [[Roblox|로블록스]]에서 처음 생성된 스크립트에도 Hello World!가 적혀있다. * [[북한]]의 프로그래밍 교과서에서는 이 문구 대신 한글로 "안녕하십니까!"를 출력하도록 예제를 구성하고 있다. --world는 해석을 안한다.-- * [[Friday Night Funkin'/모드/VS Hex Mod]]의 남자친구와 헥스가 부르는 세 번째 노래 제목이 HELLO WORLD!이다. 헥스가 로봇이라는 걸 생각하면 적절한 이름. * [[No Man's Sky]]에서도 아틀라스 모듈에 상호작용을 하면 나온다. 이유는 스포일러. * [[넥슨]]의 온라인 게임 [[엘소드]]의 플레이어블 캐릭터 [[이브(엘소드)|이브]]의 4라인 2차 전직인 코드: 페일리스의 하이퍼 액티브 스킬 이름이 '헬로우 월드'이다. 스킬 이펙트를 잘 보면 Hello, World!를 출력하는 C언어 코드가 보인다. * 버츄얼 유튜버 [[릿카]]의 오리지널곡 Re:Hello World의 유래이다. * [[헤븐 번즈 레드]]의 [[이즈미 유키]]도 해커인 설정을 반영하여 세라프 호출 암호인 세라핌 코드가 Hello World다. == 관련 문서 == * [[프로그래밍]] [[분류:프로그래밍 예제]]저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기