Читать книгу Python a fondo - Óscar Ramírez Jiménez - Страница 14
1.2.4 Características de Python
ОглавлениеResumiendo lo visto en los apartados anteriores, Python es un lenguaje de alto nivel, de propósito general, muliparadigma, principalmente imperativo, orientado a objetos y funcional, de tipado dinámico y fuertemente tipado a nivel de lenguaje de programación, pero en este apartado entraremos en profundidad en otros aspectos importantes del lenguaje.
La gramática de Python es una de las características más representativas, dado que hace que el lenguaje posea una sintaxis sencilla, simple y clara que permite al programador desarrollar programas de forma intuitiva. Esta característica hace que leer un programa escrito en Python sea muy parecido a leer un texto anglosajón y que sea un lenguaje muy bueno para aprender, entender y recordar. Por lo general, los programadores que utilizan Python rara vez necesitan revisar el manual de cada librería, dado que el lenguaje está diseñado para ser autodescriptivo en muchos aspectos.
Algunos ejemplos del espíritu innovador de Python que motivan su claridad y su simplicidad son los siguientes:
• Los bloques lógicos se definen utilizando indentación en vez de utilizar caracteres de apertura y cierre de bloque como "{}" (usado en lenguajes como Java, JavaScript o C).
• Las expresiones simples no necesitan el uso de paréntesis como pasa en lenguajes como JavaScript.
• Para la separación de instrucciones se utiliza el salto de línea en vez del comúnmente utilizado carácter ";", aunque también permite utilizarlo.
• Posee un sistema de recolección de basura que permite que el desarrollador se despreocupe de la gestión de memoria y que el lenguaje se pueda centrar en otros aspectos de alto nivel.
Cuando un código escrito en Python hace uso de buenas prácticas de programación y aprovecha las mejores partes del lenguaje y sus fortalezas, se denomina código pythónico y suele ser una señal de excelencia, dado que se percibe el dominio que el desarrollador tiene del lenguaje y marca la diferencia respecto a otros lenguajes de programación. Todos los desarrolladores que usan Python deberían enfocar sus esfuerzos en escribir código pythónico.
Python es un lenguaje interpretado, lo que significa que no es necesario compilar los programas cada vez que se hace un cambio en el código, por pequeño que este sea. Esto presenta una gran ventaja frente a los lenguajes compilados (como C o C++, por ejemplo) y aumenta muchísimo la velocidad de desarrollo de aplicaciones. Por otro lado, el ser un lenguaje interpretado permite que el código no sea dependiente del hardware en el que se ejecuta, y ayuda a que el lenguaje sea multiplataforma gracias al uso de su máquina virtual.
En multitud de definiciones se habla de Python como un lenguaje con "las baterías incluidas" (the bateries-included). Esto hace referencia a que posee multitud de herramientas en la librería estándar que ayudan a realizar un sinfín de aplicaciones sin necesidad de utilizar otros lenguajes de programación. Y es que Python cuenta con una gran y extensa librería estándar que es complementada por multitud de librerías de terceros o por aplicaciones que los contribuidores desarrollan día tras día usando Python en todas las áreas de conocimiento.
Sin embargo, Python también permite la integración con otros lenguajes de programación, ya sea importando código Python dentro de otros lenguajes o permitiendo ejecutar código de otros lenguajes en Python, lo que permite aumentar el ámbito de uso del lenguaje. Así, podemos tener código Python ejecutando código C, C++, .Net o Java, y viceversa. Usando diferentes técnicas, el código Python se puede transcompilar en otro lenguaje (como JavaScript) u otros lenguajes pueden ejecutar código Python haciendo uso de subprocesos u otras técnicas.
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.