SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
Diego Pacheco 
Software Architect | Agile Coach 
diego-pacheco.blogspot.com 
@diego_pacheco 
diegopacheco 
diego.pacheco 
diegopachecors 
diegopacheco
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/ 
C 
http://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 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.
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ãode build e algumas coisas de backward compatibility vai ser perfeito!!! 
Diego Pacheco 
Software Architect | Agile Coach 
diego-pacheco.blogspot.com 
@diego_pacheco 
diegopacheco 
diego.pacheco 
diegopachecors 
diegopacheco

Weitere ähnliche Inhalte

Ähnlich wie TDC 14 POA: Scala goods bads

Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
Wilson Lima
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Vinicius Reis
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
Rangel Javier
 

Ähnlich wie TDC 14 POA: Scala goods bads (20)

Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeçaTrês anos de Scala em Produção: desafios, aprendizados e dores de cabeça
Três anos de Scala em Produção: desafios, aprendizados e dores de cabeça
 
Java virtual machine quantas linguas fala a jvm2
Java virtual machine   quantas linguas fala a jvm2Java virtual machine   quantas linguas fala a jvm2
Java virtual machine quantas linguas fala a jvm2
 
Desconstruindo EJB
Desconstruindo EJBDesconstruindo EJB
Desconstruindo EJB
 
Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?Como desenvolver com um sistema com um front-end colossal?
Como desenvolver com um sistema com um front-end colossal?
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
Arquiteturas Paralelas e Distribuídas - Aula 2 - Arquiteturas de computadores
Arquiteturas Paralelas e Distribuídas - Aula 2 - Arquiteturas de computadoresArquiteturas Paralelas e Distribuídas - Aula 2 - Arquiteturas de computadores
Arquiteturas Paralelas e Distribuídas - Aula 2 - Arquiteturas de computadores
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e Erlang
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para php
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Voce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infraVoce se preocupa com performance ou é sempre problema da infra
Voce se preocupa com performance ou é sempre problema da infra
 
Sistemas de Microprocessadores 2013/2014
Sistemas de Microprocessadores 2013/2014Sistemas de Microprocessadores 2013/2014
Sistemas de Microprocessadores 2013/2014
 
Sistemas de Microprocessadores 2013/2014
Sistemas de Microprocessadores 2013/2014Sistemas de Microprocessadores 2013/2014
Sistemas de Microprocessadores 2013/2014
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
Componentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada frameworkComponentes Transformers: Combinando o melhor de cada framework
Componentes Transformers: Combinando o melhor de cada framework
 

Mehr von Diego Pacheco

Mehr von Diego Pacheco (20)

Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!Naming Things Book : Simple Book Review!
Naming Things Book : Simple Book Review!
 
Continuous Discovery Habits Book Review.pdf
Continuous Discovery Habits  Book Review.pdfContinuous Discovery Habits  Book Review.pdf
Continuous Discovery Habits Book Review.pdf
 
Thoughts about Shape Up
Thoughts about Shape UpThoughts about Shape Up
Thoughts about Shape Up
 
Holacracy
HolacracyHolacracy
Holacracy
 
AWS IAM
AWS IAMAWS IAM
AWS IAM
 
CDKs
CDKsCDKs
CDKs
 
Encryption Deep Dive
Encryption Deep DiveEncryption Deep Dive
Encryption Deep Dive
 
Sec 101
Sec 101Sec 101
Sec 101
 
Reflections on SCM
Reflections on SCMReflections on SCM
Reflections on SCM
 
Management: Doing the non-obvious! III
Management: Doing the non-obvious! IIIManagement: Doing the non-obvious! III
Management: Doing the non-obvious! III
 
Design is not Subjective
Design is not SubjectiveDesign is not Subjective
Design is not Subjective
 
Architecture & Engineering : Doing the non-obvious!
Architecture & Engineering :  Doing the non-obvious!Architecture & Engineering :  Doing the non-obvious!
Architecture & Engineering : Doing the non-obvious!
 
Management doing the non-obvious II
Management doing the non-obvious II Management doing the non-obvious II
Management doing the non-obvious II
 
Testing in production
Testing in productionTesting in production
Testing in production
 
Nine lies about work
Nine lies about workNine lies about work
Nine lies about work
 
Management: doing the nonobvious!
Management: doing the nonobvious!Management: doing the nonobvious!
Management: doing the nonobvious!
 
AI and the Future
AI and the FutureAI and the Future
AI and the Future
 
Dealing with dependencies
Dealing  with dependenciesDealing  with dependencies
Dealing with dependencies
 
Dealing with dependencies in tests
Dealing  with dependencies in testsDealing  with dependencies in tests
Dealing with dependencies in tests
 
Kanban 2020
Kanban 2020Kanban 2020
Kanban 2020
 

TDC 14 POA: Scala goods bads

  • 1. Diego Pacheco Software Architect | Agile Coach diego-pacheco.blogspot.com @diego_pacheco diegopacheco diego.pacheco diegopachecors diegopacheco
  • 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).
  • 8. Operator Overloading / Dynamic @Interface (???)
  • 9. Operator Overloading / Dynamic @Interface (???)
  • 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.
  • 11. Parser / Combinators / Macros (???)
  • 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.
  • 14. FP (Good) •Funções (Map, Reduce, Filter, FlatMap, etc..) •Parallel Collections •Case Classes •Tuples •Pattern Matcher •Options(Monads)
  • 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.
  • 18. 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..
  • 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!!! 
  • 20. Diego Pacheco Software Architect | Agile Coach diego-pacheco.blogspot.com @diego_pacheco diegopacheco diego.pacheco diegopachecors diegopacheco