> There are a lot of programmers who know several programming languages already, > and who don't want to read a whole page on how to print 'Hello World', 5 > pages on > if-statements and while-loops and another 10 pages explaining lists and > iteration.
However experienced a programmer may be, there are certain minimum levels of knowledge one needs to get into a new language. What class of language is it? Machine code, assembler, compiler, interpreter, executed from source, like Java? (Obviously, we know that, but for the few sentences it takes to explain it, it might as well be stated anyway for newcomers.) A couple of paragraphs can explain where it might be expected to run, and what's required to start using it. That's the purpose of "Hello, world" programs; not to babble inane greetings, but to show simply to run something in the language. Even there, Perl 6 is unusually rich in options; interactive mode, command line, argument, and stand-alone executable. Each step requires slightly more input, so that's the order I would introduce them. When introducing a programming language, as opposed to teaching programming from scratch, it should not be necessary to explain what a variable is, or why decision statements are required. The reader's questions are more in the nature of "what's a valid variable name" or "how are blocks bounded"? Without the basics of of statement syntax, variable name rules, block structure, how decisions are delimited, and how to iterate, how does one interpret more complex concepts? Certainly, they can be explained by reference to some previous standard; "The rules for .... are exactly the same as in Perl 5, except when ..... These rules are .....". That allows the Perl maven to skip forward enlightened, and the beginner to keep learning. Learning's a process of building on previous foundations, and so is programming. Somebody creating simple tabulations may never need the techniques of the compiler writer, but the compiler creator had to learn the rules for variable names. > But much more is needed. Please help us with it. Specifying the problem was meant to be the first step. I wanted to get the discussion going, (but not the bikeshedding about the language name). For the author of Perl 6 documentation, the problem is knowing the language well enough to see the logical stages to extend basic concepts and introduce new ones. Where are the rings of the onion? For example, double " and single ' quotes are pretty much essential from the start; when do the alternative forms begin to be necessary? I see at least 3 levels of complexity, demanding increasing levels of sophistication; basic computation on streams of structured I/O, manipulation of unstructured data, like text, and "higher order" work, like program-creating programs, compilers, &c. Does this seem like a reasonable taxonomy, or are other groupings a better fit?