Про скалу расскажите?

shlyumper

А что, реально все настолько плохо?
...
We thought it would be avoidable as we were planning on writing a series of small apps and services. We were wrong. It is essentially impossible to practice TDD in Scala simply due to the time it takes to compile. Though we were using Gradle in daemon mode, test runs on a tiny code base could still take a minute 20 seconds. This is, frankly, ridiculous.
...
In my mind, Hindley-Milner was always the promise and the pay-off for Scala. And now I’ve discovered it’s not really there. I know this is the fault of the JVM’s use of type erasure. I don’t care... The issue here is that Scala can’t perform full type inference across your program. As a result, you very frequently have to provide a type annotation to help the compiler out.
...

apl13

The problem is that when you’re staring at a chunk of Scala code, you’re only seeing about 60% of the code. I’ve seen this issue with CoffeeScript. You can’t actually read CoffeeScript without automatically converting to JavaScript in your head. So you need to already know JavaScript.
Вот эти фразы, очевидно, poster's issues и мало имеют отношения к языку.
Human RISC machine, лол.

apl13

The workflow I ended up with was to write a function without any type annotations. Ignore all the red lines of the IDE’s confusion. Compile the code. In the output look for a warning about (Long => Int) return value being ignored in a function returning Unit. Copy (Long => Int) into my code as the return type annotation of my function. Compile again.
The issue here is that Scala can’t perform full type inference across your program. As a result, you very frequently have to provide a type annotation to help the compiler out. This is not how type inference is supposed to work. I really don’t like pasting in opaque incantations that are for the computer, not humans.
Я еще понимаю, про старые плюсы такое писать.

shlyumper

А со скоростью компиляции как?

apl13

Я припоминаю только, как компилировал список всех чисел Фибоначчи, ужасно долго.
Это потому что type inference пытается неявные преобразования во все щели.

Funia

Да, компилятор действительно тормозной и это, похоже, самый популярный негативный отзыв о скале. Хотя нкрементальная компиляция помогает. И TDD вполне можно практиковать через sbt "~test" или еще лучше sbt "~test-only MyClass". Т.е. на деле все не так плохо, плюс обещают в 2.11 компилятор подоптимизировать.
Вообще этот пост написан человеком, который особо не хотел разбираться в языке. То что он там про типы написал вообще бред полный. Статическая типизация - главная фишка скалы, а он пытается с ней бороться и писать как привык.
По поводу других консернов - да, из-за широких возможностей языка в плане разработки DSL, при желании можно наворотить жутко нечитаемый код.
Вобщем скала не идеальный язык, как и все остальные. Но такому посту верить я бы не стал.

agaaaa

Статическая типизация - главная фишка скалы, а он пытается с ней бороться и писать как привык.
Вывод типов не противоречит статической типизации
Оставить комментарий
Имя или ник:
Комментарий: