in reply to Re^2: What is best for the future.
in thread What is best for the future.

I think that has more to do with solving a given problem in more than one way, or using a different syntax (From the available ones) to solve a problem.

Sure. But don't forget that CPAN modules cound to "avlailable ones".

What I'm speaking is more on the lines of using 10 different ways of class declarations, or switch statement declarations, each one looking different than the other. Thats a lot different than the TIMTOWDI philosophy.

I don't see the difference at all.

Perl 5 has no class keyword, so people invent their own mechanisms, upload them to CPAN, and then there's more than one way to do it.

Over time, one or two prove to be universally useful (seems to be Moose), and emerges as a quasi standard.

And is not good either.

No? I like the result. I'm pretty sure Moose is better than what would have come out if p5p had decided to build the one true object system in perl 5 core.

Perl may offer flexibilities to use various kinds of syntax to solve a problem. But it provides only one way to write a particular syntax.

Really?

say $x if $x > 0; if $x > 0 { say $x; }

That's two ways to write an if. Does it hurt Perl?

But it provides only one way to write a particular syntax.

Even if it were true, that's still besides the point. Various OO modules use different ways to write something to achieve (nearly) the same semantic (and not syntax). And that's exactly what timtowtdi is about.

Update: Your reply sounds like "timtowtdi is fine, but not in this case". And I agree that it's a good idea to supply a good default way of doing it, so that people don't feel lost, and consistency is achieved. But since it's usually not clear from the beginning what the default should be, we need many ways to do things in order to later pick a good default. Even for seemingly simple things like class declarations.

Perl 6 - links to (nearly) everything that is Perl 6.

Replies are listed 'Best First'.
Re^4: What is best for the future.
by Anonymous Monk on Aug 25, 2010 at 07:18 UTC
    Over time, one or two prove to be universally useful (seems to be Moose), and emerges as a quasi standard.

    Thats really good, I completely agree with you on this. There must be some standard. Else what would generally happen is a dozen different keywords would crop up for the very same semantic and that makes Perl code a touch difficult to maintain. Hence the same problem of maintainability keeps coming over and over again.

    Coming to your if example, That is not what I mean't. I think I was not clear.Two ways of using a 'if' is perfectly alright. But what if there are a dozen synonyms for if? .What I meant was the following.

    say $x if $x > 0; if $x > 0 { say $x; }
    say $x fi $x > 0; fi $x > 0 { say $x; }
    say $x on $x > 0; on $x > 0 { say $x; }

    Now this is just a 'if' example, if this thing gets replicated everywhere don't you think its not the right way forward.

      Two ways of using a 'if' is perfectly alright. But what if there are a dozen synonyms for if?

      So where is your threshold? How many ways to say the same thing are OK, and at how many it's one too much?

      But more to the point, the different OO modules don't do all the same stuff. Using Moose and declaring an attribute doesn't give you the same thing as Class::Accessor::Fast does. (For example Moose also gives you lazy default values and introspection for the attributes).

      So there are dozens of ways to write similar but slightly different things, which we have in perl too:

      while ($x > 0) { say $x; last; } say $x unless $x <= 0; $x > 0 && say $x; # I'm sure you can come up with dozens of examples # that achieve the same result, but are still # slightly different.
      Now this is just a 'if' example, if this thing gets replicated everywhere don't you think its not the right way forward.

      I agree that there's no point in introducing exact synonyms just for the sake of perceived diversity. But that doesn't compare to all the OO modules, which don't all do the same things.

      Perl 6 - links to (nearly) everything that is Perl 6.
        So where is your threshold? How many ways to say the same thing are OK, and at how many it's one too much?

        I think the current syntax defaults for stuff like if, while etc is OK. But going a bit higher onto things like multi methods, signatures, overloading, grammars have to have some standard or default way of doing. Else the syntax combinations will run into permutations and combinations. And there will far too much complexity to deal with. And since most of them offer same semantic capabilities, the competition will be more on which one has more syntactic sugar.

        For a moment keep 'OO' aside, Imagine what would happen if in a single program three different 'if' synonyms, 'switch' synonyms etc Start appearing in a huge code base and one is asked to maintain such code in the DarkPAN. Perl starts to suffer from same decade old 'unmaintainable' infamy.

        I'm not telling people must stop experimenting this kind of stuff, in fact we must continue. Neither am I suggesting we must halt at one way of declaring something, that would obviously be wrong. Since once a particular way is chosen and taken and then fears of breaking backward compatibility stops us from correcting past mistakes and those mistakes carry on over time.

        We must surely keep new things coming on CPAN. As you suggested pushing things into the core is not a good idea. But the alternate to that is "new syntax through CPAN".However a proper guide/policy is needed as to indicate what is saner/safer to use. Before a lot of code comes out.