>  기사  >  백엔드 개발  >  "Hello World"는 간단하지 않습니다.

"Hello World"는 간단하지 않습니다.

伊谢尔伦
伊谢尔伦원래의
2016-11-26 09:20:30914검색

Kernighan과 Ritchie가 공동으로 작성한 고전 튜토리얼 "The C 프로그래밍 언어"의 시작 부분에 있는 첫 번째 C 프로그램 예제는 간단한 "hello world"를 인쇄하는 것입니다. 그 이후로 "hello world"는 프로그램이 실제로 텍스트에 "hello world"라는 단어를 출력하지 않더라도 언어 기술에 관계없이 사람이 작성하는 첫 번째 프로그램을 설명하는 것과 동의어가 되었습니다.

초심자에게는 이 'Hello World' 프로그램이 무섭습니다. 그는 "아, 정말 멍청한가 보다. 헬로월드 입문 프로그램도 어렵다. 계속 이러면 프로그래밍이 싫을 것 같다"고 생각할 것이다.

사실 이 문제의 원인은 우리가 "첫 번째 것"을 "가장 단순한 것"과 혼동합니다. "hello world" 프로그램은 난이도 제한 없이 모든 프로그램이 될 수 있습니다. 처음 프로그래밍을 할 때는 어떤 컴파일러를 사용해야 하는지, 코드 파일이 어디에 있어야 하는지, 어떤 형식이어야 하는지 등을 알 수 없습니다. 당신은 배워야합니다. 실제로 프로그래밍을 하기 전에는 많은 지식을 익히고 천천히 배워야 합니다.

처음 프로그래밍을 배울 때 저는 항상 "hello world" 프로그램 작성 단계를 가능한 한 빨리 지나서 정말 유용한 프로그램을 바로 작성하기를 바랐습니다. 그러나 사실 나는 인생의 대부분을 끝이 보이지 않는 "hello world" 프로그램을 작성하는 데 소비하고 있었습니다.

"hello world" 프로그램에 대해 논의할 때마다 세상에서 가장 무서운 "hello world" 프로그램에 대해 이야기하는 것은 거의 불가피합니다. Charles Petzold가 그의 저서 "Programming Windows"에서 설명한 프로그램입니다. 윈도우 프로그램. 이 책의 Windows 98 버전만 찾을 수 있습니다. 원본 버전과 얼마나 다른지는 모르겠지만, 원본 버전의 코드가 이것보다 더 무서울 것 같은 느낌이 듭니다.

/*------------------------------------------------------------
   HELLOWIN.C -- Displays "Hello, Windows 98!" in client area
                 (c) Charles Petzold, 1998
  ------------------------------------------------------------*/
  
#include
  
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
  
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
     static TCHAR szAppName[] = TEXT ("HelloWin") ;
     HWND         hwnd ;
     MSG          msg ;
     WNDCLASS     wndclass ;
  
     wndclass.style         = CS_HREDRAW | CS_VREDRAW ;
     wndclass.lpfnWndProc   = WndProc ;
     wndclass.cbClsExtra    = 0 ;
     wndclass.cbWndExtra    = 0 ;
     wndclass.hInstance     = hInstance ;
     wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ;
     wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ;
     wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ;
     wndclass.lpszMenuName  = NULL ;
     wndclass.lpszClassName = szAppName ;
  
     if (!RegisterClass (&wndclass))
     {
          MessageBox (NULL, TEXT ("This program requires Windows NT!"),
                      szAppName, MB_ICONERROR) ;
          return 0 ;
     }
       
     hwnd = CreateWindow (szAppName,                  // window class name
                          TEXT ("The Hello Program"), // window caption
                          WS_OVERLAPPEDWINDOW,        // window style
                          CW_USEDEFAULT,              // initial x position
                          CW_USEDEFAULT,              // initial y position
                          CW_USEDEFAULT,              // initial x size
                          CW_USEDEFAULT,              // initial y size
                          NULL,                       // parent window handle
                          NULL,                       // window menu handle
                          hInstance,                  // program instance handle
                          NULL) ;                     // creation parameters
       
     ShowWindow (hwnd, iCmdShow) ;
     UpdateWindow (hwnd) ;
       
     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }
     return msg.wParam ;
}
  
LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
     HDC         hdc ;
     PAINTSTRUCT ps ;
     RECT        rect ;
       
     switch (message)
     {
     case WM_CREATE:
          PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ;
          return 0 ;
            
     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;
            
          GetClientRect (hwnd, &rect) ;
            
          DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect,
                    DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
            
          EndPaint (hwnd, &ps) ;
          return 0 ;
            
     case WM_DESTROY:
          PostQuitMessage (0) ;
          return 0 ;
     }
     return DefWindowProc (hwnd, message, wParam, lParam) ;
}


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.