==== Perl 6 User FAQ (perl.perl6.meta) ====

     Version: 2006-05-08 (early beta level at present)

TABLE OF CONTENTS

* About perl.perl6.meta (and this FAQ)
* About Perl 6              # True marketing hype, in both senses.
* General Perl 6 status     # On the move!
* Perl 6 info and docs      # A little sparse, but rapidly improving.
* Latest Perl 6 developments
* Where to get Perl 6       # <----- "I want it now!!" <-----
* Useful Perl 6 modules
* Incremental migration from Perl 5
* Other useful resources
* Glossary
* Copyright and license

=== About perl.perl6.meta (and this FAQ) ===

A major aim of this newsgroup (NG) is to lower the bar a bit for early-adapters, and to make it easier for people to effectively experiment with Perl 6 without having to search around as much to get started, and to help identify and fill in intermediate documentation gaps in the process. In other words, share the -Ofun.

Suggested additional content and corrections for this FAQ are always
welcome. Please post them to perl.perl6.meta with the subject line "FAQ feedback".

Think of this NG as the prototype for the future comp.lang.perl6.misc
NG. When traffic warrants it, we’ll apply for official Usenet "big 8" comp.* status.

You can access this NG several ways:

* Point your newsreader to (nntp.perl.org).
(Need a newsreader? (http://www.mozilla.com/thunderbird/) works for me.)
*Some time soon, you should also be able to find us on Google Groups.
*Subject lines of NG posts with link to each post can be found at this archive: (http://www.nntp.perl.org/group/perl.perl6.meta).
* Here's the RSS feed:
(http://www.nntp.perl.org/rss/perl.perl6.meta.rdf).

<<My FAQ to do notes and meta-comments are in double angle bracket pairs, as illustrated here.>>

=== About Perl 6 ===

Newbie warning! Perl 6 is still UNDER CONSTRUCTION. Don’t make
important plans that depend on it just yet. Please see sections below
about intermediate Perl6-related solutions you can use now.

What is Perl 6? Perl 6 is an extensively refactored, super-modernized,
and ultra-supercharged derivative of Perl 5. Here is a brief summary of some notable features, mostly copied from
(http://dev.perl.org/perl6/faq.html):

* optional explicit strong typing
* proper parameter lists
* active metadata on values, variables, subroutines, and types
* declarative classes with strong encapsulation
* full OO exception handling
* support for the concurrent use of multiple versions of a module
* extensive introspection facilities (including of POD)
* LL and LR grammars (including a built-in grammar for Perl 6 itself)
* subroutine overloading
* multiple dispatch
* named arguments
* a built-in switch statement
* hierarchical construction and destruction
* distributive method dispatch
* method delegation
* named regexes
* overlapping and exhaustive regex matches within a string
* named captures
* parse-tree pruning
* incremental regex matching against input streams
* macros (that are implemented in Perl itself)
* user-definable operators (from the full Unicode set)
* chained comparisons
* a universally accessible aliasing mechanism
* lexical exporting (via a cleaner, declarative syntax)
* multimorphic equality tests
* state variables
* hypothetical variables
* hyperoperators (i.e. vector processing)
* function currying
* junctions (i.e. superpositional values, subroutines, and types)
* coroutines

OK, that's a semi-awesome feature forest of details, but what about a high-level big picture overview from 35,000 feet?

First of all, Perl 6 is going to be the heart of a vastly larger software super-system, C6PAN (which will subsume Perl 5’s CPAN, an already huge and powerful collection of Perl modules).

For convenience here, we'll call Perl 6 + C6PAN "Perl 6++".

When it comes to "embrace and extend", Perl 6++ is exceptionally promiscuous: Perl 6++ has (selectively) borrowed widely from our many friends, including Ruby, Python, Smalltalk, Lisp, Haskell, and others.

So what roles does all of the above position Perl 6++ for? Here are my long-term predictions:

* Perl 6++ is going to be the counterpart of world English (which
exceeds all other languages in importing new concepts).
* Perl 6++ is going to be the software world’s first counterpart of the Great Library of Alexandra. * Perl 6++ is going to be the first "mainstream-strength" super-morphic programming system.
* Perl 6++ is going to be the principal collaborative software system
of super-natural intelligence.
* Perl 6++ will carry us to the age of kilo-core, mega-thread
processors and the trillion node internet.

In summary, Perl 6++ is going to be the software launch pad of the
"singularity" age. (By that time, however, it will have evolved into
Perl 7++ or Perl 8++. Perl 6++ will make the development of its eventual, inevitable successor very much easier, and it will likewise help accelerate the advance of other existing and new languages as well.)

=== General Perl 6 status ===

<<List is very sketchy and incomplete.>>

* Design:

    * The major language domains are fairly complete, but many {corner,
    borderline} cases are still {incompletely, tentatively} specified.

* Documentation:

    * The on-line docs undergoing tremendous improvement.
    * No up-to-date Perl6 books at the moment.
    * Part of motivation for (reincarnated) perl.perl6.meta NG and FAQ
    is to help with interim user documentation (including generating
    useful archives for point-of-departure searching).

* Implementation:

    * Front ends:

        * Perl6: Pugs
        * Perl5 to Perl5 (to Perl6) translator

    * Middleware

        * <<To be completed.>>

    * Back ends

        * Parrot (from Pugs)
        * Javascript (from Pugs)
        * Haskell runtime (from Pugs)
        * Perl5 <<status?>>

    * Bridgeware

* Ponie: This is an important missing piece to make Perl 5 and CPAN run on Parrot. (Big corporate support for this project would be great.)
        * Perl5 modules for Perl6 features.

* Performance:

* Very slow at present <<explain why>>, but good enough for experimenting.

After years of seemingly glacial but important preliminary work in
2000­2004, there has been a gathering avalanche of Perl 6 development
work since early 2005. Over-enthusiasm is in danger of replacing over-
pessimism.

So when will Perl 6 be ready? The semi-official answer is "When it's
done"--there is no official schedule. My wild guess is "early alpha
something" by Christmas 2006, and "solid production release" by
Christmas 2007.

=== Perl 6 info and docs ===

Links to design documents and lots of other info:

* Misc.: (http://dev.perl.org/perl6/).
* Synopsis: (http://dev.perl.org/perl6/doc/synopsis.html).
* Perl 6 FAQ: (http://dev.perl.org/perl6/faq.html).

<<Fud FAQ.>>

"Planet Perl Six is an aggregator of select Perl 6 related blogs." Includes weekly Perl6 summaries (currently lapsed) and weekly Perl 6 meeting minutes (<<what happened to them?>>):
(http://planetsix.perl.org/).

IRC channels (and their archives) are a major source of useful information. The #perl6 IRC channel is on (http://freenode.net/).
Need an IRC client? I use Chatzilla, a Firefox extension:
(http://www.mozilla.com/firefox/),
(http://www.mozilla.org/projects/rt-messaging/chatzilla/).

Perl 6 newsgroups, at (http://www.nntp.perl.org/group/) and Google Groups (http://groups.google.com/):
* perl.perl6.internals
* perl.perl6.language
* perl.perl6.compiler
* perl.perl6.announce
You can also get these by email; see
(http://lists.cpan.org/showlist.cgi?name=perl6-internals) for details (and make appropriate substitutions on "-internals" for other groups).

Who's Who in Perl 6, Parrot, & Pugs:
(http://dev.perl.org/perl6/people.html)

The O'Reilly website sometimes has interesting article about Perl 6 (http://www.perl.com).

=== Latest Perl 6 developments ===

<<Recent language changes.>>

<<Temporary gotchas>>

=== Where to get Perl 6 ===

Pugs: (http://www.pugscode.org/)

Parrot: (http://www.parrotcode.org/)

Win32 binary builds of Pugs and Parrot:
(http://www.jwcs.net/~jonathan/perl6/).
(Pxperl.com appears to have stopped routinely updating their Win32 builds.)

=== Useful Perl 6 modules ===

<<To be completed.>>

=== Incremental migration from Perl 5 ===

There are many modules that implement parts of Perl 6 in Perl 5.
Go to (http://search.cpan.org) and do a module search on "perl6":

    (http://search.cpan.org/search?query=perl6&mode=module).

(Note: (http://search.cpan.org/modlist/Perl6) is missing many entries.
Use the search above for the time being.)

=== Other useful resources ===

Perl development server: (http://feather.perl6.nl/).

Some interesting background reading:

* << Ref to 100 year language. (http://www.paulgraham.com/),
(http://www.paulgraham.com/avg.html).>>
* "Confessions of a Used Programming Language Salesman;
Getting the Masses Hooked on Haskell" by Erik Meijer:
(http://research.microsoft.com/~emeijer/Papers/ICFP06.pdf).

<<Important developments to watch.>>

<<Creative applications of existing pieces (Parrot, Perl5 transition modules).>>

=== Glossary ===

"-Ofun": Audrey Tang's guiding "optimize for fun" policy philosophy for Pugs.

Perl 5 and Perl 6 are names of programming language dialects, whereas perl5 and perl6 are the corresponding (installed) names (of compilers) used to run programs of these languages.

=== Copyright and license ===

This FAQ copyrighted/licensed by Conrad [dot] Schneiker [at] GMail [dot] com under the most currently prevailing Perl 6 (Pugs) copyright/license.

The production and distribution of (free) open source software and documentation is (1) a fundamental CAPITALIST right of VOLUNTARY EXCHANGE that (2) is also a noble and honorable civic virtue that (3) constitutes a modern generalization of the various widespread 19th and 20th century networks of fraternal organizations of business leaders who (4) generously donated their time, effort, and money to (5) collaboratively further both community welfare and (6) their mutual economic development.

Reply via email to