5. •Bom pra DSL, mas o pessoal abusa!
•Lento
•Faz o código ficar mais complexo
•No final acaba dando oportunidades para o desenvolvedor acoplar coisas que não deveria.
•Vocênão precisa disso pra fazer programação funcional.
Implicits (BAD)
6. Compilation Time / Build Time
??? http://www.scala-sbt.org/
http://maven.apache.org/
C
http://www.scala- lang.org/old/sites/default/files/linuxsoft_archives/docu/files/tools/scalac.html
7. Compilation Time / Build Time
(Very Bad)
•Melhorou, mas ainda muito lento.
•Se não usar módulos muito bem, SBT vira um inferno.
•SBT ainda não tem uma boa integração com IDEs.
•Se quiser performance terá que evitar features pelo número de classes que elas geram e como a maneira com são feitas (Deve ser resolvido com java 8 –scala 2.12 talvez).
10. Operator Overloading /
Dynamic @Interface (BAD)
•São ideias “legais”
•Todo mundo está usando agora, virou uma bagunça.
•Você acaba que nem omundo mágico do Ruby/Rails.
•Scala não é ruby, é compilada, logo essa feature é do mal.
•Scala tem raízes vindas do Haskell ou seja, compilador e type system então isso não faz sentido.
12. Parser Combinators /
Macros (Very Bad)
•Complexo
•Difícil de entender / documentação terrível.
•O Código é muito feio…
•Você não precisa disso, outros jeitos…
•Não tem pq fazer parser na mão, prefira usar Jackson/XStrean. Combinators? ANTLR!
•Macros? Não precisa de jeito nenhum, abuso do compilador, complexo.
16. Performance(Good)
•Mais rápido que java
•Otimizado para a JVM
•Runtime muito sólido, graças a JVM
•Todo eco-Sistema de frameworks e bibliotecas do java a sua disposição.
•Melhor linguagem na JVM nos dias de hoje.
19. Resumindo…
•Você deve evitar algumas features.
•Scala é fantástico para Arquitetura.
•Muito produtivo para desenvolvimento mas tem que ter práticas eficientes de engenharia(code review/design sessions).
•Assim que se resolver a lentidãode build e algumas coisas de backward compatibility vai ser perfeito!!!