Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re^6: Perl 6 <-> Perl 5 bridges (was Re^2: Capturing parenthesis and grouping square brackets)

by raiph (Chaplain)
on Jun 28, 2013 at 18:38 UTC ( #1041314=note: print w/replies, xml ) Need Help??


in reply to Re^5: Perl 6 <-> Perl 5 bridges (was Re^2: Capturing parenthesis and grouping square brackets)
in thread Capturing parenthesis and grouping square brackets

It does make sense to mix languages inline IF (and almost only if) they are NOT closely related.

It seems plausible that the most sensible use, especially long term, for the P6 language mixing capabilities, will be to use noticeably dissimilar langs and DSLs.

Note that this can be P5 and other langs just as it can be P6 and other langs. In other words, one way to treat P6 is as a framework for P5. This way you get the non-lang benefits of P6, such as the fact that its P5 will (presumably) soon run on Android, and has a really nice debugger, etc. without the distraction of P6 syntax.

The principle that different things should look different is associated with Larry Wall, a linguist, the guy who designed P5 (and P6). In other words, yes, he's very sensitive to this issue of confusing similarities (and I reckon hundreds of others that relate to human and computer languages).

When I said "there are heavy downsides to mixing langs like this" I specifically meant P5 and P6 and the issue that their similarity can be confusing. But I also said "I don't agree that those downsides are so great that it never makes sense to mix langs inline, even ones that are closely related" by which I specifically meant P5 and P6, on occasion (which perhaps agrees with your "almost" qualification in "almost only if"?).

It totally makes sense for folk to avoid inline mixing of P5 and P6 (or one of these and PHP or whatever other similar looking langs are available for inlining) if they can get the job done another way. But, imo, having the option available to mix them if one is in a tight corner time/skills/resource wise, during the years of transitioning from using just P5 to using a mix of P5 and other langs, is a valuable one, one that makes P6 more valuable for P5ers, not less.

  • Comment on Re^6: Perl 6 <-> Perl 5 bridges (was Re^2: Capturing parenthesis and grouping square brackets)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1041314]
help
Chatterbox?
[robby_dobby]: Corion: Heh. This whole thing smells of Strategy Pattern or MVC pattern.
[Corion]: And performance linear to the number of registered one-shots doesn't feel that bad. Maybe I should collect statistics on how many callbacks are outstanding ;)
[Corion]: choroba: Yes, but the longer I thought about efficient hashes mapping the event type back to their callbacks, and how to keep them in sync, the more I thought that all that optimization might just not be worth it, even if it's horribly inelegant
[Lady_Aleena]: My biggest problem with hashes at the moment is one with 2,501 keys.
[choroba]: how many event types are there?
[Corion]: Also I found that I can't conveniently weaken an array slot, which also is inconvenient, as I want my one-shots to disappear if the caller discards them
[Corion]: choroba: Currently two or three that my program handles (WWW::Mechanize:: Chrome), but there might be more that become interesting
[Corion]: But I don't expect more than 100 to be active at the same time, so I'm not really sure if there is a not-too-fancy data structure that is maintained with few lines of code where the performance is better than the linear scan ;)
[Corion]: But I should do a mock-up program so that others can see what I'm talking about ;)
[robby_dobby]: Corion: I hope you know all too well that passing around "fancy" datastructures is a recipe for disaster :-)

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (7)
As of 2017-05-29 07:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?