Home > Article > Backend Development > "Hello world" is not simple
The first C program example at the beginning of the classic tutorial "The C Programming Language" co-authored by Kernighan and Ritchie is to print a simple "hello world". Since then, "hello world" has become synonymous with describing the first program a person writes - regardless of language technology, even if the program does not actually output the words "hello world" in the text.
For beginners, this "hello world" program is scary. He will think, "I must be very stupid. Even this introductory hello world program is difficult for me. If this continues, I will not like programming."
In fact, the reason for this problem is that we combine "the first" and "The simplest one" is confused. The "hello world" program can be any program, with no difficulty restrictions. When you first program, you don't know which compiler to use, where your code files should go, what format they should be in, etc. You need to learn. A lot of knowledge needs to be learned and learned slowly before you can really program.
When I first started learning programming, I always wanted to get past the stage of writing "hello world" programs as quickly as possible, hoping to start writing truly useful programs right away. But in reality, I found myself spending most of my life writing "hello world" programs with no end in sight.
Whenever the "hello world" program is discussed, it is almost inevitable to talk about the most terrifying "hello world" program in the world: the first Windows described by Charles Petzold in his book "Programming Windows" program. I can only find the Windows 98 version of this book. I don’t know how different it is from the original version, but I have the impression that the code in the original version would be scarier than this one.
/*------------------------------------------------------------ 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) ; }