|Perl: the Markov chain saw|
Re: Why Perl 6 is taking so !@#$ longby tilly (Archbishop)
|on Feb 28, 2006 at 07:46 UTC||Need Help??|
Please allow me to state a contrary view.
It is my personal belief that neither Perl 6 nor any other mainstream language will ever be based on Parrot. Parrot is likely to continue to be an interesting project in its own right, but it won't ever do what people are hoping for from it. This view finally crystallized for me last summer when I was at Sam Ruby's follow-up Piethon talk. Since then I've only heard confirmation.
Despite much work, Parrot still can't run the Piethon. Not even close. We like to talk about how Parrot will be optimized for dynamic languages, unlike the JVM and .NET. Yet there is a version of Python that runs on the JVM and passes the Piethon. There is a version that runs on .NET and passes all tests but one of the Piethon. (The failing test is the number of comparisons that a sort does.) But Parrot doesn't have one.
Worse yet, according to Sam there is no good way to do it! The problem is that the Piethon heavily exercises Python's meta-model, so it really smokes out hidden assumptions about how Python is internally structured. Assumptions that are in direct conflict with how Parrot thinks Python should be structured. So you either have to alter how Parrot is designed, or else you need to write an interpreter in Parrot and run Python on that - losing all of the speed advantages that Parrot was supposed to give you. (In fact you're inevitably going to be a lot slower.)
Sam indicated that with some changes Parrot could work well. But whenever he pointed out the necessary changes Leo would say "that's stupid", Dan would avoid the argument with Leo, and nobody else would say anything. Which indicates that the technical problems reflect people problems. Which is bad because technical problems are easier to fix than people problems.
OK, now Dan is gone. But as Dan pointed out, he left in large part because of Leo. Well Sam left before him for the same reason. And Sam is a big loss. If you're writing a project like Parrot then you want people who have lots of experience in implementing interpreted languages on top of virtual machines. You also want someone who has been heavily involved in the core of multiple languages. It would be nice to have someone who has served on multiple standards organizations, and therefore has experience in sorting out competing technical needs. Sam has done all of those things. AFAIK, Leo has done none.
Therefore my belief is that Parrot will not be used for running any widely used high-level languages.
Now I'm sure that I will be criticized for saying this. "Bitch, bitch, bitch. Can't you do something better than complain?" "If you think it needs help, why don't you contribute?" etc. So let me respond to that in advance.
First of all what I am saying is not just a complaint. I am stating a measured negative opinion on the likelyhood of a project succeeding. I am showing the reasons for that opinion. Saying that people are not allowed to have and express such opinions is tatamount to saying that people are only allowed to listen to one side of the story.
Secondly the problems that I'm talking about are not ones which I feel that my personal contribution can affect one way or the other. They are intrinsic to the core people and design of the project. Unless I am willing to become one of those people and change that design, I can't affect that. And I'm not willing to do that because I lack background, time, and energy for the task. Contributing to a project that I feel is going to fail regardless of my contribution is a waste of energy.
Thirdly I believe that my opinion is reasonably well-informed. OK, I have not exactly been an active participant in Parrot or Perl 6. But I have followed the project over the years. For instance I've read most of Dan's Squawks, seen Larry and Damian's pronouncements, gone to multiple talks by multiple people, read many weekly (or often fortnightly) summaries, donated money to the cause, and so on and so forth. I'm not a random moaner on slashdot.
Fourth, note that I've criticized Parrot, not Perl 6. That's because I believe that Perl 6 will happen. It won't hit all of its original goals, but thanks to Audrey there is an implementation coming along.
Fifth I have a strong impression that there is an unfortunate amount of groupthink about Perl 6. People have invested enough into the dream that they don't want to hear that it might not work. And they don't want other people to hear that because they fear that it will drive away potential contributers and become a self-fulfilling prophecy. That's understandable, but I don't have that investment. I see no reason not to call it as I see it. And the way that I see it is that people are being told to shut up unless they agree with certain opinions. And that offends me, not the least because I happen to hold some of the opinions that are not supposed to be expressed.