BOO > 開始 (下一章:變數)


Boo 是個令人驚奇的語言,他融合了 Python 的語法, Ruby 的特色與 C# 的速度與安全。

C#Boo 是個靜態型別的語言,這意味了型別很重要。與未提供此特性的 Python 和其他動態型別語言比起來,這增加了一定程度上的安全。

它看起來很像是動態型別語言,這讓它能像 Python 一樣地簡單和容易編寫。

C#

int i = 0;
MyClass m = new MyClass();

Boo

i = 0
m = MyClass()

Hello, World!

編輯

一個 Boo 的 Hello, World! 程式非常地簡單。 一個實際有用的複雜例子「設置桌面」。 不要擔心你會不懂,我將會一步一步地解說。

helloworld.boo

print "Hello, World!"
# 或
print("Hello, World!")

輸出結果

Hello, World!
Hello, World!
  1. 首先,你必須編譯 helloworld.boo 為一個可執行的檔案。
    1. 開啟命令提示字元
    2. 切換到你放置 helloworld.boo 的目錄
    3. booc helloworld.boo (這假設 Boo 已經安裝,同時可以讓 Windows 能根據 PATH 找到 booc )
    4. helloworld.exe
    5. 或者,如果你使用 Mono 的話,用 mono helloworld.exe
  2. 在上面的程式中,使用了 print 巨集,它印出字串 "Hello, World!" 到螢幕上。
  3. 或者你也可以使用 print 函數,它同樣也是印出字串 "Hello, World!" 到螢幕上。

不管是 print "Hello, World!" 或是 print("Hello, World!"),這兩行的背後,其實都是調用 .NET 標準函式庫裏的 System.Console.WriteLine("Hello, World")

你看到了,這實在是很簡單。

  建議 使用巨集版本,也就是 print "Hello, World!"。

比較 Boo, C# 與 VB.NET

編輯

現在你或許懷疑 Boo 是如何與 C#VB.NET 一樣地快。我將以 Hello World 程式來作說明:

Boo

print "Hello, World!"

Boo輸出結果

Hello, World!

C#

public class Hello
{
  public static void Main()
  {
    System.Console.WriteLine("Hello World!");
  }
}

C#輸出結果

Hello, World!

VB.NET

Public Class Hello
  Public Shared Sub Main()
    System.Console.WriteLine("Hello World!")
  End Sub
End Class

VB.NET輸出結果

Hello, World!

三者都有一樣的輸出結果,而且都能在 .NET CLR(原文為.NET Framework) 內執行。同樣也都被轉換為MSIL,最後變成可執行的檔案。

File:Booprimer part1 diagram.png

如果你拿三者編譯器所編譯出來的可執行檔案以 ildasm.exe 進行反編譯的話,你將會看到接近相同的結果。這意味着這三者的速度事實上可以視為相同,但是 Boo 的程式碼卻容易許多。

Booish

編輯

booish 是個提供可以撰寫 boo 的即時環境,便於用來作測試。在之後的章節裏,我推薦你使用這個工具,把程式打進去,然後馬上就能看到結果。

使用 booish 之前,你需要先打開終端機或是命令提示字元,然後輸入 booish (當然,我假設你已經把 Boo 安裝好,同時也把系統環境變數 PATH 設定好了)

booish 看起來像是這樣子:

>>> print "Hello, World!"
Hello, World!
>>>

譯註:>>> 是 booish 的提示,表示你可以輸入程式

練習

編輯
  1. 寫個可以印出 "Hello, World!" 與 "Goodbye, World!" 的 Boo 程式。
  2. 玩玩 booish
  3. 進階:分別使用 Boo(booc)、C#(csc) 編譯 Boo、C# 的 Hello, World! 程式,然後使用 ildasm 去反組譯編譯出來的可執行檔,並比較他們的結果。