Python para dispositivos móveis Nokia
This presentation is the property of its rightful owner.
Sponsored Links
1 / 41

Python para dispositivos móveis Nokia PowerPoint PPT Presentation


  • 69 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

Python para dispositivos móveis Nokia

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


Python para dispositivos m veis nokia

Python para dispositivos móveis Nokia


Blurb

Blurb

  • Palestrante: Elvis Pfützenreuter

    • pesquisador no Instituto Nokia de Tecnologia (INdT), escritório de Recife

    • contato: [email protected]

    • 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


O rosto do ambiente s60

O ”rosto” do ambiente S60


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


Pys60 no emulador e no celular

PyS60 no emulador e no celular


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


Python for maemo develop once run everywhere

Python for Maemo: develop once, run everywhere


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


Python para dispositivos m veis nokia

THE END


  • Login