"Hello world" is not simple
The first example of a C program in The C Programming Language, a classic tutorial by Kernighan and Ritchie, is to print a simple "hello world ". Since then, "hello world" has become synonymous with describing a person's first program-no matter what language technology, even if the program does not actually output the word "hello world" on the words.
This "hello world" program is scary for beginners. He will think, "I must be very stupid, and it's hard to get started with the hello world Program. In this way, I will not like programming ."
In fact, the reason for this problem is that we confuse the "first" with the "simplest. The "hello world" program can be any program with no difficulty restrictions. When you program for the first time, you don't know which compiler to use, where code files should be stored, and what format they should be. You need to learn. A lot of knowledge needs to be learned and learned slowly before you can really program.
AUTHOR John D. Cook
When I first started learning programming, I always wanted to jump over the "hello world" program writing stage as soon as possible, hoping to immediately start programming really useful programs. But in fact, I found that I have been writing the "hello world" program for most of my life and cannot see the end.
Whenever we talk about the "hello world" program, we can hardly avoid talking about the most terrible "hello world" program in the world: charles Petzold described the first Windows program in his book Programming Windows. I can only find this book for Windows 98. I don't know how different it is from the original version, but I think the code in the original version is worse than the current 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) ;
- }