160 karma · joined June 22, 2011
And the hypothetical boxed-in holdout scenario is simply not representative of what's happening in high demand areas in the US. We're preserving laundromats and parking lots in San Francisco and Manhattan. No one is trying to build towers in the middle of suburbia.
As problematic as CSS is, getting things in the right place is still dramatically easier than with Swing LayoutManagers, and when you do have problems, you have great tools in the browser to explain what's going on.
Browsers particularly shine in text rendering, naturally; text styling, font selection, word wrapping, etc. are all easily configurable. You want bold text next to regular text in Swing? You either need two JLabels, or you wrap your text in <html> tags and let the embedded HTML 3.2 renderer do it.
Start putting McMansions and Applebees in the countryside, and it becomes spoiled rather quickly.
I'm curious how many runtime errors persist due to the optionality of the type system. Perhaps code standards requiring all "library" code to be typed would be a good balance.
The thing with wine is that, regardless of price, there is a huge variation between wines at any price point, and a huge variation between individuals' palates. Until you know what you like, then you should expect that, with a set of randomly chosen wines, there will only be a mild correlation between price and enjoyment.
On the other hand, once you know that, for example, you like aged traditional Barolos and don't care much for Napa cabs, then it won't surprise you if you like the $40 Barolo more than the $150 cab.
Also, the implicits shown are any implicits which can be invoked on Iterable, which includes all implicits which can be invoked on Any.
If only Python supported multi-line lambdas...
But writing exception-safe code IS trivial, in basically any language except C++. Garbage collection is all you need in most cases, and try-with-resources/RAII/etc takes care of closing I/O.
Note that Go still needs defer() to reliably take care of the latter, so it's not clear to me what is gained by the omission (or rather, strong deprecation) of exceptions.
This statement, part of the standard Go talking points, seems to be designed to persuade the unsure to give the language a chance, "and generics will be around later once we figure it out." Not likely.
I think the designers know that no perfect shining implementation of generics--compatible with all of Go's existing design decisions--is going to arise deus ex machina after eluding researchers for all these years.
As much as I love high-level programming, many of the most interesting and important problems are ones where a "small" constant factor is the difference between great and mediocre.
(You would not be able to do stack allocation of locals in frames that contain lambdas (unless you could prove that the lambda does not escape).)
Lambdas are what make operations on data structures convenient in Scala and Clojure, not saving a few characters on the handful of literals in your code.
Not to mention the fact that this makes it harder to reuse data structures and algorithms, which can have a much bigger impact on performance.
The fact that he clearly knows so little of Haskell is what's most telling - you shouldn't be taken seriously as a language critic if you don't realize that Haskell also has all of those scary things he lists from the Scala table of contents, with the exception of variance annotations (since it's not OO).
The risk is that programmers might start using symbols in a way that is not obvious, but what is obvious is highly contextual. I'd prefer it not be the language designer who decides which operators are obvious enough to be allowed in my context.