Beneficiándose con Python Ricardo Calixto Quesada
1ra parte ● ¿Qué es Python? ● Puntos fuertes / débiles de Python ● Python como 1er o 2do lenguaje
¿Qué es Python? ● Es un lenguaje de programación interpretado, interactivo y orientado a objetos. ● Es potente pero con una sintaxis clara. ● Tiene módulos, clases, excepciones, tipos de datos de alto nivel. ● Es de tipeo dinámico. ● Posee interfaces a muchas “system calls”, bibliotecas, y sistemas de ventanas.
Interpretado, interactivo... ● Interpretado – No es compilado a “nativo” – Es compilado a “bytecode” en tiempo de ejecucion – Máquina virtual ● Interactivo ● O sea, es un lenguaje “script”
Orientado a Objetos ● Tiene clases ● Herencia múltiple ● Polimorfismo ● Excepciones, etc.
Sintaxis clara pero potente ● Sintaxis clara – Fácil de aprender – Fácil de leer – Fácil de mantener ● Muy potente – Sintaxis poderosa – TDA de alto nivel ● Diccionarios ● Listas ● Tuplas
Python Zen nos dice...
Documentación ● Excelente documentación ( – Actualizada – Completa – Tutoriales – Referencia del lenguaje – Referencia de las bibliotecas – API “C” de Python – Como se extiende, embebe ● Libros: – Python Essential Reference ●
Soporte ● Es “community supported” – comp.lang.python, python-list, foros, IRC – Múltiples bibliotecas/wrappers dentro/fuera de Python: ● Gráficos: OpenGL, SDL ● Protocolos: ftp, http, smb, smtp, snmp, rpc, telnet, etc. ● Crypto: AES, 3DES, public key, hash, etc. ● Toolkits: QT/KDE, GTK/GNOME, MFC, wxWindows, TK ● DB: ODBC, DBI, postgres, mysql, oracle, etc. ● XML: DOM, SAX
Herramientas de desarrollo ● IDE / Editores – Emacs / X-Emacs – PythonWin – IDLE – Vim / gvim – Visual Python ● Profilers ● Unit Test framework ● Documentadores
Desarrollo rápido ● Entre 3 a 5 veces más rapido que Java ● Entre 5 a 10 veces más rapido que C++ – “Lo que un programador Python hace en 2 meses, un programador C++ no lo termina en 1 año” Herramie ntas de desarrollo Sintaxis clara Potencia Documenta ción Desarrollo rapido Soporte
Velocidad de ejecución ● Python es más lento que los lenguajes “nativos” (C, C++) ● Encontrar el punto justo – En Python se puede hacer “todo” – Usar profiler para encontrar los “cuellos de botella” – Optimizar – Si no alcanza la optimización en Python “extender”
Python es extensible ● Es extensible – Agregar nuevos tipos de datos más complejos – Llamadas a nuevas “system calls” – Wrappers a distintas bibliotecas ● Crypto, protocolos, toolkits. – “Nativizar” por performance ● Lenguajes: – C: ( – C++: (
Python es embebible ● Es embebible. – Metemos dentro de nuestra aplicación (nativa) a Python – Múltiples intépretes Python a la vez. ● ¿Cuándo embeber? – Cuando queremos extender nuestra aplicación: ● Para customizar ● Agregar funcionalidad más facilmente – Es fácil
Portable, multiplataforma ● Portable – Linux – Windows – FreeBSD – Solaris – Palm :-) ● Multiplataforma – “Codear una sola vez, correr en todos lados” – Aunque Muchas extensiones de 3ros son para un solo OS
Y más... ● Excelente para principiantes / expertos – Scripts -> estructurado -> objectos – Metaclases, generators ● Escalable – Se pueden hacer proyectos chicos / grandes ● Simple pero elegante ● Estable y maduro ● Es “pseudo-código” ejecutable ● Licencia OpenSource ● Desarrollo del lenguaje abierto – PEPs (
Según la mitologia griega 1.Python fue una serpiente / dragón muy mala 2.Protegía el oráculo Delfos 3.Le habían vaticinado su muerte en manos de un hijo de Leto 4.Hera, que era malvada y celosa mandó a Python a matar a Leto 5.Leto justo había parido gemelos unos días antes de encontrarse con Python 6.Apolo, unos de esos gemelos, con sus flechas mató a Python 7.Y así Apolo se apoderó del oráculo de Delfos
2da parte ● Casos de estudio – TEG – IMPACT ● Otros proyectos que usan Python
Caso de estudio #1 ● Tenes Empanadas Graciela – En C (2 meses aprox) ● Anda solo en Linux + GNOME – En Python (5 días) ● Anda en Linux, Windows, Mac OS X
Caso de estudio #2 ● CORE IMPACT – Kernel en C++ – Desarrollo de módulos / bibliotecas en Python
Otros proyectos con Python ● Google ● Yahoo Groups ● Blender (emb) ( ● mod_python (emb) ( ● Zope (ext) ( ● Administración de AT&T ● Instalador de RedHat ● GIMP (emb) ( ● BitTorrent (100%) ( ● X-Chat (emb) ( ● PyDance (ext) (
Apolo matando a Python
Mitología moderna ● Python murio desangrada ● La sangre nunca se secó ● Guido van Rossum un día bebió de esa sangre ● Python se se reencarnó en Guido. ● ¿Para vengarse de Apolo ? ¿Para cuidar nuevamente el oráculo ? ¿...?
Fin ¿ Preguntas ?