Upload
diego-pacheco
View
124
Download
1
Embed Size (px)
DESCRIPTION
TDC 14 POA: Scala goods bads
Citation preview
Diego PachecoSoftware Architect | Agile Coach
diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco
diegopachecorsdiegopacheco
http://about.me/diegopacheco
Ilegra.com
Implicits ???
• 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)
Compilation Time / Build Time???
http://www.scala-sbt.org/
http://maven.apache.org/
Chttp://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/tools/scalac.html
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).
Operator Overloading / Dynamic @Interface (???)
Operator Overloading / Dynamic @Interface (???)
Operator Overloading / Dynamic @Interface (BAD)
• São ideias “legais”• Todo mundo está usando agora, virou uma
bagunça.• Você acaba que nem o mundo 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.
Parser / Combinators / Macros (???)
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.
FP (???)
FP (Good)
• Funções (Map, Reduce, Filter, FlatMap, etc..)• Parallel Collections• Case Classes• Tuples• Pattern Matcher• Options(Monads)
Performance(???)
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.
Scalability (???)
Scalability (Awesome)
• STM• Actors Model• Akka• Future/Promises – Async Callbacks• Reactiviness ( rx, FRP, Netty, etc...)• Usa tudo de bom do java: NoSQL DBs, Search
Engines, Rules Engines, Middleware Servers, MOM, etc..
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ão de build e algumas coisas de backward compatibility vai ser perfeito!!!
Diego PachecoSoftware Architect | Agile Coach
diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco
diegopachecorsdiegopacheco