Forgot your password?
Perl Programming

Exegesis 7 Released (Perl 6 Text Formatting) 319

Posted by michael
from the folding-spindling-mutilating dept.
chromatic writes " has just published Exegesis 7, Damian Conway's explanation of how text formatting will work Perl 6 (and now, Perl 5, thanks to his Perl6::Form module) will work. Think of it as Perl 1 for the 21st century. Also, Parrot 0.1.0, the virtual machine for Perl 6 and several other dynamic languages, released on Leap Day -- ever wanted to program in an object oriented assembly language?"
This discussion has been archived. No new comments can be posted.

Exegesis 7 Released (Perl 6 Text Formatting)

Comments Filter:
  • by rgmoore (133276) * <> on Thursday March 04, 2004 @08:37PM (#8470748) Homepage

    One thing that you really have to love about the people who write Perl is that they have a sense of humor. This kind of document could be extremely boring and bland, but Damian had the good sense to liven it up by using humorous examples, mostly drawn from Shakespeare. He's doing some great work, but he's also obviously having fun doing it.

    • by Saven Marek (739395) on Thursday March 04, 2004 @08:44PM (#8470813)
      The long lost art of Good Documentation. There's been quite a case made lately (read ESR's CUPS rant for an example) for software that doesn't need documentation, when its method of use is made obvious merely by it's design. I think for consumer software that's just meant to be used one or two ways sure that's a good idea.

      But for something like Perl, it's all in the documentation. Here's to writers like Damian Conway not only providing summaries for new releases, but writing the original documentation!. If only it paid well!

      That been said O'Reilly would sell a good deal less books if the original docos were all they should be cracked up to be. Guess it doesn't have to be that good! There's nothing like getting a new fresh O'Reilly title in the mail.

      Mac desktops, OSX hints, scripts and more []
      • by ajs (35943) <ajs&ajs,com> on Friday March 05, 2004 @02:12AM (#8472923) Homepage Journal
        Documentation is far and away the thing that sets Perl apart from other languages. There are some bad things you can say about Perl's documentation, but most of them are criticisms that you can't even begin to make of other programming languages because they simply aren't in the same ballpark.

        I blame POD for this. POD [] is just a simple set of markup controls you can add to a plain text document to make it easy to translate it into other documentation and markup formats. It's so simple in fact that there's really no mental hurdles to sitting down and writting the docs for your program, module, language feature, etc., and so people do! Just about every peice of code uploaded to CPAN has a full suite of documentation for every module it provides for this reason. What's more, you can type "perldoc Foo" on any system with the "Foo" module installed and get a copy of that documentation ready at your fingertips.

        I even use Pod at work. it's an easy format to teach to people, and what could be simpler than writing a simple text file documenting a procedure you want people to follow. Then it's automatically turned into HTML and added to our internal Web site. Would that the rest of my job was that easy...
        • On the other hand, nowhere in Perl's documentation is it fully documented what

          $a = $b + $c;

          does. Compare this with languages like C or Scheme or (I think) Python that have a formally defined and documented semantics (even if C allows for some cases that are explicitly implementation-defined or undefined behaviour).
        • If you like POD, then Python's doctest module [] will blow your mind. Basically, you include example code snippets in your documentation to demonstrate how the code is supposed to work. Then, the doctest module finds all of those snippets, evaluates them, compares them to your example results, and reports on any differences.

          So, not only can you easily document your code, but you can trivially insert automated test cases for later verification. Good stuff, that.

          PS: I'm at home, sick with a fever, and jac

    • by Anonymous Coward on Thursday March 04, 2004 @09:02PM (#8470965)
      I was lucky enough to be lectured by Damain Conway on the fundamentals of programming in C. Easily the best lecturer I have ever met. Of all the lectures in Computer Science he was the only one who managed to pack out the theatre everytime. I swear people came in just for the show.

      A great combination of humour, intensity and analogies created an enthusiasm to listen and in turn learn. He even spent long hours writing applications to demonstrate principles (think virtual C intepreter with GUI).

      Whats more he loved to teach, he wasnt just there to complete his hours required like most lecturers.

      I wish we could find more people as talented as Damian to teach us. The world would be much smarter if we could.
      • by Vagary (21383)

        Maybe they all go off and become Perl programmers instead of going to grad school?

        But seriously: academia has very little room for people with interests like Damian's. Academia does not encourage the kind of research that would make professors better teachers, instead the research should be as esoteric and far from undergrad subjects as possible. And grad students who like to "hack" are told to get over that impulse despite the fact that it would probably make them better teachers.

    • That most be a personal attribute of the author because sense of humor in scripting languages is fully a property of "Monty" Python.
  • Uh... (Score:5, Funny)

    by double-oh three (688874) on Thursday March 04, 2004 @08:39PM (#8470769)
    "ever wanted to program in an object oriented assembly language?"

    Uh... I gotta say... No.
    • Re:Uh... (Score:5, Funny)

      by Brandybuck (704397) on Thursday March 04, 2004 @09:10PM (#8471016) Homepage Journal
      I thought about this for five seconds in pseudo assembler, then my brain started leaking...

      register cx public inherit register ax
      push bx
      push dx
      ax::pop cx ax
      shl bx->shr
      • Re:Uh... (Score:5, Informative)

        by orthogonal (588627) on Thursday March 04, 2004 @11:52PM (#8472171) Journal
        I thought about this for five seconds in pseudo assembler, then my brain started leaking...

        Leaking is especially apropos, because you should be thinking about encapsulation -- keeping implementation details from leaking --, not inheritance.

        I actually did a toy program or two -- very toy, class assignments -- in assembly after I knew C++, and consciously employed an Object Oriented outlook in designing the programs.

        This really is easier than it might seem at first: the second biggest hurdle -- and the most important first step -- to OO design is to always think of the entities in your program as objects with responsibilities.

        (The biggest hurdle is discovering -- and I use the word "discovering" intentionally, because it's a iterative process of exploring your problem domain -- where to "carve nature at the joints", or where one object ends and the next starts. Alas, a further discussion of this hurdle is beyond the scope of this comment.)

        Given that you keep in mind that you're dealing with objects, and that OO requires you to do so polymorphically, -- that is, you want to be able to do the same sorts of things with objects of different sizes and shapes -- you'll quickly find that you need a level of indirection, some stand-in for the actual object, a proxy that is itself the same size and shape for every kind of different object. In C (and C++ and Java) that "same-ness" proxy is a pointer; in perl, it's a hash, which the language conveniently handles the pointing to; in assembly it's a pointer too, or given assembly's inherent weak typing, a memory address.

        Just as the real first parameter to every C++ member function is the (hidden and implicit) this pointer, any object-oriented assembly is going to have to pass an object pointer to any functions called on that object. The object pointer will be the address of the actual object, and the object's state, instead of residing in numerous functions -- as you'd do in non-OO structural programming -- will reside in the object, at that pointed to memory.

        Finally, and most tedious, is the need for one function called on the object to access other member functions of the object. Essentially, we need a way to determine which of several possible functions foos should be the foo called for a particular object. C++ generally implements this as an array of pointers to function, perl by means of a hash map. Implementation details are implementation details, but essentially you need to specify some ordered list of (address of) functions when the object is created. A naive (and inefficient) implementation that would look like very late binding (and weak typing) to a C++ programmer would be simply to have each object include in its state an array of address; better solution would, as usual in computer science, involve a few more levels of indirection.

        The point I'm trying to make is this: Object Orientation isn't so much a property of one language or another -- although some languages support it far better than do others --, as it is a property of the way you think about the problem domain and about programming in general. It's an outlook, a mindset, a world-view, and it's maintaining that world-view, much more than worrying about the implementation details, that matters.

        Good Object Oriented programmers can -- and do -- write OO code regardless of the language they're writing in. Programmers who still don't get OO will write bad, pointless OO even in languages that support OO the best. And really good programmers know when to use OO, what parts of it to use, and when not to use OO.
    • Me either ... (Score:5, Interesting)

      by pavon (30274) on Thursday March 04, 2004 @09:12PM (#8471028)
      but Parrot is really starting to excite me.

      The main reason being it's potential use as a generic high level "ABI" of sorts. Look at GTK/GNOME for example. The developers choose to use C as the base language, largely because it was the easiest language to create bindings for - everything can link to C. But the problem is that C only implements procedural concepts. Anything else must be crafted from hand, like gObject. So you end up reimplementing all the features of a high-level object oriented language, in C, and often this implementation isn't even as efficent as the high level language's implementation. On top of that, when create bindings for a high level language, you wrap all of these gObjects inside of a native language object, and end up with double the overhead. So what it comes down to is that you worked four times as hard, and came up with something twice as slow, just to be able to have an object oriented library that many languages can link to.

      Parrot has the oportunity to be for object oriented languages, what the C ABI has become for procudural languages - a common interface for programs of different languages to communicate. Imagine having high level libraries, that can be efficiently used by python, perl, ruby, befunge. Or having scriptable applications that are not just scriptable by one language, but by anything that targets parrot.

      When you add to that they fact that it will be cross-platform, and more efficent then most of these high level languages were to begin with, it's hard not to get excited.
      • Re:Me either ... (Score:5, Insightful)

        by pbox (146337) on Thursday March 04, 2004 @09:32PM (#8471175) Journal
        Those are the promises of Parrot developers. It is however not that hard (but less wise) to get excited about promised values. It is better to get excited about delivered promises...

        Parrot is not the first try at this "execution machine" model, and I suspect not the last one either. The only ones that survived (so far) are the ones that target a single language. Python, Java comes to mind, while mono and .net is barely limping along. Maybe there is more to this high failure rate...

        At the same time it would be really exciting to see the birth of the first SUCCESSFUL cross-platform execution machine...
      • I was about to mention Microsoft's CLR (common language runtime), but it turns out it's only for compiled [] languages, by design.

        The JVM might work better, but I'm not sure. You can get other languages compiled for Java, but Java lacks support to invoke scripts (AFAIK). Seems like a shame. Java's 2 step process of compiling PLUS interpreting is annoying.

        • Re:Me either ... (Score:3, Informative)

          by aled (228417)
          I don't know if you are talking about invoking scripts from Java, in which case you a lot of alternatives, from beanshell [] to jython [] (the python implentation in Java) and most of them could be run through BSF [] to have an uniform API.
          DinamicJava [] on the other hand is an interpreter of a superset of Java.
          I don't know what you find annoying: compiling and executing. That's the norm for most programs. Java programs are Just In Time Compiled [] but that is done transparently by the virtual machine and is faster than
          • Yep, all good stuff. I respect Java quite a lot, though I don't enjoy programming in it.

            I look forward to the Java port to Parrot for many reasons, not the least of which is being able to provide all of CPAN (or CP6AN or whatever we end up calling it) to Java, Python, Ruby, Scheme, etc., etc.

            Imagine being able to grab a piddle from PDL (Perl Data Language), sub-class it in Java to add some interesting network abstraction, and then pass it to a Python class that someone else wrote. No more choosing the lan
        • I too am a little upset they didn't just use an existing VM instead of going and inventing another. IMO both the JVM and the CLR would have worked well enough for their needs. In fact at some point they were actually talking about using the JVM, I wonder where they went wrong... ;-)

          Interestingly there is a language they are writing for Parrot called Cola, which looks a lot like Java but runs as Parrot.

      • Re:Me either ... (Score:2, Interesting)

        by MourningBlade (182180)

        More than that, parrot gives people the ability to quickly implement experimental or highly specific languages.

        Want a language custom built for the analysis that your lab boys do? Want to use some old code from another language? You can do that quite quickly. Your compiler is written in Perl (or whatever you want), targeting Parrot.

        The speed with which people have been able to implement new languages is astounding (the python-on-parrot project made huge strides in a week or so).

        And since these languag

    • It's intriguing how the social significance of assembler programming has drifted over the decades.

      When I met my first computer, an IBM 1440, Assembler was the only thing they taught us and we developed some very useful application software to run within its 12,000 characters of decimally addressed magnetic core memory.

      Even through the transition to System/360, assembler was it, though there was Fortran on the 7044 at uni and PL/1 was coming as a promised advance on both Fortran and Cobol which others had
  • I predict... (Score:3, Insightful)

    by rokzy (687636) on Thursday March 04, 2004 @08:40PM (#8470775)
    lots of lame jokes about Perl code being incomprehensible despite the fact it can be the most readable.
    • by Anonymous Coward
      Shamelessly stolen from some other post here for your enjoyment ;)


      ($e,$x,$y,$v,@m)=(shift,0,0,1,1 ,1,0,0);unshift@s,$_,$_ for 1..$e-1;unshift@s,$e;
      @p=(1,0);for(@s){push@m,$d = shift@m;push@p,$a=shift@p;$d?$a?++$x:++$y:$a?--$x: --$
      y,$l[$y][$x]=($e=>10?$v10?'00':$v100?0:'':$ e10?$v10?0:'':'').$v++,for 1..$_}

      But yeah, I *do* like Perl, I use it and it's FUN. Moreso than most other languages *shudder*vbscript*shudder* ...
    • But that's the irony, it usually isn't.
      Oh well, this being /. and talking about Perl I'll be waiting the karma whipping.
      • the beauty of Perl is that it's very flexible. of course you *can* write massively obsfuscated code, but that's like saying linux is crap because the admin can fuck everything up with rm -rf.

        if you want, you could write Perl code that reads just like English (with the exception of regular expressions, but they're so powerful it's worth it).
  • by Shut the fuck up! (572058) on Thursday March 04, 2004 @08:40PM (#8470784)
    The screen is covered with what looks like a still shot
    of a copy of "The Matrix" screen saver.

    He looks at it a minute, and realizes that the coworker
    is reading it, so it can't be a screen saver.

    He thinks about it a second, and then asks "Do you always
    ready your email fully encrypted with PGP like that?
    Decoding PGP in you head like that is _really_ impressive!".

    "No," says the coworker, "that's just a Perl script I'm
    working on".
    • by sisukapalli1 (471175) on Thursday March 04, 2004 @09:02PM (#8470971)
      I know you are trying to be humorous and all... However, I feel this needs to be said...

      With Perl, you can make the script/program/module as beautiful as you want, or as ugly as you want. Just to contrast with Java, Java forces you to be verbose -- very verbose. People claim that it makes them productive and it leads to maintainable code, but too much verbose code can be very confusing. With Perl, you have a choice of coding style, but there is no choice with respect to verbosity in Java.

      There are places where clear, concise expression is useful. The tradeoff is that the readers have to have the vocabulary to comprehend what is written. Very few people complain "Gee, that guy writes in complex language, it is unreadable." Likewise, reading well written Perl code requires some familiarity with Perl.

      Regarding how things look to unfamiliar people, try to look at a screenful of the most beautiful poetry (just pick a language that you are not familiar with -- may be Chinese, some Indian language), and then look at Perl code :)


      • Java only forces you to be a little verbose. Try COBOL! You're right though.
      • by JInterest (719959) on Thursday March 04, 2004 @11:51PM (#8472164)

        With Perl, you can make the script/program/module as beautiful as you want, or as ugly as you want. Just to contrast with Java, Java forces you to be verbose -- very verbose. People claim that it makes them productive and it leads to maintainable code, but too much verbose code can be very confusing. With Perl, you have a choice of coding style, but there is no choice with respect to verbosity in Java.

        Other than your suggestion that Java code's "verboseness" makes it confusing, what you describe is exactly how things should be.

        Java is highly maintainable precisely because it doesn't employ a "there's more than one right way to do it" approach. That is why it is so suitable to distributed projects, multi-programmer projects, and in fact, why it is used in a lot of large open-source projects.

        Perl is a glue language designed to be used for short programs that perform useful tasks for an individual programmer. For such purposes, archaic structures and code conventions are perfectly acceptable. Can it be used for other things? Sure it can. COBOL can. PASCAL was. Doesn't mean that it is the best tool for the job, by the way.

        Maintainable code isn't produced by a desire for self-expression. It is produced by following conventions. Java platform code has been described as "self-documenting" precisely because it lacks shortcuts that create obscurity. Of course, no code is REALLY self-documenting, but Java code comes darn close.

        Please note that I am not knocking Perl. I use it myself and it is very useful for the things it does well. You should not, however, compare peas and apples. Perl is not comparable to Java. The languages are designed for different purposes and their structures and means of writing source for those languages reflect those differences. Perl was designed to be a super-shell language. Java was designed to be a net-ready systems and application programming language. Different purposes make for different languages and platforms.

  • by Tackhead (54550) on Thursday March 04, 2004 @08:42PM (#8470789)
    > ever wanted to program in an object oriented assembly language?"

    Y'know, that couldn't be ANY MORE WRONG than an HTML rendering of a .GIF of a psychotic nun in a bondage outfit clubbing a baby seal to death with an Al Gore doll.

    (With apologies to the denizen of the Monastery, from whom I stole the idea.)

  • ruby! ruby! (Score:3, Interesting)

    by Anonymous Coward on Thursday March 04, 2004 @08:43PM (#8470799)
    I'm sure Perl 6 will just be the bee's knees, but I have long since switched to Ruby (or Python if I need certain libraries). As I get older, the philosophy behind Perl (more than one way to do it) really gets on my nerves.

    So, I'm interested to see Perl 6 when it comes out, but I sure as hell won't be using it for anything.

    Also I'm looking forward to a common runtime between the three languages so I can use Perl modules from Ruby. Now *that's* the best of all possible worlds, eh?
    • Re:ruby! ruby! (Score:3, Informative)

      by geniusj (140174)
      I am also a huge fan of Ruby.. However, Perl 6 is going to benefit everyone. Ruby will be able to target the Parrot VM as well as languages like Python and TCL. What does this mean? As I understand it, this means that anywhere parrot is installed, your bytecode can be run. No matter what language it's written in. This also means you'll be able to do things like use perl modules from Ruby or use python modules from Ruby or use Ruby modules from Python, etc.

      Parrot is very exciting. I personally can't w
    • I'd have switched to Ruby too if it had innate support for Unicode.
  • by Fiona Winger (758088) on Thursday March 04, 2004 @08:46PM (#8470830) Journal
    I have been using Perl for years now, and I have to say, its not been the best language to use.

    Being one who's never gone along with the best methods of coding, I've stuck with Perl for the past few years. I deem myself pretty proficient in it, and I find a new plethora of exploration available to me now that Perl6 is out.

    The fact that Perl6 is now a subroutine rather than hardcoded allows me to directly stream the formatting through the test. This is immensely helpful, for it allows me to organize the code more efficiently and get more out of my hard worked code.

    Sure, some parts may seem like a step back, but this new versions is much simpler to use, and has some huge advantages that all coders should get use from. /me nods his hat to Perl6.
    • by Saven Marek (739395) on Thursday March 04, 2004 @08:53PM (#8470904)
      You know, I'm not very big on perl coding, but I do really like the language. Your point about never having gone with the best methods of coding is something I noticed however.

      I too wouldn't put perl as a "technically" best way to code ANYTHING, but it is however an intensely easy and powerful set of hacks, joined together quite well, and with a consistency that matches my own disorganised brain!.

      I'm good for that. Getting something technically 'correct' in the coding world seems to me to be revolved around far more efficient use of resources and cpu speed than perl does. In my job however we have thousands of fast PCs, and only so many good coders. I go for whatever supports the coders, and for many of us that's perl

      webalizer stats. thousands served monthly []
  • by Anonymous Coward on Thursday March 04, 2004 @08:48PM (#8470854)
    I have always thought of C as high level assembler, and C++ as object oriented high level assembler.

  • VM's (Score:2, Interesting)

    by beware1000 (678753)
    Virtual Machines really seem to be the way of the future. But I am really not sure how I feel about them yet.. Parrot will have to prove itself yet, especially with the aftertaste .net and java have left in my mouth. Sounds like an interesting idea though even if only for a neatly compiling language
    • Re:VM's (Score:4, Informative)

      by erikharrison (633719) on Thursday March 04, 2004 @09:01PM (#8470960)
      Well, actually VMs are the way of the past - in research circles the VM has been around forever.

      However, for what it's worth, Parrot's relationship to the JVM and the .Net VM is rather small. JVM/.Net are designed from the ground up to support systems languages (like Java and C#). They optimize for static typing and languages where most complexity happens at compile time. Parrot is a VM for languages like Perl, Python, and Ruby, (and TCL, and Lisp etc) whose typing is weaker, and where a runtime eval is a moderately common occurance.

      What specifically about the JVM puts you off? Or is it the host language that bothers you?
      • Re:VM's (Score:3, Informative)

        by voodoo1man (594237)

        JVM/.Net are designed from the ground up to support systems languages (like Java and C#). They optimize for static typing and languages where most complexity happens at compile time. Parrot is a VM for languages like Perl, Python, and Ruby, (and TCL, and Lisp etc) whose typing is weaker, and where a runtime eval is a moderately common occurance.

        I have to disagree about typing. Python and Lisp (don't know about the others) type systems aren't "weak," but rather dynamic, meaning that they keep type inform

        • by jstarr (164989) * on Thursday March 04, 2004 @11:06PM (#8471832)
          Not quite. Weak is not the opposite of dynamic, but the opposite of strong. Type systems may be either weak or strong, and may be either dynamic or static.

          A weak type system will allow implicit type conversions, even those that are 'lossy' or improper. For example, converting a float to an int without requiring a cast. Or, more importantly, treating memory references (pointers) identically to integers. Pointer arithmetic is an abuse of a weak typing system.

          Strong typing requires explicit casts and will throw errors where casts do not appear. Java, Lisp, Python are all strongly typed. Haskell is _really_ strongly typed. When you cast a object to type Object in Java, you are losing type information, but you are doing it _explicitly_.

          C, Pascal, and Java are statically typed. Variables are created with a specific type in the code, not on demand. Python and Lisp are dynamically typed -- a variable's type is determined at run-time.

          For example, in C:

          int foo( int a, int b );

          declares a function that returns type 'int' and takes two arguments a, b, both of types 'int'.

          In Python:

          def foo( a, b ):

          declares a function that may or may not return a value (and whose type is known only at run-time) and takes two arguments, which may be of any type (although, internally, the program likely assumes a type).

          There are some quirks in the type systems of many languages. In Java, for example, "str" + 3 doesn't have any normal meaning, but the developers have defined any operation using a string as concatenation. In Python, and in most languages, such an expression will either return an error on compilation (static) or when running (dynamic).

          However, all combinations are possible and type systems are a fertile area of research.
  • One of the reasons I love Perl (cut my teeth with Perl 4, now write a lot of Perl 5 code) is that it is a virtual swiss army knife of programming languages. There is a lot of power in there, but you can choose to use only as much as you might need. The "TMTOWTDI" ethos also appeals to me. And, in reading the updates on, I see that this exact same spirit is going into the creation of Perl 6.

    So why am I worried? Well, it feels like Larry saw Microsoft's .NET announcements and said, "Hmmm...multiple programming languages that all compile down to the same bytecode and execute in the same virtual machine...sounds like a reasonable idea to me!" The Parrot VM is a neat idea, that goes even further than .NET since it's multi-platform, and definitely will be very nice when it's finished. But I feel like it's going to delay Perl 6. And as nice as Perl 5 is, languages like Python and PHP are beginning to surpass it in feature set and ease of use. I don't want Perl 6 to be irrelevant when it finally shows up.

    Also, like a very impatient, immature kid on December 23, I want my Perl 6 now, damnit!

    But, I trust the Perl 6 team. They're smart people. Read the newsgroups and the forums, and you'll agree. When Perl 6 and Parrot are ready for prime-time, I am pretty sure that I won't be looking over at Python and PHP and feeling guilty anymore.

    Ah well, back to coding...
    • by Ars-Fartsica (166957) on Thursday March 04, 2004 @09:03PM (#8470977)
      Perl 6 is by all accounts a new language. Yes it will detect and parse Perl 5, but we can already do that now. How many coders will follow the new syntax and features? This is no small task, I have read all of the Apocalypse/Exegesis articles end-to-end multiple times and a lot of it still hasn't sunk in. This is a major change.

      Then there are the practical issues - will Parrot be fast enough and mostly bugless in time for Perl 6 to sit on top of it? I am concerned that we will need eighteen months of point releases and we haven't even had an alpha yet. Meanwhile people are looking at Ruby, Python, Mono/C# etc.

      I recommend they just wrap up whatever concepts they have now and start moving toward an alpha. If we don't see one in 2004 I think most people will have moved on.

      • by TimToady (52230) on Thursday March 04, 2004 @09:20PM (#8471082)
        I recommend they just wrap up whatever concepts they have now and start moving toward an alpha.
        Which is precisely what we've been doing for some time now. Apocalypse 12 will be out very shortly, and it will look like a lot of new concepts, but they're mostly concepts we've been aiming at for a long time now. Get this through your noggin--it's not the conceptualizing that's the hard part. The "wrapping up" is where almost all the effort goes, because that's where the hard work of design is. Anybody can come up with a list of new features. We've had the RFCs for three years, and you know what a mess they were...
      • I don't expect to make much sense of these writings just yet. Sure, they're fun to read, so that I have some idea of all the new things they're doing, but beyond that *shrug*

        I intend to buy the new camel book from O'Reilly (just like I did for Perl 5), which will surely help me learn all the new bits (and, quite probably, help me relearn the bits I only thought I knew).

        I wonder if they'll do anything new with regular expressions? (I haven't RTFA just yet, and I don't remember anything from the past exeg
        • Re:Camel book :] (Score:3, Informative)

          by dpuu (553144)
          You can read about the new regex syntax in exegesis 5 [] (and its corresponding apocalypse)
          • Ahh, very nice. Thank you :]

            In the mean time, I must say that I hope, now that I RTFA here, that Larry Wall & co. haven't been appropriating any of SCO's IP. I mean, just look at the following bits of code and judge for yourself if they look like something SCO might have written... ;]

            print form
            'Name Bribe (per dastardry)',
            '{[(11)[} {]],]]].[[[} ',
            @names, :lfill('*'), :rfill('0'),


            # X out any doubleplus ungood words
            $nextline ~~ s:ei/(@proscribed)/$( 'X' x lengt
      • Very few people will ever learn Perl 6, just as very few learned Perl 5. What they will do is absorb the basics of the language from examples they've seen an write a basic subset. This is what happens to all languages.

        The good things about Perl 6 are a) you have a rich and powerful language at your disposal that provides everything from dynamic grammar construction to advanced functional programming concepts and b) parrot will allow you to use libraries written in any other Parrot client-language.
    • I'm scared too... I started my programming days in Perl and am very fond of it's flexibility and ease of use. I wouldn't mind the ability to do some formal class declarations and error handling a la Java, but I'm worried.

      That said, Parrot sounds like it's going to shake some people up. From what I understand, it's a register based VM as opposed to stack based, meaning that preemption is possible. Judging from the speed and smoothness gained by using preemption in the Linux kernel, I'm drooling to see wh
      • That said, Parrot sounds like it's going to shake some people up. From what I understand, it's a register based VM as opposed to stack based, meaning that preemption is possible

        The difference between stack and register based has nothing whatsoever to do with preemption, and has to do with reduction in the number of opcodes (adding two numbers becomes one instruction instead of 3 for instance). You still have to save register sets the same way you have to save stacks in a stack-based VM, since the task yo
        • The reason Parrot is register based has nothing whatsoever to do with reduction in the number of opcodes. In fact, the Parrot VM opcode count is quite large, largely because of combinatorial issues. If every x86 opcode that used mod/reg/rm addressing was actually counted as (# mod/reg/rm combinations) opcodes, that would be roughly analagous to what's going on in Parrot.

          Parrot uses registers for speed, that's "all".
    • The Parrot VM is a neat idea, that goes even further than .NET since it's multi-platform, and definitely will be very nice when it's finished. But I feel like it's going to delay Perl 6.

      Nah, Parrot isn't the bottleneck. Parrot development has actually moved pretty fast: they quickly came up with a raw-functionality virtual machine, and at this point the Parrot engine seems to meet the basic runtime needs of Perl5, Perl6 [as specced out to date], Python, and PHP.

      Parrot isn't done yet to be sure, but it's already complete enough that, for example, the employer of one of Parrot's main developers is already using Parrot as the runtime engine for their corporate software. [I'd get in to details, but I forget the details -- Dan Sugalski talked about it for the Boston Perl Mongers a month or two ago.] Likewise, there's already a mod_parrot Apache module under development that will allow Parrot targeted code to run, and run very quickly, while embedded in the web server. Longer term, one of the target languages for Parrot is Z-code, so that Parrot will be able to run old text games like Zork and Hitchhiker's Guide To The Galaxy -- with luck, this could lead to Parrot being the embedded virtual machine for portable game machines.

      Parrot is, in other words, being actively developed, and there are big plans for it.

      Parrot is hardly holding Perl6 back.

      The bottleneck with Perl6 seems like the actual design work. Once Larry Wall puts out one of his Apocalypses, it never seems to be long before Damian Conway comes out with an explanation, including working code that can often be experimented with today under Perl5, with his Exegeses. There seems to be a ready pool of people eager to implement this stuff as it becomes available, it's just that the project is so *big* that it's taking a while for people to get anywhere with it in their spare time.

  • by Tailhook (98486) on Thursday March 04, 2004 @08:54PM (#8470913)
    ever wanted to program in an object oriented assembly language?

    Yes. However, some nights when I drive home from work I eye a bridge abutment thinking I'd like to bury my car in it at 140mph. So I'm not certain that whether I'd like to do something is a great way to evaluate it. What's your point?

    BTW, is there a simple way to disable an airbag? Isn't there supposed to be a switch someplace? Thanks.
  • by Ars-Fartsica (166957) on Thursday March 04, 2004 @08:55PM (#8470924)
    I appreciate Damian's work in clarifying Larry's writings, but the perl 6 project has three years (timed from Larry's first Apocalypse) behind it with nary an alpha in sight.

    I am sure something is coming down the pike, but making a huge announcement like a major rearchitect puts a lot of developers in suspended animation - unwilling to invest more time mastering and extending the "end-of-life'd" perl 5. Many of those people are now looking at other options.

    As an aside, I'm not sure where the consensus is coming from for the new language proposals - the code samples in Larry and Damian's writings are becoming more and more cryptic. I wonder if they are making perl 6 to unapproachable by new coders.

    • by Anonymous Coward
      Anyone that is serious about learning Perl, has already learned it in the three years of waiting.

      You don't pick a language because you think it'll be good in a year or two. You pick a language because it fits your current needs, and gets the job done.
    • I agree. I was really starting to get worried because - up until a few months ago - it seemed they had also stopped maintaining Perl 5. Then they came out with 5.8.[123] in fairly rapid succession.

      I think the combination of a long ramp to Perl 6 and no Perl 5 upgrades could have made the whole thing moot. Another year could have killed it.

      Anyway, I'm glad to see Perl moving forward. For some reason Perl is the only script language I know (I've done Perl, Python, Ruby, Tcl) that I don't have to rel
    • "end-of-life'd" perl 5?

      Where oh where do you get that? Perl 5 is a live and well, and has seen quite a large boost in support and development in the last several years. Right on the heels of the overdue perl 5.8, we've got 5.10 coming down the pike(still a ways off).

      There have been nice improvements in the perl 5 core, stable threading support, more useful core modules, major updates for unicode support, etc.

      Then there's POE (, and other stuff.

      Perl 5 is far from being "end-of-life'd".

    • by ajs (35943) <ajs&ajs,com> on Friday March 05, 2004 @01:31AM (#8472747) Homepage Journal
      I asked the same thing recently on the p6l mailing list []. Larry responded [] with some interesting news. First off, I had not realized that he had taken a lot of time off last year for health reasons.

      Second, he posted (as you can see from the link above) a full outline of Perl 6's specifications-to-be and explained that he's been spending a lot of time on A12. That's right, he's skipping over A7 (delegated to Damian) and A8-A11 (which he'll return to later) and doing the chapter on objects. This is an important part of the language, and really did need to be covered before the rest could be fleshed out. It seems that he expects most of the rest of the spec to be about as much work as A12 is alone, and he claims that's just a few days or weeks at most away from being finished.

      That said, keep in mind that the cryptic things you see on p6l are the result of reading code snippits written in a language that doesn't exist yet. Every time Larry steps in and explains things, the picture gets a bit clearer (partly because Larry is a great communicator but partly because he's quite capable of and willing to cut away a lot of noise and render some signal from its remains).

      Perl 6 is, as far as I can tell a lovely evolution of Perl... it's perhaps more orders of magnitude more evolved than I would have suggested as the next step, but looking at the good work it has resulted in for Parrot, I'm not sure I'd turn back.
  • It's too bad that the teams had been only joking about joining forces. If the teams had worked together to create a conceptual clone of .NET wherein Python and PERL could be used interchangeably in the same runtime, the OSS developer base would be very well off right now.

    Think about the possibility. First port PyQT and wxPython to parrot. You write your GUI code with Python and byte compile it to a neutral Parrot format. You need to do complex substring matching so you write some good reusable functions th
    • by geniusj (140174) on Thursday March 04, 2004 @09:24PM (#8471112) Homepage
      That's what Parrot is. Python and Ruby (as two examples) WILL be able to target parrot and run in the parrot VM.
    • Parrot is being designed to accept all dynamic languages. OSCON 2004 will be when we discover who wins the Pie-thon competition; in it, we see whether parrot is faster at running _python code_ than the current cpython.

      You can bet that Dan wouldn't be risking a pie in the face if he didn't care about whether or not parrot could host python.
    • I hate to be a pedant, but there is no such thing as "PERL." The language is properly written as "Perl," and the interpreter is called "perl."

      Don't ever write "PERL" in correspondence with a diehard Perl programmer.

      Only perl can parse Perl.

    • by ajs (35943) <ajs&ajs,com> on Friday March 05, 2004 @02:03AM (#8472878) Homepage Journal
      No one is joking on the Parrot side. Check out the Pie-Thon []

      Parrot will run Python before it runs Perl, *that* should demonstrate how commited Parrot is to not just being Perl 6's back-end.

      You'll be able to create a class in Python as a sub-class of a Perl 6 class which further derives from a Ruby class, and then call a method on such an object which is defined all the way up in Ruby.... no problemo. Parrot is going to change the way we choose programming languages for the tasks at hand....
  • Ewwwww (Score:4, Insightful)

    by unfies (754694) on Thursday March 04, 2004 @09:03PM (#8470980) Homepage
    ... ever wanted to program in an object oriented assembly language? ...

    God no. It's bad enough when a high level compiler attemps to guess what you want (C++, etc)... it'd be horrid if ya had to have something supposedly machine level guess...

  • and I can say I love the new stuff. No less powerful than regex, and no less obscure, easy to learn, use and abuse. Slightly easier to read and understand, though still tricky. Eh, if we had that in the pre-ncurses times! :)

    And for those who hate Perl, it's still worth reading, for great texts used in the "text formatting examples" like a recipe for 2 doomed souls or 10 reasons why you didn't do your English Lit. homework.
  • by No_Weak_Heart (444982) on Thursday March 04, 2004 @09:14PM (#8471044)
    Form follows format. From the end of this Exegis, some hightlights:
    "Report generation was one of Perl's original raisons d'etre. Over the years we've found out what
    format does well, and where its limitations lurk. The new Perl 6 form function aims to preserve format's simple approach to report generation and build on its strengths by adding:
    • independence from the I/O system;
    • run-time specifiable format strings;
    • a wider range of useful field types, including fully justified, verbatim, and overflow fields;
    • the ability to define new field types;
    • sophisticated formatting of numeric/currency data;
    • declarative, imperative, distributive, and extensible field widths;
    • more flexible control of headers, footers, and page layout;
    • control over line-breaking, whitespace squeezing, and filling of empty fields; and
    • support for creating plaintext lists, tables, and graphs.

    And because it's now part of a module, rather than a core component, form will be able to evolve more easily to meet the needs of its community. For example, we are currently investigating how we might add facilities for specifying numerical bullets, for formatting text using variable-width fonts, and for outputting HTML instead of plaintext."

    'cause i'm lazy, that's why
  • And I just started learning Perl 5...
  • by Dr. Zowie (109983) < minus city> on Thursday March 04, 2004 @10:02PM (#8471410)
    Perl is the most beautiful language I've had the pleasure of learning. Lots of folks complain that perl must be ugly since it's so easy to write really butt-ugly code in it; but it's also very easy to write mindblowingly powerful, clear code. Enough thought has been put into the language design that you can abuse most aspects of the language and still get what you wanted.

    It's easy to forget, when using perl, just how, well, tedious, it is to work in C (let alone C++) or shell or Java or even, yes, Python.

    The exegeses so far have been full of fabulous goodies to use and abuse. The main problem, as others have pointed out, is that perl6 is still largely vaporware.

  • OO Assembly? (Score:4, Informative)

    by gidds (56397) <slashdot.gidds@me@uk> on Thursday March 04, 2004 @10:06PM (#8471430) Homepage
    ever wanted to program in an object oriented assembly language?

    No, but if I wanted to, I could already [], thanks.

    • Re:OO Assembly? (Score:3, Informative)

      by ajs (35943)
      There's several probelms with that theory. First off, the Java VM is designed to run Java and not much else. This means that if you want to write JAVA, but in and assembly-like way you're all set. Parrot by contrast is designed to run any dynamically typed programming language, so you can write whatever you like for it.

      Also, the JVM is not really a very good development environment. It is, for the most part, only used as a back-end. Parrot is designed from the beginning to be programmed in because there wi
  • by jfdawes (254678) on Thursday March 04, 2004 @10:22PM (#8471531)
    After reading through a lot of this article and being blown away by the genuinely powerful and, dare I say it, awesome abilities that have been given to the form function, I'm left asking myself:

    "Who gives a crap?"

    Most the projects I've worked on for the last few years have predominately displayed text in web pages. Almost all the reports produced have been generated as HTML and then printed as necessary. The only text output done has been generally into log files, where you really don't need a lot of formatting.
    While this is obviously a really great, well thought out piece of coding, ... that's all it is, some geek's personal project that doesn't really seem to have much relevance to the real world.

    Maybe I'm just missing a huge community of people who spend most of their time looking at command lines and printing out reports in fixed width fonts.
    • Yes you are (Score:2, Insightful)

      by hummassa (157160)
      (missing a huge community etc.) many, many projects need the ability to write in fixed-width fonts to a printer, p.ex. the output of your supermarket cashier ticket / credit card ticket. This is a real world-class application to formats (because those little printers are best suited to the job and they write in monospaced). There are others, many, many others.
    • Perhaps the biggest thing I took from this is that the increasingly specialized and unused fixed width formatting functionality in Perl is moving out of the core language and into a powerful module. Those of us who don't need it will never need to worry about it; those who need it will find it actually improved over previous versions. Finally "write" will be free in Perl to mean something slightly less crazy.

      That said, I can think of one important use for fixed width formatting: email reports. Sure, yo

      • Good point. I'm still not convinced that it was worth the effort. Sure, there's problems with the format function and he's fixed a lot of them, but I'd much rather have him spending his time writing any number of powerful modules that are as well thought out and flexible.
        [Sentence using the phrase "Cost Benefit Analysis" elided]

        One that comes to mind is an extensible module I can use that lets me send exception reports as an XML attachment via email (or whatever other fun system you like) with as little
    • Ever notice html is just a lot of text? Ever notice that tables are what lots of reports are done in? Ever think that instead of some bizarre loop generating nested table elements so the boss can comprehend the data, you could now just use form?

      Obviously not.

  • "ever wanted to program in an object oriented assembly language?"

  • Downloaded the Parrot source code. No README or INSTALL in the top-level directory, but there is, with comments that seem to indicate that you run this first. OK, run it but it barfs on line 405:

    use Parrot::BuildUtil;

    there's no file with 'BuildUtil*' name in the source distro.

    Conclusion: not ready for prime time.

  • How does Perl templating mechanism to other templating implementation like Velocity []? I would like to know what pro/cons has each one or others that /.ers may have used.
  • by pkphilip (6861) on Friday March 05, 2004 @08:19AM (#8473978)
    Turbo Assembler (later versions) from Borland did support a level of object orientation. It actually shipped with examples of object oriented assembly code.

    OOPs in TASM []

  • by master_p (608214) on Friday March 05, 2004 @10:41AM (#8474782)
    I don't get it, since I have never worked with Perl, so I am asking the perl programmers out there: what is so special about plain-text reporting ? there are fine tools out there that can produce beautiful html reports that plain text will never be comparable to. I understand that text reports may have their uses in the back office, but that accounts for a small percentage of overall reporting.

    Furthermore, 'reporting' is a not a feature of a programming language. The same report package could be done with C++, for example. Will Perl 6 bring something *really new* in the programming languages department ?

"Just Say No." - Nancy Reagan "No." - Ronald Reagan