github markdown:
https://github.com/yangacer/translation/blob/master/eiffel/tutorial.md
==== 换行怪怪的文字版 ====
中文版译自 http://tecomp.sourceforge.net/index.php?file=doc/lang/tutorial.txt
# 简介
本文件提供一个快速的 Eiffel 简介,涵盖了撰写 Eiffel 程式的基本需求。
就如著名的 "The C programming Language" 作者 Brian Kernighan 与 Denis Ritchie
所言,学习程式语言最好的方法就是用该语言写程式。因此我们会专注在一些简单但实用
的程式。大部分简介中的程式为上述名著中范例的 Eiffel 版本。
以下并非程式设计简介而是针对如何以 Eiffel 撰写程式,因此会假设读者已具备撰写
C, C++, 或 java 的基础能力。
# Hello world
我们的第一个程式仅印出
```
Hello, world
```
要达到这个目的的 Eiffel 程式如下
```
class
HELLO
create
make
feature
make
do
io.put_string("Hello, world")
io.put_new_line
end
end
```
所有 Eiffel 程式码都存在于类别 (class) 之中。
各个类别的程式码存在于单一档案。以上的程式码
必须被写到一个 "hello.e" (全小写) 的档案中。大小写对 Eiffel 来说是相同的。然而
类别名称通常都是以大写表示,而特征 (feature) 通常是以小写表示。
编译与执行 Eiffel 程式依系统与编译器不同。本文的资讯以 UNIX 环境下的 tecomp 为
准。为编译该程式,编译器需要额外资讯,这些资讯可透过 ace-file 取得。例如前面程
式
的 ace-file "hello.ace" 可含有以下资讯
```
root
HELLO.make
cluster
"./"
"`path_to_tecomp_installation'/library/kernel"
end
```
目前的 tecomp 版本需给定安装目录的绝对路径或相对路径,未来版本会支援符号定义方
式。你可以
键入以下命令来编译与执行该程式
```
tecomp hello.ace
```
然后它会印出
```
Hello, world
```
接着来解释一下这个程式。一个 Eiffel 程式由任意数量的类别组成。其中一个类别必须
是根类别 (root class) 、一个程序必须是根程序 (root procedure)。以上面的程式来
说
根类别名为 HELLO 而跟程序为 make。
编译器得知道如何找到类别;类别存在于通常以系统目录实现的丛集 (cluster) 中。上
面的
ace-file 定义了两个丛集─ "./" (即当前目录) 与
"`path_to_tecomp_installation'/library/kernel"
(即 Eiffel 核心类别存放处。编译器会在这些丛集中搜寻类别,当你的程式中
使用了一个搜寻不到的类别,编译器则会提报错误。丛集中的 Eiffel 类别集合称为
universe。
执行一个 Eiffel 程式从建立一个根型别的物件并呼叫其根程序开始 (此处型别与类别两
词
为同义,它们只有在使用泛型时不同)。该跟程序可以创建任意数量的各种物件并呼叫任
何已
建立物件的例程。
Eiffel 与许多现代语言相同,使用自由格式─程式语法中的空白字符是不重要的。退格
是为了人眼的可读性而非编译器限制。
名字像是 class, create, feature, do, 与 end 是语言中的关键字,它们是被保留的
;所有类别、特征或变量不能使用这些保留字。
现在,我们来看看上面程式的结构
```
class
HELLO