Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
Here are some of the tenets of XP (stolen from that we intend Perl 6 to support. And some practical examples of Perl 6 features that will support each of them. This list is by no means exhaustive (either of tenets or or supportive features) -- it's more to demonstrate that we aren't (just) marketing geniuses ;-)
The project is divided into iterations/No functionality is added early.
To do that, you need to be able to build applications incrementally. That implies leaving stubs representing components that are essential but not yet built. That's particularly easy in Perl 6:
sub print_report {...}

Move people around/Use collective code ownership.
To do those things, you need to leave behind code that others can pick up easily. Many of the changes we're making to Perl 6 support that. For a simple (but non-trivial) example, rationalizing variable sigils cleans up code dramatically, making it easier to grok quickly. For a more complex example, Larry showed the design team the first draft of A5 yesterday. It's sensational! He's heavily refactored the regex syntax, and the result is that simple regexes become vastly more readable, and complex regexes vastly easier to get right.

Refactor whenever and wherever possible.
One of the unexpected benefits of the structural unification we've been making is that refactoring does become significantly easier. For example, every loop block is now actually a subroutine/closure specification. And if you use the -> $var {...} iterator specification, the loop block is actually a subroutine with parameters. So hoisting that code into a subroutine becomes utterly trivial.

Code must be written to agreed standards.
Perl 6 will make it easier to create, impose, and verify compliance with coding standards. Two examples:
  • Sandboxing will be much easier to use, so it will be possible to turn off language features whose use contravenes the agreed standard. For example, it will be simple to turn off the use of backticks, and have them "caught" at compile-time.
  • It will also be comparatively easy to intercept code in the middle of compilation (e.g. at the optree level) and write Perl modules that verify particular code opposed to individual constructs. For example, you might decree that variable names must conform to the project's data dictionary, and have a "policy test" module check every VAR node in the optree as the program is compiled. Or you might require that all pattern matches use an explicit $var =~ (rather than implicitly matching against the current topic). You'll be able to write a parse-tree analyser to verify that too.

Leave optimization till last.
...or leave it to the machine. An important design goal for both Perl 6 and the underlying Parrot engine is to automate optimization as far as possible. The introduction of variable typing (in addition to Perl 5's value typing) helps there, as does the unification of blocks and closures. At the other end of the spectrum, Parrot's register-based architecture allows us to draw on the extensive literature on hardware and assembler optimization. BTW, where optimization at the higher, human level is desirable, it's almost always optimization of algorithm, not code. Many of the new, more advanced features that Perl 6 will add (e.g. higher order functions, lazy data structures, generators, coroutines, superpositions, smart matching, etc.) are specifically designed to support those more sophisticated algorithms.

No overtime.
Hardly new. Perl is already a "no overtime" language, since it allows you to get more done, more quickly, without the mechanics of the language getting in the way. We have no intention of changing that aspect of the language. In fact, every change we consider for Perl 6 is explicitly weighed against our stated goal that "Easy things should stay easy, hard things should become easier, and impossible things should become merely hard."

In reply to Re: Perl6 and Extreme Programming by TheDamian
in thread Perl6 and Extreme Programming by Ovid

Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?

    What's my password?
    Create A New User
    and nobody stirs...

    How do I use this? | Other CB clients
    Other Users?
    Others having an uproarious good time at the Monastery: (4)
    As of 2018-06-24 11:54 GMT
    Find Nodes?
      Voting Booth?
      Should cpanminus be part of the standard Perl release?

      Results (126 votes). Check out past polls.