Hay varios enfoque a la hora de plantearse el desarrollo de un programa (suele hablarse de paradigmas de programación), pero los dos más comunes son los que se denominan programación estructurada y programación orientada a objetos (Object Oriented Programing u OOP).
En el paradigma de la programación estructurada encontramos un bloque de código principal en el que se hacen llamadas a subrutinas o funciones, estando todo el programa gestionado por tres tipos de estructuras básicas:
- secuencias: bloques de código con diferentes instrucciones
- selecciones, del tipo if y switch, que ejecutan una secuencia u otra en función de que se cumpla o no una condición
- bucles, del tipo for y while
En este paradigma, los datos fluyen por el programa al ser transferidos de unas funciones a otras, no estando asociados a ningún bloque de código en particular. Es por esto que suele decirse que en la programación estructurada los datos están separados del código.
En el paradigma de la programación orientada a objetos, por el contrario, se trabaja con "objetos" que intercambian información entre sí, pero conservando cada uno un estado y unos datos que les son propios y que no son visibles desde otros objetos.
Este enfoque tiene numerosos beneficios. Imagina, por ejemplo, que has desarrollado un programa en Python para la gestión del personal de una empresa en el que cada persona viene definida por un conjunto de variables como nombre, apellidos, fecha de nacimiento, sexo, departamento en el que trabaja... Cada una de estas variables tiene un tipo distinto (texto, fecha, número...) lo que exige escribir código personalizado para trabajar con cada una de ellas cuando queremos crear un nuevo trabajador, editarlo, eliminarlo, mostrar los nombres de los trabajadores de un departamento... Y esto es algo que tenemos que hacer a lo largo de todo el programa.
Pero imagina que llega el responsable de desarrollo y te dice que dichos datos tienen que almacenarse ahora en una estructura tipo "diccionario". Habría que modificar todo el programa para adecuarlo a las nuevas exigencias. Sería casi como empezar de nuevo...