• Paradigma imperativo:se caracteriza por enfocarse en cómose pretenden realizar los cálculos por medio de instrucciones secuenciales para formar algoritmos que resuelvan una tarea específica. El paradigma imperativo es el más utilizado en los lenguajes de programación, de forma única o en conjunción con otros paradigmas. Ejemplos cotidianos de este paradigma se pueden encontrar en las recetas de cocina o en cualquier guía paso a paso. Python soporta este paradigma por completo, al igual que lo hacen otros lenguajes, como C, BASIC, Pascal o Golang.
• Paradigma procedural:este paradigma es un derivado del paradigma imperativo, pero añade funcionalidades extra como la creación de procedimientos o funciones que pueden ser llamadas en las secuencias de código como si fueran instrucciones simples. De esta forma, los programas están organizados y modularizados en funciones específicas que no tienen por qué residir en el mismo fichero. Esto favorece la modularización y organización del código. En Python el uso de este paradigma ayuda mucho a la legibilidad del código, ya que hace que pueda leerse incluso sin saber programar (se asemeja en gran medida al lenguaje usado por los humanos de manera natural y permite obviar la complejidad subyacente de cada función).
• Paradigma orientado a objetos:este paradigma es uno de los más populares junto con el imperativo y se basa en encapsular las entidades principales del programa en objetos que pueden contener tanto datos como comportamiento (métodos para interactuar con otros datos o con otros objetos). Este paradigma es especialmente útil, puesto que favorece mucho la modularidad, el encapsulamiento, la reusabilidad y la escalabilidad de cualquier programa. Muchas implementaciones de este paradigma cuentan con la herencia de objetos. Otros lenguajes de programación conocidos que implementan este paradigma son Java, C++, Rust o JavaScript.
• Paradigma funcional:se basa en funciones matemáticas que se centran en los cambios de estado del programa por medio de la mutación de variables. Tiene su origen en el cálculo lambda (lambda calculus) y presenta características muy potentes, como la recursividad, el uso de funciones de orden superior o el uso de las funciones puras que definen que la misma función, con los mismos argumentos, siempre debe devolver el mismo resultado (evitando cualquier efecto colateral). Python no es considerado un lenguaje puramente funcional, ya que no dispone de todas las características necesarias, pero sí que implementa muchas de ellas y son de gran utilidad. Ejemplos de lenguajes puramente funcionales son Haskell o Miranda y otros híbridos son Scala, Lisp o OCaml.
1.2.3 Clasificación de lenguajes según su tipado
El tipado de las variables de un lenguajees una de las piezas angulares en las que el lenguaje se desarrolla, ya que define la forma en la que las variables son accedidas, guardadas y modificadas. Dependiendo del tipado definido en el lenguaje, el compilador o intérprete que configure la ejecución del código en un sistema puede conocer cuánta memoria necesita reservar para cada variable y dónde colocarla incluso antes de ejecutar el programa.
Python presenta un tipado dinámico,lo que quiere decir que el tipo de las variables se asigna en tiempo de ejecución del programa y no cuando se está compilando. Esta característica ayuda a que se puedan desarrollar programas utilizando Python de forma muy rápida, aunque puede generar algunos problemas si no se utiliza con cuidado.
Por otro lado, Python es un lenguaje fuertemente tipado,lo que quiere decir que, una vez definido el tipo de una variable, esta siempre actuará conforme a su tipo. Así, puede que la realización de operaciones no sea compatible con otras variables de tipos distintos, dado que no se hace un cambio de tipo en las variables de forma implícita. Otros lenguajes de programación, al sumar el carácter 1 y el número 1, devolverían como resultado el número 2, mientras que Python elevaría una excepción porque la función de suma de enteros no soporta la suma de enteros con cadenas de caracteres.
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 claraque 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ónicoy 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 desarrollode 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 lenguajesde 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.
Читать дальше