slide1
Download
Skip this Video
Download Presentation
Python para dispositivos móveis Nokia

Loading in 2 Seconds...

play fullscreen
1 / 41

Python para dispositivos móveis Nokia - PowerPoint PPT Presentation


  • 85 Views
  • Uploaded on

Python para dispositivos móveis Nokia. Blurb. Palestrante: Elvis Pfützenreuter pesquisador no Instituto Nokia de Tecnologia (INdT), escritório de Recife contato: epx@epx.com.br Instituto Nokia de Tecnologia -- INdT entidade juridicamente separada da Nokia sedes em Manaus, Brasília e Recife

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Python para dispositivos móveis Nokia' - adie


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
blurb
Blurb
  • Palestrante: Elvis Pfützenreuter
    • pesquisador no Instituto Nokia de Tecnologia (INdT), escritório de Recife
    • contato: epx@epx.com.br
    • Instituto Nokia de Tecnologia -- INdT
    • entidade juridicamente separada da Nokia
    • sedes em Manaus, Brasília e Recife
    • várias linhas de pesquisa, de mecânica (e.g. testes de impacto) a software livre para dispositivos móveis
desenvolvimento para dispositivos m veis
Desenvolvimento para dispositivos móveis
  • computação móvel é o ”próximo grande acontecimento”
    • com o detalhe que já está acontecendo agora mesmo, aos tropeços
    • problemas: rede (IPv6), propriedade intelectual e desenvolvimento
  • desenvolvedor enfrenta desafios análogos aos existentes na era MS-DOS
    • os aplicativos mobile deixam transparecer isso pelos bugs e pelo visual ”anos 80”
  • ferramentas ainda são fracas, em comparação com o atual desenvolvimento para PC
principais problemas do desenvolvimento para mobile
Principais problemas do desenvolvimento para mobile
  • limitações de memória e desempenho
    • isso tende a não ser mais ”o” problema
  • dificuldades em testar o software
    • testes mais aprofundados costumam exigir hardware especial
    • um bom teste contempla inclusive consumo de energia, no total (Joules) e no instantâneo (Watts)‏
  • emuladores deveriam suprir esta lacuna...
    • ...mas não suprem!
  • desenvolver para mobile custa dez vezes mais que para PC (estimativa pessoal)‏
problemas t picos dos emuladores de mobiles
Problemas típicos dos emuladores de mobiles
  • lentidão
  • não simulam o dispositivo real com fidelidade
    • 100% de fidelidade é mesmo impossível
  • não simulam a API (*) do dispositivo real com fidelidade
  • parcos recursos de depuração
  • tudo isso empurra o desenvolvedor sério para um penoso on-device debugging.

(*) API: Application Programming Inteface. A ”caixa de ferramentas” de funções que o desenvolvedor tem à sua disposição para realizar tarefas. Por exemplo, ler um arquivo do disco – em Linux, a função read() cumpre este papel.

o que a nokia e o indt t m feito a respeito
O que a Nokia e o INdT têm feito a respeito
  • promoção do Python como linguagem alternativa de desenvolvimento rápido
  • melhoria progressiva dos kits de desenvolvimento (SDKs)‏
  • apontar o desenvolvimento em direção a APIs padrão do software livre
hardware nokia
Hardware Nokia
  • Série 60: smartphones baseados no sistema operacional Symbian, mais extensões próprias
  • Maemo: Internet Tablets baseados no sistema operacional Linux, mais extensões livres
  • ambos são baseados na plataforma OMAP da Texas Instruments (N95=N810=OMAP 2420)
    • A Texas apenas arquiteta, não fabrica
    • Processador ARM (ARM Ltd também não fabrica)
linguagem python
Linguagem Python
  • Interpretada, de uso geral
  • Fácil de usar
  • Bom desempenho para sua categoria
  • Biblioteca padrão bastante completa
  • Disponível para quase todos os sistemas comercialmente disponíveis
    • Fácil de portar
  • Fácil de estender, usando linguagem C
    • escapatória para problemas de desempenho
a cara do python
A “cara” do Python

def get_quote(acao):

url = "http://www.bovespa.com.br/...”

pagina = urllib.urlopen(url).read()

inicio = pagina.find("R$")+2

final = pagina.find("</td>", inicio)

cotacao = s[inicio:final].strip()

try:

valor = int(cotacao)/100.0

except ValueError:

valor = 0 # deixe como zero

return valor

python interpretado
Python é interpretado
  • Transforma código-fonte numa representação intermediária (“máquina virtual”)
  • Performance compatível com outras linguagens da categoria
  • Permite muitos “truques” interessantes, como por exemplo o modo interativo
  • Tipagem forte e dinâmica
    • X = “string” + 1 # inválido
    • BLA = 1 # válido
  • Comparações com PHP e Javascript
python de uso geral
Python é de uso geral
  • Não é atrelado a um fim específico, como o PHP
  • Não impõe uma classe específica de computador ou processador
  • Pode ser implementado inclusive em cima de outras máquinas virtuais como Java e .NET
python orientado a objeto
Python é orientado a objeto
  • Classes, objetos, meta-classes, métodos, operadores, e tudo mais que você espera
  • Tudo é objeto em Python, inclusive os tipos primitivos (inteiros, strings, funções, classes, métodos, bibliotecas etc.)
  • Suas classes podem até mesmo herdar de tipos primitivos
  • class MeuInteiro(int):
    • def __add__(x, y):
      • # só pra sacanear
      • return x+y+1
python multi paradigma
Python é multi-paradigma
  • Objetos não acabaram com a fome do mundo
  • Ninguém é obrigado a usar objetos e classes no Python (não explicitamente, ao menos)
  • Paradigma estruturado (como C puro)
  • Paradigma funcional (influências de LISP, SmallTalk, Haskell etc.)
  • Co-rotinas, closures, funções anônimas (“lambda”)
  • Exceções
python vem com pilhas inclu das
Python vem com pilhas incluídas
  • Rica biblioteca padrão
  • Lista = [1,2,3,4,5]
  • Tupla = (1,2,3,4,5)
  • Dicionario = {“a”: 1, “b”: 2, “c”: 3}
    • O funcionamento interno do Python é quase 100% baseado nestes 3 tipos básicos
  • Subset = Lista[1:3]
  • Dicionario[“d”] = 11
  • for item in lista:
  • Iterators e generators
python f cil de aprender
Python é fácil de aprender
  • Linguagem simples e limpa
  • Muita documentação e exemplos na Internet
  • No-nonsense: sem diferenças gratuitas em relação a outras linguagens
    • Tipo float == double do C, que por sua vez depende da plataforma
      • Por exemplo, Java especifica que float comporta-se como o processador SPARC, que é diferente do Intel
    • sprintf(var, “%s: %d”, string, inteiro); // C++
    • var = “%s: %d” % (string, inteiro) # Python
m quina virtual do python
“Máquina virtual” do Python
  • def soma(a,b):

return a + b

  • >>> import dis
  • >>> dis.dis(soma)
  • 2 0 LOAD_FAST 0 (a)
  • 3 LOAD_FAST 1 (b)
  • 6 BINARY_ADD
  • 7 RETURN_VALUE
ferramentas de introspec o
Ferramentas de introspecção
  • Todo objeto é na verdade um dicionário (i.e. uma matriz associativa)
  • Tudo é um objeto
  • O código da VM do Python também é acessível pelo próprio programa
  • Logo, as possibilidades de introspecção são infinitas
  • Ferramentas de profiling, code coverage etc. são rotineiramente escritas em Python mesmo.
psyco python com jit compiler
Psyco: Python com JIT compiler
  • Desempenho do Python é limitado
  • Psyco: ferramenta JIT para arquitetura Intel
  • Permite JIT-compilar todo o programa ou apenas funções específicas (mais interessante)
  • def quadrado(n):
    • return n*n
  • Gera uma “cópia” da função para cada tipo diferente de “n” (quando ele aparece pela primeira vez)
desenvolvimento s rie 60
Desenvolvimento Série 60
  • o SDK para desenvolvimento C++ em Série 60 é livre para download em foum.nokia.com
  • algumas ferramentas extras têm custo
  • a distribuição de pacotes para o grande público implica em ter-se um certificado pessoal (que tem custo)‏
    • o certificado para um único dispositivo-alvo, como por exemplo o seu celular pessoal, pode ser obtido de graça
a api c do symbian s60
A API C++ do Symbian/S60
  • completamente diferente de qualquer outra API como Linux ou Windows
  • baseado fortemente em design patterns C++
  • é notoriamente difícil de aprender
  • por questões de eficiência, quase toda operação é assíncrona e exige vários comandos amiudados
  • a comunidade em torno da plataforma é pouco colaborativa, embora haja 120+ milhões de celulares Symbian no mundo.
openc api de software livre para s rie 60
OpenC: API de software livre para Série 60
  • o OpenC oferece a API POSIX (padrão UNIX e Linux) para a plataforma Série 60
  • inclui Glib, OpenSSL, libz etc.
    • que não são padrões POSIX, mas são padrões de fato do mundo do software livre
  • ainda não oferece API de interface gráfica como GTK+, mas é a tendência
  • nível de compatibilidade de código-fonte com Linux é excelente
    • O problema é testar depois 
python para s rie 60
Python para Série 60
  • Python: linguagem interpretada de desenvolvimento rápido
  • portada para inúmeras plataformas
  • Python para Série 60 é um porte mantido pela Nokia
  • usar Python permite elidir ou postergar inúmeros problemas do desenvolvimento para mobile
  • permite inclusive evitar o SDK completamente (se você não usa Windows etc.)‏
  • PyS60 vai ser ”rebaseado” em OpenC
exemplo fazer liga o telef nica e mandando mensagem
Exemplo: fazer ligação telefônica e mandando mensagem
  • import telephone
  • telephone.dial(“130”)
  • import messaging
  • messaging.sms_send(“88588245”, “ble”)
exemplo fazer liga o telef nica gravando o que falado
Exemplo: fazer ligação telefônica gravando o que é falado
  • import telephone, audio, time
  • s = audio.Sound.open(“E:\\TROTE.WAV”)
  • telephone.dial(“190”)
  • # espere atender
  • s.record()
  • time.sleep(10)
  • telephone.hang_up()
  • s.stop()
  • # divirta-se com o resultado
  • s.play()
exemplo tirar fotografia salv la e mostr la na tela
Exemplo: tirar fotografia, salvá-la e mostrá-la na tela
  • import camera, appuifw
  • img = camera.take_photo()
  • img.save(“E:\\IMAGEM.JPG”)
  • c = appuifw.app.body = appuifw.Canvas()
  • c.blit(img)
plataforma maemo
Plataforma Maemo
  • linha de Internet Tablets (770, N800, N810)‏
  • baseado inteiramente em Linux e bibliotecas de software livre
  • apenas uns poucos aplicativos de terceiros são proprietários (e.g. browser do N800 é o Opera)‏
  • Maemo é a ”distribuição Linux” apropriada para estes dispositivos
  • não é um celular
  • conecta-se ao celular via Bluetooth
  • FAQ: vai ser usado em celulares?
sdk do maemo
SDK do Maemo
  • baseado no Scratchbox, um ”chroot” com recursos adicionais
  • permite rodar uma distribuição Linux diferente, dentro do seu ambiente Linux ”normal”, sem recorrer a VMWare
    • o Linux ”normal” e o hóspede compartilham o mesmo kernel
  • emulador Maemo é muito mais fiel ao dispositivo real, pois o Internet Tablet também roda Linux
  • linguagens: teoricamente, qualquer uma suportada no Linux (na prática: C, C++ e Python)‏
modos de emula o do maemo
Modos de emulação do Maemo
  • emulação i386: roda dentro de uma distribuição Maemo compilada para i386
  • emulação ARM: roda dentro de uma distribuição Maemo compilada para o ARM, que é o processador do Tablet
    • obviamente, emulação ARM é mais fiel ao dispositivo final
    • serve para pegar alguns tipos incomuns de bug
    • emulação ARM é feita pelo software QEMU
    • Kernel não é emulado (usa o kernel anfitrião)
desenvolvendo para maemo
Desenvolvendo para Maemo
  • já possui ferramentas de desenvolvimento muito melhores que o Série 60
  • caminhos para melhorar ainda mais:
    • Python para Maemo
    • Mamona SDK
python para maemo
Python para Maemo
  • mantido pelo Instituto Nokia de Tecnologia
  • é essencialmente um porte do Python para Linux, com algumas bibliotecas adicionais específicas do Maemo
  • assim como o Python para Série 60, também permite diminuir a dependência do SDK
ferramentas adicionais para desenvolvimento r pido maemo
Ferramentas adicionais para desenvolvimento rápido Maemo
  • ESBox: plug-in do Eclipse para desenvolvimento num ambiente hospedado pelo Scratchbox
  • Pluthon: plug-in do Eclipse para desenvolvimento em Python para Maemo
    • o script é testado diretamente no Tablet, tornando o Scratchbox desnecessário
    • exige possuir o dispositivo
problemas do desenvolvimento em python ordem decrescente
Problemas do desenvolvimento em Python (ordem decrescente)‏
  • Biblioteca de UI
    • Normalmente, específica para o dispositivo
    • Terá de existir também no PC, ou ser emulável
    • Afeta toda a arquitetura do seu sistema
    • Situação S60, Maemo/GTK e Maemo/EFL
  • Diferenças entre versões (Python 2.2 x 2.5)‏
  • Preconceito contra a tecnologia?
  • Footprint do interpretador
  • Desempenho, em particular no carregamento
vis o do futuro
Visão do futuro
  • emuladores que simulem o hardware, sendo tão fiéis ao dispositivo real quanto possível
  • APIs e ferramentas baseadas em padrões abertos e de software livre
  • uso massivo de linguagens interpretadas
    • isto ainda está para acontecer no desktop – portanto ainda vai demorar no mobile
  • debug on-device facilitado, sem necessidade de hardware específico e caro para isso
    • num futuro ainda mais distante: dispositivos poderosos o suficiente para hospedar o próprio SDK, como o PC faz (o Maemo já tem algo nessa direção)‏
vis o do futuro nokia
Visão do futuro - Nokia
  • Biblioteca Qt
    • Qt abstrai quase tudo, até acesso a banco de dados
    • Interoperabilidade Maemo/Série 60/outros
    • PyQt no Python
  • Linux crescendo em importância
  • Python crescendo em importância
    • ... Mas Javascript está na área
a concorr ncia
A concorrência
  • Google Android
    • Linux, Java
  • Apple iPhone
    • Mac OS X portado
  • OpenMoko
    • Linux, Enlightenment
  • TrollTech GreenPhone (adquirido pela Nokia)
envolva se
Envolva-se!
  • ainda há muito que ser desenvolvido
    • o Google é prova disto
  • projetos de software livre
  • trabalhos de conclusão de curso relacionados a Maemo e Série 60
  • Posições abertas no INdT
ad