miércoles, 20 de octubre de 2010

Me cambio de versión Python


Hola. Hace aproximadamente un año que empecé a barajar la opción de aprender un lenguaje de programación nuevo, lo suficientemente bueno para mí, que respondiera a lo que exijo, ya que las plataformas actuales no me terminaban de convencer (y todavía siguen sin convencerme del todo), como PHP, Java ó .NET. Entonces probé Ruby y Python, y me quedé con el último. Había multitud de versiones, y me decidí por Python 2.5.4 por la cantidad de software de terceros que estaba programado para esta versión.

Una gran versión de Python la 2.5.4. Pero hay que seguir (¡y evolucionar!), así que me cambio a la última versión de Python que no sea 2.7 ó 3.XX, esto es, Python 2.6.6. ¿Por qué? La 2.7 sinceramente no me da confianza suficiente y necesito aplicaciones que corran en la 2.6. Y Python 3000, todavía está en fase de desarrollo ó pruebas ó test o como lo quieran llamar. Es una opinión personal mía, claro, y cualquier navegante podrá decir lo contrario.

A partir de este post, todo lo que escriba se hará con Python 2.6.6, y salvo excepciones, en plataforma Microsoft Windows XP SP3. Puesto que Python es multiplataforma, no hay problemas para Mac ó Linux.



Saludos.

lunes, 18 de octubre de 2010

Herramientas (IDE, GUI, EDITOR) para desarrollar en Python



PRUEBA, COMPARA Y SI ENCUENTRAS ALGO MEJOR, INSTÁLALO

Hola. Desde que estoy programando en Python siempre he estado buscando esa aplicación para programar en este estupendo framework de desarrollo. Y después de varios meses me he dado cuenta que mi búsqueda ha sido futil. Esto es, no hay un editor ó IDE mejor que otro, cada uno tiene sus características, y en la mayoría de los casos hacen lo mismo. Además, también cuenta la experiencia previa. Así, gente que venga del mundo de Linux con programación en C puede ser que sean forofos de Emacs ó de vim. Si se viene del mundo de Java, pues NetBeans (con el plugin correspondiente) es una opción excelente. Con esto quiero decir que no hay un IDE óeditor definitivo para Python, solamente la experiencia en la utilización así como nuestras vivencias anteriores son las que marcarán la elección del mismo. Es más, se puede trabajar con más de un editor, aunque en Python, por el tema de la indentación de código, quizás no sea lo más recomendable.

En este post voy a describir los IDE's, editores y GUI's que he probado y he estado utilizando durante casi un año. Solamente voy a incluir los que me han gustado. Omito los que menos me han convencido, puesto que no quiero desmerecer el trabajo de nadie, ya que este artículo es subjetivo teniendo en cuenta que aquí entran los gustos de programación de cada uno. Por ejemplo, no quiero hablar de Eclipse (con el plugin Pydev), que aunque sé que es un IDEestupendo, tengo otras preferencias. Evidentemente no he visto todos, así por ejemplo, el IDEMonkeyStudio no lo he probado, por varias razones (una de las cuales se encuentra que no trabajo con Qt), al igual que Spyder (también utiliza Qt) que está orientado para científicos,PIDA, Leo, eric, etc. También se ha dado el caso de productos que he visto pero por ser de pago no he podido seguir indagando, como es el caso de wxDesigner, un GUI para desarrollo de interfaces gráficas en wxPython. Tiene muchos widgets y Sizers, sin embargo la versión de prueba no deja guardar el fichero generado, así que no me deja evaluar el producto correctamente, y en consecuencia puedo hablar muy poco de él. Y por último hay software que quizás debería terminarse antes de lanzarse al mercado como herramientas de desarrollo enPython, como es el caso de FarPy, otro GUI que sencillamente explota cuando menos te lo esperas, así como IronPython Studio, un despropósito para desarrollar en IronPython, que no es que estalle, sencillamente se derrumba.

En la página oficial de Python se puede encontrar toda una relación de las mejores herramientas de desarrollo para Python, tanto IDE's, GUI's como editores, en todas las plataformas (Linux,Mac, Windows).

Dejando algunos conceptos claros

¿Qué es un IDE? IDE son las siglas de entorno de desarrollo integrado. Es una aplicación (entorno de programación) para desarrollar software que está compuesto normalmente por un editor de código, un compilador ó un intérprete, herramientas auxiliares de desarrollo (creación de documentación, tests, empaquetado de software), un depurador y algunas veces un diseñador de interfaces gráficas incorporado.

¿Qué es un GUI? GUI son las siglas de interfaz gráfica de usuario. Son herramientas para crear interfaces gráficas, esto es, componentes gráficos con los cuales el usuario interacciona con la aplicación. Hay algunos IDE's que contienen GUI's integrados.

¿Qué es un editor? Un editor es una aplicación para escribir código de programación en el lenguaje deseado, en nuestro caso, Python. Contiene todas las herramientas de edición necesarias, y algunas veces características propias de IDE's. Hay veces que cuesta distinguir entre un IDE y un editor por la cantidad de opciones que tiene este último.

¿Qué es un RAD? RAD son las siglas de desarrollo rápido de aplicaciones. Dependiendo del autor sirve para designar a las aplicaciones de desarrollo de interfaces gráficas ó a los IDE's conGUI's integrados, o a las dos cosas. Es un término dado a plataformas de desarrollo comoPowerBuilder, Visual Studio ó Delphi, por poner ejemplos.

Herramientas de desarrollo en Python

A continuación presento las herramientas de desarrollo que he evaluado durante estos meses y que más me han gustado. ¿La herramienta perfecta? Un compendio de todas ellas.

IDE con GUI integrado: BOA Constructor, SharpDevelop

IDE: IDLE, NetBeans, Stani's Python Editor, PyScripter, Geany, Pyragua,Wingware Python IDE, PythonWin

GUI: wxGlade, wxFormBuilder

Editor: Editra, Notepad++, Jedit, Gedit, BlueFish, SciTE

Shell interactivo: Dreampie



Scite es un editor de texto para programadores, con un amplio abanico de lenguajes, incluidoPython, por supuesto. Su potencial reside en su gran capacidad de configuración. Permite exportar a PDF, Latex, RTF, XML y HTML. A nivel de edición está extraordinariamente completo. Además se puede compilar en el propio editor (e incluir parámetros ) y ver la salida del script. Tiene coloreado e indentación de código. Muy buen software, basado en Scintilla. Aunque originalmente está en inglés, se puede traducir al español mediante un fichero, que hay que descargarlo.Hay que copiar el archivo locale.es.properties en la carpeta de SciTE y renombrarlo como locale.properties.




BOA Constructor es un IDE y un GUI para wxPython. Podría considerarse como un RAD. Es lo más parecido a Microsoft Visual Studio ó Delphi, pero para Python. Tiene un editor, con coloreado, indentación y completitud de código (basado en Scintilla), así como un GUI para diseñar interfaces gráficas en wxPython. El posicionamiento de widgets del diseñador gráfico se puede realizar mediante coordenadas con wx.Point ó con Sizers. Tiene inspector de código, se puede crear packages, módulos, setup's, etc. Tiene vista UML, generación de código y un largo etcétera. Además incluye una ayuda en línea muy potente y agradecida. Una herramienta RADcompleta que aunque es algo antigua (2006) está muy probada y es una excelente opción para desarrollar en Python. Muy recomendada.


Bluefish es un editor para diseñadores web experimentados y programadores, soporta varios lenguajes de programación y de marcado, pero se centra en crear sitios web dinámicos e interactivos. Aunque tiene su fuerte en la creación de páginas web también soporta Python, con indentación, coloración y completitud de código. Muy ligero y elegante. Una herramienta a tener en cuenta si además estamos creando diseños web.


Wingware Python IDE

Wingware Python IDE es quizás el mejor IDE para Python que hay actualmente, y digo quizás, con permiso de Komodo, porque lo tiene todo, realmente todo, lo que se le puede pedir a un IDE para desarrollar en Python. El único problema que tiene este software es que es de pago. Solo lo he podido evaluar con pequeños scripts, pero me ha convencido desde el primer momento. Lo tiene todo, excepto que la licencia ronda los 200 dólares.


Stani's Python Editor

Stani's Python Editor ó SPE es el IDE pythónico gratuito más completo que he visto, exclusivo para programar en Python. Incluye lo típico en edición, más coloreado (resaltado), indentación y completitud de código, depurador (winpdb), ejecución de scripts, chequeo de sintaxis, incluye el diseñador wxGlade, generación automática de documentación, visualización de clases mediante diagramas UML, etc. Un IDE muy potente y pythónico. Muy recomendado.


wxGlade

wxGlade es un GUI para diseño de interfaces gráficas en el framework gráfico wxPython. Todo un clásico en entornos Linux, desde hace ya bastante tiempo, y una herramienta muy válida y potente. Permite crear código wxPython a partir del diseño gráfico, mediante la utilización de Sizers (es obligatorio), no pudiendo utilizar el posicionamiento con wx.Point. En este blog se ha escrito bastante sobre wxGlade, por lo que os presento un artículo de cómo diseñar una interfaz gráfica, así como el código de ejemplo de la creación de un mantenimiento típico. Recomendable.

Geany

Geany es un IDE rápido y ligero, muy recomendable para proyectos pequeños y medianos, por su rapidez y sencillez. Lleva un completo arsenal de opciones de edición, así como la posibilidad de ejecución de scripts. Contiene un árbol de navegación de elementos (clases, métodos, etc), así como indentación, coloración y completitud de código. Dentro de los IDE's es el más básico, ya que contiene lo mínimo y necesario para desarrollar en Python de manera rápida. Geany es el típico caso de un IDE que pudiera considerarse un editor avanzado con llamada al intérprete dePython para ejecutar código Python. Todo depende del criterio a la hora de definir lo que es uneditor ó un IDE. Este producto es recomendable.


Jedit

Jedit es un editor de texto para programadores escrito en Java (es necesaria la máquina virtualJava). Para programar en Python hay que instalarse 2 plugins desde el Plugin Manager que lleva incorporado. Es un editor muy configurable, de grandes prestaciones.


Gedit

Gedit es el editor oficial del entorno de escritorio Gnome de Linux. Existe versión paraWindows. Su simplicidad y el reconocimiento de código Python lo hace una opción muy interesante para escribir scripts rápidos. Es un editor muy simple y efectivo.

Dreampie

Dreampie es un shell interactivo para Python, no pudiéndose enmarcar ni como editor ni como IDE (ni mucho menos GUI). Lo he incluido en este artículo ya que no sería completo del todo sin nombrar al menos a un intérprete de Python. Existen otras aplicaciones de este estilo, como PyCrust ó PyShell, sin embargo Dreampie es bastante singular ya que la ventana principal se divide en dos, un área de histórico, que permite ver el código procesado así como su resultado y un área donde escribir el código. Esto permite editar cualquier cantidad de código, y ejecutarlo cuando esté listo. También se puede copiar el código desde cualquier lugar, editar y ejecutar al instante. Tiene coloreado, indentación y completitud de código (muy rápido). Se puede exportar los resultados a HTML. La verdad que un producto muy bueno, que utilizo normalmente. Muy recomendado.

NOTA: PyCrust tiene la misma funcionalidad que Dreampie, e incluso es más potente, sin embargo, por cuestiones de gusto y comodidad (y aquí entra mucho la subjetividad) prefieroDreampie.


NotePad++ es un viejo conocido de los editores de programación, y de los más populares en toda la comunidad de desarrollo. En el área de plugins se puede bajar uno específico paraPython. No lleva completitud de código si nos referimos a la búsqueda en el namespace de módulos, pero si te sugiere vocablos mientras se escribe. A nivel de edición de texto, lo lleva todo (búsquedas, sangrías, etc). Una de las características más relevantes es su grado elevado de configuración. Una buena herramienta, de toda la vida.



NetBeans es un tremendo y muy potente IDE desarrollado por Sun, que ahora es de Oracle. En origen NetBeans estaba pensado para Java, pero mediante plugins podemos programar en varios lenguajes, tales como Ruby, PHP ó Python entre otros. No se sabe muy bien que rumbo tomará NetBeans (ni Java) con la compra de Sun por parte de Oracle. Este IDE es de los más completos que existen en el mercado actualmente y gratuitos, siendo también muy pesado (si no tienes una máquina potente, mejor pensar en otra opción). Lleva de todo, indentación, completitud y coloreado de código, debugger, gestión de repositorios de versiones como Mercurial, CVS o Subversion, y un largo etcétera. Para entornos profesionales (empresas) de programación en Python recomiendo este IDE. Lo lleva todo y más, a excepción de un GUI integrado. Una vez instalado este software es necesario descargarse el plugin dePython (se hace desde el propio IDE).



IDLE es un IDE que viene de serie en cualquier distribución de Python, escrito en Tkinter. Para empezar a programar y aprender Python es la herramienta más recomendada. Con completitud de código e indentación automática y configurable, coloración de código, un depurador integrado (debugger) y todas las características propias de un editor de código. No es recomendable para proyectos grandes y no debe de utilizarse con wxPython, ya que son incompatibles y los resultados son impredecibles. El gran potencial de IDLE es su shell integrado.




PyScripter es un IDE desarrollado en Delphi para la plataforma Windows. Es una excelente opción alternativa a otros IDE's de alto nivel, como Eclipse, Wingide ó NetBeans. Este es sin lugar a dudas una extraordinario IDE para desarrollos grandes en Python. Contiene todo lo que se puede desear, depurador, gestión de proyectos, múltiples ficheros abiertos, indentación, coloreado y completitud de código, codificación de ficheros, y un sin fin de opciones que lo hacen una alternativa muy fiable y completa. Yo, que trabajo normalmente en la plataformaMicrosoft Windows, lo he adoptado como software para desarrollar en Python. Excelente producto. Muy recomendable.



Editra es un editor avanzado de desarrollo, escrito en Python y wxPython. Excelente herramienta. Tenéis más información en el artículo de El Viaje del Navegante sobre Editra, que escribí hace unos meses. Recomendado.


Pyragua es un IDE creado en Python para desarrollar en Python. Todavía está en fases tempranas de desarrollo, pero las perspectivas son realmente buenas. Hay que darles tiempo a los chicos de Pyrox. En este blog hay un post sobre este IDE que escribí hace unos meses. Un trabajo que sigo. Muy prometedor.


SharpDevelop es un RAD, un IDE con GUI incorporado, al estilo de Visual Studio, con el que se puede desarrollar en IronPython, esto es, Python para acceder al framework de .NET. En este blog hay varios artículos en los que se utiliza esta fantástica herramienta. Aquí os presento un link sobre IronPython y SharpDevelop que escribí hace unos meses. Excelente y muy recomendado para utilizar IronPython.

wxFormBuilder

wxFormBuilder es un GUI para diseñar interfaces gráficas que genera código C++ y códigoPython con el framework gráfico wxPython. Es una herramienta con una interfaz amigable, que utiliza Sizers de manera obligatoria para la gestión del posicionamiento de widgets dentro de los contenedores. Lo bueno de este producto es la inclusión de widgets actualizados, así como la posibilidad de ampliarlos. Muy buena opción para diseñar pantallas y entender la filosofía en la utilización de Sizers. En este blog se han escrito algunos artículos sobre wxFormBuilder (1 y2). Muy recomendable.


Python Editor for Windows ó PythonWin es un IDE que viene incluido en el Python for Win32, de Mark Hammond, una extensión de Python para Windows. Con esta herramienta se puede analizar objetos COM y acceder a sus clases, entre otras cosas. Soporta completitud, coloración e indentación de código. Incluye PyChecker, para analizar la sintaxis antes de ejecutar un script. Hace unos meses escribí un post sobre como interactuar con objetosCOM por medio de la utilidad COM Makepy que lleva esta aplicación. Lo podéis encontrar aquí. Todo un clásico, rápido y eficaz.




CONCLUSIONES

¿Qué es lo que se necesita? Un GUI, un IDE ó un editor. Si se va a programar interfaces gráficas sería interesante el uso de un GUI para diseñar ciertas plantillas o pantallas, de manera visual, para ir más rápido y tener las cosas más claras, aunque no es necesario si no se quiere. Aquí se ha visto GUI's para wxPython, pero se debe de dejar claro que para plataformas comoQt ó GTK también hay GUI's, y muy buenos, como GTK Glade ó MonkeyStudio. Si se va a crear un proyecto largo y grande lo mejor, desde mi punto de vista, es seleccionar un IDE, ya que tiene una serie de herramientas que nos van a facilitar la vida. Si el proyecto es mediano ó pequeño, o simplemente se está empezando en el mundo de Python, un editor es una opción muy recomendable, ya que no necesitamos tantas opciones como nos puede brindar un IDE. De todas formas hay veces que no hay diferencia entre editores e IDE's por la cantidad de opciones que tienen los primeros.

Lo mínimo que se le debe de pedir a cualquier IDE ó editor, para desarrollar en Python, es laindentación, coloreado y completitud de código.

Una lista completa de editores, gui's e ide's se puede encontrar en la siguiente dirección web

PRUEBA, COMPARA Y SI ENCUENTRAS ALGO MEJOR, INSTÁLALO

Saludos.