tdc 14 poa: scala goods bads
DESCRIPTION
TDC 14 POA: Scala goods badsTRANSCRIPT
![Page 1: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/1.jpg)
Diego PachecoSoftware Architect | Agile Coach
diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco
diegopachecorsdiegopacheco
![Page 2: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/2.jpg)
http://about.me/diegopacheco
![Page 3: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/3.jpg)
Ilegra.com
![Page 4: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/4.jpg)
Implicits ???
![Page 5: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/5.jpg)
• 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](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/8.jpg)
Operator Overloading / Dynamic @Interface (???)
![Page 9: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/9.jpg)
Operator Overloading / Dynamic @Interface (???)
![Page 10: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/11.jpg)
Parser / Combinators / Macros (???)
![Page 12: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/13.jpg)
FP (???)
![Page 14: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/15.jpg)
Performance(???)
![Page 16: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/17.jpg)
Scalability (???)
![Page 18: TDC 14 POA: Scala goods bads](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042813/549ecf75b37959af618b4840/html5/thumbnails/20.jpg)
Diego PachecoSoftware Architect | Agile Coach
diego-pacheco.blogspot.com@diego_pacheco diegopacheco diego.pacheco
diegopachecorsdiegopacheco