2011年3月1日 星期二

Hello World 就行了

最近看到一篇文章題目為 十年磨一劍,開發功力需要實戰累積
作者從另一篇文章
Teach Yourself Programming in Ten Years(花十年的時間學習程式設計)
衍生出來的感想!
這些xx天學會什麼的書,我雖然一本都沒有買過,但是卻看過不少!
其實有些寫的還不錯,雖然我從來也沒有在xx天內讀完它過!
程式語言學多了,其實看內容就大同小異,不外是
1. 變數宣告
2. function宣告
3. 有物件導向觀念加上物件宣告
4. 有視窗元件的講一下視窗其本元件
5. 再加上Thread、Framework等有的沒有的
如果問說真的有辦法在幾天內學完嗎?
當然有,我通常看一下目錄,學到Hello World!範例就學完了。
後面的看你要用什麼再研究就好了!這麼說吧,如果你今天打算寫網路Server的程式,
你後面就看網路的部分,你的程式根本用不著什麼checkbox、radio box、dialog的...
反而在網路的socket、TCP/IP要下功夫,這可能根本就不關這個程式語言的範圍。
你可能要換一本xx天學會網路Server的書。
這也是這一篇標題的由來,Hello World就行了。從我最早接觸的Quick Basic開始學過的Hello World我也不知道有多少了。
於是有了一個idea來收集一些學過的Hello World當作紀念,這樣子大家就可以把買這些書的錢都省下來了,這篇該改名為一小時學會十種程式語言吧...

聽說Hello World也是有規定的全部小寫,逗號後空一格,不加驚嘆號(ex. "hello, world"),原來很多人連Hello World都寫不好!果真魔鬼就在細節裏...

QBASIC
CLS
string$ = "hello, world"
LOCATE 13,40
PRINT string$
END

Pascal
program HelloWorld;
begin
writeln('hello, world');
end.

C
#include <stdio.h>
main()
{
printf("hello, world");
}

C++
#include <iostream>
int main(int argc, char *argv[])
{
cout << "hello, world" << endl;
}

Java
public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("hello, world");
}
}

Perl
#!/usr/bin/perl
print "hello, world";

Python
#!/path/to/python
print "hello, world";

行文至此才發現網路上已有收集好的範例,有興趣看看吧
wikipedia上的介紹
http://en.wikipedia.org/wiki/Hello_world_program_examples
中文wikipedia上的介紹,內容比英文的還豐富,雖然排版有點亂,看來中文的時代要來
http://zh.wikipedia.org/wiki/Hello_World

後記,現在的program language其實很大的部分是要學Framework的架構,特別是視窗相關的程式,光了解其程式的開始和結束的流程,相對應的function呼叫,就要花不少時間,有時候還摸不著邊,因為細節都被在Framework做掉了,你只是改寫其中幾個動作而已!所以這些視窗程式的hello, world還真是沒有什麼參考價值,程式根本不是從你寫的這個function進來和結束的。