SlideShare uma empresa Scribd logo
1 de 18
Python para quem sabe Delphi
Mario Guedes
Que Mario?
• 40 anos, pai do Júlio e da Fernanda
• Conectado desde 1999 (20 anos!)
• Artesão de Software em Delphi, Python, Lua, JavaScript, noSQL ...
• CTO na Sofie Tecnologia
• Vivência em soluções de grande porte para Contact Center
• Em todas as redes: /jmarioguedes
• jmarioguedes@gmail.com Não sou eu!
Sou eu!
Por que Python?
• É muito conveniente ter uma linguagem interpretada à mão.
• Especialmente, mas não especificamente, para tarefas que envolvam análise de dados.
• Mas qual escolher? Python, Ruby, Lua, JavaScript, Go, R, Haskell, Scala, Elixir e etc e etc?
• Escolhemos Python!
• Diferenciais:
• Vasto ecossistema de bibliotecas
• Um poderoso “canivete suíço”
• Baixíssima verbosidade
• Muitas semelhanças com o Pascal
• Aspectos técnicos:
• De propósito geral
• Multi paradigma: OOP, funcional, ...
• Tipagem dinâmica e forte
• Interpretada
• 27 anos de maturidade
• Baixa curva de aprendizado
Montando o ambiente
• Baixe o interpretador em https://www.python.org/
• Observe que há duas “famílias”: 2.x e 3.x
• Neste slide dei prints no IDLE, editor integrado do Python no Windows
• Sugiro a IDE do JetBrains, o PyCharm:
https://www.jetbrains.com/pycharm/
• Use o seu editor preferido no começo: Notepad++, Sublime e etc
• É uma pergunta clássica
• Não faz parte do Python propriamente dito, é de terceiros
Jupyter Notebook
• Notebook é um conceito bem
difundido em análise de dados.
• É uma versão moderna dos
cadernos de anotações
científicas.
• No Python temos o Jupyter que é
um acrônimo que cita três
linguagens: Ju - Julia Py - Python
R
• Não vem com o Python, é
instalada à parte.
Olá mundo!
• Os arquivos de código tem a extensão .py
• Você pode executar o IDLE ou o console para iniciar um editor “live code”
• Para executar um módulo o comando é: python.exe nome_modulo.py
• Para trabalhos mais elaborados existe o Jupyter Notebook
Comentário e documentação
• Um comentário de linha se inicia com #
• DocString: Módulos, classes e métodos podem ser documentados com
“““ ... ”””
Convenção de Nomeação
• O padrão é o snake_case para nome de módulos,
métodos e variáveis
• E CamelCase para nome de classes
• Atribuição é feito com o sinal =
• Por ser uma linguagem de tipagem dinâmica não é
necessário declarar variáveis ou o tipo dos parâmetros
• E por ser de tipagem forte não conseguimos fazer muita
besteira como por exemplo:
Início e fim de bloco
• Um bloco de código é definido por um
recuo em relação ao bloco anterior
• Sem {}, sem begin end, sem ;
• Dê preferência à 4 espaços e não TAB
• Eu sei, eu sei, parece bizarro no começo
• Mas isso se traduz em menos esforço de
digitação e mental com o tempo
• Isso força concisão de código
Pyhton é uma linguagem de classe
• Observe que “tudo é classe” no Python
• str – Strings
• int – Integer
• float – Real
• bool – Boolean
• None – Nulo
• list() – Lista, array
• dict() – Dicionário
• tuple() – Tupla
• set() - Conjunto
• ...
Função geradora
• Entre os diversos recursos da
linguagem destaco a função geradora.
• Nos permite criar funções
“preguiçosas”, ou seja, só vai efetuar
computação quando necessário.
• Ideal para consumir arquivos, banco
de dados, enfim, qualquer coisa que
tenha I/O.
• É uma característica muito
conveniente por conta do design do
código onde conseguimos manter um
escopo isolado e reutilizável.
Paradigma OOP
• Manja de OOP? É do jeito que você
conhece com diferenças de
convenções sintáticas.
• Perceba que foi implementado o
método __str__ (dunder str) que
permite representar o objeto como
string. Existem diversos outros
métodos especiais.
• Não é necessário se preocupar em
liberar objetos da memória.
Paradigma funcional
• É um conhecimento
importante para a área de
Data Science
• O exemplo ao lado é uma
verificação de CPF que é
uma rotina verbosa em
qualquer linguagem
• No começo é difícil e
bizarro, mas com o tempo
fica trivial
Pra não dizer que não falei da Copa
• O site https://worldcup.sfg.io/
oferece uma API Rest com as
informações de cada jogo da
Copa do Mundo, inclusive o
feminino.
• Uma simples listagem com os
resultados poderia ser da
seguinte forma:
Foi só um visão geral
• Tem bastante coisa legal no Python e no
seu ecossistema
• Aprenda mais com os melhores:
https://www.python.pro.br/
• Não acredito que seja o caso de migrar de
tecnologia mas de agregar e ampliar:
Foi esta a mensagem que eu quis passar. ;)
• Não existe “bala de prata”: aumente o seu
repertório e adote a melhor ferramenta
para cada problema.
Links interessantes
• Livro: Python Fluente - Novatec Editora
Luciano Ramalho
https://novatec.com.br/livros/pythonfluente/
• Programação funcional com Python #0 - Saindo da zona de conforto
Eduardo Mendes
http://pythonclub.com.br/progrmacao-funcional-com-python-0.html
http://pythonclub.com.br/progrmacao-funcional-com-python-1.html
http://pythonclub.com.br/progrmacao-funcional-com-python-2.html
• Iteração em Python: do básico ao genial - Luciano Ramalho - Rupy 2012
Luciano Ramalho
https://youtu.be/ULj7ejvuzI8
• Exemplos desta palestra:
https://github.com/jmarioguedes/extremeexperience2018
Obrigado
jmarioguedes@gmail.com
fb.com/jmarioguedes
linkedin.com/in/jmarioguedes

Mais conteúdo relacionado

Mais procurados

Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonPriscila Mayumi
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantesrichardsonlima
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em ElixirAdolfo Neto
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programaçãoSimples Consultoria
 
Erlang e Elixir por uma web mais feliz
Erlang e Elixir por uma web mais felizErlang e Elixir por uma web mais feliz
Erlang e Elixir por uma web mais felizBruno Henrique - Garu
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem PythonLuciano Ramalho
 
Seminário: JavaScript
Seminário: JavaScriptSeminário: JavaScript
Seminário: JavaScriptIvna Valença
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Marcel Caraciolo
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoLuciano Ramalho
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre Denis Vieira
 
Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011William Colen
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e djangoIgor Sobreira
 

Mais procurados (20)

Apresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação PythonApresentando a Linguagem de Programação Python
Apresentando a Linguagem de Programação Python
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 
Programando em Elixir
Programando em ElixirProgramando em Elixir
Programando em Elixir
 
Python como primeira linguagem de programação
Python como primeira linguagem de programaçãoPython como primeira linguagem de programação
Python como primeira linguagem de programação
 
Erlang e Elixir por uma web mais feliz
Erlang e Elixir por uma web mais felizErlang e Elixir por uma web mais feliz
Erlang e Elixir por uma web mais feliz
 
Curso Python - Aula 01
Curso Python - Aula 01Curso Python - Aula 01
Curso Python - Aula 01
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 
Canivete suíço do Python
Canivete suíço do PythonCanivete suíço do Python
Canivete suíço do Python
 
Seminário: JavaScript
Seminário: JavaScriptSeminário: JavaScript
Seminário: JavaScript
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 
Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?Conhencendo Python e por que ela importa?
Conhencendo Python e por que ela importa?
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Como tornar-se um programador Python melhor
Como tornar-se um programador Python melhorComo tornar-se um programador Python melhor
Como tornar-se um programador Python melhor
 
Arduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojoArduino: hardware hacking & coding dojo
Arduino: hardware hacking & coding dojo
 
Python django7semestre
Python django7semestre Python django7semestre
Python django7semestre
 
Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Phyton
PhytonPhyton
Phyton
 
Seminário: Lua
Seminário: LuaSeminário: Lua
Seminário: Lua
 

Semelhante a Extreme Experience 2018 | Python para quem sabe Delphi

Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDouglas V. Pasqua
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nívelIgor Sobreira
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011Evaldo Junior
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoandreluizlugon
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoAlexandre Andrade
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alvesGrupython Ufla
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHPAugusto Pascutti
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoFelipeDi
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoWeldir Fernando Dias
 
Aprenda a programar python
Aprenda a programar pythonAprenda a programar python
Aprenda a programar pythonLourenço Junior
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHPRangel Javier
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonFlávio Ribeiro
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoUbirajara Cavaco
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro Viebrantz
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4Fabio Spanhol
 

Semelhante a Extreme Experience 2018 | Python para quem sabe Delphi (20)

Dicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHPDicas para sua carreira de Desenvolvedor PHP
Dicas para sua carreira de Desenvolvedor PHP
 
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Python - Programando em alto nível
Python - Programando em alto nívelPython - Programando em alto nível
Python - Programando em alto nível
 
PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalho
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinho
 
Apresentação python fábio jr alves
Apresentação python   fábio jr alvesApresentação python   fábio jr alves
Apresentação python fábio jr alves
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
Aula 1 pc - slides
Aula 1   pc - slidesAula 1   pc - slides
Aula 1 pc - slides
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalho
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalho
 
Python para devs
Python para devsPython para devs
Python para devs
 
Aprenda a programar python
Aprenda a programar pythonAprenda a programar python
Aprenda a programar python
 
Slide Aula - Curso CakePHP
Slide Aula - Curso CakePHPSlide Aula - Curso CakePHP
Slide Aula - Curso CakePHP
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Desenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando PythonDesenvolvimento de aplicações embarcadas utilizando Python
Desenvolvimento de aplicações embarcadas utilizando Python
 
Aprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalhoAprenda a programar-luciano_ramalho
Aprenda a programar-luciano_ramalho
 
Slide
SlideSlide
Slide
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Python Training #1 - ed4
Python Training #1 - ed4Python Training #1 - ed4
Python Training #1 - ed4
 

Mais de Mario Guedes

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitMario Guedes
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISMario Guedes
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumMario Guedes
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTMario Guedes
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - CookbookMario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsMario Guedes
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!Mario Guedes
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsMario Guedes
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Mario Guedes
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis Mario Guedes
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisMario Guedes
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Mario Guedes
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Mario Guedes
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiMario Guedes
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Mario Guedes
 
Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Mario Guedes
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaMario Guedes
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Mario Guedes
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosMario Guedes
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBMario Guedes
 

Mais de Mario Guedes (20)

O que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST SummitO que é e como devo usar o REDIS? - 1o Mobile REST Summit
O que é e como devo usar o REDIS? - 1o Mobile REST Summit
 
Fazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDISFazendo barba, cabelo e bigode com REDIS
Fazendo barba, cabelo e bigode com REDIS
 
Integrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da EthereumIntegrando-se à Blockchain da Ethereum
Integrando-se à Blockchain da Ethereum
 
Entendendo HTTP para entender o REST
Entendendo HTTP para entender o RESTEntendendo HTTP para entender o REST
Entendendo HTTP para entender o REST
 
Expressão Regular - Cookbook
Expressão Regular - CookbookExpressão Regular - Cookbook
Expressão Regular - Cookbook
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Foco no app, viva o serverless!
Foco no app, viva o serverless!Foco no app, viva o serverless!
Foco no app, viva o serverless!
 
Geolocalização com Redis e Google Maps
Geolocalização com Redis e Google MapsGeolocalização com Redis e Google Maps
Geolocalização com Redis e Google Maps
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!
 
Escalabilidade com Redis
Escalabilidade com Redis Escalabilidade com Redis
Escalabilidade com Redis
 
Escalando o backend com NGINX e Redis
Escalando o backend com NGINX e RedisEscalando o backend com NGINX e Redis
Escalando o backend com NGINX e Redis
 
Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!Turbinando o seu sistema com Redis!
Turbinando o seu sistema com Redis!
 
Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?Microsserviço, Escalabilidade e Resiliência - #comofas?
Microsserviço, Escalabilidade e Resiliência - #comofas?
 
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no DelphiTDCSP - 2018 - Possibilidades com o REDIS no Delphi
TDCSP - 2018 - Possibilidades com o REDIS no Delphi
 
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
Extreme Experience 2018 | Estudo de Caso: Aplicação DataSnap para 10.000 usuá...
 
Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?Intensive Delphi 2017 - E este tal de Redis hein?
Intensive Delphi 2017 - E este tal de Redis hein?
 
BOT: Conversando com o seu sistema
BOT: Conversando com o seu sistemaBOT: Conversando com o seu sistema
BOT: Conversando com o seu sistema
 
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
Uma perspectiva histórica e o cenário atual das ferramentas de desenvolviment...
 
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuáriosExtreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
Extreme 360º 2017 | Arquitetura Extrema: Rumo aos 10.000 usuários
 
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDBArquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
Arquitetura escalável e resiliente com NGINX, DataSnap, REDIS e MongoDB
 

Extreme Experience 2018 | Python para quem sabe Delphi

  • 1.
  • 2. Python para quem sabe Delphi Mario Guedes
  • 3. Que Mario? • 40 anos, pai do Júlio e da Fernanda • Conectado desde 1999 (20 anos!) • Artesão de Software em Delphi, Python, Lua, JavaScript, noSQL ... • CTO na Sofie Tecnologia • Vivência em soluções de grande porte para Contact Center • Em todas as redes: /jmarioguedes • jmarioguedes@gmail.com Não sou eu! Sou eu!
  • 4. Por que Python? • É muito conveniente ter uma linguagem interpretada à mão. • Especialmente, mas não especificamente, para tarefas que envolvam análise de dados. • Mas qual escolher? Python, Ruby, Lua, JavaScript, Go, R, Haskell, Scala, Elixir e etc e etc? • Escolhemos Python! • Diferenciais: • Vasto ecossistema de bibliotecas • Um poderoso “canivete suíço” • Baixíssima verbosidade • Muitas semelhanças com o Pascal • Aspectos técnicos: • De propósito geral • Multi paradigma: OOP, funcional, ... • Tipagem dinâmica e forte • Interpretada • 27 anos de maturidade • Baixa curva de aprendizado
  • 5. Montando o ambiente • Baixe o interpretador em https://www.python.org/ • Observe que há duas “famílias”: 2.x e 3.x • Neste slide dei prints no IDLE, editor integrado do Python no Windows • Sugiro a IDE do JetBrains, o PyCharm: https://www.jetbrains.com/pycharm/ • Use o seu editor preferido no começo: Notepad++, Sublime e etc • É uma pergunta clássica • Não faz parte do Python propriamente dito, é de terceiros
  • 6. Jupyter Notebook • Notebook é um conceito bem difundido em análise de dados. • É uma versão moderna dos cadernos de anotações científicas. • No Python temos o Jupyter que é um acrônimo que cita três linguagens: Ju - Julia Py - Python R • Não vem com o Python, é instalada à parte.
  • 7. Olá mundo! • Os arquivos de código tem a extensão .py • Você pode executar o IDLE ou o console para iniciar um editor “live code” • Para executar um módulo o comando é: python.exe nome_modulo.py • Para trabalhos mais elaborados existe o Jupyter Notebook
  • 8. Comentário e documentação • Um comentário de linha se inicia com # • DocString: Módulos, classes e métodos podem ser documentados com “““ ... ”””
  • 9. Convenção de Nomeação • O padrão é o snake_case para nome de módulos, métodos e variáveis • E CamelCase para nome de classes • Atribuição é feito com o sinal = • Por ser uma linguagem de tipagem dinâmica não é necessário declarar variáveis ou o tipo dos parâmetros • E por ser de tipagem forte não conseguimos fazer muita besteira como por exemplo:
  • 10. Início e fim de bloco • Um bloco de código é definido por um recuo em relação ao bloco anterior • Sem {}, sem begin end, sem ; • Dê preferência à 4 espaços e não TAB • Eu sei, eu sei, parece bizarro no começo • Mas isso se traduz em menos esforço de digitação e mental com o tempo • Isso força concisão de código
  • 11. Pyhton é uma linguagem de classe • Observe que “tudo é classe” no Python • str – Strings • int – Integer • float – Real • bool – Boolean • None – Nulo • list() – Lista, array • dict() – Dicionário • tuple() – Tupla • set() - Conjunto • ...
  • 12. Função geradora • Entre os diversos recursos da linguagem destaco a função geradora. • Nos permite criar funções “preguiçosas”, ou seja, só vai efetuar computação quando necessário. • Ideal para consumir arquivos, banco de dados, enfim, qualquer coisa que tenha I/O. • É uma característica muito conveniente por conta do design do código onde conseguimos manter um escopo isolado e reutilizável.
  • 13. Paradigma OOP • Manja de OOP? É do jeito que você conhece com diferenças de convenções sintáticas. • Perceba que foi implementado o método __str__ (dunder str) que permite representar o objeto como string. Existem diversos outros métodos especiais. • Não é necessário se preocupar em liberar objetos da memória.
  • 14. Paradigma funcional • É um conhecimento importante para a área de Data Science • O exemplo ao lado é uma verificação de CPF que é uma rotina verbosa em qualquer linguagem • No começo é difícil e bizarro, mas com o tempo fica trivial
  • 15. Pra não dizer que não falei da Copa • O site https://worldcup.sfg.io/ oferece uma API Rest com as informações de cada jogo da Copa do Mundo, inclusive o feminino. • Uma simples listagem com os resultados poderia ser da seguinte forma:
  • 16. Foi só um visão geral • Tem bastante coisa legal no Python e no seu ecossistema • Aprenda mais com os melhores: https://www.python.pro.br/ • Não acredito que seja o caso de migrar de tecnologia mas de agregar e ampliar: Foi esta a mensagem que eu quis passar. ;) • Não existe “bala de prata”: aumente o seu repertório e adote a melhor ferramenta para cada problema.
  • 17. Links interessantes • Livro: Python Fluente - Novatec Editora Luciano Ramalho https://novatec.com.br/livros/pythonfluente/ • Programação funcional com Python #0 - Saindo da zona de conforto Eduardo Mendes http://pythonclub.com.br/progrmacao-funcional-com-python-0.html http://pythonclub.com.br/progrmacao-funcional-com-python-1.html http://pythonclub.com.br/progrmacao-funcional-com-python-2.html • Iteração em Python: do básico ao genial - Luciano Ramalho - Rupy 2012 Luciano Ramalho https://youtu.be/ULj7ejvuzI8 • Exemplos desta palestra: https://github.com/jmarioguedes/extremeexperience2018

Notas do Editor

  1. Apresentação pessoal