C
Conrad Schneiker
Note: This is the stripped plain text version of the much more readable
HTML article I've put on my home page at (www.AthenaLab.com). Enjoy.
Perl6 - The Next "World's Greatest Programming Super-Language"?
Preface: I want to call your attention to an exceptionally fascinating
software development, while indulging in some entertaining and far-out
end-of-the-year speculation concerning Perl6. (I'm also hoping that
this note will help increase the likelihood of this speculation coming
true.) It will be interesting to check back a decade from now. (This
was last updated on Sunday, 12-18-2005. Apart from fixing typos, I'm
planning to leave this version "as is", and not "debug" it
further. I'll collect any updates and subsequently-discovered errors
in the Related and Other Links section.) FYI, I am the founder of the
comp.lang.ruby Usenet newsgroup. (Even though our paths have diverged,
I still think Ruby is a wonderful language, I still admire Matz and the
exceptionally newbie-friendly, helpful, well-mannered, and innovative
Ruby community, and I still wish them all continuing great success.
Indeed, I expect this development to substantially help Ruby and other
productively-innovative languages, over the long run.)
Even if you don't know about Perl, don't like Perl, or don't use
Perl, this is still important "good news".
(Here's why in a nutshell: The Perl6 virtual machine (aka
"Parrot") is building in the infrastructure needed to practically
support a wide range of other languages, including Ruby, Python, Tcl,
and of course Perl5, to name a few. This means that all languages that
target Parrot can have access to Perl's gigantic and well-organized
module archives (and vice versa)-to the great mutual benefit of their
users, and their users' clients).
I regard Perl6 as a (very much more) "humanized" and "mega
industrial strength" repackaging of the greatest and most powerful
features of Lisp (the predominant 20th century programming language for
artificial intelligence research and development), and which further
incorporates great ideas from Ruby, Python, and other practical and
innovative programming languages. Perl6 is a comprehensive redesign of
Perl5-many serious defects have been fixed, and some fixes involve
extremely powerful generalizations. For example, unlike Perl5's
clever but kludged-on "roll your own" object system, Perl6
elegantly incorporates multiple state-of-the-art object paradigms, some
powerful functional programming mechanisms, optional strict type
declarations, enhanced "good old fashioned" procedural programming
support, and it gives you the capability to morph it practically beyond
belief (to meet unanticipated future needs). For another example,
Perl5's flagship "regular expression engine" has become Perl6's
"rules engine", which allows sophisticated on-the-fly rule-based
grammar specification for generalized pattern parsing, recognition, and
transformation-and it's not limited to processing strings. Perl6
will be able to access Perl5's huge collection of CPAN (Comprehensive
Perl Archive Network) modules, and will able to compile Perl5 programs.
Given that Perl5 is often likened to a "Swiss Army
chainsaw"-Perl6 is comparable to a "Swiss Army T2 Terminator with
a full set of surgeon's tools, a fast laptop gene sequencer and
synthesizer, a fully automated laptop machine shop, and a
multi-kilowatt plasma torch" (but at your command, of course). Perl6
is far from perfect, and it seems to be getting almost as big as (but
not as clunky as) C++. But Perl6 is still a fantastic system
overall-a new class of (operating system-like) super-language as it
were-that in effect integrally incorporates and systematizes many
tremendously-improved versions of the software construction tools from
the "GNU-part" of "GNU/Linux" (and their BSD and UNIX
counterparts). Perl6 also seems to be (moderately) successfully
realizing the design goal of letting you get by with only learning
small subsets of the language as needed, so you can still "do simple
things simply" and easily. (It's the old "getting the camel's
nose in the tent" trick. Overall, the Perl6 design team seems to
have made enough generally-important and good-to-great pragmatic
tradeoffs to reach a historically new level of software "critical
mass".
Despite getting off to an agonizingly slow and very rocky start, I
think that it is still just barely possible for Perl6 to eventually
become as predominant for programming language users (although most
commonly as a secondary language) as English is for human language
users (partly as a widespread second language). What about Chinese?
Good question. For purposes of this analogical comparison, far more
Chinese speakers are learning English as a second language than vice
versa, and some dialects of Chinese are distinct languages for many
practical purposes. Incidentally, Perl6 will be able to support Chinese
language Perl6 programming by virtue of its Unicode support and
compile-time customization capabilities. Perl6 is insanely
flexible-but that includes the flexibility to enforce desired
conventions as well.
If I was appointed to distribute a few million dollars in grants for
generally improving the world (with a focus on boosting the rate of
scientific and technological progress), by way of diversification I'd
definitely spend one of those millions on jumpstarting Perl6. (Hint!
Hint!
If I'm even half-way correct about Perl6's prospects, then this has
some incredibly important scientific, technological, and economic
implications. There will be many "semi-awesome" software systems
and projects involving large scale collaborative and distributed
systems, both open source and commercial. Perl6 and C6PAN should also
emerge as the most common language for very advanced automation
systems, sophisticated robotics, and artificial intelligence
programming systems. These prospects seems far-fetched and
highly-speculative even to me, and there's a lot that could still go
wrong (again!) before the first production version of Perl6 appears.
However, I haven't seen anything nearly as interesting in the
computer programming language realm since I learned to program
extremely elementary Lisp using punched cards. (I'm excluding some
great but relatively more hardware/economics related advances such as
terminals, PCs, and the awesome web.) So I'm taking a huge chance and
sticking my neck way, way out on this one-in the (possibly vain) hope
that, many years from now, I'll be able to say "I told you so"
(first, and publicly). Meanwhile, please see the Perl6 section in
Related and Other Links for some handy links to help you get started
checking out current developments.
Best Regards,
Conrad Schneiker
HTML article I've put on my home page at (www.AthenaLab.com). Enjoy.
Perl6 - The Next "World's Greatest Programming Super-Language"?
Preface: I want to call your attention to an exceptionally fascinating
software development, while indulging in some entertaining and far-out
end-of-the-year speculation concerning Perl6. (I'm also hoping that
this note will help increase the likelihood of this speculation coming
true.) It will be interesting to check back a decade from now. (This
was last updated on Sunday, 12-18-2005. Apart from fixing typos, I'm
planning to leave this version "as is", and not "debug" it
further. I'll collect any updates and subsequently-discovered errors
in the Related and Other Links section.) FYI, I am the founder of the
comp.lang.ruby Usenet newsgroup. (Even though our paths have diverged,
I still think Ruby is a wonderful language, I still admire Matz and the
exceptionally newbie-friendly, helpful, well-mannered, and innovative
Ruby community, and I still wish them all continuing great success.
Indeed, I expect this development to substantially help Ruby and other
productively-innovative languages, over the long run.)
Even if you don't know about Perl, don't like Perl, or don't use
Perl, this is still important "good news".
(Here's why in a nutshell: The Perl6 virtual machine (aka
"Parrot") is building in the infrastructure needed to practically
support a wide range of other languages, including Ruby, Python, Tcl,
and of course Perl5, to name a few. This means that all languages that
target Parrot can have access to Perl's gigantic and well-organized
module archives (and vice versa)-to the great mutual benefit of their
users, and their users' clients).
I regard Perl6 as a (very much more) "humanized" and "mega
industrial strength" repackaging of the greatest and most powerful
features of Lisp (the predominant 20th century programming language for
artificial intelligence research and development), and which further
incorporates great ideas from Ruby, Python, and other practical and
innovative programming languages. Perl6 is a comprehensive redesign of
Perl5-many serious defects have been fixed, and some fixes involve
extremely powerful generalizations. For example, unlike Perl5's
clever but kludged-on "roll your own" object system, Perl6
elegantly incorporates multiple state-of-the-art object paradigms, some
powerful functional programming mechanisms, optional strict type
declarations, enhanced "good old fashioned" procedural programming
support, and it gives you the capability to morph it practically beyond
belief (to meet unanticipated future needs). For another example,
Perl5's flagship "regular expression engine" has become Perl6's
"rules engine", which allows sophisticated on-the-fly rule-based
grammar specification for generalized pattern parsing, recognition, and
transformation-and it's not limited to processing strings. Perl6
will be able to access Perl5's huge collection of CPAN (Comprehensive
Perl Archive Network) modules, and will able to compile Perl5 programs.
Given that Perl5 is often likened to a "Swiss Army
chainsaw"-Perl6 is comparable to a "Swiss Army T2 Terminator with
a full set of surgeon's tools, a fast laptop gene sequencer and
synthesizer, a fully automated laptop machine shop, and a
multi-kilowatt plasma torch" (but at your command, of course). Perl6
is far from perfect, and it seems to be getting almost as big as (but
not as clunky as) C++. But Perl6 is still a fantastic system
overall-a new class of (operating system-like) super-language as it
were-that in effect integrally incorporates and systematizes many
tremendously-improved versions of the software construction tools from
the "GNU-part" of "GNU/Linux" (and their BSD and UNIX
counterparts). Perl6 also seems to be (moderately) successfully
realizing the design goal of letting you get by with only learning
small subsets of the language as needed, so you can still "do simple
things simply" and easily. (It's the old "getting the camel's
nose in the tent" trick. Overall, the Perl6 design team seems to
have made enough generally-important and good-to-great pragmatic
tradeoffs to reach a historically new level of software "critical
mass".
Despite getting off to an agonizingly slow and very rocky start, I
think that it is still just barely possible for Perl6 to eventually
become as predominant for programming language users (although most
commonly as a secondary language) as English is for human language
users (partly as a widespread second language). What about Chinese?
Good question. For purposes of this analogical comparison, far more
Chinese speakers are learning English as a second language than vice
versa, and some dialects of Chinese are distinct languages for many
practical purposes. Incidentally, Perl6 will be able to support Chinese
language Perl6 programming by virtue of its Unicode support and
compile-time customization capabilities. Perl6 is insanely
flexible-but that includes the flexibility to enforce desired
conventions as well.
If I was appointed to distribute a few million dollars in grants for
generally improving the world (with a focus on boosting the rate of
scientific and technological progress), by way of diversification I'd
definitely spend one of those millions on jumpstarting Perl6. (Hint!
Hint!
If I'm even half-way correct about Perl6's prospects, then this has
some incredibly important scientific, technological, and economic
implications. There will be many "semi-awesome" software systems
and projects involving large scale collaborative and distributed
systems, both open source and commercial. Perl6 and C6PAN should also
emerge as the most common language for very advanced automation
systems, sophisticated robotics, and artificial intelligence
programming systems. These prospects seems far-fetched and
highly-speculative even to me, and there's a lot that could still go
wrong (again!) before the first production version of Perl6 appears.
However, I haven't seen anything nearly as interesting in the
computer programming language realm since I learned to program
extremely elementary Lisp using punched cards. (I'm excluding some
great but relatively more hardware/economics related advances such as
terminals, PCs, and the awesome web.) So I'm taking a huge chance and
sticking my neck way, way out on this one-in the (possibly vain) hope
that, many years from now, I'll be able to say "I told you so"
(first, and publicly). Meanwhile, please see the Perl6 section in
Related and Other Links for some handy links to help you get started
checking out current developments.
Best Regards,
Conrad Schneiker