自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

“Hello world”不簡(jiǎn)單

開(kāi)發(fā) 后端
由Kernighan和Ritchie合著的經(jīng)典教程《The C Programming Language》的開(kāi)篇第一個(gè)C程序例子是打印簡(jiǎn)單的“hello world”。從此之后,“hello world”就成了描述一個(gè)人編寫(xiě)的第一個(gè)程序的代名詞——不論是什么語(yǔ)言技術(shù),即使實(shí)際上程序并沒(méi)有在字樣上輸出“hello world”幾個(gè)字。

[[124819]]

由Kernighan和Ritchie合著的經(jīng)典教程《The C Programming Language》的開(kāi)篇***個(gè)C程序例子是打印簡(jiǎn)單的“hello world”。從此之后,“hello world”就成了描述一個(gè)人編寫(xiě)的***個(gè)程序的代名詞——不論是什么語(yǔ)言技術(shù),即使實(shí)際上程序并沒(méi)有在字樣上輸出“hello world”幾個(gè)字。

對(duì)于初學(xué)者來(lái)說(shuō),這“hello world”程序是讓人恐怖的。他會(huì)想“我一定非常笨,連這入門(mén)的hello world程序都覺(jué)得難。照這樣下去,我一定不會(huì)喜歡上編程。”

其實(shí),這問(wèn)題的原因是我們把“***個(gè)”和”最簡(jiǎn)單的一個(gè)“混淆了。“hello world”程序可以是任何的程序,沒(méi)有難易限制。當(dāng)你***次編程時(shí),你不知道該用哪種編譯器、不知道代碼文件應(yīng)該放到哪里、不知道它們應(yīng)該是什么格式,等等。你需要去學(xué)。大量的知識(shí)在你真正能夠編程前都需要學(xué)習(xí)、慢慢的學(xué)會(huì) 。

[[124820]]

本文的作者 John D. Cook

當(dāng)我最初開(kāi)始學(xué)習(xí)編程時(shí),我總希望能盡快的越過(guò)寫(xiě)“hello world”程序的階段,希望能夠立刻開(kāi)始編寫(xiě)真正有用的程序。但事實(shí)上,我發(fā)現(xiàn)我大半輩子時(shí)間都在寫(xiě)“hello world”程序,而且看不到結(jié)束的盡頭。

每當(dāng)討論起“hello world”程序,幾乎避免不了的要說(shuō)一說(shuō)這世界上最恐怖的“hello world”程序:Charles Petzold在他的《Programming Windows》一書(shū)中描述的***個(gè)Windows程序。我只能找到這本書(shū)的Windows 98版的。不知道它跟最初的原版有多大區(qū)別,但我印象里原版里的代碼會(huì)比現(xiàn)在這個(gè)更恐怖。

  1. /*------------------------------------------------------------ 
  2.    HELLOWIN.C -- Displays "Hello, Windows 98!" in client area 
  3.                  (c) Charles Petzold, 1998 
  4.   ------------------------------------------------------------*/ 
  5.    
  6. #include  
  7.    
  8. LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; 
  9.    
  10. int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
  11.                     PSTR szCmdLine, int iCmdShow) 
  12.      static TCHAR szAppName[] = TEXT ("HelloWin") ; 
  13.      HWND         hwnd ; 
  14.      MSG          msg ; 
  15.      WNDCLASS     wndclass ; 
  16.    
  17.      wndclass.style         = CS_HREDRAW | CS_VREDRAW ; 
  18.      wndclass.lpfnWndProc   = WndProc ; 
  19.      wndclass.cbClsExtra    = 0 ; 
  20.      wndclass.cbWndExtra    = 0 ; 
  21.      wndclass.hInstance     = hInstance ; 
  22.      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ; 
  23.      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ; 
  24.      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; 
  25.      wndclass.lpszMenuName  = NULL ; 
  26.      wndclass.lpszClassName = szAppName ; 
  27.    
  28.      if (!RegisterClass (&wndclass)) 
  29.      { 
  30.           MessageBox (NULL, TEXT ("This program requires Windows NT!"), 
  31.                       szAppName, MB_ICONERROR) ; 
  32.           return 0 ; 
  33.      } 
  34.         
  35.      hwnd = CreateWindow (szAppName,                  // window class name 
  36.                           TEXT ("The Hello Program"), // window caption 
  37.                           WS_OVERLAPPEDWINDOW,        // window style 
  38.                           CW_USEDEFAULT,              // initial x position 
  39.                           CW_USEDEFAULT,              // initial y position 
  40.                           CW_USEDEFAULT,              // initial x size 
  41.                           CW_USEDEFAULT,              // initial y size 
  42.                           NULL,                       // parent window handle 
  43.                           NULL,                       // window menu handle 
  44.                           hInstance,                  // program instance handle 
  45.                           NULL) ;                     // creation parameters 
  46.         
  47.      ShowWindow (hwnd, iCmdShow) ; 
  48.      UpdateWindow (hwnd) ; 
  49.         
  50.      while (GetMessage (&msg, NULL, 0, 0)) 
  51.      { 
  52.           TranslateMessage (&msg) ; 
  53.           DispatchMessage (&msg) ; 
  54.      } 
  55.      return msg.wParam ; 
  56.    
  57. LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
  58.      HDC         hdc ; 
  59.      PAINTSTRUCT ps ; 
  60.      RECT        rect ; 
  61.         
  62.      switch (message) 
  63.      { 
  64.      case WM_CREATE: 
  65.           PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ; 
  66.           return 0 ; 
  67.              
  68.      case WM_PAINT: 
  69.           hdc = BeginPaint (hwnd, &ps) ; 
  70.              
  71.           GetClientRect (hwnd, &rect) ; 
  72.              
  73.           DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect, 
  74.                     DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; 
  75.              
  76.           EndPaint (hwnd, &ps) ; 
  77.           return 0 ; 
  78.              
  79.      case WM_DESTROY: 
  80.           PostQuitMessage (0) ; 
  81.           return 0 ; 
  82.      } 
  83.      return DefWindowProc (hwnd, message, wParam, lParam) ; 
責(zé)任編輯:張偉 來(lái)源: 程序師
相關(guān)推薦

2017-11-23 17:45:46

Yii框架IntelYii框架深度剖析

2012-02-20 14:26:48

JavaPlay Framew

2009-07-30 13:21:17

Scala入門(mén)Hello World

2009-09-16 17:15:19

OSGi Bundle

2009-08-11 10:32:23

什么是Groovy

2023-01-06 08:18:44

2023-09-04 07:30:03

Wasm匯編語(yǔ)言

2011-06-08 14:39:06

Qt 教程

2012-06-26 09:40:14

部署開(kāi)發(fā)管理

2021-11-26 08:22:01

Java動(dòng)態(tài)開(kāi)發(fā)

2009-08-14 16:54:19

C# Hello Wo

2024-04-11 13:13:27

2014-04-11 11:36:42

NDKAndroid開(kāi)發(fā)終端

2011-08-05 09:48:46

iPhone Interface

2023-05-23 08:01:10

Netty網(wǎng)絡(luò)通信

2009-07-20 10:06:47

虛擬化思杰操作系統(tǒng)

2010-01-19 10:10:28

2021-03-30 13:48:47

WebAssemblyWeb瀏覽器編程語(yǔ)言

2009-06-11 14:00:34

jBPM用戶(hù)指南jBPM范例

2015-10-27 09:47:11

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)