Componentes básicos del lenguaje
Cuestiones introductorias
Todo lenguaje cuenta con una serie de componentes básicos que son los que permite desarrollar un algoritmo que se ajusta al conocido esquema entrada-procesamiento-salida.
En síntesis la programación o computación (y de ahí le viene el nombre) consiste en la ejecución de cómputos sobre datos para la obtención de determinados resultado. Esto, que es otra forma de formular el esquema anterior, supone y pone en evidencia la importancia de disponer de datos, bien sean que los incorporemos como parte del programa, o bien que cedamos al usuario (en parte) su introducción mediante algún tipo de interfaz de entrada. Y esto en la programación tradicional, porque el papel de los datos en el Machine learning es aun más importante.
Per lo que ahora nos interesa es constatar que esos datos se almacenan en espacios de memoria RAM y que para acceder a ellos necesitamos alguna forma de identificarlos, papel que cumplen las variables que no son otra cosa que referencias a los datos, referencias conocidas por explicitadas en su asociación a los datos en el propio algoritmo.
Al contrario de lo que el lenguaje natural da a entender, en realidad ni las variables contienen datos (no son espacios de memoria, sino referencia, identificadores o "nombres" de esos espacios de memoria) ni la dirección de la relación es var -> dato. En realidad, la relación es a la inversa var <- dato, y así se representa en los pseudolenguajes (1).
Los datos pueden ser de diferentes tipos, siendo los más destacados los alfanuméricos (caracteres y sus derivados, las cadenas de texto o string), los numéricos, en sus diferentes tipos (enteros y decimales) y los booleanos.
Como trabajar con variables individuales puede resultar poco eficiente, los datos se pueden organizar en colecciones. Estas colecciones reciben diferentes nombres y tienen distintas características y funcionalidades (no siempre equivalentes entre los diferentes lenguajes), pero podemos identificarlas grosso modo como matrices.
La segunda parte del significado de la computación es la realización de cómputos u operaciones sobre los datos. Esta fase es tan importante que ocupa el centro del esquema (el procesamiento), siendo su componente fundamental.
Estas operaciones dan nombre y sirven para definir al conjunto de instrucciones que llamamos operadores y que se diferencian en función de los datos con los que tienen que trabajar: operadores de string, operadores algebraicos y operadores lógicos son sus categorizaciones más comunes.
Aunque la forma de procesamiento de los datos suele ser predominantemente lineal y jerárquica (lo que define la programación como un proceso basado en la sucesión de instrucciones), existen dos estructuras fundamentales y complementarias que responden a dos principios de acción algorítmica: la bifurcación y la iteración.
La bifurcación se concreta en las estructuras condicionales en las que se basa la opcionalidad, y la iteración en estructuras cíclicas o bucles, que permiten la repetición de instrucciones n veces y/o condicionadas al cumplimiento de un criterio. La conjunción de estos tres principios: linealidad o sucesión, bifurcación e iteración, conforman el cuerpo de un script simple.
Pero salvo los problemas sencillos, la mayoría de las situaciones requieren para su resolución secuencias de operaciones y el uso de diferentes estructuras, incluyendo su combinación y anidamiento. Cuando esto se da, y especialmente cuando segmentos de código se repiten con cierta frecuencia, es cuando nos debemos plantear la pertinencia de la programación modular, cuya expresión más simple es la implementación de funciones (3).
Cuando predomina el uso de funciones y su combinación sobre el código lineal, hablamos del paradigma funcional y cuando el procedimiento de trabajo se basa en definir objetos (clases de objetos) formados por características y funciones, entonces nos estamos situando en el paradigma de la programación orientada a objetos (POO).
Python se define como lenguaje basado en la POO (4). Con este lenguaje podemos trabajar siguiendo el paradigma imperativo-lineal y también podemos crear funciones, así que se comporta como un lenguaje que nos permite utilizar diferentes formas de trabajar y de afrontar la solución de los problemas desde diferentes opciones.
Junto con su relativa simplicidad como lenguaje, esa flexibilidad en términos de enfoques de trabajo hace del lenguaje Python una buena herramienta para el aprendizaje. Pero lo que es más importante: también para la resolución de los problemas relativos a nuestro trabajo para los que nos planteemos crear soluciones informáticas.
1 Por ejemplo en PSeInt, una excelente herramienta para el aprendizaje de la lógica de programación que recomiendo conocer (y emplear) para este objetivo. Además de trabajar con pseudocódigo y simular el funcionamiento del algoritmo, también dispone de herramientas de representación gráfica o diagramas de flujo.
2 Al menos de forma eficiente.
3 En algunos lenguajes (y también planteamientos teóricos) se diferencia entre subrutinas y funciones. En Python se mantiene la misma denominación para ambas, aunque se diferencias las funciones que devuelven datos de las que no.
4 De hecho muchos de sus componentes no son otra cosa que objetos, incluyendo los tipos de datos, como la clase
string, lo que dota de gran potencia y versatilidad al trabajo con los datos ya que, en tanto objetos, tiene propiedades y métodos.
No hay comentarios:
Publicar un comentario
Comenta esta entrada