Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re^3: Parrot, threads & fears for the future.

by jepri (Parson)
on Oct 24, 2006 at 19:13 UTC ( [id://580380]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Parrot, threads & fears for the future.
in thread Parrot, threads & fears for the future.

I didn't want to turn this into a language thread, but since you ask... it's Scheme.

Now, Perl5 and threading... that's not a good combination. Perl programmers habitually use a lot of side effects. Any time someone writes code like $x =~ s/a/o/ the parallelism goes away (maybe). To write a parallel program, every part of it has to be written with parallelism in mind. That sounds fine, except that most CPAN modules aren't written like that, so each one has to be inspected by hand.

And as someone noted above: even reading a perl variable can change it, and that's not counting what happens if someone hands you a list of Tie:: variables or objects or something like that...

In Scheme, all I have to do is signal that a part of my code has no side effects and then my macros can do things like parallelise all the arguments to each function call*. I don't have to think about it any further.

*I'm not saying that's a good idea, I'm just saying I can do it...

___________________
Jeremy
I didn't believe in evil until I dated it.

Replies are listed 'Best First'.
Re^4: Parrot, threads & fears for the future.
by Anonymous Monk on Oct 25, 2006 at 08:30 UTC

    In Scheme, all I have to do is signal that a part of my code has no side effects and then my macros can do things like parallelise all the arguments to each function call*. I don't have to think about it any further.

    I guess that's an ability that could be build into Perl6 (or even Perl5). That is, signalling that there are no side-effects.

    The interesting case is of course, what if the programmer tells the compiler that there are no side-effects, but in reality, there are? The programmer could be deliberately lying, or just not knowing the internals of the language implementation well enough to know (or it could be that in the implementation (aka compiler/interpreter/run-time environment) the programmer developed the program on, there were no side-effects, but there are in the implementation the program is actually run on).

    The idea of having parts that are side-effect free available for parallellization is great - but I rather have the compiler determine this for me than the programmer. (Of course, the compiler cannot determine this always, or else one could solve the halting problem. Unless the language is side-effect free to begin with.)

Re^4: Parrot, threads & fears for the future.
by tphyahoo (Vicar) on Oct 25, 2006 at 09:41 UTC
    Interesting, I started wanting to modularize my "parallel" bits after reading On Lisp. Common Lisp rather than scheme, but they're birds of a feather.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others avoiding work at the Monastery: (4)
As of 2024-03-29 05:02 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found