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!
- 首先,你必須編譯 helloworld.boo 為一個可執行的檔案。
- 開啟命令提示字元
- 切換到你放置 helloworld.boo 的目錄
- booc helloworld.boo (這假設 Boo 已經安裝,同時可以讓 Windows 能根據 PATH 找到 booc )
- helloworld.exe
- 或者,如果你使用 Mono 的話,用 mono helloworld.exe
- 在上面的程式中,使用了 print 巨集,它印出字串 "Hello, World!" 到螢幕上。
- 或者你也可以使用 print 函數,它同樣也是印出字串 "Hello, World!" 到螢幕上。
不管是 print "Hello, World!" 或是 print("Hello, World!"),這兩行的背後,其實都是調用 .NET 標準函式庫裡的 System.Console.WriteLine("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 的提示,表示你可以輸入程式
練習
编辑- 寫個可以印出 "Hello, World!" 與 "Goodbye, World!" 的 Boo 程式。
- 玩玩 booish
- 進階:分別使用 Boo(booc)、C#(csc) 編譯 Boo、C# 的 Hello, World! 程式,然後使用 ildasm 去反組譯編譯出來的可執行檔,並比較他們的結果。