Heim  >  Artikel  >  Backend-Entwicklung  >  „Hallo Welt“ ist nicht einfach

„Hallo Welt“ ist nicht einfach

伊谢尔伦
伊谢尔伦Original
2016-11-26 09:20:30867Durchsuche

Das erste C-Programmbeispiel am Anfang des klassischen Tutorials „The C Programming Language“, das von Kernighan und Ritchie gemeinsam verfasst wurde, besteht darin, ein einfaches „Hallo Welt“ zu drucken. Seitdem ist „Hallo Welt“ zum Synonym für die Beschreibung des ersten Programms geworden, das ein Mensch schreibt – unabhängig von der Sprachtechnologie, auch wenn das Programm die Worte „Hallo Welt“ nicht tatsächlich im Text ausgibt.

Für Anfänger ist dieses „Hallo Welt“-Programm beängstigend. Er wird denken: „Ich muss sehr dumm sein. Selbst das einführende Hallo-Welt-Programm fällt mir schwer. Wenn das so weitergeht, wird mir das Programmieren nicht gefallen.

Tatsächlich liegt der Grund für dieses Problem darin, dass wir „Der Erste“ wird mit „Der Einfachste“ verwechselt. Das „Hallo Welt“-Programm kann ein beliebiges Programm ohne Schwierigkeitseinschränkungen sein. Wenn Sie zum ersten Mal programmieren, wissen Sie nicht, welchen Compiler Sie verwenden sollen, wohin Ihre Codedateien gehen sollen, welches Format sie haben sollen usw. Du musst lernen. Vieles Wissen muss erlernt und langsam erlernt werden, bevor man wirklich programmieren kann.

Als ich anfing, Programmieren zu lernen, hoffte ich immer, so schnell wie möglich über die Phase des Schreibens von „Hallo Welt“-Programmen hinauszukommen und sofort mit dem Schreiben wirklich nützlicher Programme beginnen zu können. Aber tatsächlich verbrachte ich den größten Teil meines Lebens damit, „Hallo Welt“-Programme zu schreiben, ohne dass ein Ende in Sicht war.

Wann immer über das „Hallo Welt“-Programm gesprochen wird, ist es fast unvermeidlich, über das schrecklichste „Hallo Welt“-Programm der Welt zu sprechen: das, das Charles Petzold in seinem Buch „Programming Windows“ beschrieben hat Windows-Programm. Ich kann nur die Windows 98-Version dieses Buches finden. Ich weiß nicht, wie sehr es sich von der Originalversion unterscheidet, aber ich habe den Eindruck, dass der Code in der Originalversion gruseliger wäre als dieser.

/*------------------------------------------------------------
   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) ;
}


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn