Al igual que cualquier otro lenguaje de programación, Python también tiene puntos débiles.Uno de los más importantes suele ser que se considera "lento" en comparación con los lenguajes compilados, principalmente por ser un lenguaje interpretado y no poseer por defecto un compilador JIT (del inglés Just-in-Time ), lo que haría que se compilase el programa escrito en Python y optimizasen más los tipos de datos. Aun así, en Python 3 se han hecho muchas mejoras de rendimiento de los tipos de datos y se ha mejorado notablemente este aspecto. También existen librerías, como Numba,que permiten fácilmente marcar porciones de código para ser compiladas en tiempo de ejecución (usando un JIT), o CPython,que permite escribir código C compatible con Python e integrarlo de forma natural para mejorar mucho la velocidad de procesamiento.
En otras situaciones, para obtener mejores rendimientos, se ha optado por crear una librería escrita en un lenguaje compilado para aprovechar su velocidad y hacer la interfaz, que se usará después desde un código Python estándar. Este es, por ejemplo, el caso de Pandas,que permite el uso de operaciones numéricas y científicas sobre grandes volúmenes de datos de forma muy eficiente. Está escrita, en su mayoría, en código C, pero, al mimso tiempo, es totalmente transparente para el programador de Python, ya que tiene la misma sintaxis que cualquier otro módulo Python estándar.
Otra opción sería hacer tipos de datos altamente eficientes, como los que presenta la librería collections,que permite utilizar tipos de datos optimizados para ser ejecutados y usados con código Python estándar.
A más alto nivel cabe destacar que todo el código de Python es código libre y gratuito,con una comunidad que le da soporte y mejora continuamente. Es un lenguaje multiplataforma, lo que permite que se pueda ejecutar y programar en multitud de plataformas, desde los sistemas operativos más tradicionales de ordenadores personales, como Windows, Linux o Mac OS X, hasta dispositivos electrónicos más exóticos como teléfonos o relojes inteligentes, pasando por videoconsolas.
1.3 ÁMBITOS DE USO DE PYTHON
Python es un lenguaje de propósito general, por lo que se utiliza en multitud de ámbitos de la informática. Puesto que está en desarrollo constante, se va adaptando a los nuevos retos y va evolucionando para proporcionar nuevas soluciones.
A continuación, se hará una introducción a los ámbitos fundamentales que cubren el uso de Python, enumerando las librerías más utilizadas y ejemplos de las aplicaciones que se realizan con ellas. Cada ámbito que se presenta es muy extenso y se invita al lector a que se informe sobre cada tema específico con libros que estudien cada parte en profundidad.
1.3.1 Programación a nivel de sistema operativo
Python permite interactuar fácilmente con el sistema operativo, facilitando así la creación de scripts (pequeños programas con un propósito específico), programas completos o utilidades para resolver tareas sobre el sistema operativo, como lanzamiento de comandos del sistema, ejecución de otros programas, manejo de ficheros, interacción con sockets del sistema, etc. Gracias a la portabilidad del lenguaje, estos programas se desarrollan solo una vez, pero pueden ser ejecutados en diferentes sistemas operativos sin necesidad de cambiarlos.
1.3.2 Aplicaciones con interfaz de usuario
Gracias a la librería estándar de Python se pueden crear aplicaciones con interacción de usuario de diferentes formas, tanto usando la línea de comandos como utilizando interfaces gráficas. Hay varias librerías destinadas a facilitar la tarea de hacer CLI ( command line interface; interfaz de línea de comandos) y crear programas con menú para que el usuario pueda realizar diferentes acciones. Dos de las opciones más utilizadas son: argparse( https://docs.python.org/3/library/argparse.html) y click( https://click.palletsprojects.com/).
Por otro lado, con el fin de hacer aplicaciones más amenas para el usuario y mejorar la experiencia de uso, Python permite crear aplicaciones multiplataforma y de escritorio que se integran perfectamente con la apariencia del sistema operativo donde se ejecutan. La librería básica para este cometido es Tkinter( https://wiki.python.org/moin/TkInter), la cual permite crear aplicaciones de escritorio de primer nivel y es el estándar de facto en este ámbito, aunque también existen librerías de más alto nivel para poder desarrollar aplicaciones más avanzadas integradas con GTK, como PyGTK( https://python-gtk-3-tutorial.readthedocs.io/), o con Qt, como PyQT( https://wiki.python.org/moin/PyQt), entre otras, como se estudiará más adelante.
Una librería muy utilizada para la creación de interfaces de usuario para la línea de comandos es ncurses( https://invisible-island.net/ncurses/ncurses.faq.html), la cual está escrita en C pero es accesible desde la librería de Python curses( https://docs.python.org/3/howto/curses.html). Otra, puramente en Python, es urwid( http://urwid.org/). Ambas permiten crear interfaces de usuario para la consola de comandos algo más amenas que los simples CLI.
1.3.3 Aplicaciones web e interacción con servicios web
Uno de los pilares más importantes dentro de las aplicaciones que se pueden desarrollar utilizando Python son las aplicaciones web en todo su amplio abanico, desde las aplicaciones más simples, como páginas web estáticas generadas en Python usando Pelican( https://blog.getpelican.com/), hasta juegos generados en JavaScript utilizando la librería de Python Pyjamas( https://wiki.python.org/moin/Pyjamas), que convierte código Python en código JavaScript.
Dentro de las aplicaciones web existen múltiples frameworks para el desarrollo de aplicaciones, orientados a crear aplicaciones tanto de propósito general como específico. Así, el desarrollador puede elegir la herramienta que más se ajuste a sus necesidades y al proyecto que se pretenda desarrollar.
Existen frameworks de propósito general,como Django( https://www.djangoproject.com/), que es uno de los líderes en el ámbito del desarrollo web gracias a sus múltiples funcionalidades: su facilidad de uso con bases de datos relacionales gracias a su propio ORM (object relational mapping) , el cual permite hacer un uso extremadamente sencillo para el manejo de tablas e información guardados en diferentes bases de datos soportadas; su sistema de migraciones de datos; el sistema de autenticación; el enrutador propio de URL; soporte de múltiples motores de renderizado, y un largo etcétera, que hacen que este framework pueda competir con cualquier framework de propósito general de cualquier otro lenguaje, por ejemplo, Java, aparte de poder ser extendido por medio del uso de multitud de aplicaciones de terceros fácilmente integrables y que se amplían día a día.
Por otro lado, existen los microframeworks de carácter general,que están orientados a ofrecer al desarrollador una funcionalidad básica para favorecer la posibilidad de escalar las aplicaciones y ser extendidas con plugins o aplicaciones de terceros fácilmente. En este segmento destacan frameworks como Flask( https://palletsprojects.com/p/flask/) o Pyramid( https://trypyramid.com/).
Por último, destacan los frameworks diseñados para un uso específico,los cuales se han optimizado para mejorar en un aspecto concreto. Por ejemplo, existe el framework Falcon( https://falcon.readthedocs.io/en/stable/), que está diseñado para poder gestionar muchísimas peticiones por segundo. Da unos resultados muy superiores (en cuanto al manejo de peticiones por segundo) comparado con cualquiera de los frameworks mencionados anteriormente, dado que se diseñó para ser excepcional en ese aspecto.
Читать дальше