Una breve descripcion de python, la POO y su uso en ingenieria. Esta presentacion minimiza un curso de 4 meses en una sola clase.
A brief description of python and the OOP for engineering applications, it minimized a course of python from 4 months to just one class. From Corrientes to the world
2. Indice
1. Técnicas de enseñanza de la programación en Ingenieria.
2. Que es python? Cuando nace? Y donde se usa hoy?
2. Como comparamos distintos lenguajes de programación?
3. OK. Ahora veamos que nos ofrece Python….
4. El Paradigma de Programación Orientada a Objetos y la filosofía
de python
5. Estructuras basicas en Python, comparadas con C++.
6. Estructuras complejas…
7. OpenSource la gran ventaja , y su licencia PSFL.
8. Gran cantidad de Modulos y paquetes.
9. No me creen?? Estadisticas, y el principal usuario del lenguaje.
10. Links recomendados, para ponerse en marcha.
11. Dudas, consultas, quejas??
3. Técnicas de enseñanza: Modelo clásico
PIC16F84
C, C++
Arquitectura de
PC, Registros
Ensamblador
4. Técnicas de enseñanza: Modelo clásico
VENTAJAS:
1. Sigue el orden lógico de aprendizaje (desde el punto de vista del hardware)
DESVENTAJAS:
1. Se ata el conocimiento a una estructura de microcontrolador en particular
2. Se pierde mucho tiempo tratando de interpretar el funcionamiento de una familia
De microcontrolador en particular (16F84)
3. Se pierde mucho tiempo tratando de interpretar el trabajo en ensamblador
4. Se llega tarde a la etapa en C, C++.
5. Se pierde mucho tiempo intentando aprender C, C++.
6. No se llega al vinculo software- hardware entre microcontrolador y PC.
7. El conocimiento adquirido es valido casi exclusivamente para «familias»
O marcas de micro controladores particulares.
5. Técnicas de enseñanza: Modelo Actual
Linux, Windows
Arduino
Arquitectura
hardware de PC,
Registros
Arquitectura de
software de un
Sistema Operativo
(PC)
C,C++
Python
Reseñas de
Ensamblador
Proyecto o trabajo
de vinculación
6. Técnicas de enseñanza: Modelo Actual
VENTAJAS:
1. Sigue el orden lógico de aprendizaje, para software y para el hardware
2. Se conoce rápidamente C,C++ , lenguaje base de todos casi todos los lenguajes
De programación.
3. Se aprende a trabajar con la PC, algo básico para después manejar software
Especifico de mayor complejidad (matlab, python, Proteus, Orcad, VHDL, etc.)
4. No se ata el conocimiento a un proveedor de hardware o ‘marca’, y se prioriza
La comprensión de los PARADIGMAS y FILOSOFIAS de programación, en vez de una
‘marca’ de hardware.
5. Conociendo C, C++ es extremadamente sencillo iniciar en python.
6. Se cierra el circuito de aprendizaje vinculando un desarrollo de software
(PC + python), con un desarrollo de hardware (Arduino + C).
7. Este proceso aporta al estudiante una herramienta de trabajo con formato general.
DESVENTAJAS:
1. No se puede omitir ningún paso en el proceso de enseñanza.
2. Se necesita de personal que conozca cada área en particular.
3. Requiere de bastante practica, se aprende haciendo
7. Que es python? Cuando nace?
Y donde se usa hoy?
Python fue creado a finales de los ochenta por Guido van
Rossum (foto) en Holanda.
Van Rossum es el principal autor de Python, y continua con su
rol central en decidir la dirección de Python.
•Primera aparicion de Python : 1991.
•Influido por Perl, Java, Lisp.
•Influyo en Ruby, JavaScript, Cython.
•Multiplataforma
•OpenSource
•Version Actual: 3.3.1 / 2.7.4 .
Python se uso en la Tesis doctoral que creo Google. Debido a eso ha tenido un fuerte
vinculo con la empresa. Python se hizo masivo en el año 2008, cuando fue el primer
leguaje soportado por la Google App Engine.
Actualmente python es parte fundamental de: Google, DreamWorks, Pixar, Disney, la
NASA el CERN y el caso de éxito mas importante: toda la plataforma de YOUTUBE.
8. Como comparamos distintos lenguajes
de programación?
Con todos los lenguajes se puede hacer todo, pero formalmente, algunos tienen mas
“facilidad y velocidad” para algunas “tareas o filosofias” de trabajo.
Para comparar lenguajes se los clasifican segun:
1. Nivel de abstraccion (alto o bajo nivel).
2. Forma de ejecucion (compilada o intepretada).
3. Según el paradigma de programacion ( procedual,POO, funcional, Logica).
3.1- Procedual: C, BASIC. Python
3.2- POO: C++. Python
3.3- Funcional: Matlab, LISP, FORTRAN. Python
3.4- Logica: PROLOG. Python
3.5- Multi-Paradigma: C#, JAVA, Python,VB.
4. Según la Filosofia del lenguaje:
Ruby: Prioriza pocas lineas de codigo, y el principio de la menor sorpresa.
Python: Prioriza la Legibilidad, la transparencia y la sencillez.
9. El paradigma Programación Orientada
a Objetos (POO)
• Cambia el concepto de DATO pasivo a OBJETO ACTIVO.
• No hay DIMENSIONES , hay OBJETOS con METODOS y ATRIBUTOS.
• Un objeto suele confundirse con una librería o importar un archivo, esto es
falso. Una librería puede incluir varias clases u objetos internos.
• Las clases son consecuencia de la evolución de los tipos de datos.
10. El paradigma Programación Orientada
a Objetos (POO)
Datos simples
x= 5
y = 2.3
Agrupación de
Datos simples
del mismo tipo
(arrays, strings)
x= [5,2,4,6]
Y=‘buen dia’
Agrupación de Datos de
distinto tipo
(struct, union)
x= [5, 0.3, ’hola’, 0xFF]
Agrupación de Datos y
funciones, de distintos
tipos
?
1950, ensamblador
1960,FORTRAN,COBOL
1980,C, BASIC
1985,C++
~2000 Python, C#, JAVA
11. El paradigma Programación Orientada
a Objetos (POO)
Video Rápido, que explica
POO en Python, clic aquí
12. OK. Ahora veamos que nos ofrece Python….
Python permite trabajar de todas las maneras vistas antes (y tiene tipado dinámico )
•Procedual y POO:
•Funcional:
•Logica:
13. Estructuras básicas en Python,
comparadas con C++.
.Tipado de variables:
C,C++,etc. Python
14. Estructuras básicas en Python,
comparadas con C++.
.Bucles(for, if-elif-else, while):
C,C++,etc. Python
17. Estructuras en Python,
comparadas con C++.
Conclusiones generales:
• Python corre entre entre 3 y 5 veces mas lento que C++, pero lleva entre 5 y 10 veces
menos tiempo de desarrollo. Es decir 1 año de C++ == 2 meses de python
• En python maneja errores como un juguete, en C++ como un guru.
• C++ es la base de cualquier lenguaje de programación actual, Python no.
• Un problema en cualquier lenguaje se puede resolver con su equivalente en C++, no en
python.
• Python esta altamente orientado al prototipo y resultados rapidos, C++ esta orientado a
algo concreto y de producción.
• Python NO TIENE PUNTEROS, en ves de eso usa variables mutables (pasan por
referencia), como ser listas,diccionarios y objetos de usuario. Y variables inmutables
(paso por valor), como son los int, float y tuplas.
18. OpenSource la gran ventaja , y su
licencia PSFL.
• No hay que pagarle a nadie para desarrollar en Python, como si ‘deberia ser’ con
Visual, Matlab, JavaScript,
• No existen las variables de tipo privado, aunque hay directivas para identificarlas como
tal.
• Python no respeta norma ANSI,ISO, ni nada (todavia), C++ si (ISO/IEC C++-2011).
• Licencia PSFL, permite distribuir software como privado.
19. Gran cantidad de Modulos y paquetes.
Python actualmente cuenta con +25000 paquetes. Cada paquete es un conjunto de
Modulos. Cada Modulo es un conjunto de clases. Cada clase es un conjunto de Metodos
y variables.
Python tiene varias implementaciones, la principal y por defecto es Cpython. Pero
existen otras (por las dudas):
• IronPython -> implementacion en .NET
• Stackless -> implementacion en Cpython que no usa el stack de C.
• Jython -> implementacion en Java VM.
• Pippy -> implementacion para PALM.
• PyPy -> implementacion de Python en Python (?????)
• Pyjamas -> implementacion en JavaScript
• Shed Skin -> en C++
• PyS60 -> en symbian S60 de nokia.
• Py4A -> ¿Quién adivina?
20. No me creen?? Estadisticas
La web http://www.tiobe.com/, se encarga del benchmarck o comparacion de lenguajes
de programacion en funcion del numero de webs sobre el tema (super-impreciso ),
aquí algunos graficos para octubre 2013:
Salon de la fama
(python, unico en ganar 3 veces)
21. No me creen?? Estadísticas
Según el Sr. trendy (HTML y XML no son lenguajes y no dice como obtiene los datos, dudoso):
22. No me creen?? Estadísticas
PyPL-PopularitY-of-Programming-Language, es el mas neutral y certero de los
estadistas en este tema, se basa en las busquedas de google sobre ‘tutoriales del
lenguaje’, son ademas, datos de acceso publico (de google):
23. Links recomendados, para ponerse en
marcha...
Python Oficiales:
• http://python.org/
• http://python.org.ar/ - comunidad de argentina
• http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html- estadisticas del
lenguaje (yo no le creo)
• http://trendyskills.com/ - otro
• https://sites.google.com/site/pydatalog/pypl/PyPL-PopularitY-of-Programming-
Language - otro, el mas certero para mi.
• http://www.pinguino.cc/ - version arduino con PIC, y Python
• http://micropinguino.blogspot.com.ar/ -- la mejor web para pingüino y Python
• https://code.google.com/p/pinguino32/ -- comunidad pinguino