SlideShare une entreprise Scribd logo
1  sur  36
POR QUE SCALA?
LINGUAGEM DE PROGRAMAÇÃO
MOTIVAÇÃO
O que é Scala
Scala é uma linguagem de
programação para a JVM,
Scala facilita definição de
tipos(*) por inferência,
Scala incorpora tanto o
paradigma de orientação a
objeto quanto o funcional,
Introduzida em 2003, por
Martin Odersky, EPFL,
Lausanne.
Why Scala?
De forma resumida:
A demanda por sistemas distribuídos tem
crescido rapidamente. E a linguagem Scala cabe
muito bem neste novo contexto.
Outras repostas ao longo desta apresentação.
A linguagem de programação Scala tem sido
usada em produção em serviços com alta
demanda:
LinkedIn
Twitter
FourSquare
The Guardian
“Você não vai compreender todo
o poder de seu sistema de tipos
até o final do seu primeiro dia.
Você não vai entender o ‘zen’ de
objetos sendo funções e funções
que são objetos em sua primeira
semana. Cada recurso da
linguagem é outra lâmpada a
espera para se iluminar sobre sua
cabeça.”
- Alex Payne, líder de plataforma no
Twitter à época da introdução do Scala.
“Este deveria ser o seu primeiro
livro Scala, não o último. Ele
mostra o suficiente para torná-lo
familiar e confortável com a
linguagem - competente , mas
não especialista. Você vai
escrever código Scala útil, mas
você não vai necessariamente
ser capaz de ler todo o código
Scala você encontrar .”
- Bruce Eckel e Diane Marsh.
“Atualmente, a melhor
introdução compacta para
Scala”
- Martin Odersky.
Minhas razões
Scala é uma linguagem sucinta. Você vai escrever
a metade do código que você escreve hoje.
Scala é uma linguagem capaz. Você não vai sentir
falta de recursos ao trabalhar com ela.
Scala é uma linguagem segura. Você encontra
verificação estática de tipos e outros mecanismos
para reduzir erros de programação.
Scala é uma linguagem moderna.
QUANDO COMEÇAR?
SCALA DAYS
BERLIN, 2014
SCALA DAYS
AMSTERDAM, 2015
Veremos várias
perspectivas
Programadores iniciantes,
Programadores
experimentados,
Programadores no limite da
utilização de suas
ferramentas atuais.
Valores
Tipos
Variáveis
Como em um valor, uma variável contém um
determinado tipo de informação, mas neste caso
você pode alterar os dados armazenados.
Expressões e condições
O menor fragmento de código útil na maioria das
linguagens de programação ou é uma declaração ou
uma expressão. Estes têm uma diferença simples:
- Uma declaração muda estado,
- Uma expressão exprime.
Isto é, uma expressão produz um resultado, enquanto
uma declaração não.
Quase tudo em Scala é uma expressão.
Expressões
O último valor de um bloco (entre {}) é o valor de
retorno.
REPL
Read-eval-print-loop:
Classes e objetos
Linguagem orientada a objetos: substantivos,
Linguagem funcional: verbos.
Objetos: contém campos (vals, vars) e métodos.
Projetos
Métodos
Construtores auxiliares
Case classes
String interpolation
Funções anônimas
Mixins
Companion objects
Singletons, substituem os tipos estáticos
Partial functions
Outras características
Tratamento diferenciado a imports e packages
Particularidades de class arguments
Error handling, Options
Build tool
Cassandra, Spark…
Scala x Swift
Discussão
https://gitter.im/orgs/scala/rooms
http://scalacamp.com.br/
http://www.meetup.com/pt/Curitiba-ScalaCamp-
Meetup/
Sua comunidade?
Leitura adicional
http://www.infoq.com/articles/twitter-java-use
http://www.infoq.com/presentations/event-
microservice-scala-spring-boot
http://www.reactivemanifesto.org/
“Perguntas?”
–Maurício Fernandes de Castro <mauricio@iservport.com>

Contenu connexe

En vedette

Sociedad de la información/ Azul Wilches- Lucia Soto- Candela Ubaldegaray
Sociedad de la información/ Azul Wilches- Lucia Soto- Candela UbaldegaraySociedad de la información/ Azul Wilches- Lucia Soto- Candela Ubaldegaray
Sociedad de la información/ Azul Wilches- Lucia Soto- Candela Ubaldegaray
AzulLucia
 
Contes compartits d'ahir i d'avui
Contes compartits d'ahir i d'avuiContes compartits d'ahir i d'avui
Contes compartits d'ahir i d'avui
piverni
 
Equipment list
Equipment listEquipment list
Equipment list
Anna Brown
 
Realidad virtual
Realidad virtualRealidad virtual
Realidad virtual
carolay07
 
2016-11-theory-gravity-dark
2016-11-theory-gravity-dark2016-11-theory-gravity-dark
2016-11-theory-gravity-dark
iraj shahir
 

En vedette (18)

Sociedad de la información/ Azul Wilches- Lucia Soto- Candela Ubaldegaray
Sociedad de la información/ Azul Wilches- Lucia Soto- Candela UbaldegaraySociedad de la información/ Azul Wilches- Lucia Soto- Candela Ubaldegaray
Sociedad de la información/ Azul Wilches- Lucia Soto- Candela Ubaldegaray
 
"Analysing and Searching Unstructured Medical Data", Allan Hanbury, Sr. Resea...
"Analysing and Searching Unstructured Medical Data", Allan Hanbury, Sr. Resea..."Analysing and Searching Unstructured Medical Data", Allan Hanbury, Sr. Resea...
"Analysing and Searching Unstructured Medical Data", Allan Hanbury, Sr. Resea...
 
Contes compartits d'ahir i d'avui
Contes compartits d'ahir i d'avuiContes compartits d'ahir i d'avui
Contes compartits d'ahir i d'avui
 
Copia de guia de diseño
Copia de guia de diseñoCopia de guia de diseño
Copia de guia de diseño
 
Trânsito com literatura e sucata
Trânsito com literatura e sucataTrânsito com literatura e sucata
Trânsito com literatura e sucata
 
Equipment list
Equipment listEquipment list
Equipment list
 
Realidad virtual
Realidad virtualRealidad virtual
Realidad virtual
 
Computador
ComputadorComputador
Computador
 
Pedido master
Pedido masterPedido master
Pedido master
 
TEOREMA DE BOOLES RUBEN
TEOREMA DE BOOLES RUBENTEOREMA DE BOOLES RUBEN
TEOREMA DE BOOLES RUBEN
 
Tabla sucursal
Tabla sucursalTabla sucursal
Tabla sucursal
 
transcript
transcripttranscript
transcript
 
Amr
AmrAmr
Amr
 
oracle pl 001
oracle pl 001oracle pl 001
oracle pl 001
 
Introducción al turismo
Introducción al turismoIntroducción al turismo
Introducción al turismo
 
powgen logo
powgen logopowgen logo
powgen logo
 
Image_00004
Image_00004Image_00004
Image_00004
 
2016-11-theory-gravity-dark
2016-11-theory-gravity-dark2016-11-theory-gravity-dark
2016-11-theory-gravity-dark
 

Similaire à Scala why

Paradigmas da programacao apostila
Paradigmas da programacao apostilaParadigmas da programacao apostila
Paradigmas da programacao apostila
Nathiele Lacerda
 
Linguagem de java
Linguagem de javaLinguagem de java
Linguagem de java
Genique
 

Similaire à Scala why (20)

Isc aula 7
Isc   aula 7Isc   aula 7
Isc aula 7
 
Object pascal
Object pascalObject pascal
Object pascal
 
Haskell motivação
Haskell motivaçãoHaskell motivação
Haskell motivação
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Pascal 70
Pascal 70Pascal 70
Pascal 70
 
Padrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAAPadrões de projeto - Martin Fowler - P of EAA
Padrões de projeto - Martin Fowler - P of EAA
 
EscmaScript
EscmaScriptEscmaScript
EscmaScript
 
Introdução a Scala [GeekieTalk]
Introdução a Scala [GeekieTalk]Introdução a Scala [GeekieTalk]
Introdução a Scala [GeekieTalk]
 
Paradigmas da programacao apostila
Paradigmas da programacao apostilaParadigmas da programacao apostila
Paradigmas da programacao apostila
 
Oracle 9i curso_completo
Oracle 9i curso_completoOracle 9i curso_completo
Oracle 9i curso_completo
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Poo frank
Poo frankPoo frank
Poo frank
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Apostila de algoritimo super básica
Apostila de algoritimo super básicaApostila de algoritimo super básica
Apostila de algoritimo super básica
 
Linguagem de java
Linguagem de javaLinguagem de java
Linguagem de java
 
Rails 03
Rails 03Rails 03
Rails 03
 
Ruby
RubyRuby
Ruby
 
01 java fundamentos
01 java fundamentos01 java fundamentos
01 java fundamentos
 
Programação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com JavaProgramação Desktop: Uma abordagem com Java
Programação Desktop: Uma abordagem com Java
 

Plus de Mauricio Fernandes de Castro

Plus de Mauricio Fernandes de Castro (15)

Zio motivation to create ZIO-native http package
Zio motivation to create ZIO-native http packageZio motivation to create ZIO-native http package
Zio motivation to create ZIO-native http package
 
Apresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de CombustíveisApresentação do Aplicativo de Controle de Combustíveis
Apresentação do Aplicativo de Controle de Combustíveis
 
tece-report-1
tece-report-1tece-report-1
tece-report-1
 
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte IIMeetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte II
 
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte IMeetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
Meetup ScalaCamp Curitiba, Fevereiro de 2017, Parte I
 
Intellij windows
Intellij windowsIntellij windows
Intellij windows
 
Capital Humano no Setor de TI
Capital Humano no Setor de TICapital Humano no Setor de TI
Capital Humano no Setor de TI
 
MVP Sustentável
MVP SustentávelMVP Sustentável
MVP Sustentável
 
Akka basics
Akka basicsAkka basics
Akka basics
 
Estrategia digital, uma visão associativista
Estrategia digital, uma visão associativistaEstrategia digital, uma visão associativista
Estrategia digital, uma visão associativista
 
Iservport recipes
Iservport recipesIservport recipes
Iservport recipes
 
CQRS/ES com Lagom
CQRS/ES com LagomCQRS/ES com Lagom
CQRS/ES com Lagom
 
ScalaCamp Meetup - Coleções em Scala
ScalaCamp Meetup - Coleções em ScalaScalaCamp Meetup - Coleções em Scala
ScalaCamp Meetup - Coleções em Scala
 
iservport - Uma Plataforma de Monitoramento para sua empresa e sua rede de ne...
iservport - Uma Plataforma de Monitoramento para sua empresa e sua rede de ne...iservport - Uma Plataforma de Monitoramento para sua empresa e sua rede de ne...
iservport - Uma Plataforma de Monitoramento para sua empresa e sua rede de ne...
 
Iservport circle-game
Iservport circle-gameIservport circle-game
Iservport circle-game
 

Scala why