Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight

Re^15: Waiting for a Product, not a Compiler

by moritz (Cardinal)
on Dec 02, 2011 at 08:56 UTC ( #941264=note: print w/ replies, xml ) Need Help??

in reply to Re^14: Waiting for a Product, not a Compiler
in thread Moose - my new religion

We do commit to a set of features, not just to all the details of how they are implemented. For example it was clear from the start we'd have multi sub dispatch, but the exact semantics for figuring out which candidate to call has changed in the past, for very good reasons.

We also have a core of syntax and semantics that has changed very seldomly in the recent years, but we don't commit to backwards compatibility yet.

There are two main reasons for that. The first is that some areas of the language are yet largely unexplored, for example concurrency. While the Perl 6 design team had concurrency in the back of their heads when desiging the language (which is why much more stuff is done lexically, instead of in global variables as in p5), there is little concrete spec on how concurrency works yet, and it might affect some core features in small, backwards incompatible ways.

The second is that each commitment to backwards compatibility is a possible design debt. Perl 5 has way too much design debt already, and we don't want to repeat its mistake. So we rather commit later than sooner to backwards compatibility.

At some point in time we'll have to reconsider that choice, but I don't feel we're quite there yet.

Comment on Re^15: Waiting for a Product, not a Compiler
Replies are listed 'Best First'.
Re^16: Waiting for a Product, not a Compiler
by Herkum (Parson) on Dec 05, 2011 at 18:26 UTC

    While I can understand wanting to figure out how to implement certain features but are they really necessary to go forward? You mention concurrency, most of my programs are never going to need it so I don't see any advantage in holding up the WHOLE project to figure out that problem. Some features are great to have, but are not necessary to getting a core API started. Have a plan for integration in later.

    I can also understand wanting to avoid design debt, I mean XS is a horrible hack that I have never figured out. But I think having a great design, which may never be possible, should not stand in the way of a good design which could be used in the near future.

    I think this is more of a case of analysis paralysis, that a commitment to a current implementation would incur problems in the future. However, you will never get to the future if you don't commit to something. This leads to the problem, if the development team cannot commit to a design how can they expect other people to commit to it either.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://941264]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (7)
As of 2016-05-03 03:06 GMT
Find Nodes?
    Voting Booth?