Escolar Documentos
Profissional Documentos
Cultura Documentos
palomacosta@softwarelivre.org
http://www.javawoman.cjb.net
Desenvolvedora de Software Livre
Agenda
● Agile Programming – Estudo Comparativo
Language – Tipagem
● Características – Jython
● Exemplo Python – Processo de
● Exemplo Java desenvolvimento
● Desenvolvimento – Desvantagens
● Ferramentas – Vantagens
– Perguntas
Paloma Costa – Desenvolvedora de Software Livre
Agile Programming Languagem
● Fácil de usar para aprendizes e poderosa para programadores experientes
● Escalável, ideal tanto para projetos pequenos como para projetos grandes
● Permite o desenvolvimento rápido de aplicações
● Seja portável e multiplataforma
● Facilmente extensível
● Orientada a objetos
● Simples e ao mesmo tempo elegante
● Permitir ao programador fazer o seu trabalho
● Estável e madura
● Biblioteca padrão poderosa
● Riqueza de bibliotecas de terceiros
Paloma Costa – Desenvolvedora de Software Livre
Características
Python Java
● Linguagem orientada a objetos
● Linguagem orientada a objetos
com suporte aos paradigmas: sem suporte a outros
Estrutural paradigmas.
Funcional
● Tipagem Forte e Estática
● Tipagem Forte e Dinâmica
● Multiplataforma
● Multiplataforma Windows, Unix/Linux,
Windows, Unix/Linux, PalmOS, SymbianOS
PalmOS, SymbianOS, Java
● Implementação principal:
● Implementação principal: Freeware / Proprietária
Licença GPLcompatível
Paloma Costa – Desenvolvedora de Software Livre
Características
Python Java
● Liberdade ● “ Policiamento”
– Liberdade para o – Linguagens tipadas '
policiam'
programador desenvolver o mais o desenvolvedor para
software à sua maneira evitar erros
● Interpretada (bytecode + VM) ● Compilada (bytecode + VM)
● Ambiente interativo ● Não possui um ambiente
interativo
● Integra facilmente com:
● Integra com:
– C, C++, Java, Perl, Lua, ...
– C e C++
Paloma Costa – Desenvolvedora de Software Livre
Exemplo Python
class Component(object):
def __init__(self, *kargs):
self._components = list(kargs)
def __str__(self):
ret = ""
for component in self._components:
ret = "%s%s" % (ret, component)
return ret
class Bold(Component):
def __str__(self):
return "<b>%s</b>" % (Component.__str__(self))
class Italic(Component):
def __str__(self):
return "<i>%s</i>" % (Component.__str__(self))
– Zope – JBoss (J2EE)
– Webware (entre outros) – Tomcat
– CGI / mod_python – CGI
● Banco de Dados
● Banco de Dados
– DBAPI (Relacional) – JDBC (Relacional)
● Oracle, MySQL,
● Oracle, MySQL,
PostgreSQL, SQLite, ... PostgreSQL, SQLite, ...
– Objeto (Objetos nativos) – Objeto (Objeto Relacional)
● ZODB
● JDO, Hibernate
Paloma Costa – Desenvolvedora de Software Livre
Desenvolvimento
● GUI ● GUI
– Tkinter – Swing
– wxPython – AWT
– PyQT, PyGTK, PyFLTK, ... – SWT (Eclipse)
● Rede ● Rede
– Biblioteca Padrão – API Padrão
● Sockets, ftp, http, smtp, ● Sockets, http, rmi, entre
pop3, ntp, imap, rpc, ... outros...
– Twisted – Outros frameworks
● Sockets, ftp, http, smtp, ● Diversas implementações
pop3, ntp, imap, ssl, ssh, ... de protocolos
Paloma Costa – Desenvolvedora de Software Livre
Desenvolvimento
● Webservices ● Webservices
– XMLRPC (padrão) – Provido por diversos
– SOAP (3rd party) frameworks (3rd party)
– outros... ● Miscelâneos
● Miscelâneos – Threads
– Threads – Unicode (i18n)
– Unicode (i18n) – XML
– XMl – ...
Paloma Costa – Desenvolvedora de Software Livre
Ferramentas
● IDEs ● IDEs
– Eric3, Spe, Boa – Eclipse, Jbuilder,
Constructor, IDLE, Netbeans, ...
plugin para Eclipse ● Outras Ferramentas
● Outras Ferramentas – Depurador e Profiler
– Depurador e Profiler – Testes automatizados:
– Testes automatizados: ● unittest (3rd party)
● doctest e unittest
Paloma Costa – Desenvolvedora de Software Livre
Estudo comparativo entre diversas
linguagens:
C, C++, Java, Perl, Python, Rexx e Tcl
– Aplicação para busca/processamento de strings
– Número de Programas utilizados para o estudo:
– Programas: Número de programas estudados
– Segunda: Número de participantes da segunda rodada (1 ano)
– Nãousáveis: Programas não funcionais
Paloma Costa – Desenvolvedora de Software Livre
Estudo Comparativo
Métrica Python* Java**
Tempo de Desenvolvimento (hrs) 3 9
Tamanho dos programas (comandos/LoC) 80 240
Confiabilidade*** 100% 100%
Produtividade (LoC/hrs)**** 35 25
* Python 1.5.2 ** Sun JDK 1.2.1 *** Amostragem de resultados corretos
**** O estudo explica a validade da métrica LoC/hrs para produtividade
Paloma Costa – Desenvolvedora de Software Livre
Tipagem
● Tipagem estática / corretude do código
● Lenda: Tipagem estática garante corretude de código (castings errados)
● Fato: O que garante a corretude do código são testes, não tipagem
(“ Strong testing, not strong typing.” Bruce Eckel)
● Tipagem estática / trabalho do programador
● Lenda: Tipagem estática transfere trabalho de checagem de tipos do
programador para o compilador (esse tipo de checagem deve ser feito
pelos testes)
● Fato: Tipagem estática faz o programador se preocupar com castings
● Fato: Tipagem estática gera código maior e com legibilidade inferior
(casting).
Paloma Costa – Desenvolvedora de Software Livre
Jython
● O melhor de dois mundos!
– http://www.jython.org
– Compila código Python para bytecode Java
● Escrever applets em Python?
– Integra código Python em aplicações Java
● Permite que classes Java herdem classes Python
● Utilizado para adicionar suporte a scripts a aplicações
– Integra código Java em aplicações Python
● Permite que classes Python herdem classes Java
● Utilizar frameworks Java em aplicações Python
Paloma Costa – Desenvolvedora de Software Livre
Processo de Desenvolvimento
● Processo de desenvolvimento da ● Processo de desenvolvimento da
linguagem Python: plataforma Java:
– PSF (Python Software – JCP (Java Community
Foundation) Process)
– PEP (Proposal Enhancement – JSR (Java Specification
Python) Requests)
– Votação – JCP Member (assinatura de um
NDA e pagamento de taxas
– Pronunciamento do BDFL
para empresas)
(Benevolent Dictator for Life)
BDFL = Guido – Discussão, votação, definições,
burocracias, ...
– Escolha do Release
Paloma Costa – Desenvolvedora de Software Livre
Desvantagens
● Desvantagens de Python com relação a Java:
– Falta de profissionais qualificados
– Linguagem pouco conhecida no meio empresarial
– Não possui suporte de uma empresa do porte da Sun
– Linguagem em desenvolvimento constante e ainda sem uma
padronização forte.
– Documentação impressa em português é escassa (praticamente
inexistente)
– Libera o programador para fazer o que bem entender, até mesmo
cometer erros
Paloma Costa – Desenvolvedora de Software Livre
Vantagens
● Vantagens de Python com relação a Java:
– Linguagem de fácil aprendizado
– Linguagem em constante desenvolvimento. Novos conceitos sempre
sendo implantados
– Documentação vasta, de qualidade e facilmente encontrada na internet
(maioria em outros idiomas)
– A comunidade de Software Livre costuma ser mais eficiente que
empresas
– Libera o programador para fazer o que bem entender, até mesmo
desenvolver software de qualidade
Paloma Costa – Desenvolvedora de Software Livre
Leitura Recomendada
● Jython http://www.jython.org
● Java http://java.sun.com
● Python http://www.python.org
● ActivePython http://www.activestate.com
● Projeto Software Livre Brasil
http://www.softwarelivre.org
Paloma Costa – Desenvolvedora de Software Livre
http://www.pythonbrasil.com.br
Paloma Costa
Desenvolvedora Java
Início em 2000, trabalhando com Java desde 01/02
Tecnica em Processamento de Dados / Ulbra
Usuária GNU/Linux desde 2001
Oficineira e Palestrante
Website em http://www.javawoman.cjb.net
palomacosta@softwarelivre.org