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.
I am finding all the feedback very interesting. Everyone I have shown it to agrees that it is easier to read. Admittedly, showing it to a dozen or so personal contacts does not make for a very good sampling. Given the number of people that don't seem to like it, I will have to rethink making it a default. I will definitely make it an available option though.
Thanks to everyone for the feedback ... from both sides. I sometimes forget that I should not only think outside of the box, but occasionally get out of my box and see what other people think.
Money makes the world go round ... but documentation moves the money.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
I wish you so much peace, as the one you leave behind
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
Ha! I've had that quote on my signature for a while now. Great quote!
"When you are dead, you won't even know that you are dead. It's a pain only felt by others; same thing when you are stupid."
Ignorant - An individual without knowledge, but is willing to learn. Stupid - An individual without knowledge and is incapable of learning. Idiot - An individual without knowledge and allows social media to do the thinking for them.
Clueless: An individual without knowledge ... but, who has the intelligence, and resources, to learn ... who does not realize there is a need to learn, or, is unaware there is a deficit in their knowledge.
«One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali
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.
Last Visit: 23-Jan-20 18:33 Last Update: 23-Jan-20 18:33