Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

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

by tphyahoo (Vicar)
on Oct 24, 2006 at 18:21 UTC ( [id://580351]=note: print w/replies, xml ) Need Help??


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

I guess I'll bite. What is the language?

And anyway, why can't it be perl with the parallelization bit broke up into functions whose computation are mutually independent, like I'm trying to do with the MapReduce stuff posted recently?

( Using functional programming to reduce the pain of parallel-execution programming (with threads, forks, or name your poison))

  • Comment on Re^2: Parrot, threads & fears for the future.

Replies are listed 'Best First'.
Re^3: Parrot, threads & fears for the future.
by jepri (Parson) on Oct 24, 2006 at 19:13 UTC
    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.

      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.)

      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://580351]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2024-04-24 11:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found