20
Diego Pacheco Software Architect | Agile Coach diego-pacheco.blogspot.com @diego_pacheco diegopacheco diego.pacheco diegopachecors diegopacheco

TDC 14 POA: Scala goods bads

Embed Size (px)

DESCRIPTION

TDC 14 POA: Scala goods bads

Citation preview

Page 1: TDC 14 POA: Scala goods bads

Diego PachecoSoftware Architect | Agile Coach

diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco

diegopachecorsdiegopacheco

Page 2: TDC 14 POA: Scala goods bads

http://about.me/diegopacheco

Page 3: TDC 14 POA: Scala goods bads

Ilegra.com

Page 4: TDC 14 POA: Scala goods bads

Implicits ???

Page 5: TDC 14 POA: Scala goods bads

• 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)

Page 6: TDC 14 POA: Scala goods bads

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

Page 7: TDC 14 POA: Scala goods bads

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).

Page 8: TDC 14 POA: Scala goods bads

Operator Overloading / Dynamic @Interface (???)

Page 9: TDC 14 POA: Scala goods bads

Operator Overloading / Dynamic @Interface (???)

Page 10: TDC 14 POA: Scala goods bads

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.

Page 11: TDC 14 POA: Scala goods bads

Parser / Combinators / Macros (???)

Page 12: TDC 14 POA: Scala goods bads

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.

Page 13: TDC 14 POA: Scala goods bads

FP (???)

Page 14: TDC 14 POA: Scala goods bads

FP (Good)

• Funções (Map, Reduce, Filter, FlatMap, etc..)• Parallel Collections• Case Classes• Tuples• Pattern Matcher• Options(Monads)

Page 15: TDC 14 POA: Scala goods bads

Performance(???)

Page 16: TDC 14 POA: Scala goods bads

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.

Page 17: TDC 14 POA: Scala goods bads

Scalability (???)

Page 18: TDC 14 POA: Scala goods bads

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..

Page 19: TDC 14 POA: Scala goods bads

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!!!

Page 20: TDC 14 POA: Scala goods bads

Diego PachecoSoftware Architect | Agile Coach

diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco

diegopachecorsdiegopacheco