4 ms·
I'm always interested to see intelligent criticisms of one of my choice languages. Let's take a look at what he has to say: Slow build times complaint > It i
by runT1ME 13y ago
I'm always interested to see intelligent criticisms of one of my choice languages. Let's take a look at what he has to say:
Slow build times complaint
> It is essentially impossible to practice TDD in Scala simply due to the time it takes to compile.
Hrmm, that's interesting, because it sure seems like other people are able to do this. I agree, the slow build times are annoying, but let's not exaggerate.
SBT critiques
>That punctuation-strewn build system I was forced to use was just taking advantage of Scala’s ridiculously flexible syntax.
Yeah, I get it, everyone makes fun of SBT's syntax.
Language is complicated
This is where it just kind of descends into whining about how 'hard' the language is. He claims javascript is a "simple" language. Does he just not count the weird edge cases when thinking about complexity?
Type inference complaint
> And this is the real death knell for Scala. Hindley-Milner Type Inference is a fantastic thing.... It’s enabled monads, which you want to be able to understand and then use in a type-free language.
WAT. I don't think those words mean what you think they mean.
>In my mind, Hindley-Milner was always the promise and the pay-off for Scala...I know this is the fault of the JVM’s use of type erasure. I don’t care.
O REALLY? Go on...
Maybe if this guy had cared enough to do a five second google he'd realize that Scala doesn't use hindley-milner type inference.
Bottom line is, I think I have a good understanding of the type of programmer this guy is, and it's exemplified nicely in this quote right here:
>Sure, with another couple hours we would have been able to figure it out… [but] We ended up copying and pasting the same four lines into all our endpoints. A dark moment.
For an intelligent critique of the scala langauge see here:
http://www.reddit.com/r/haskell/comments/1pjjy5/odersky_the_trouble_with_types_strange_loop_2013/cd3bgcu http://www.reddit.com/r/haskell/comments/1pjjy5/odersky_the_...
- plorkyeran 13y agoThe "simple language" comment was about CoffeeScript, not Javascript. One of the common complaints about CS is that you absolutely need to know what JS every nontrivial CS contruct compiles to, but he doesn't consider this a big deal because there simply aren't very many of them. Scala, on the other hand, has more features that he considers "magic" than he can easily keep track of.
- hp 13y agothe sbt point is really outdated; sbt 0.13 only ever requires you to use "foo := bar" (assign bar to foo), though one might choose to use convenience operators such as "foo += bar" (append bar to foo). sbt's syntax has been cleaned up nicely and now it has very clean syntax.
- atrn 13y agoI worked with the article's author. The build system mentioned was not sbt but a custom, in house, thing that was really just a medium sized Scala program that was used to build a number of large C++ programs, libraries and some other things). There were no build scripts but just raw Scala code fragments distributed over the hundreds of directories involved. Overall it was a pretty awful system but it would have been awful in any language given the approach taken (I hated it with a passion).
- benburton 13y agoTDD in Scala is very easy. I do it every day on several large Play! applications. I feel as though the author is doing something crazy, like compiling everything on every test run and always running all the tests.
- asdasf 13y ago>Maybe if this guy had cared enough to do a five second google he'd realize that Scala doesn't use hindley-milner type inference. That's his point. Scala doesn't use HM and it needs to. He says the reason it doesn't is because of the JVM, which seems misguided.
- quatrevingts 13y agoHe states that H-M is not used because of the lack of reified generics, which is completely irrelevant. (Hint: type systems perform analysis at compile time; "reified generics" means having type arguments available at run-time.) H-M is not used because it is not compatible with subtyping or method overloading, which are both critical for Java interop. There is no particular reason that Scala needs to use exactly the H-M system.