跳转到内容

BOO入门/开始

维基教科书,自由的教学读本

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