作者 主題: 學習任何程式語言第一句要會說的話-"Hello,World!"  (閱讀 7997 次)

0 會員 與 1 訪客 正在閱讀本文。

barku

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
學習任何程式語言第一句會說的話-"Hello,World!"

在我學習電腦語言的生涯中,
數十種語言,各個語言的語法或許完全不同,
或許差異甚小,但是在學習這些語言的過程中.
(嗯! 因介面關係,組合語言<Assembly>除外.)
幾乎學習每個語言第一句要會講的話,都是
"Hello,World!"

以下就針對一些我使用過的語言,
講出"Hello,World!"這句話,
供學習程式的新手參考.
假如各位對任何我所知道的語言有興趣,
請告知,我可以將來考慮寫一些心得,或做一些深入探討.

------------------------------------------------------------

>>> C

#include <stdio.h>

main()
{
   printf ("Hello,World!\n");
}

------------------------------------------------------------

>>> C++

#include <iostream>

int main()
{
   std::cout << "Hello,world!\n";
}

------------------------------------------------------------

>>> Fortran

PROGRAM HELLO
PRINT *,'Hello,World!'
END

------------------------------------------------------------

>>> Haskell

main = print("Hello,World!")

------------------------------------------------------------

>>> Java

class HelloWorld
{
   public static void main (String args[])
   {
      System.out.print("Hello,World!");
   }
}

------------------------------------------------------------

>>> JavaScript

<SCRIPT>
   document.write ("Hello,World!")
</SCRIPT>

------------------------------------------------------------

>>> Matlab

disp('Hello,World!')

------------------------------------------------------------

>>> Modula-2

MODULE HelloWorld;

FROM InOut IMPORT writestring, writeln;

begin
   WriteString("Hello,World!");
   Writeln;
end HelloWorld.

------------------------------------------------------------

>>> Pascal

program HelloWorld;

begin
   writeln('Hello,World!');
end.

------------------------------------------------------------

>>> Perl

print "Hello,World!\n";

------------------------------------------------------------

>>> Prolog

HelloWorld :-
printstring("Hello,World!").

------------------------------------------------------------

>>> QBasic

begin:
print "Hello,World!"

------------------------------------------------------------


其實一些語言,已經完全記不得了.
如Oberon, Smalltalk...etc...
以上僅供參考,實際程式可能會根據平台,
編譯器版本而稍有不同,請指教.


夢想^^
at Right, Stay Fit, Die Anyway!!

kenny

  • 訪客
推推推~~~

太好了﹗多些心得給我們這些新手吧~~  ^_^

kenny

  • 訪客
一個軟體工程師的進化
« 回覆 #2 於: 2002-05-22 16:08 »
Subject: Fw: 一個軟體工程師的進化


 

 Just funning,true-life description!
 
 ***************************************
 
 The Evolution of a Programmer
 一個軟體工程師的進化
 

 High School/Jr.High
 念高中時的程式碼
 
   10 PRINT "HELLO WORLD"
   20 END
 

 First year in College
 在大學的第一年的程式碼
 
   program Hello(input, output)
     begin
       writeln('Hello World')
     end.
 

 Senior year in College
 在大學的高年級的程式碼
 
   (defun hello
     (print
       (cons 'Hello (list 'World))))
 

 New professional
 成為公司裏的新人員
 
   #include <stdio.h>
   void main(void)
   {
     char *message[] = {"Hello ", "World"};
     int i;
 
     for(i = 0; i < 2; ++i)
       printf("%s", message);
     printf("\n");
   }
 

 Seasoned professional
 進入公司有兩年了
 
   #include <iostream.h>
   #include <string.h>
 
   class string
   {
   private:
    int size;
     char *ptr;
 
   public:
     string() : size(0), ptr(new char('\0')) {}
 
     string(const string &s) : size(s.size)
     {
       ptr = new char[size + 1];
       strcpy(ptr, s.ptr);
     }
 
     ~string()
     {
       delete [] ptr;
     }
 
     friend ostream &operator <<(ostream &, const string &);
     string &operator=(const char *);
   };
 
   ostream &operator<<(ostream &stream, const string &s)
   {
     return(stream << s.ptr);
   }
 
   string &string::operator=(const char *chrs)
   {
     if (this != &chrs)
     {
       delete [] ptr;
      size = strlen(chrs);
       ptr = new char[size + 1];
       strcpy(ptr, chrs);
     }
     return(*this);
   }
 
   int main()
   {
     string str;
 
     str = "Hello World";
     cout << str << endl;
 
     return(0);
   }
 

 Master Programmer
 升成軟體部經理那年寫的程式
 
   [
   uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
   ]
   library LHello
   {
       // bring in the master library
       importlib("actimp.tlb");
       importlib("actexp.tlb");
 
       // bring in my interfaces
       #include "pshlo.idl"
 
       [
       uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
       ]
       cotype THello
    {
    interface IHello;
    interface IPersistFile;
    };
   };
 
   [
   exe,
   uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
   ]
   module CHelloLib
   {
 
       // some code related header files
       importheader(<windows.h>);
       importheader(<ole2.h>);
       importheader(<except.hxx>);
       importheader("pshlo.h");
       importheader("shlo.hxx");
       importheader("mycls.hxx");
 
       // needed typelibs
       importlib("actimp.tlb");
       importlib("actexp.tlb");
       importlib("thlo.tlb");
 
       [
       uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
       aggregatable
       ]
       coclass CHello
    {
    cotype THello;
    };
   };
 

   #include "ipfix.hxx"
 
   extern HANDLE hEvent;
 
   class CHello : public CHelloBase
   {
   public:
       IPFIX(CLSID_CHello);
 
       CHello(IUnknown *pUnk);
       ~CHello();
 
       HRESULT  __stdcall PrintSz(LPWSTR pwszString);
 
   private:
       static int cObjRef;
   };
 

   #include <windows.h>
   #include <ole2.h>
   #include <stdio.h>
   #include <stdlib.h>
   #include "thlo.h"
   #include "pshlo.h"
   #include "shlo.hxx"
   #include "mycls.hxx"
 
   int CHello::cObjRef = 0;
 
   CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
   {
       cObjRef++;
       return;
   }
 
   HRESULT  __stdcall  CHello::PrintSz(LPWSTR pwszString)
   {
       printf("%ws\n", pwszString);
       return(ResultFromScode(S_OK));
   }
 

   CHello::~CHello(void)
   {
 
   // when the object count goes to zero, stop the server
   cObjRef--;
   if( cObjRef == 0 )
       PulseEvent(hEvent);
 
   return;
   }
 
   #include <windows.h>
   #include <ole2.h>
   #include "pshlo.h"
   #include "shlo.hxx"
   #include "mycls.hxx"
 
   HANDLE hEvent;
 
    int _cdecl main(
   int argc,
   char * argv[]
   ) {
   ULONG ulRef;
   DWORD dwRegistration;
   CHelloCF *pCF = new CHelloCF();
 
   hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
 
   // Initialize the OLE libraries
   CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
   CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
       REGCLS_MULTIPLEUSE, &dwRegistration);
 
   // wait on an event to stop
   WaitForSingleObject(hEvent, INFINITE);
 
   // revoke and release the class object
   CoRevokeClassObject(dwRegistration);
   ulRef = pCF->Release();
 
   // Tell OLE we are going away.
   CoUninitialize();
 
   return(0); }
 
   extern CLSID CLSID_CHello;
   extern UUID LIBID_CHelloLib;
 
   CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
       0x2573F891,
       0xCFEE,
       0x101A,
       { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
   };
 
   UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
       0x2573F890,
       0xCFEE,
       0x101A,
       { 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
   };
 
   #include <windows.h>
   #include <ole2.h>
   #include <stdlib.h>
   #include <string.h>
   #include <stdio.h>
   #include "pshlo.h"
   #include "shlo.hxx"
   #include "clsid.h"
 
   int _cdecl main(
   int argc,
   char * argv[]
   ) {
   HRESULT  hRslt;
   IHello        *pHello;
   ULONG  ulCnt;
   IMoniker * pmk;
   WCHAR  wcsT[_MAX_PATH];
   WCHAR  wcsPath[2 * _MAX_PATH];
 
   // get object path
   wcsPath[0] = '\0';
   wcsT[0] = '\0';
   if( argc > 1) {
       mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
       wcsupr(wcsPath);
       }
   else {
       fprintf(stderr, "Object path must be specified\n");
       return(1);
       }
 
   // get print string
   if(argc > 2)
       mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
   else
       wcscpy(wcsT, L"Hello World");
 
   printf("Linking to object %ws\n", wcsPath);
   printf("Text String %ws\n", wcsT);
 
   // Initialize the OLE libraries
   hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);
 
   if(SUCCEEDED(hRslt)) {
 

       hRslt = CreateFileMoniker(wcsPath, &pmk);
       if(SUCCEEDED(hRslt))
    hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);
 
       if(SUCCEEDED(hRslt)) {
 
    // print a string out
    pHello->PrintSz(wcsT);
 
    Sleep(2000);
    ulCnt = pHello->Release();
    }
       else
    printf("Failure to connect, status: %lx", hRslt);
 
       // Tell OLE we are going away.
       CoUninitialize();
       }
 
   return(0);
   }
 
 
 

 Apprentice Hacker
 駭客學徒階段
 
   #!/usr/local/bin/perl
   $msg="Hello, world.\n";
   if ($#ARGV >= 0) {
     while(defined($arg=shift(@ARGV))) {
       $outfilename = $arg;
       open(FILE, ">" . $outfilename) || die "Can't write $arg: $!\n";
       print (FILE $msg);
       close(FILE) || die "Can't close $arg: $!\n";
     }
   } else {
     print ($msg);
   }
   1;
 
 
 

 Experienced Hacker
 有經驗經驗的駭客
 
   #include <stdio.h>
   #define S "Hello, World\n"
   main(){exit(printf(S) == strlen(S) ? 0 : 1);}
 
 
 

 Seasoned Hacker
 有經驗豐富的駭客
   % cc -o a.out ~/src/misc/hw/hw.c
   % a.out
 
 
 

 Guru Hacker
 成為駭客界的精神導師
 
   % echo "Hello, world."
 

 ***********軟體經理的進化***********
 
 New Manager
 新軟體部經理
 
   10 PRINT "HELLO WORLD"
   20 END
 
 
 

 Middle Manager
 中階軟體經理
 
   mail -s "Hello, world." bob@b12
   Bob, could you please write me a program that prints "Hello,
  world."?
   I need it by tomorrow.
   ^D
 
 
 

 Senior Manager
 資深軟體經理
   % z mail jim
   I need a "Hello, world." program by this afternoon.
 
 
 

 Chief Executive
 公司的最大總經理
 
   % letter
 C:\\letter: Command not found.
   % mail
   To: ^X ^F ^C
 C:\\  % help mail
   help: Command not found.
 C:\\  % damn!
   !: Event unrecognized
   % logout
 幹!..
 誰給我過來一下.

barku

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
netman大 po 的"一個軟體工程師的進化 "
真是太傳神了.

回顧自己的軟體學習生涯,
正如文章中的一般!

大致上是
BASIC
PASCAL
FORTRAN
MODULA-2
C
C++
GUI programming
Perl
C in CGI

呵呵!
看來我只要在加把勁,
把Hello,World 的程式編譯一下,就成了
Seasoned Hacker
有經驗豐富的駭客

不過,看來好像先學一下echo比較快.
直接成為Guru Hacker 了.   :D


根據自己寫程式的的歷程,
可以歸類成下列的一些步驟.

1) 一知半解,很想了解他,可是又是這麼的艱難!  :o

2) 開始了解寫程式的樂趣,而去慢慢的鑽研他.  :)

3) 已經沉浸在寫程式的樂趣中,每天只想著有啥新的程式可以寫,根本就無法自己.  :D

4) 已經過了高潮騎,寫程式還是有他的樂趣在,但是開始覺得有點乏味了.  :(

5) 覺得寫程式花費太多生命,而且,同樣的程式,哪麼多人在寫,拿別人的來用比較快,所以除非是需要,不然不會去動手.   :oops:


雖然自己的經歷是這樣,但是不可否認的,寫程式有他的樂趣在.
想想,自己心思的結晶,在compile後,不但無錯,而且還真實的在螢幕上呈現出來.
那種成就感不是三言兩與能形容的.

其實,要 一個新手寫程式不是一件簡單的工作,
但是,當一堆字母,指令,堆在一起,而編譯後,
能照著心中所期盼的展現在自己和別人的面前.
那時所有的辛勞將一掃而空.
而唯一能達到這境界的方法,
唯有動手去做.

加油!! :D

夢想^^
at Right, Stay Fit, Die Anyway!!

barku

  • 懷疑的國中生
  • **
  • 文章數: 49
    • 檢視個人資料
感謝 jalala 兄, 提供下面的連結....

這裡有一頁關於組語編寫HelloWorld的資料:

http://home.ptd.net/~tms2/hello.html
at Right, Stay Fit, Die Anyway!!

hoyo

  • 榮譽博士
  • 俺是博士!
  • *****
  • 文章數: 4049
  • 性別: 男
  • 有需要的時候,學習就不會分階段。
    • 檢視個人資料
    • 樂咖黑電腦學習網
cobol ???

as400 資料庫的主要語言竟然沒有 0.0

我說的是很多年前的事情了 ^^"
受人與魚,不如授人與漁
上海自來水來自海上;倫敦好奇人奇好敦倫

hrsenshen

  • 憂鬱的高中生
  • ***
  • 文章數: 109
    • 檢視個人資料
小弟也來斷
; This define file
; ml /c /coff

   .486               ; use 486
   .model   flat, stdcall         ; memory mode and calling convention
   option   casemap:none         ; case sensitive code
   
include      d:\masm32\include\windows.inc   ; always first include

include      d:\masm32\include\user32.inc   ; system include
include      d:\masm32\include\kernel32.inc
include      d:\masm32\include\gdi32.inc   ; GDI include

includelib   d:\masm32\lib\user32.lib   ; match system
includelib   d:\masm32\lib\kernel32.lib   ; libraries after that
includelib   d:\masm32\lib\gdi32.lib      ;

.data
MsgCation   db   "Test Windows",0
MsgBoxText   db   "Hellow",0

.code
start:
   invoke   MessageBox, NULL,addr MsgBoxText,addr MsgCation,MB_OK
   invoke   ExitProcess,NULL
end start
SlackWare Linux My Live