4 ms·
Great to come across such an even-handed review; thanks! One quick note: > Other than cherry picking studies to confirm an long-held position, the most common
by bkirwi 12y ago
Great to come across such an even-handed review; thanks!
One quick note:
> Other than cherry picking studies to confirm an long-held position, the most common response I’ve heard to these sorts of studies is that the effect isn’t quantifiable by a controlled experiment. However, I’ve yet to hear a specific reason that doesn’t also apply to any other field that empirically measures human behavior.
In practice, I'm not actually aware of any good studies on 'tools productivity' in any other fields. (And it's not for lack of strong opinions -- grab a professional photographer sometime and ask them about Canon vs. Nikon.) I think it really is fundamentally difficult to measure things like this: getting the most out of a tool can take years, and ecosystem factors can outweigh even a large difference in 'inherent quality'.
If we care about using nice languages, it seems like the best thing we can do is try and lower the impact of these external factors. I think the situation here is actually pretty promising -- projects like LLVM take a lot of the heavy lifting out of implementing a performant compiler, and the JVM and CLR are becoming more and more hospitable to diverse language implementations. There will always be a cost to choosing an unpopular language -- but the smaller that cost is, the easier it will be for better technologies to win out in practice.
- chadzawistowski 12y agoI know the CLR was designed to support multiple languages from the very start, whereas the JVM has historically been very tied to Java. What sort of recent improvements have made the JVM 'more hospitable to diverse language implementations'?
- bkirwi 12y agoThe big one is the recent add of the 'invokedynamic' instruction, which has dramatically improved the performance of dynamically typed languages.[0] Mostly, though, it's just externalities from the slowly-and-steadily-improving Java language; for example, the improved support for anonymous functions in Java 8 also promises to make Scala faster. [0]: https://docs.oracle.com/javase/7/docs/technotes/guides/vm/multiple-language-support.html https://docs.oracle.com/javase/7/docs/technotes/guides/vm/mu...