Am 26.05.2012 21:12, schrieb Parrot Raiser:
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
if-statements and while-loops and another 10 pages explaining lists and
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.
Indeed, rereading the preface, it seems we don't mention what kind of
language it is. I'll try to fix that later.
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.
I'd still start with simple script files, because that's what most
programmers are most familiar with.
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.
Agreed. We need to get better on this front. Maybe insert a small cheat
cheat before the 'Basics' chapter.
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
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?
Where would you put nested data structures and custom classes? At the
beginning of the "higher order" work?
Apart from that, it sounds quite well.