Perl 6 Language Design Tablet: Revision 21
Larry Wall: You should not take this picture to mean that linguistics is the opposite of common sense. But ehm, there are many computer scientists, who have complained that it should be more like engineering and less like an art. And I disagree. But thats oukay.
Enjoy Life and enjoy the freedom expressing yourself. Which means: support you as much as possible and not to force you in any way. Perl 6 likes to be, even better than Perl 5, your humble servant for translating your thoughts into binary code (if possible).
Every style and level of expertise has to be supported and even more difficult: all of them have to play together well. The default often imitates a natural language (i.e. english). Strategies and concepts for this are coined in several often repeated terms.
The everlasting slogan:"There is more then one way to do it.", meaning: your way is valid too. Only be aware of logical consequences.
This has to do with natural attention flow. If a topic or first word of a sentence sets an understandable context for the following, the meaning is building up word for word and is much easier to grasp, than if the last word of a block resolves its whole meaning (like regex modifier in Perl 5 did). Especially "for" and "given" are called topicalizer, because they set $_, the context variable.
Same term or symbol might do in different context a different thing, although we done our very best, that it alwas represents the same general idea. Maybe best example is the * aka Whatever.
No special rules
Most of the special rules that plagued Perl 5 are gone or generalized.
Keep easy things easy and hard possible
Beside TIMTOWTDI, the other ancient slogan. Even if nearly every cool idea is crammed into Perl 6, we don't loose track of the basics and make them accessible and free of artificial prerequisites as possible. E.g. printing a variable as a line without qouting and "\n" (say) or reading a file without a file handle (with slurp and lines). Rule of thumb: if you can think of an concept as trivial, than it should be. And if you on the other hand can think of a computable solution, it should be at last doable in Perl (no artificial walls).
That's a refinement of the last rule. It means that all the common, often used things have short straightforward names. The more verbose indicate less used, harder to grasp concepts or things that overwrite the default rules ("weird things should look weird"). It also implies that the defaults are leaning toward what a beginner/non-perl 5-programmer might expect ("hide the fancy stuff").
Waterbed theory of liguistic complexity
The underlying philosophy of the two terms before. All Perl words should reflect logical units which you can combine freely. Make it more complicated than necessary is obviously not aspiring. But oversimplification will create artificial complexity somewhere else. Like an waterbed where you can push somewhere your hand in but the water will go up another spot.
All your paradigms belong to us
We learn/take/adapt from every source possible to offer the best of all breeds. And you should be able to keep your style when switching to Perl. Some of the paradigmes are structured, object oriented, aspect oriented, functional, design by contract, declarative and logical.
This term is an extention to the last one. Not only every programming paradigm but also every technique or neat trick loudly markeded out there as "must have" "in the [%DATE%]", should be available in Perl 6 (or at least be possible) as long there is productive value in it. "named parameters", "lvalue subroutines", "parametrizable subclasses" or "hygienic macros" are just a few.
Second system syndrome
An addon to the previous that should tell you: We are very aware, that many ambitious software projects that were build from scratch failed. Especially those, who aimed to be the "even better in all terms" successors of already successful creations. In fact this happened so often, that the term second system syndrome was coined. We chose this path for Perl 6 nevertheless, because we believe its the only way to get a significant better language. (Gradual improvements are flowing into Perl 5 all the time and are sometimes inspired from Perl 6.) Thats why the unofficial motto of Perl 6 is "Second system syndrome done right".
Less Unix Centric
Perl 1 was a child of the Unix world, borrowing a lot of folklore and words. As Perl 6 had to regularize the Regex and reform some other part, this heritage has become less visible.
In Perl 5 we had my, our, use, require, bless, can, ISA (is a), chop and also of course if, else, goto and all the loops. Perl 6 adds given, when, take, WHERE, HOW, WHO and lot more everyday english which should make it easy to read.
High order functions, currying, you name it. All that goodies are there, as Perl 6 aimes to an full support of functional programming.