The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
My guess: File names reflected some significant of ordering of, say, observations that gradually focused on some target, similar to a mathematical series expansion. When summing a long series, you start from the "small" end, not the "big" end, or you might loose a large number of small values that are insignificant one by one, but the sum of thousands of them can be quite significant. Adding elements in random order can loose small values.
When traversing an array by a foreach, you expect to get the elements by increasing indexes. Assume that there then comes a new implmentation processing all array elements simultaneously on a highly parallell machine (assume that the handling of each element is independent of the others, no locking issues). Partial results are returned in arbitrary order. This would be similar to processing files in arbitrary order.
A few (5-10?) years ago, I read a description of a new language that makes it explicit that with a foreach, or other set/array operation, the runtime system may process all elements in parallel if several processing units are available. (The compiler have to verify that there is access conflicts.) You can NOT rely on a foreach being sequential, or that the same modification added to all elements of an array is done row-wise or column-wise.
But which language was this about? All I remember is that it came from some large actor, such as Google. In today's description of Go on Wikipedia, I do not see this mentioned. Did I read about a different language? Or did I read some paper that was a proposal for what became Go, but this part of it was dropped from the language defintion? I found no programming language description in Wikipedia that matched my memory.
I considered my question to have a wider scope, and I expected to reach a broader audience, not limited to those who read comments (and reply to them) to a referenced article.
Another detail is of course that my personal privacy control plan says that I should be very restrictive in creating new login accounts where my individual statement may be tracked and correlated with statements on other web sites (that be through cross-site cookies or otherwise). I choose not to create an account on ArsTechnica for making my request there.
Python doesn't do parallel unless you explicitly make it do that, and the above is a C# example, not a Python example.
I guess it just demonstrates yet again we make thousands of assumptions about how things should work, and that gob function is no different. Some assumptions we realize and take into consideration, other assumptions slip through the cracks to be discovered years later. Hopefully this one didn't kill anyone.
Back in an old file achive at my home computer, I found the answer: "The Fortress Language Specification"
2.8 For Loops Are Parallel by Default
Here is an example of a simple for loop in Fortress:
for i ← 1 : 10
print(i " ")
This for loop iterates over all elements i between 1 and 10 and prints the value of i. Expressions such as 1 : 10 are referred to as range expressions. They can be used in any context where we wish to denote all the integers between a given pair of integers.
A significant difference between Fortress and most other programming languages is that for loops are parallel by
default. Thus, printing in the various iterations of this loop can occur in an arbitrary order, such as:
5 4 6 3 7 2 9 10 1 8
According to Wikipedia: "In July 2012, Steele announced that active development on Fortress would cease after a brief winding-down period".
The Wikipedia articles on Haskell's competitors for DARPA funding, IBM's X10 and Cray's Chapel, are so brief that it takes more searching to learn if they have any similar implicit parallelism of for/foreach and array operations.
The reasons for terminating Haskell development may have been sound. Yet, when flipping through specifications of now-dead languages, I frequently say to myself "Hey, that is a good idea! Why isn't that provided in our modern languages?" I am not sure that parallel for loops falls in that category, but I see e.g.
x += 1
y += 1
- of course we can do similar things in many other languages, but often with a lot more fuzz and syntactic molasses, when all we need is the simplicity of this. Haskell also tried to revive dimension arithmetic, which I haven't seen since Algol68: If you multiply av value of dimension km/h by a value of dimension h, the result is av value of dimension km. Assigning it to a variable of dimension kg would lead to a compile-time error.
Generally speaking: Software guys could learn a whole lot, and broaden their professional scope, from spending some time reading specifications and standards that never made it into the mainstream.
Generally speaking: Software guys could learn a whole lot, and broaden their professional scope, from spending some time reading specifications and standards that never made it into the mainstream applicable to the technologies they work with day to day.
Strongly disagree. Or: The essential thing for broadening your scope and learning something new (or maybe old) is exactly to lift your eyes from what you work with day to day. You can of course learn all the nitty-gritty details of the new interpeter version, or how to use every single option in the compiler, but that certainly isn't broadening your scope. You should spend some time searching for something new and different! That is broadening your scope.
There is nothing wrong by studying the specifications and standards applicable to what you work with today, but that is something different.
Adam was hanging around the garden of Eden feeling very lonely... God asked him, "What's wrong with you?" Adam said he didn't have anyone to talk to. God said that He was going to make Adam a companion and that it would be a woman.
He said, "This pretty lady will gather food for you, she will cook for you, and when you discover clothing, she will wash it for you. She will always agree with every decision you make and she will not nag you, and will always be the first to admit she was wrong when you've had a disagreement. She will praise you! She will bear your children. and never ask you to get up in the middle of the night to take care of them. She will never have a headache and will freely give you love and passion whenever you need it."
Adam asked God, "What will a woman like this cost?"
God replied, "An arm and a leg."
Then Adam asked, "What can I get for a rib?"
I have lived with several Zen masters - all of them were cats.
His last invention was an evil Lasagna. It didn't kill anyone, and it actually tasted pretty good.