Changeset 547

Show
Ignore:
Timestamp:
03/09/05 07:05:36 (4 years ago)
Author:
viirya
svk:copy_cache_prev:
1869
Message:

re-translation of Overview docs.

Location:
docs
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • docs/zh-cn/01Overview.html

    r366 r547  
    1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    2 <html lang="zh-cn"> 
     1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
     2<html lang="zh-tw"> 
    33<head> 
    44  <link href="../perl.css" rel="stylesheet" 
     
    99</head> 
    1010<body style="direction: ltr;"> 
    11 <h1>Pugs 外 
    12 典之一<br> 
     11<h1 style="text-align: left; line-height: normal;" align="left"> 
    1312Pugs 
    14 计划概述</h1> 
    15 <h2>何谓 
    16 Pugs 外典?</h2> 
    17 <p><a 
    18  href="http://svn.perl.org/perl6/pugs/trunk/docs/">Pugs 外典</a>(Pugs Apocrypha) 
    19 是一系列采问答体例,用以解释 Pugs 设计及实作的文件。本外典(PA01)乃此一计划之总要。</p> 
    20 <h2>何谓 
    21 Pugs?</h2> 
    22 <p>Pugs 始自 2005 年 2 月,是针对 Perl 6 语言进行的实作,由负责人 
    23 Autrijus Tang(唐宗汉)在开发团队 (committers)与贡献 
    24 者(contributors)的襄助下,进行设计及开发。</p> 
    25 <h2>何谓 
    26 Perl 6?</h2> 
    27 <p><a 
    28  href="http://dev.perl.org/perl6/">Perl 
    29 6</a> 是 Perl 语言的下一个主要版本,由 
    30 Larry Wall 领导的团队负责设计。Perl 是一种语境相关、 
    31 多重典范之实用程序语言。 Perl 6 团队已表示<a 
     13外典之一<br> 
     14<span style="font-weight: normal;">Pugs 计划概述</span></h1> 
     15<h2>何谓 Pugs 外典?</h2> 
     16<p><a href="http://svn.perl.org/perl6/pugs/trunk/docs/">Pugs 
     17外典</a>(Pugs Apocrypha)是一系列采问答体例,用以解释 Pugs 设计及实作的文件。本外典(PA01)乃此一计划之总要。</p> 
     18<h2>何谓 Pugs?</h2> 
     19<p>Pugs 始自 2005 年 2 月,是针对 Perl 6 语言进行的实作,由负责人 Autrijus Tang(唐宗汉)在开发团队 
     20(committers)与贡献者(contributors)的襄助下,进行设计及开发。</p> 
     21<h2>何谓 Perl 6?</h2> 
     22<p> 
     23<a href="http://dev.perl.org/perl6/">Perl 
     246</a> 是 Perl 语言的下一个主要版本,由 Larry Wall 领导的团队负责设计。Perl 
     25是一种语境相关、多重典范之实用程式语言。 Perl 6 团队已表示<a 
    3226 href="http://www.nntp.perl.org/group/perl.perl6.language/19263">非常欢迎</a> 
    33 Pugs 项目的诞生。</p> 
     27Pugs 专案的诞生。</p> 
    3428<h2>Perl 6 规范是否已经底定?</h2> 
    35 <p>截至 2004 年 12 月,Perl 6 大部份规格都 
    36 已载明于一系列的<a 
    37  href="http://dev.perl.org/perl6/synopsis/">纲 
    38 要</a>(Synopses)中。虽然纲要日后可能还会 
    39 有所更动,但目前已稳定到可以实作的地步。Larry 
    40 的<a 
    41  href="http://dev.perl.org/perl6/apocalypse/">启示录</a>(Apocalypse)是许多 
    42 纲要的基 
    43 础。设计团队偶尔也会发表<a 
    44  href="http://dev.perl.org/perl6/exegesis/">注 
    45 疏</a>(Exegesis), 解说启示录的内容。Pugs 遵循纲要之内容, 
    46 当有疑义时则参考启示录与注疏。</p> 
    47 <h2>何谓「Apocrypha」?</h2> 
    48 <p><a 
    49  href="http://en.wikipedia.org/wiki/Apocrypha">Apocrypha</a>(外典)一词源 自希腊文 
     29<p>截至 2004 年 12 月,Perl 6 大部份规格都已载明于一系列的<a 
     30 href="http://dev.perl.org/perl6/synopsis/">纲要</a>(Synopses)中。虽然纲要日后可能还会 
     31有所更动,但目前已稳定到可以实作的地步。Larry 的<a 
     32 href="http://dev.perl.org/perl6/apocalypse/">启示录</a>(Apocalypse)是许多纲要的基 
     33础。设计团队偶尔也会发表<a href="http://dev.perl.org/perl6/exegesis/">注疏</a>(Exegesis), 
     34解说启示录的内容。Pugs 遵循纲要之内容,当有疑义时则参考启示录与注疏。</p> 
     35<h2>何谓“Apocrypha”?</h2> 
     36<p><a href="http://en.wikipedia.org/wiki/Apocrypha">Apocrypha</a>(外典)一词源 
     37自希腊文 
    5038&alpha;&pi;ό&kappa;&rho;&upsilon;&phi;&omicron;&sigmaf;(隐藏),代表非正统的宗教典籍。依 
    51 希腊文,单数型应为 <i>Apocryphon</i>。</p> 
    52 <h2>外典与 
    53 Perl 6 设计文件之关系为何?</h2> 
    54 <p>启示录与纲要描 
    55 述抽象的 
    56 Perl 6 语言规范;外典则与 Pugs 实作息息相关。 
    57 如同 <a 
    58  href="http://www.parrotcode.org/docs/pdd/">Parrot 设计文件</a>, 
    59 外典也将依据 Pugs 的状态而不时更新。</p> 
    60 <h2>Pugs 会 
    61 实作完整的 Perl 6 规格吗?</h2> 
    62 <p>会的。Pugs 将一直以最新的 Perl 6 纲要版本为 
    63 实作目标。一旦有新的纲要或修订版本出现时,Pugs 和新版不一致之处,将视为 
    64 Pugs 的瑕疵。</p> 
    65 <h2>Pugs 是 
    66 自由软件吗?</h2> 
    67 <p>是的。Pugs 采用 GPL 第二版及 Artistic License 第 2.0b5 版释出。Artistic 
    68 2.0 最终版本一旦底定,Pugs 即会采用。</p> 
    69 <h2>Pugs 是 
    70 否受到 Perl 基金会赞助?</h2> 
    71 <p>没有。在接受 Perl 基金会的三份项 
    72 目<a 
    73  href="http://www.perlfoundation.org/gc/grants/2003_autrijus.html">补助</a>后, Autrijus 决定捐 
    74 出自己的时间,透过 Pugs 来协助 Perl 6 项目,不向 TPF 请求赞助。</p> 
    75 <h2>如何取得 
    76 Pugs?</h2> 
    77 <p>从 <a href="http://svn.openfoundry.org/pugs/">Subversion</a> 或 <a href="http://wagner.elixus.org/%7Eautrijus/darcs/pugs">darcs</a> 档案库,可以取得最新版的 
    78 Pugs 源码。在 CPAN 上,也会以 <a href="http://search.cpan.org/dist/Perl6-Pugs/">Perl6-Pugs</a> 为名定期释出。(顺带一提,若有兴趣针对 Subversion 档案库进行离线开发,<a href="http://svk.elixus.org/">svk</a> 
    79 也许对你会有帮助。祗用 svn 当然亦无不可。)</p> 
    80 <h2>如何编译 
    81 Pugs?</h2> 
    82 <p>Pugs 采用标准 
    83 Makefile.PL 编译系统;请见 <a href="http://svn.openfoundry.org/pugs/README">README</a> 档案的详细说明。由于 Pugs 是用 Haskell 语言写 
    84 成,请先安装 
    85 <a href="http://haskell.org/ghc/">Glasgow Haskell Compiler</a> (GHC) 6.2 或以上版本。请下载所属 
    86 平台的<a href="http://haskell.org/ghc/">安装档</a>; 
    87 从源码编译 GHC 得花上不少时间。</p> 
    88 <h2>何谓 
    89 Haskell?</h2> 
    90 <p><a 
    91  href="http://haskell.org/">Haskell</a> 乃标准化的纯粹函数式程序 
    92 语言,具有惰性求值(lazy evaluation)特性。虽然它有许多不同的实作可用,但 Pugs 采用了 GHC 特有的若干功能, 
    93 因此必须用 GHC 来编译。 </p> 
    94 <h2>GHC 又 
    95 是什么?</h2> 
    96 <p>GHC 是尖端的编译器与交互式环境,采用 
    97 <a href="http://haskell.org/ghc/license.html">BSD 式授权</a>释出。GHC 本身以 Haskell 写成,能把 Haskell 
    98 编译成字节码(bytecode)、C 语言程序,与某些平台的 
    99 机器码。GHC 附有完整的链接库、为数众多的语言延伸,以及强大的最佳化系统(藉由某 <a 
    100  href="http://www.cse.unsw.edu.au/%7Echak/haskell/ghc/comm/the-beast/mangler.html">Perl 5 程序</a>的协助)。因此,GHC 提供了解决 Perl 6 激活问题(bootstrapping 
    101 problem)的绝佳平台。</p> 
    102 <h2>何谓 
    103 Perl 6 激活问题?</h2> 
    104 <p>Perl 6 
    105 项目的目标是自足执行(self-hosting):Perl 6 编译器得用 Perl 6 本身撰写, 
    106 采用 Perl 6 Rules 来剖析 Perl 6 语法,而 Rules 又是 Perl 6 语言的一部份。此外,编译器产出之程序代码也得包含能动态执行 Perl 6 程序代码的 
    107 求值器(evaluator)。要打破此种相依循环,唯有采用其它语言先实作某些部份,然后再用 Perl 6 加以重写。</p> 
    108 <h2>最初的激活计划为何?</h2> 
     39希腊文,单数型应为 <span style="font-style: italic;">Apocryphon</span>。</p> 
     40<h2>外典与 Perl 6 设计文件之关系为何?</h2> 
     41<p>启示录与纲要描述抽象的 Perl 6 语言规范;外典则与 Pugs 实作息息相关。如同 <a 
     42 href="http://www.parrotcode.org/docs/pdd/">Parrot 设计文件</a>,外典也将依据 Pugs 
     43的状态而不时更新。<br> 
     44</p> 
     45<h2>Pugs 会实作完整的 Perl 6 规格吗?</h2> 
     46<p>会的。Pugs 将一直以最新的 Perl 6 纲要版本为实作目标。一旦有新的纲要或修订版本出现时,Pugs 和新版不一致之处,将视为 
     47Pugs 的瑕疵。<br> 
     48</p> 
     49<h2>Pugs 是自由软体吗?</h2> 
     50<p>是的。Pugs 采用 GPL 第二版及 Artistic License 第 2.0b5 版释出。Artistic 2.0 
     51最终版本一旦底定,Pugs 即会采用。</p> 
     52<h2>Pugs 是否受到 Perl 基金会赞助?</h2> 
     53<p>没有。在接受 Perl 基金会的三份专案<a 
     54 href="http://www.perlfoundation.org/gc/grants/2003_autrijus.html">补助</a>后, 
     55Autrijus 决定捐出自己的时间,透过 Pugs 来协助 Perl 6 专案,不向 TPF 请求赞助。</p> 
     56<h2>如何取得 Pugs?</h2> 
     57<p>从 <a href="http://svn.openfoundry.org/pugs/">Subversion</a> 或 <a 
     58 href="http://wagner.elixus.org/%7Eautrijus/darcs/pugs">darcs</a> 
     59档案库,可以取得最新版的 Pugs 源码。在 CPAN 上,也会以 <a 
     60 href="http://search.cpan.org/dist/Perl6-Pugs/">Perl6-Pugs</a> 
     61为名定期释出。(顺带一提,若有兴趣针对 Subversion 档案库进行离线开发,<a 
     62 href="http://svk.elixus.org/">svk</a> 也许对你会有帮助。祗用 svn 当然亦无不可。)<br> 
     63</p> 
     64<h2>如何编译 Pugs?</h2> 
     65<p>Pugs 采用标准 Makefile.PL 编译系统;请见 <a style="font-family: monospace;" 
     66 href="http://svn.openfoundry.org/pugs/README">README</a> 档案的详细说明。由于 
     67Pugs 是用 Haskell 语言写成,请先安装 <a href="http://haskell.org/ghc/">Glasgow 
     68Haskell 
     69Compiler</a> (GHC) 6.2 或以上版本。请下载所属平台的<a href="http://haskell.org/ghc/">安 
     70装档</a>;从源码编译 GHC 得花上不少时间。</p> 
     71<h2>何谓 Haskell?</h2> 
     72<p><a href="http://haskell.org/">Haskell</a> 乃标准化的纯粹函数式程式语言,具有惰性求值(lazy 
     73evaluation)特性。虽然它有许多不同的实作可用,但 Pugs 采用了 GHC 特有的若干功能,因此必须用 GHC 来编译。 </p> 
     74<h2>GHC 又是什么?</h2> 
     75<p>GHC 是尖端的编译器与互动式环境,采用 <a href="http://haskell.org/ghc/license.html">BSD 
     76式授权</a>释出。GHC 本身以 Haskell 写成,能把 Haskell 编译成位元组码(bytecode)、C 
     77语言程式,与某些平台的机器码。GHC 附有完整的程式库、为数众多的语言延伸,以及强大的最佳化系统(藉由某 <a 
     78 href="http://www.cse.unsw.edu.au/%7Echak/haskell/ghc/comm/the-beast/mangler.html">Perl 
     795 程式</a>的协助)。因此,GHC 提供了解决 Perl 6 启动问题(bootstrapping problem)的绝佳平台。</p> 
     80<h2>何谓 Perl 6 启动问题?</h2> 
     81<p>Perl 6 专案的目标是自足执行(self-hosting):Perl 6 编译器得用 Perl 6 本身撰写,采用 Perl 6 
     82Rules 来剖析 Perl 6 语法,而 Rules 又是 Perl 6 语言的一部份。此外,编译器产出之程式码也得包含能动态执行 Perl 
     836 程式码的求值器(evaluator)。要打破此种相依循环,唯有采用其它语言先实作某些部份,然后再用 Perl 6 加以重写。</p> 
     84<h2>最初的启动计划为何?</h2> 
    10985<p>根据 <a 
    110  href="http://search.cpan.org/dist/parrot/docs/faq.pod#Isn%27t_there_a_bootstrapping_problem?">Parrot 答客问</a>,最初的计划是利用 
    111 Perl 5 进行激活:先扩充 Perl 5,使其执行于 Parrot 虚拟机器上 
    112 (透过 B::Parrot 或 <a href="http://www.poniecode.org/">Ponie</a>),再以 Perl 5 实作 Perl 6 编译器,最后透过 
    113 p5-to-p6 转换器将编译器转译成 Perl 6。不过,虽然 
    114 <a 
    115  href="http://search.cpan.org/dist/Perl6-Rules/">Perl6::Rules</a> 确实在 Perl 5 上实作了 Rules 的雏型,但对 
    116 于建构编译器而言仍显得不够成熟。因此,激活计划转而以 C 语言代替。</p> 
    117 <h2>修订后的激活计划为何?</h2> 
     86 href="http://search.cpan.org/dist/parrot/docs/faq.pod#Isn%27t_there_a_bootstrapping_problem?">Parrot 
     87答客问</a>,最初的计划是利用 Perl 5 进行启动:先扩充 Perl 5,使其执行于 Parrot 虚拟机器上(透过 <span 
     88 style="font-family: monospace;">B::Parrot</span> 或 <a 
     89 href="http://www.poniecode.org/">Ponie</a>),再以 Perl 5 实作 Perl 6 
     90编译器,最后透过 p5-to-p6 转换器将编译器转译成 Perl 6。不过,虽然 <a 
     91 style="font-family: monospace;" 
     92 href="http://search.cpan.org/dist/Perl6-Rules/">Perl6::Rules</a> 确实在 
     93Perl 5 上实作了 Rules 的雏型,但对于建构编译器而言仍显得不够成熟。因此,启动计划转而以 C 语言代替。</p> 
     94<h2>修订后的启动计划为何?</h2> 
    11895<p>根据一份 2005 初的<a 
    119  href="http://www.perlfoundation.org/gc/grants/2005-p6-proposal.html">建议书</a>, 
    120 首先应采用 C 语言实作 Rules 引擎(即为 <a 
    121  href="http://cvs.perl.org/viewcvs/cvs-public/parrot/compilers/pge/">PGE</a>),用它将 Perl 6 剖析成 Parrot 的<a 
    122  href="http://en.wikipedia.org/wiki/Abstract_syntax_tree">抽象语法树</a>(AST), 接着在 Parrot 
    123 里实作 
    124 AST 求值器。Ponie 和 p5-to-p6 仍在进 
    125 行中,但已非激活程序中的关键成份。</p> 
    126 <h2>Pugs 能 
    127 如何协助 Perl 6 激活?</h2> 
    128 <p>在激活程序中, 
    129 常存在许多瓶颈,使得许多依赖这些瓶颈的工作无法推展。好比说,没有可用的 
    130 Perl 6 实作,就难以为 Perl 6 撰写单元测试 
    131 与标准链接库;在缺少 AST 接口的情况下,也没办法撰写 AST 求值器。Pugs 为此程序的各层面提供可用的替代组件,因此解决了上述的困境。</p> 
    132 <h2>Pugs 有 
    133 助于 Perl 6 语言设计吗?</h2> 
    134 <p>在缺少可用的实 
    135 作时,很难看出规格内的不一致与例外状况。然而,假如在实作许久之后,纔发现设计上的瑕疵,可能就得在重新架构上耗费许多心力。藉由提供可用的 Perl 6 实作,Pugs 可做为先期的确认 
    136 平台;这样不但能趁早解决问题,也可以鼓励更多人运用 Perl 6 的特性。</p> 
    137 <h2>为何选择 
    138 Haskell?</h2> 
    139 <p>Haskell 
    140 具有许多与 Perl 6 特点相应的功能:Perl 6 Rules 与 
    141 <a 
    142  href="http://www.cs.uu.nl/%7Edaan/download/parsec/parsec.html">Parsec</a> 十分相似;两种语言里都有惰性串行求值;延续函式(continuation)则可利用 
    143 <a 
    144  href="http://www.nomaware.com/monads/html/contmonad.html">ContT</a> 单子转换器(monad 
    145 transformer)来建构。这让雏型开发工作简化许多:首支可用的直译器 
    146 只花了<a 
    147  href="http://use.perl.org/%7Eautrijus/journal/23051">一星期</a>便释出了,在<a href="http://use.perl.org/%7Eautrijus/journal/23335">第三个星期</a>时,我们已经有了可供单元测试的全功能 <a 
    148  href="http://svn.openfoundry.org/pugs/lib/Perl6/lib/Test.pm">Test.pm</a> 模块。</p> 
    149 <h2>Pugs 是 
    150 编译器还是直译器?</h2> 
    151 <p>和 Perl 5 相似,Pugs 先把 Perl 6 程序编译成 AST,然后再用内建的求值 
    152 器加以执行。不过,未来 Pugs 可能会提供支持多种编译器后端的编译器接口。</p> 
     96 href="http://www.perlfoundation.org/gc/grants/2005-p6-proposal.html">建议 
     97书</a>,首先应采用 C 语言实作 Rules 引擎(即为 <a 
     98 href="http://cvs.perl.org/viewcvs/cvs-public/parrot/compilers/pge/">PGE</a>), 
     99用它将 Perl 6 剖析成 Parrot 的<a 
     100 href="http://en.wikipedia.org/wiki/Abstract_syntax_tree">抽象语法树</a>(AST), 
     101接着在 Parrot 里实作 AST 求值器。Ponie 和 p5-to-p6 仍在进行中,但已非启动程序中的关键成份。</p> 
     102<h2>Pugs 能如何协助 Perl 6 启动?</h2> 
     103<p>在启动程序中,常存在许多瓶颈,使得许多依赖这些瓶颈的工作无法推展。好比说,没有可用的 Perl 6 实作,就难以为 Perl 6 
     104撰写单元测试与标准程式库;在缺少 AST 介面的情况下,也没办法撰写 AST 求值器。Pugs 
     105为此程序的各层面提供可用的替代元件,因此解决了上述的困境。</p> 
     106<h2>Pugs 有助于 Perl 6 语言设计吗?</h2> 
     107<p>在缺少可用的实作时,很难看出规格内的不一致与例外状况。然而,假如在实作许久之后,才发现设计上的瑕疵,可能就得在重新架构上耗费许多心力。藉由 
     108提供可用的 Perl 6 实作,Pugs 可做为先期的确认平台;这样不但能趁早解决问题,也可以鼓励更多人运用 Perl 6 的特性。</p> 
     109<h2>为何选择 Haskell?</h2> 
     110<p>Haskell 具有许多与 Perl 6 特点相应的功能:Perl 6 Rules 与 <a 
     111 href="http://www.cs.uu.nl/%7Edaan/download/parsec/parsec.html">Parsec</a> 
     112十分相似;两种语言里都有惰性串列求值;延续函式(continuation)则可利用 <a 
     113 href="http://www.nomaware.com/monads/html/contmonad.html">ContT</a> 
     114单子转换器(monad transformer)来建构。这让雏型开发工作简化许多:首支可用的直译器只花了<a 
     115 href="http://use.perl.org/%7Eautrijus/journal/23051">一星期</a>便释出了,在<a 
     116 href="http://use.perl.org/%7Eautrijus/journal/23335">第三个星期</a>时,我们已经有了可 
     117供单元测试的全功能 <a style="font-family: monospace;" 
     118 href="http://svn.openfoundry.org/pugs/lib/Perl6/lib/Test.pm">Test.pm</a> 
     119模组。</p> 
     120<h2>Pugs 是编译器还是直译器?</h2> 
     121<p>和 Perl 5 相似,Pugs 先把 Perl 6 程式编译成 AST,然后再用内建的求值器加以执行。不过,未来 Pugs 
     122可能会提供支援多种编译器后端的编译器介面。<br> 
     123</p> 
    153124<h2>考虑纳入哪些编译器后端呢?</h2> 
    154 <p>如果要实作编译 
    155 器的话,首先很可能会是产出 Perl 6 程序代码,类似 
    156 <a 
    157  href="http://search.cpan.org/dist/perl/ext/B/B/Deparse.pm">B::Deparse</a> 模块的编译器后端。接下来 
    158 则可能产出 Haskell 程序代码,并交由 GHC 编译成 C 语言。届时,下一个目标很可能是 
    159 <a 
    160  href="http://cvs.perl.org/viewcvs/cvs-public/parrot/ast/">Parrot AST</a> 接口。如果有人愿意协助的话,我们也可能再加入其它后端(譬如 Perl 5 bytecode)。</p> 
    161 <h2>预定的 
    162 Pugs 开发计划为何?</h2> 
    163 <p>Pugs 之主要/次要版本号将逼近 
    164 2*&pi;;次版本号中的各小数字皆代表一项里程碑。版本号的第三位数会在每 
    165 次释出时递增。目前的里程碑 
     125<p>如果要实作编译器的话,首先很可能会是产出 Perl 6 程式码,类似 <a 
     126 style="font-family: monospace;" 
     127 href="http://search.cpan.org/dist/perl/ext/B/B/Deparse.pm">B::Deparse</a> 
     128模组的编译器后端。接下来则可能产出 Haskell 程式码,并交由 GHC 编译成 C 语言。届时,下一个目标很可能是 <a 
     129 href="http://cvs.perl.org/viewcvs/cvs-public/parrot/ast/">Parrot 
     130AST</a> 介面。如果有人愿意协助的话,我们也可能再加入其它后端(譬如 Perl 5 bytecode)。</p> 
     131<h2>预定的 Pugs 开发计划为何?</h2> 
     132<p>Pugs 之主要/次要版本号将逼近 2*&pi;;次版本号中的各小数位皆代表一项里程碑。版本号的第三位数会在每次释出时递增。目前的里程碑 
    166133为:</p> 
    167 <ul type="disc"> 
    168   <li class="MsoNormal" style="">6.0: 首次释出</li> 
    169   <li class="MsoNormal" style="">6.2: 基本输出入与流程控制组件、可覆写变量(mutable variables)与赋值(assignment)。</li> 
    170   <li class="MsoNormal" style="">6.28: 类别(classes)与特质(traits)。</li> 
    171   <li class="MsoNormal" style="">6.283: 规则(rules)与文法(grammars)。</li> 
    172   <li class="MsoNormal" style="">6.2831: 角色组合(role composition)及其它执行时期功能。</li> 
    173   <li class="MsoNormal" style="">6.28318: 宏(macros)。</li> 
    174   <li class="MsoNormal" style="">6.283185: 如有必要,将 Pugs 移植至 Perl 6。</li> 
     134<ul> 
     135  <li>6.0: 首次释出</li> 
     136  <li>6.2: 基本输出入与流程控制元件、可覆写变数(mutable variables)与赋值(assignment)。</li> 
     137  <li>6.28: 类别(classes)与特质(traits)。</li> 
     138  <li>6.283: 规则(rules)与文法(grammars)。</li> 
     139  <li>6.2831: 角色组合(role composition)及其它执行时期功能。</li> 
     140  <li>6.28318: 巨集(macros)。</li> 
     141  <li>6.283185: 如有必要,将 Pugs 移植至 Perl 6。</li> 
    175142</ul> 
    176 <h2>Pugs 的 
    177 可移植性如何?</h2> 
     143<h2>Pugs 的可携性如何?</h2> 
    178144<p>Pugs 可在 Win32、Linux 与多种 Unix 系统上执行。GHC 的<a 
    179  href="http://haskell.org/ghc/contributors.html">移植者名单</a>与<a href="http://haskell.org/ghc/download_ghc_622.html">下载网页</a>有 
    180 详细的信息。从 6.2.0 开始,Pugs 团队也会提供若干平台的安装档。</p> 
    181 <h2>Pugs 的 
    182 速度是否够快?</h2> 
    183 <p>在 Parsec 的强力支持 
    184 下,Pugs 的解译器很快。不过 Pugs 的求值器目前尚未最佳化:在一般 
    185 PC 上每秒约处理 1000 个运算符,大约比 Perl 5 慢上 100 倍。这对实现雏型 
    186 语言功能来说,已经够快了;假如还不能满足你的需要,请考虑帮忙开发编译器后端。</p> 
    187 <h2>有 
    188 Perl 6 模块的 CPAN 吗?</h2> 
    189 <p>目前 Pugs 会在 Perl 5 搜寻路径 
    190 下,以 Perl6::lib 作为 Perl 6 链接库名称 
    191 的前缀。好比说,Test 模块将安装于 Perl 5 链接库路径 
    192 下的 Perl6/lib/Test.pm。 这祗是权宜之计;未来应该会有更稳定的解决方案。</p> 
    193 <h2>Pugs 能 
    194 与 Perl 5 链接库共享吗?</h2> 
    195 <p>虽然目前还不 
    196 行,但我们未来可能会照 Autrijus 之前实作 
    197 <a 
    198  href="http://search.cpan.org/dist/Inline-MzScheme/">Inline::MzScheme</a> 的方式,撰写 Inline::GHC 模块,让 Perl 5 与 Haskell 模块能相 
    199 互沟通。如果成功的话,架一个 
    200 Inline::Pugs 在上面也非难事。不然,我 
    201 们也可能写个产出 Pugs AST 码的 Perl 5 程序代码解译器,让 
    202 Pugs 能执行纯以 Perl 写成的模块。再不然,也可以把 Pugs AST 编成 Perl 5 的 AST,不过这更是纯属臆 
    203 测。</p> 
    204 <h2>Pugs 能 
    205 与 Haskell 链接库共享吗?</h2> 
    206 <p>目前你可以把 
    207 Haskell 链接库静态链接至 Pugs 的内建函式,祗 
    208 需修改 <a 
    209  href="http://svn.openfoundry.org/pugs/src/Prim.hs">Prim.hs</a> 内的几列程序代码即 
    210 可。我们正考虑撰写 
    211 <a 
    212  href="http://www.cse.unsw.edu.au/%7Edons/hs-plugins/">hs-plugins</a> 的简易界面,让 Pugs 能动态加载 Hasekll 链接库, 
    213 甚至在 Perl 6 中内嵌 Haskell 程序代码。</p> 
    214 <h2>Pugs 能 
    215 与 C 链接库共享吗?</h2> 
    216 <p>还不行。不过 
    217 <a href="http://www.haskell.org/hdirect/">HaskellDirect</a> 配上前述的 
    218 hs-plugins,似乎会是与 C、CORBA 及 COM 链接库沟通的简单 
    219 方式。</p> 
    220 <h2>我会 
    221 Perl 5,不懂 Haskell。我能帮 Pugs 的忙吗?</h2> 
    222 <p>当然!Pugs 的标准链接库与单 
    223 元测试都是以 Perl 6 写成的,而我们总是需要更多的测试和链接库。这方面的工作只需要懂 Perl 5,再花上几分钟熟悉少部份语法的不 
    224 同之处即可。当然,过程中你也可能会学到一些 Haskell 相关的知识。</p> 
    225 <h2>我会 
    226 Haskell,但不懂 Perl 5。我可以帮忙吗?</h2> 
    227 <p>当然!Perl 6 和 Haskell 有很多相 
    228 似之处,好比说依据型别分派的函式(type-based function 
    229 dispatch)、以函式为值(first class functions), 
    230 以及局部套用函式(currying)等等;因此,要了解语法也会简单许多。总是有许多功能的待办测试等着实作,不用怕找不到事情 
     145 href="http://haskell.org/ghc/contributors.html">移植者名单</a>与<a 
     146 href="http://haskell.org/ghc/download_ghc_622.html">下载网页</a>有详细的资讯。从 
     1476.2.0 开始,Pugs 团队也会提供若干平台的安装档。</p> 
     148<h2>Pugs 的速度是否够快?</h2> 
     149<p>在 Parsec 的强力支援下,Pugs 的解译器很快。不过 Pugs 的求值器目前尚未最佳化:在一般 PC 上每秒约处理 1000 
     150个运算符,大约比 Perl 5 慢上 100 倍。这对实现雏型语言功能来说,已经够快了;假如还不能满足你的需要,请考虑帮忙开发编译器后端。</p> 
     151<h2>有 Perl 6 模组的 CPAN 吗?</h2> 
     152<p>没有。当前发布 Perl 6/Pugs 模组较好的方式,是交由 openfoundry.org 的提交者,将你的模组放到 Pugs 原始码档案库下的 modules/ 目录。最好能同时提供该模组的测试案例,让我们对该模组多些了解。</p> 
     153 
     154<p>但情况也不是就那么糟。假如你够耐心,可以等候 <span style="font-family: monospace;">Pugs::MakeMaker</span> 和 <span style="font-family: monospace;">Module::Install::Pugs</span> 的出现。等到以上模组出现在 CPAN 上,表示我们已经解决了散布上的问题。你就可以开始把东西丢上 CPAN 了。当然,随时欢迎各方提供其它意见。 
     155</p> 
     156<h2>Pugs 能与 Perl 5 程式库共用吗?</h2> 
     157<p>虽然目前还不行,但我们未来可能会照 Autrijus 之前实作 <a style="font-family: monospace;" 
     158 href="http://search.cpan.org/dist/Inline-MzScheme/">Inline::MzScheme</a> 
     159的方式,撰写 <span style="font-family: monospace;">Inline::GHC</span> 模组,让 
     160Perl 5 与 Haskell 模组能相互沟通。如果成功的话,架一个 <span 
     161 style="font-family: monospace;">Inline::Pugs</span> 
     162在上面也非难事。不然,我们也可能写个产出 Pugs AST 码的 Perl 5 程式码解译器,让 Pugs 能执行纯以 Perl 
     163写成的模组。再不然,也可以把 Pugs AST 编成 Perl 5 的 AST,不过这更是纯属臆测。</p> 
     164<h2>Pugs 能与 Haskell 程式库共用吗?</h2> 
     165<p>目前你可以把 Haskell 程式库静态链接至 Pugs 的内建函式,祗需修改 <a 
     166 style="font-family: monospace;" 
     167 href="http://svn.openfoundry.org/pugs/src/Prim.hs">Prim.hs</a> 
     168内的几列程式码即 
     169可。我们正考虑撰写 <a href="http://www.cse.unsw.edu.au/%7Edons/hs-plugins/">hs-plugins</a> 
     170的简易界面,让 Pugs 能动态载入 Hasekll 程式库,甚至在 Perl 6 中内嵌 Haskell 程式码。</p> 
     171<h2>Pugs 能与 C 程式库共用吗?</h2> 
     172<p>还不行。不过 <a href="http://www.haskell.org/hdirect/">HaskellDirect</a> 
     173配上前述的 hs-plugins,似乎会是与 C、CORBA 及 COM 程式库沟通的简单方式。</p> 
     174<h2>我会 Perl 5,不懂 Haskell。我能帮 Pugs 的忙吗?</h2> 
     175<p>当然!Pugs 的标准程式库与单元测试都是以 Perl 6 写成的,而我们总是需要更多的测试和程式库。这方面的工作只需要懂 Perl 
     1765,再花上几分钟熟悉少部份语法的不同之处即可。当然,过程中你也可能会学到一些 Haskell 相关的知识。</p> 
     177<h2>我会 Haskell,但不懂 Perl 5。我可以帮忙吗?</h2> 
     178<p>当然!Perl 6 和 Haskell 有很多相似之处,好比说依据型别分派的函式(type-based function 
     179dispatch)、以函式为值(first class 
     180functions),以及局部套用函式(currying)等等;因此,要了解语法也会简单许多。总是有许多功能的待办测试等着实作,不用怕找不到事情 
    231181做。</p> 
    232 <h2>我会一点 
    233 Perl 6。我能用 Pugs 做什么?</h2> 
    234 <p>先看看 examples/ 
    235 目录里的范例程序。已经有人用 Pugs 写了网站应用软件与报表系统。假若 
    236 你发现 Pugs 有不足之处,请告诉我们,以便实作。</p> 
    237 <h2>哪里可以学 
    238 Haskell?</h2> 
    239 <p><a 
    240  href="http://www.haskell.org/">Haskell 
    241 首页</a>和 <a 
    242  href="http://haskell.org/hawiki/">Wiki</a> 会是不错的开始。有许多线 
    243 上教学文件可看;<a 
     182<h2>我会一点 Perl 6。我能用 Pugs 做什么?</h2> 
     183<p>先看看 examples/ 目录里的范例程式。已经有人用 Pugs 写了网站应用软体与报表系统。假若你发现 Pugs 
     184有不足之处,请告诉我们,以便实作。</p> 
     185<h2>哪里可以学 Haskell?</h2> 
     186<p><a href="http://www.haskell.org/">Haskell 首页</a>和 <a 
     187 href="http://haskell.org/hawiki/">Wiki</a> 会是不错的开始。有许多线上教学文件可看;<a 
    244188 href="http://www.isi.edu/%7Ehdaume/htut/">Yet Another 
    245 Haskell Tutorial</a> 可能是其中最容易上手的。由于 
    246 Pugs 中大量应用单子转换器 (monad transformer),建议读读 <a 
    247  href="http://www.nomaware.com/monads/html/">All About 
     189Haskell Tutorial</a> 可能是其中最容易上手的。由于 Pugs 中大量应用单子转换器 (monad 
     190transformer),建议读读 <a href="http://www.nomaware.com/monads/html/">All 
     191About 
    248192Monads</a>。书的话,<a 
    249  href="http://www.iro.umontreal.ca/%7Elapalme/Algorithms-functional.html">Algorithms: A Functional Programming 
    250 Approach</a>、<a 
    251  href="http://www.cs.kent.ac.uk/people/staff/sjt/craft2e/">Haskell: The Craft of Functional Programming</a> 和 <a href="http://haskell.org/soe/">The 
    252 Haskell School of Expression</a> 都是很好的入门读物。此外,<a href="http://freenode.net/">freenode</a> 的 #haskell 频道上有许多热爱 
     193 href="http://www.iro.umontreal.ca/%7Elapalme/Algorithms-functional.html">Algorithms: 
     194A Functional Programming Approach</a>、<a 
     195 href="http://www.cs.kent.ac.uk/people/staff/sjt/craft2e/">Haskell: 
     196The Craft of 
     197Functional Programming</a> 和 <a href="http://haskell.org/soe/">The 
     198Haskell School of 
     199Expression</a> 都是很好的入门读物。此外,<a href="http://freenode.net/">freenode</a> 
     200的 <span style="font-family: monospace;">#haskell</span> 频道上有许多热爱 
    253201Haskell 的人可以帮忙。</p> 
    254 <h2>哪里学得到 
    255 Perl 6?</h2> 
    256 <p><a 
    257  href="http://dev.perl.org/perl6/">Perl 
    258 6 首页</a>有许多线上文件。每隔一两个星期,<a 
    259  href="http://www.perl.com/">Perl.com</a> 上会有新的 Perl 6 通信论坛摘 
    260 要,想赶上 Perl 6 的开发进度者一定不能错过。在书藉方面,<a 
     202<h2>哪里学得到 Perl 6?</h2> 
     203<p><a href="http://dev.perl.org/perl6/">Perl 
     2046 首页</a>有许多线上文件。每隔一两个星期,<a href="http://www.perl.com/">Perl.com</a> 
     205上会有新的 Perl 6 通信论坛摘要,想赶上 Perl 6 的开发进度者一定不能错过。在书藉方面,<a 
    261206 href="http://www.oreilly.com/catalog/059600737X/">Perl 
    2622076 and Parrot Essentials</a> 和 <a 
    263  href="http://www.apress.com/book/bookDisplay.html?bID=355">Perl 6 Now</a> 都很有帮助。</p> 
    264 <h2>要如何学习实作程序语言?</h2> 
    265 <p><a 
    266  href="http://www.cis.upenn.edu/%7Ebcpierce/tapl/">Types 
    267 and Programming Languages</a> 
    268 一定要读。Pugs 最初是 Autrijus 在自学 
    269 此书时的习作;它在实作期间也一直是重要的指南。它的续集 <a 
     208 href="http://www.apress.com/book/bookDisplay.html?bID=355">Perl 
     2096 Now</a> 都很有帮助。</p> 
     210<h2>要如何学习实作程式语言?</h2> 
     211<p><a href="http://www.cis.upenn.edu/%7Ebcpierce/tapl/">Types 
     212and Programming Languages</a> 一定要读。Pugs 最初是 Autrijus 
     213在自学此书时的习作;它在实作期间也一直是重要的指南。它的续集 <span 
     214 style="text-decoration: underline;"></span><a 
    270215 href="http://www.cis.upenn.edu/%7Ebcpierce/attapl/">Advanced 
    271 Topics in Types and Programming 
    272 Languages</a> 
    273 同样十分重要。熟悉其它多重典范语言(如 <a href="http://www.mozart-oz.org/">Mozart/Oz</a>、<a 
    274  href="http://www.informatik.uni-kiel.de/%7Emh/curry/">Curry</a> 、<a href="http://www.ocaml.org/">O&rsquo;Caml</a> 等)可能也有帮助。此外,<a 
    275  href="http://www.cse.unsw.edu.au/%7Echak/haskell/ghc/comm/">GHC commentary</a> 为 GHC 实作提供了详实的描述。</p> 
     216Topics in 
     217Types and Programming Languages</a> 同样十分重要。熟悉其它多重典范语言(如 <a 
     218 href="http://www.mozart-oz.org/">Mozart/Oz</a>、<a 
     219 href="http://www.informatik.uni-kiel.de/%7Emh/curry/">Curry</a> 、<a 
     220 href="http://www.ocaml.org/">O&rsquo;Caml</a> 等)可能也有帮助。此外,<a 
     221 href="http://www.cse.unsw.edu.au/%7Echak/haskell/ghc/comm/">GHC 
     222commentary</a> 为 GHC 实作提供了详实的描述。</p> 
    276223<h2>我想帮忙,该怎么做?</h2> 
    277 <p>首先,发一封空 
    278 白信到 <a 
    279  href="mailto:perl6-compiler-subscribe@perl.org">perl6-compiler-subscribe@perl.org</a>, 订阅 <a 
    280  href="http://nntp.perl.org/group/perl.perl6.compiler">perl6-compiler</a> 通信论坛。接着加入 <a href="http://freenode.net/">irc.freenode.net</a> 的 #perl6 IRC 频道,看看有什么 
    281 待办事项;不妨与 
    282 #perl6 上的 Pugs 团队连系,以加 
    283 入开发团队。咱们 IRC 上见! 
     224<p>首先,发一封空白信到 <a href="mailto:perl6-compiler-subscribe@perl.org">perl6-compiler-subscribe@perl.org</a>, 
     225订阅 <a href="http://nntp.perl.org/group/perl.perl6.compiler">perl6-compiler</a> 
     226通信论坛。接着加入 <a href="http://freenode.net/">irc.freenode.net</a> 的 <span 
     227 style="font-family: monospace;">#perl6</span> IRC 频道,看看有什么待办事项;不妨与 <span 
     228 style="font-family: monospace;">#perl6</span> 上的 Pugs 团队连系,以加入开发团队。咱们 
     229IRC 上见!<br> 
     230<o:p></o:p></p> 
    284231</body> 
    285232</html> 
  • docs/zh-tw/01Overview.html

    r366 r547  
    1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
     1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
    22<html lang="zh-tw"> 
    33<head> 
     
    150150個運算符,大約比 Perl 5 慢上 100 倍。這對實現雛型語言功能來說,已經夠快了;假如還不能滿足你的需要,請考慮幫忙開發編譯器後端。</p> 
    151151<h2>有 Perl 6 模組的 CPAN 嗎?</h2> 
    152 <p>目前 Pugs 會在 Perl 5 搜尋路徑下,以 <span style="font-family: monospace;">Perl6::lib</span> 
    153 作為 Perl 6 程式庫名稱的前綴。好比說,<span style="font-family: monospace;">Test</span> 
    154 模組將安裝於 Perl 5 程式庫路徑下的 <span style="font-family: monospace;">Perl6/lib/Test.pm</span> 
    155 這祗是權宜之計;未來應該會有更穩定的解決方案。</p> 
     152<p>沒有。當前發佈 Perl 6/Pugs 模組較好的方式,是交由 openfoundry.org 的提交者,將你的模組放到 Pugs 原始碼檔案庫下的 modules/ 目錄。最好能同時提供該模組的測試案例,讓我們對該模組多些了解。</p> 
     153 
     154<p>但情況也不是就那麼糟。假如你夠耐心,可以等候 <span style="font-family: monospace;">Pugs::MakeMaker</span> 和 <span style="font-family: monospace;">Module::Install::Pugs</span> 的出現。等到以上模組出現在 CPAN 上,表示我們已經解決了散佈上的問題。你就可以開始把東西丟上 CPAN 了。當然,隨時歡迎各方提供其它意見 
     155</p> 
    156156<h2>Pugs 能與 Perl 5 程式庫共用嗎?</h2> 
    157157<p>雖然目前還不行,但我們未來可能會照 Autrijus 之前實作 <a style="font-family: monospace;"