Está en la página 1de 8

Origen de Python

Guido Van Rossum public la primera versin de Python (versin 0.9.0) en alt.sources en
febrero de 1991. Dicha versin ya inclua el manejo de excepciones, de funciones y los
tipos de datos bsicos de lista, dict, str y otros. Tambin era orientado a objetos y tena un
sistema de mdulos.
La version 1.0 de Python fue lanzada en enero de 1994. Las nuevas caractersticas
principales en esta versin fueron las herramientas de programacin funcional lambda,
map, filter y reduce. Seis aos y medio despus en Octubre del 2000, Python 2.0 fue
introducido e inclua comprensin de listas, un recolector de basura completo y
compatibilidad con Unicode.
Python floreci por otros 8 aos en las versiones 2.x antes del siguiente gran lanzamiento
de Python 3.0 (tambin conocido como Python 3000 y Py3k) fuera realizado. Python 3
no es compatible con Python 2.x. El nfasis en Python 3 fue la eliminacin de
construcciones de programacin y mdulos duplicados (Klein, B. & Mitchinson, D., 2016).
Python combina sintaxis sencilla, recursos en lnea abundantes y un rico ecosistema de
herramientas enfocadas cientficamente con un fuerte nfasis en la comunidad. (Perkel, J.
M., 2015). Adems es un lenguaje multiplaforma, libre y gratuito que est sustituyendo a
software comercial (como MATLAB, Mathematica, Maple) en universidades
norteamericanas tales como MIT, Stanford o Caltech, y que se utiliza ampliamente por
empresas como Google, Dropbox o la NASA. (Computer-aided Chemical Engineering,
2015)
Los archivos de procesamiento por lotes (scripts) en Python tienen la extensin .py
(Rossant, C., 2016).

Instalando Python
Instalar Python en Windows no supone mucho problema, el problema viene cuando
queremos instalar todas las bibliotecas que vamos a necesitar para clculo cientfico
porque suelen tener extensiones escritas en otros lenguajes compilados y ese proceso de
instalacion se puede complicar enormemente. Al final lo que funciona son una serie de
distribuciones que traen todos esos paquetes ya configurados (Departamento de
Ingeniera Qumica y la Escuela Politcnica Superior, Universidad de Alicante, 2014).
Asi tenemos a los entornos de desarrollo integrados (IDEs por sus siglas en ingls)
Canopy, Spider, WinPython, Pyzo y Anaconda. Canopy y Spider se caracterizan en primer
lugar, por el resaltado de sintaxis, que colorea las diferentes partes de la sintaxis de
Python, segn su funcin, volviendo ms fcil de leer el cdigo; y en segundo lugar, y ms
importante an, corre un programa en el background denominado pyflakes que
comprueba la validez de la sintaxis de Python al ir escribiendo cdigo. Es como un
corrector integrado de ortografa y gramtica, siendo extremadamente til, para
principiantes y expertos por igual. (Pine, D. J., 2015)

Canopy es un IDE ms sencillo que Spyder de aprender por los principiantes. Est escrito
y es mantenido y distribuido por la compaa de software Enthought. (Pine, D. J., 2015).
Spyder cuenta con opciones avanzadas en edicin, pruebas interactivas, depuracin,
caractersticas de introspeccin y un entorno de computacin numrica gracias al apoyo
de IPython (Raybaut, P., 2016). Toda la distribucin Spyder es gratuita. (Pine, D. J., 2015)
En el caso de WinPython y Pyzo no es necesaria la instalacin y pueden cargarse en una
memoria usb, siendo posible utilizarlas en cualquier ordenador porque todo se ejecuta
desde ah. La distribucion pyzo es gratuita y funciona en todas las plataformas, est
disponible tanto para python 2 como para python 3 e incluye un entorno fuerte de
desarrollo integrado. (Departamento de Ingeniera Qumica y la Escuela Politcnica
Superior, Universidad de Alicante, 2014)
Anaconda, desarrollada por Continuum Analytics, es un software multiplataforma de
cdigo abierto, basada en la tecnologa de Python para el anlisis de datos (Parker, E.,
2015). Anaconda agrupa alrededor de 200 de las bibliotecas ms populares de Python
para la ciencia, las matemticas, la ingeniera y el anlisis de datos (Van Noorden, R.,
2015) e incluye otras herramientas tiles como el cuaderno IPython y el IDE Spider.
La instalacin de libreras adicionales y de otras versiones de Python se logra a travs de
Conda, un gestor de paquetes, dependencia y entorno. Anaconda es de licencia BSD que
da permiso para el uso comercial y redistribucin de Anaconda (Continuum Analytics,
2015). Anaconda es fcilmente integrable dentro de entornos de Tecnologas Informticas
existentes (Parker, E., 2015).

Qu es IPython?
IPython fue creado por Fernando Prez en 2001 (Rossant, C., 2016) y funciona como un
intrprete del lenguaje de programacin Python (Ahmadia, A. & Cano Rodrguez, J. L.,
2016). IPython ofrece una rica arquitectura de computacin interactiva con shells
interactivos de gran alcance (Berkeley Institute for Data Science, 2015), permitiendo,
dentro un mismo sistema, una rpida exploracin de algoritmos, anlisis de datos y
visualizacin a travs de una lnea interactiva de comandos en la que el cdigo se puede
ejecutar de inmediato, sin tener que pasar a travs del ciclo tradicional de editar/
compilar/ejecutar (Perez & Granger, 2007).
IPython tambin brinda soporte para herramientas GUI, as como herramientas para la
computacin en paralelo (Caporaso, J. G. et al., 2013) y una interfaz web, para el
cuaderno electrnico (Gibiansky, A., 2013) que facilitan la colaboracin en lnea.

El cuaderno electrnico de IPython.

Los cuadernos electrnicos, como los de IPython, Sweave o de knitr, tienen como objetivo
captar todo el proceso cientfico desde el diseo del estudio hasta el anlisis de datos y

visualizacin (casi en tiempo real), disear de mdulos de enseanza y permitir a los


colegas revisar y replicar el trabajo. Los usuarios pueden a su vez compartir los datos y
los mtodos con personas ajenas a la investigacin, a medida que se desarrollan (a
travs de correo electrnico, servicios de alojamiento web, tales como GitHub, Dropbox, y
nbviewer) (ver Mascarelli, A., 2014; Nature, 2016; Rebooting review, 2015; Shen, H.,
2014).
La interfaz web del cuaderno IPython est basado en los cuadernos electrnicos de
Mathematica y Sage y fue lanzado en 2011 para: (ver Mascarelli, A., 2014; Rossant, C.,
2016):

Servir como un entorno para la escritura y ejecucin de cdigo de una manera


interactiva y exploratoria (cdigo vivo).
Ofrecer adems un editor de texto ms conveniente que la consola de original de
IPython, para la escritura de texto narrativo, de ecuaciones matemticas y otro
tipo de texto enriquecido
Mejora las capacidades grficas, a travs de grficos enriquecidos y recursos web
multimedia
Avanzar y retroceder fcilmente entre todos los elementos anteriores.

IPython notebook funciona en la mayora de navegadores web, puede ser convertido a


una amplia gama de formatos estticos (HTML, PDF, diapositivas, etc.) (Granger, B. &
Prez, F., 2016) y es compatible con una diversidad de lenguajes de programacin usado
para el anlisis de datos, incluyendo Julia, Python y R (Van Noorden, R., 2014)

El nuevo cuaderno Jupyter


Sin importar el lenguaje de programacin en el que se trabaje, los usuarios necesitan
herramientas que mejoren la reproducibilidad y la interactividad a travs de una amplia
gama de contextos de uso, desde exploracin individual hasta enseanza y presentacin.
(Granger, B. & Prez, F., 2016)
IPython fue diseado desde el principio para ser polimrfico en el idioma utilizado, lo que
lo vuelve independiente con respecto al lenguaje utilizado (language-agnostic): se
especifica un protocolo y se requiere la interpretacin de un backend ("kernel") escrito en
un lenguaje de programacin dado pero que entiende ese protocolo. (Gibiansky, A., 2013)
Un 'kernel' es un programa que se ejecuta y realiza una introspeccin de cdigo del
usuario. IPython incluye el kernel para Python (The IPython Development Team, 2015)
pero kernels para otros idiomas como Julia y Haskell, se desarrollan y utilizan
activamente (Berkeley Institute for Data Science, 2015).
El cuaderno IPython estaba acumulando demasiados kernels adicionales escritos en
lenguajes de programacin diferentes a Python, volviendo el nombre confuso (Pallas, J.,
2015). As que en 2015, los desarrolladores de IPython hicieron una importante
reorganizacin de su proyecto de creciente cdigo. El cuaderno se llama ahora cuaderno
Jupyter y IPython es ahora el nombre del kernel de Python. (Rossant, C., 2016)

El propio servidor del cuaderno electrnico est escrito en Python, pero la interaccin
frontend / backend es independiente del lenguaje. Esto hace que Python slo otro
backend en lo que se refiere al cuaderno electrnico. (Pallas, J., 2015)
Actualmente el cuaderno Jupyter soporta la integracin multi-idioma, permitiendo, por
ejemplo, mezclar cdigo Python con Cython; R; Octave; y escribir scripts en Bash, Perl o
Ruby, Scala, JavaScript, Matlab. (Berkeley Institute for Data Science, 2015; Krill, P., 2015).

Conceptos tiles.
Front-end y Back-end
En trminos simples, cada programa escrito por lo general puede ser clasificado en dos
grandes partes: cdigo de front end y cdigo de back end. El sftware de front end es
lo que el usuario ve cuando se ejecuta el programa (o para el caso se abre una pgina
web, etc.). Por lo general, se ocupa de la interfaz. El software de front end se limita a
organizar los datos introducidos por el usuario y que luego los enva al servidor o software
de back end y/o muestra informacin procesada enviada por el back end.
El back end es donde se encuentra la lgica real que impulsa el programa, adems de
poseer bases de datos. (Sharma, S., 2014)

Interfaz de Usuario, User Interphase, Shell, Emuladores de Terminal o Terminales


Virtuales.
Se trata de una interfaz fcil de usar, generada por el software de front-end que permite
recopilar y visualizar datos as como entender y ejecutar los comandos que el usuario
introduce (Fluttershy, 2012; Rouse, M., 2016b).
Los shells pueden ser (Shell (informtica), 2016):

De lneas texto (CLI, Command-Line Interface, interfaz de lnea de comandos),


Grficos (GUI, Graphical User Interface, interfaz grfica de usuario),
De lenguaje natural (NUI, Natural User Interface, interfaz natural de usuario).

Kernel
El kernel es el centro esencial de un sistema operativo de la computadora, el ncleo que
proporciona servicios bsicos para todas las dems partes del sistema operativo. Un
sinnimo es ncleo. Debido a que el cdigo que conforma el ncleo se necesita de forma
continua, este por lo general se carga en almacenamiento de ordenador en un rea que
est protegida de modo que no se superpondr con otras partes de uso menos frecuente
del sistema operativo.(Rouse, M., 2016a)
Archivos de procesamiento por lotes o Scripts

Contiene una lista de comandos para ejecutar en orden. Se ejecuta de principio a fin y
presenta una cierta salida. (Rossant, C., 2016)

Referencias Bibliogrficas

Ahmadia, A., & Cano Rodrguez, J. L. (2016). Parte 1-Introduccin a Python e IPython.
Recuperado el 31 de julio de 2016, a partir de
https://github.com/CAChemE/curso_python_alicante/blob/master/01_intro-pythonipython.ipynb
Berkeley Institute for Data Science. (2015, marzo 18). IPython. Recuperado el 31 de julio
de 2016, a partir de https://bids.berkeley.edu/research/ipython
Caporaso, J. G., Gonzalez, A., Granger, B. E., Knight, Rob, McDonald, D., Perez, F.,
Walters, W. A. (2013). Collaborative cloud-enabled tools allow rapid, reproducible
biological insights. International Society for Microbial Ecology, 7, 461464.
http://doi.org/10.1038/ismej.2012.123
Computer-aided Chemical Engineering. (2015). Charla Cuando Nature se toma el
software libre en serio: Python como alternativa real a MATLAB, Mathematica y
otros programas comerciales. Recuperado el 30 de julio de 2016, a partir de
http://cacheme.org/charla-nature-software-libre-python-alternativa-matlabmathematica/
Continuum Analytics. (2015, septiembre 21). Download Anaconda now! Recuperado el 31
de julio de 2016, a partir de https://www.continuum.io/downloads
Departamento de Ingeniera Qumica y la Escuela Politcnica Superior, Universidad de
Alicante. (2014). Instalacin de Python en Windows (y otros sistemas operativos)
[MP4]. Recuperado a partir de https://www.youtube.com/watch?
v=kLuwGhvWJzE&list=PLoGFizEtm_6iheDXw2-8onKClyxgstBO1&index=16

Fluttershy. (2012, diciembre 3). A Front-End User-Interface? WordReference.com


Language Forums. [Comentario de Forum en lnea]. Recuperado a partir de
http://forum.wordreference.com/threads/a-front-end-user-interface.2539074/
Gibiansky, A. (2013, octubre 13). Creating Language Kernels for IPython - Andrew
Gibiansky. Recuperado a partir de
http://andrew.gibiansky.com/blog/ipython/ipython-kernels/
Granger, B., & Prez, F. (2016). Multi-language Data Science with IPython, IJulia, IR, and
Friends. Recuperado el 31 de julio de 2016, a partir de
http://conferences.oreilly.com/strata/stratany2014/public/schedule/detail/36762
Klein, B., & Mitchinson, D. (2016). Python Course. Recuperado el 30 de julio de 2016, a
partir de http://www.python-course.eu/python3_history_and_philosophy.php
Krill, P. (2015). Python-only no more, IPython becomes Jupyter. Recuperado el 31 de julio
de 2016, a partir de http://www.infoworld.com/article/2972144/analytics/pythononly-no-more-ipython-becomes-jupyter.html
Mascarelli, A. (2014). Research tools: Jump off the page. Nature, 507(7493), 523525.
http://doi.org/10.1038/nj7493-523a
Nature. (2016). IPython interactive demo. Recuperado el 30 de julio de 2016, a partir de
http://www.nature.com/news/ipython-interactive-demo-7.21492
Pallas, J. (2015, agosto 15). What is the difference between Jupyter and IPython
Notebook? Quora. [Comentario de Forum en lnea]. Recuperado a partir de
https://www.quora.com/What-is-the-difference-between-Jupyter-and-IPythonNotebook
Parker, E. (2015, septiembre 25). Continuum Analytics Secures $24 Million Series A
Round to Empower Next Phase of Data Science. Recuperado el 31 de julio de
2016, a partir de https://www.continuum.io/blog/news/continuum-analytics-secures24-million-series-round-empower-next-phase-data-science

Perez, F., & Granger, B. E. (2007). IPython: A System for Interactive Scientific Computing.
Computing in Science & Engineering, 9(3), 2129.
http://doi.org/10.1109/MCSE.2007.53
Perkel, J. M. (2015). Programming: Pick up Python. Nature, 518(7537), 125126.
http://doi.org/10.1038/518125a
Pine, D. J. (2015). 10. Installing Python. Recuperado el 31 de julio de 2016, a partir de
http://www.physics.nyu.edu/pine/pymanual/html/apdx1/apdx1_install.html
Raybaut, P. (2016). Spyder - Documentation Spyder 2.3 documentation. Recuperado el
31 de julio de 2016, a partir de http://pythonhosted.org/spyder/index.html
Rebooting review. (2015). Nature Biotechnology, 33(4), 319319.
http://doi.org/10.1038/nbt.3202
Rossant, C. (2016, julio 29). IPython vs Python. Recuperado el 31 de julio de 2016, a
partir de https://plot.ly/python/ipython-vs-python/
Rouse, M. (2016a). What is kernel? Recuperado el 31 de julio de 2016, a partir de
http://searchenterpriselinux.techtarget.com/definition/kernel
Rouse, M. (2016b). What is shell? Recuperado el 31 de julio de 2016, a partir de
http://searchenterpriselinux.techtarget.com/definition/shell
Sharma, S. (2014, noviembre 27). What is back end programming? Quora. [Comentario
de Forum en lnea]. Recuperado a partir de https://www.quora.com/What-is-backend-programming
Shell (informtica). (2016, marzo 29). En Wikipedia, la enciclopedia libre. Recuperado a
partir de https://es.wikipedia.org/w/index.php?title=Shell_(inform
%C3%A1tica)&oldid=90126064
Shen, H. (2014). Interactive notebooks: Sharing the code. Nature, 515(7525), 151152.
http://doi.org/10.1038/515151a

The IPython Development Team. (2015). Making kernels for IPython IPython 3.2.1
documentation. Recuperado el 31 de julio de 2016, a partir de
https://ipython.org/ipython-doc/3/development/kernels.html
Van Noorden, R. (2014). My digital toolbox: Ecologist Ethan White on interactive
notebooks. Recuperado el 30 de julio de 2016, a partir de
http://www.nature.com/news/my-digital-toolbox-ecologist-ethan-white-oninteractive-notebooks-1.16015
Van Noorden, R. (2015). My digital toolbox: Climate scientist Damien Irving on Python
libraries. Nature. http://doi.org/10.1038/nature.2015.16805