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!
- 首先,你必须编译 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 去反组译编译出来的可执行档,并比较他们的结果。