5 ms·
The title sounds like a bad news to my ears.
by ngrilly 10y ago
The title sounds like a bad news to my ears.
- lmm 10y agoOn one level yes. On the other hand it should hopefully reduce the FUD around alternatives with better type systems (Scala), if the type system is turing-complete in any case.
- calvins 10y ago> it should hopefully reduce the FUD around alternatives with better type systems (Scala), if the type system is turing-complete in any case. Beware of the Turing tar-pit in which everything is possible but nothing of interest is easy. Alan Perlis https://en.wikipedia.org/wiki/Turing_tarpit https://en.wikipedia.org/wiki/Turing_tarpit
- pron 10y agoThe problems with richer type systems (they're not "better", just more expressive, just as Dart's unsound, covariant type system is not better or or worse, just different) has nothing to do with them being Turing complete or not. And the "FUD" is nothing more than the very real reality that many teams find those language far too clever for their taste. I like Java, but others may not; you like Scala, but others may not. That's perfectly fine and normal, and doesn't make it FUD. As long as no one has good empirical evidence supporting their claims of their preferred language's superiority, these discussions are all about personal preference anyway. Being Turing complete or not is an intrinsic quality of the type system which has not been shown to have any effect whatsoever on the effectiveness of a language. Similarly, being more or less expressive, being sound or not, supporting subtyping or not, are intrinsic qualities that have not been shown to have either a positive or a negative effect. Those are all true properties -- like Coke cans being red -- but they cannot be assigned good/bad judgment other than in people's personal preferences -- until, that is, someone actually starts collecting data.
- lmm 10y agoWe don't yet have a lot of solid empirical evidence, sure - mostly because we don't have a good measure of productivity. But the fact that we can't measure it well doesn't mean it doesn't exist. There is a fact of the matter to be found, it's more than just personal preference. > And the "FUD" is nothing more than the very real reality that many teams find those language far too clever for their taste. I've heard people literally say "we shouldn't use Scala because its type system is Turing complete" (in an organization that was already using Java). I call that FUD.
- pron 10y ago> But the fact that we can't measure it well doesn't mean it doesn't exist. There is a fact of the matter to be found, it's more than just personal preference. I agree, but we still don't know which side has the advantage and how big the effect is. I believe that if we somehow control for all other factors, the effect of linguistic features is very small, but that "simpler" languages like Java/Kotlin would have the (small) advantage over "complex" ones like Scala. I can support this from personal experience (and also for theoretical reasons), but I can't prove that. You likely have a different experience (and other theoretical justifications), but can't prove your conjecture, either. > I call that FUD. I call that silly. It's just as silly as using intrinsic features as a positive. We shouldn't use Scala for a hundred reasons, none of them having to do anything with the formal language acceptable by its type system. ;)
- Avshalom 10y agoEh, turing complete is a really low bar to clear. In practice it just means the compiler can't be proved to halt on valid code. Avoiding turing completeness requires either very very careful design OR (trivially) a hard limit on size/iterations the compiler is allowed to make (a sufficiently small limit, obviously we call many things turing complete colloquially that have very low limits anyway like 8-bit cpus with ~kb of memory)
- TeeWEE 10y agoTuring complete is by now means a 'low bar'.. Turing complete means that a language, system can compute anything. Anything that can be computed, can be computed with java generics. Thats what it says. Its quite a important term.
- taeric 10y agoI believe the intent is that it is not a very informative bar to cross. Consider that Conway's Game of Life is Turing complete. Doesn't really increase the usage of it for solving problems. Basically, the expressiveness of a language is unrelated to it being Turing complete. And is much more relevant for most conversations.
- Avshalom 10y agoBasically all you need for turing completeness is the ability to jump/branch/ignore-some-bits on some criteria see SUBLEQ or cyclical tag systems or XY combinators. it's actually very hard to avoid in a system that is supposed to do some sort of computation.
- mikeash 10y agoIt's a low bar in that it's easy to achieve. So easy that it's often done by accident, as is the case here and in many other cases (C++ templates are another example). It often takes more work to define a useful language not to be Turing complete.
- naasking 10y ago> In practice it just means the compiler can't be proved to halt on valid code. Which is a terrible outcome, and isn't a problem for nearly any other language save C++.