Upload
others
View
21
Download
0
Embed Size (px)
Citation preview
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Scala: Primeiros passos com o paradigmafuncional
Diego Saraiva [email protected] Maciel [email protected]
28 de Outubro de 2010
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sumario
1 IntroducaoApresentando ScalaPor que utilizar Scala?Uma Linguagem Escalavel
2 Paradigma Funcional
3 Sintaxe
4 Exemplos
5 Perguntas
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sumario
1 IntroducaoApresentando ScalaPor que utilizar Scala?Uma Linguagem Escalavel
2 Paradigma Funcional
3 Sintaxe
4 Exemplos
5 Perguntas
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sumario
1 IntroducaoApresentando ScalaPor que utilizar Scala?Uma Linguagem Escalavel
2 Paradigma Funcional
3 Sintaxe
4 Exemplos
5 Perguntas
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sumario
1 IntroducaoApresentando ScalaPor que utilizar Scala?Uma Linguagem Escalavel
2 Paradigma Funcional
3 Sintaxe
4 Exemplos
5 Perguntas
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sumario
1 IntroducaoApresentando ScalaPor que utilizar Scala?Uma Linguagem Escalavel
2 Paradigma Funcional
3 Sintaxe
4 Exemplos
5 Perguntas
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Apresentando ScalaPor que utilizar Scala?
Introducao
Exigencias do mercado atual
Utilizacao efetiva de maquinas multi-core por programasconcorrentes,Criacao de aplicacoes distribuıdas voltadas para a Web oupara a Internet.
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Apresentando ScalaPor que utilizar Scala?
Introducao
Linguagens
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Apresentando ScalaPor que utilizar Scala?
Introducao
Programacao orientada a objetos
Estilo imperativoTenta simular o mundo realA computacao e realizada em termos de estados eexpressoes que podem mudar o estado do programa.
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Apresentando ScalaPor que utilizar Scala?
Introducao
A Programacao Funcional
Estilo de programacao baseado no uso de funcoesFuncoes sao entidades de 1a classeToda a programacao e baseada na avaliacao de expressoespara gerar valores.Cada valor tem um tipo associado.Funcoes podem ser nomeadas ou anonimas (lambda)
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Apresentando ScalaPor que utilizar Scala?
Introducao
Scala
O nome Scala significa “linguagem escalavel”Projetada para integrar linguagem orientada a objetos eprogramacao funcionalExecuta na JVM
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Apresentando ScalaPor que utilizar Scala?
Scala
Historico
O design comecou em 2001 na Ecole PolytechniqueFederale de Lausanne por Matin OderskyPrimeiro release na plataforma Java: no fim de 2003 einıcio de 2004Versao para plataforma .NET liberada em Junho de 2004
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Apresentando ScalaPor que utilizar Scala?
Scala
Por que utilizar Scala?
Linguagem hıbrida: simplicidade de funcional + poder deobjetosFortemente tipadaLinguagem ConcisaMultiplataforma: JVM e .NET
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Introducao a programacao funcional
Entidades de primeira-classe
Entidades que podem ser passadas como parametroPodem ser retornadas como resultadoPodem ser armazenadas em estruturas de dados
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
A Programacao Funcional
Modelo computacional
Funcao de x em y : Mapeamento de valores de entrada emvalores de saıdaAusencia de estado e comandos (atribuicao + controle)
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Paradigma Funcional
Mudando o foco
sem lacos?sem efeitos colaterais?sem mudar o valor de variaveis?
Aplicacoes
Verificacao de programas: checagem de corretudePrincıpio da invariancia.
Otimizacao de programas para computacao paralela
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Paradigma Funcional
Linguagem Funcional
O corpo de uma funcao e uma expressaoA aplicacao da funcao a um argumento retorna um valor(expressao)Um programa e uma expressao
O contexto
Mapeamento de identificadores (nomes de funcao) emdefinicoes de funcaoMapeamento de identificadores em valores
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sintaxe
Variaveis
1 va l s = ” He l lo World”2
3 var i = 14
5 pr i va t e var j = 3
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sintaxe
Definicao de metodos
1 de f ad i c i ona r ( x : Int , y : Int ) : Int = {2 x + y3 }4
5 de f ad i c i ona r ( x : Int , y : Int ) = x + y6
7 de f fazerAlgumaCoisa ( t ex t : S t r ing ) {8 // fazendo alguma co i s a9 }
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sintaxe
Chamadas a metodos
1 meuObjeto . meuMetodo (1 )2 meuObjeto meuMetodo (1 )3 meuObjeto meuMetodo 14
5 meuObjeto . outroMetodo (1 , 2)6 meuObjeto outroMetodo (1 , 2)7
8 meuObjeto . metodoSemParametros ( )9 meuObjeto . metodoSemParametros
10 meuObjeto metodoSemParametros
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sintaxe
Classes - Scala
1 c l a s s Pessoa ( va l nome : S t r ing )
Classes - Java
1 pub l i c c l a s s Pessoa{2 pr i va t e f i n a l S t r ing nome ;3
4 pub l i c Pessoa ( S t r ing nome) { t h i s . nome = nome ;}5
6 pub l i c S t r ing getNome ( ) { re turn nome ;}7 }
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sintaxe
Classes - Scala
1 c l a s s Pessoa ( var nome : S t r ing )
Classes - Java
1 pub l i c c l a s s Pessoa{2 pr i va t e S t r ing nome ;3
4 pub l i c Pessoa ( S t r ing nome) { t h i s . nome = nome}5
6 pub l i c void getNome ( ) { re turn nome ;}7
8 pub l i c void setNome ( St r ing nome) { t h i s . nome = nome ;}9 }
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sintaxe
If
1 i f ( condicao ) {2 // pr ime i ro caso3 } e l s e i f ( outraCondicao ) {4 // segundo caso5 } e l s e {6 // entao7 }
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sintaxe
For
1 f o r ( i <− 1 to 5) {2 . . .3 }4
5 f o r ( i <− 1 un t i l 5) {6 . . .7 }8
9 f o r ( s <− args ) {10 p r i n t l n ( s )11 }
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sintaxe
While
1 whi le ( condicao ) {2 . . . .3 }4
5 do {6 . . .7 } whi le ( condicao )
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Sintaxe
Try
1 whi le ( condicao ) {2 . . . .3 }4
5 do {6 . . .7 } whi le ( condicao )
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Principais conceitos
Funcoes como entidades de primeira ordem
As funcoes podem ser criadas em qualquer lugar doprogramaAs funcoes podem armazenadas em estruturas de dadosAs funcoes podem ser passadas como argumento paraoutras funcoesAs funcoes podem retornar outras funcoes como resultados
1 ( x : Int , y : Int ) => x + y
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Principais conceitos
Funcoes de alta-ordem
Recebem uma ou mais funcoes como entradaRetornam uma funcao como saıda
Exemplo: map
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Principais conceitos
Closures
Um closure e uma funcao que referencia variaveis livres nocontexto lexico.Funcao anonima definida on-the-fly dentro de uma funcaoou expressaoUma closure pode ser definida pelo compilador comoresultado de outra funcaoClosure e diferente de uma funcao anonima
1 va l incremento = 12 va l ad ic ionar Incremento = (x : Int ) => x + incremento
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Principais conceitos
Currying
Uma funcao ”curried”transforma uma funcao que recebemultiplos parametros em uma funcao que pode ser chamadacomo uma cadeia de funcoes que recebem somente umparametro cada vez.
Visao informal
Uma funcao ”curried”quando ela possui mais de uma lista deparametros, sendo assim, a mesma funcao e invocada em cadeiapara cada lista de parametro.
1 de f funcaoCurr ied (x : Int ) ( y : Int ) = x + y
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Principais conceitos
Pattern Matching
Pattern matching e uma forma de associar nomes a coisas epossivelmente quebrar as expressoes em sub-expressoes aomesmo tempo em que associa cada sub-expressao a cosias.
Reconhecer valoresAssociar variaveis para reconhecer valores“Quebrar”valores em partes
1 va l r e s = myObject match {2 case i : Int i f i == 1 => ”Found an i n t ”3 case s : S t r ing => ”Found a St r ing ”4 case other => ”Unknown ” + other5 }
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Exemplos
Some code. . .
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional
IntroducaoParadigma Funcional
SintaxeExemplosPerguntas
Fim
Perguntas ???
Diego, Ronualdo Scala: Primeiros passos com o paradigma funcional