domingo, 25 de noviembre de 2018

PYTHON VS C++





Hace unos años, cuando estudiaba en la carrera de mecatrónica en la universidad, tuve una clase que se llamó "Desarrollo de Interfaces de hombre-máquina", donde programé usando python 2.7. En esta clase usamos Tkinter, el toolkit para desarrollo de interfaces gráficas que viene por defecto.

Anteriormente había programado en C++ usando Qt 4, por lo que Tkinter me pareció de principio un tanto rudimentario. Aunque se pude construir interfaces útiles y hasta cierto punto, agradables a la vista  valiendome de varios trucos, era un lio usar "pack" y "grid" en combinación, algunas veces obtenía resultados inesperados en forma de "glitches" o una distribución erronea. Conforme iba necesitando desarrollar proyectos más complejos, me di cuenta de que  tkinter no cubría mis necesidades en cuanto a interfaces gráficas se refiere. Entonces continué usando Qt 4 y me olvidé de python.

Recientemente en mi trabajo, necesitaba desarrollar algunas aplicaciones para facilitarme ciertas tareas como: buscar un número de parte en varios archivos de texto, o buscar entre algunos cientos de archivos de Excel, todos los que tuvieran una hoja de calculo con un nombre especifico. No quería complicarme la vida con C++ o entrar en un conflicto legal debido a las nuevas condiciones de las licencias de Qt 5, entonces pensé que python podría ser una opción viable, debido a que su licencia es una combinación de BSD y GPL mucho más permisiva, incluso para propósitos comerciales.

Al principio, no me sentí tan cómodo por la experiencia mala que tuve con Tkinter, pero al final descubrí que existen otras alternativas para el desarrollo de interfaces gráficas. Una alternativa excelente para el desarrollo de interfaces gráficas es el toolkit llamado wxpython, el cual es un "wrapper" para poder usar los wxwidgets (C++) en python. Este toolkit me sorprendió, porque visualmente es muy parecido a Qt. Después de hacer algunos "pininos", vi que wxpython es bastante sencillo de usar. 

Posteriormente, comencé a buscar algunas librerías para desarrollar algunos programas que tenía en mente, y pensé - "chance y existe alguna librería en python que me pueda ser útil"-. No tuve que buscar mucho para encontrar lo que necesitaba. Descubrí que existen librerías para casi todo lo que se me pueda ocurrir: procesamiento de texto, creación y lectura de archivos de Excel o Libre Office, enviar correos electrónicos, crear PDFs, encriptado de archivos, procesamiento de imágenes, lectura y escritura a travéz de puertos USB y puertos seriales, manejo de bases de datos de Mysql o MariaDB, creación de gráficas matemáticas o estadísticas, cálculos con matrices similar a Matlab, procesos multi-ilo y multi-proceso, desarrollo de juegos, etc, etc.

Para hacer más corta la historia, pude desarrollar mis aplicaciones en tiempo record y convertir mis programas en archivos ejecutables con pyinstaller,  para que mis colegas puedan correrlos en otras máquinas sin tener que instalar python. De pronto se abrio un nuevo panorama, estaba emocionado por todo lo que podia hacer en python y no lo sabía. En C++ ubiese tardado una eternidad, debido a que tendría que crear la mayoría de las veces  las librerías que necesito, probarlas y debugearlas, o comprarlas. Ademas de que tendría que compilar mis programas cada vez que quisiera correrlos, lo cual ralentizaría el proceso de desarrollo. Con python los programas pueden correr sin necesidad de compilarlos.

En conclusión, creo que python es una herramienta de desarrollo bastante interesante, versátil y potente, que me ha ayudado para obtener resultados en mi trabajo de forma rápida  y  sin complicarme mucho. Por esto, en este momento python es mi lenguaje de programación preferido.
.



No hay comentarios.:

Publicar un comentario