622 karma · joined August 4, 2013
Blog: http://h14s.p5r.org
Website: http://c7n.p5r.org
[ my public key: https://keybase.io/p5r; my proof: https://keybase.io/p5r/sigs/nc-O1JGHhVORXxZAziE3DK0gZLCDdNTbt8wfDXYmHR4 ]
[1]: https://www.theguardian.com/society/2016/apr/07/the-sugar-co...
[2]: https://en.wikipedia.org/wiki/Antioxidant#Relation_to_diet
About the naming though, I was a little disappointed. Out of future, deferred, and promise, "promise" is the better term. The two others imply that something will happen later which is misleading because it's fine to have promises stick around long after they're fulfilled.
I had a similar experience. At one point I decided that I wanted to understand, step by step, how Ada Lovelace's Bernoulli program works[1]. There was a few steps that didn't seem right to me but I was sure if there were any bugs in there they would be well-known and mentioned somewhere I could find. This being one of the most iconic and historically significant programs ever written. Indeed I found more than one person claiming that the program was known to be correct.
It took a long time before I could believe that it wasn't just me not getting it, there were indeed a few things out of place and apparently there was just no mention of it anywhere on the web or in any of the research into the analytical engine I could get my hands on.
In that sense this is just giving people what they're asking for. They're not asking for security so they're not getting it.
Collection<String> getNames() { ... }
and in your code you do
var names = getNames(); if (...) names = Collections.emptySet();
Now, if the api later changes getNames() to be
List<String> getNames() { ... }
your code breaks. That's one of the advantages of only allowing this on final variables (besides reusing an existing keyword): it means this can't happen. Of course you already have a problem if the class has subclasses but I would argue that this is more subtle and problematic.
I think it's a point worth emphasizing because going cashless is a huge decision, especially the way we're moving towards in Denmark. There's a discussion to be had around it and if we just accept that it's inevitable or has already happened then that kills that discussion before it's even taken place.
1. This was also said about JS before people just went ahead and wrote JITs for it. Are you sure what they're saying isn't "we can't make a JIT for python" rather than "nobody can make one"? Because that's how it turned out with JS.
2. If given the choice, do you think the community would turn down a JIT to avoid making the reference implementation more complex? To whose benefit is that requirement? I've never heard people complain about other languages that they didn't have an easy-to-read reference implementation.
3. I've not heard this reported as a problem in practice for languages that have a JIT. It's usually toy programs where the JIT overhead is significant and they're so small and short-running that neither slowdown or extra memory is usually an issue.
4. Not everything that runs on cPython runs on PyPy so that's not a choice I'm necessarily able to make.
I'm not saying there aren't reasons to not have a JIT in cPython. But it's a choice not a natural law. And it's not ridiculous to suggest that they could make a different choice if they wanted, as JS eventually did.
The top thing, sometimes the only thing, that makes my scripts written for 2 not work in 3 is the change to print. Adding a print function is fine, I'm all on board with that; removing the statement though seems like pain for no reason. Bringing that up is not missing the point, it's hitting the nail right on the head.
That's a bold statement. Can you elaborate on what those reasons are?
The company gets to abstract away information that might cast them in a bad light, like bad working conditions, environmental impact, bad financials, etc., and maybe lets them screw over investors. But what makes it really "evil" (thought I don't think evil is a helpful concept to invoke) is that it can also help investors by giving them plausible deniability, they can invest without being bothered by unpalatable "implementation details". It can be used to make it easier to externalize the cost of doing business for both company and investors, to the detriment of the public.
Not necessarily what the original comment meant but it's why I think of it in those terms.
For now. It would be totally consistent with how Ponzi schemes work in real life to start with something legit that turns out to not be sustainable, and then turning it into something fraudulent. Say once people have started sending in stickers they should choose to offer a service where they hang on to your stickers to save you the trouble of mailing back and forth, and doubling your holding every 10 days. Then a sticker would be an investment and it would be a Ponzi scheme.
I can only hope they'll do something like that. It'd be totally in the spirit of Ponzi.
Of course I don't know ponzi.es' long-term plan, maybe they'll start taking investment and promising huge returns. That'd be pretty funny. Though I don't know if you can legally run a Ponzi scheme, even an ironic one.
You're not the underdog. You're the guy screwing over the underdogs. If that makes you feel bad then that's good, it should. Maybe that's a voice you should listen to?
(See for instance http://www.worldpublicopinion.org/pipa/articles/brmiddleeast...)
It feels like languages often struggle with compatibility issues down the road because they assume that they're making all the right decisions from day one. Since you guys are aware that getting this stuff right takes many attempts maybe it would factor in the design process of a new Rust feature that it might eventually be replaced? I can understand if it isn't though, it's another constraint on problems that are already very hard.