Tipos de Programación. SOLO Informativo para el Alumno (Tarea para la casa)

Sitio: Facultad de Ingeniería U.Na.M.
Curso: Informática ET241/EM241/IC241/IN241/IM204
Libro: Tipos de Programación. SOLO Informativo para el Alumno (Tarea para la casa)
Imprimido por: Invitado
Día: miércoles, 3 de julio de 2024, 06:29

1. Introducción.

Que es un paradigma de programación.

Un paradigma de programación consiste en un método programar y la forma en la que deben estructurarse y organizarse las tareas que debe realizar un programa.

Existen muchos paradigmas (Modelos o Estilo ) de programación diferentes, cada uno de ellos tiene sus propias características y tratan de solucionar los problemas clásicos del desarrollo de software desde diferentes perspectivas y filosofías. Hoy vamos a ver algunas diferencias entre paradigmas de programación populares.

La mayoría de los lenguajes son Multiparadigma, esto es por que muchos paradigmas NO son excluyentes.

Los paradigmas de programación solo son propuestas tecnológicas adoptadas por la Comunidad de desarrolladores que se enfocan a resolver uno o varios problemas definidos y delimitados. Existen muchos paradigmas de programación diferentes, posiblemente el más ampliamente utilizado hoy en día sea el de la programación orientada a objetos


Estos son algunos ejemplos, existen lenguajes como Oz que soporta nueve paradigmas de programación, para algunos es un acierto y para otros un error. En cualquier caso en este artículo no vamos a argumentar si soportar uno, dos, seis o diez paradigmas es un acierto o no, eso lo dejamos a decisión de cada cual.

2. Programación Imperativa

Es un paradigma de programación que está basado en el desarrollo de programas especificando o "declarando" un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución.

En la programación imperativa se describe paso a paso un conjunto de instrucciones que deben ejecutarse para variar el estado del programa y hallar la solución, es decir, un algoritmo en el que se describen los pasos necesarios para solucionar el problema.

La solución es obtenida mediante mecanismos internos de control, sin especificar exactamente cómo encontrarla (tan solo se le indica a la computadora qué es lo que se desea obtener o qué es lo que se está buscando).

Dentro de esta categoría se engloban

  • la programación estructurada que restringe el uso de la instrucción goto
  • la programación modular 
  • la programación orientada a objetos.

3. Programación Declarativa.

En la programación declarativa es lo opuesto a la programación imperativa,  las sentencias que se utilizan lo que hacen es describir el problema que se quiere solucionar; se programa diciendo lo que se quiere resolver a nivel de usuario, pero no las instrucciones necesarias para solucionarlo.

Un ejemplo de Programación Declarativa sería el SQL que es el lenguaje que se usa para consultar datos de un motor de base de datos como ser MySQL, por ejemplo.



4. Programación Modular

La programación modular es un paradigma de programación que consiste en dividir un programa en módulos o subprogramas con el fin de hacerlo más legible y manejable.

Se presenta históricamente como una evolución de la programación estructurada para solucionar problemas de programación más grandes y complejos de lo que esta puede resolver.

Al aplicar la programación modular, un problema complejo debe ser dividido en varios subproblemas más simples, y estos a su vez en otros subproblemas más simples. Esto debe hacerse hasta obtener subproblemas lo suficientemente simples como para poder ser resueltos fácilmente con algún lenguaje de programación. Esta técnica se llama refinamiento sucesivo, divide y vencerás o análisis descendente (Top-Down).

Un 'módulo' es cada una de las partes de un programa que resuelve uno de los subproblemas en que se divide el problema complejo original. Cada uno de estos módulos tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que un módulo necesite de otro, puede comunicarse con éste mediante una interfaz de comunicación que también debe estar bien definida.

Si bien un módulo puede entenderse como una parte de un programa en cualquiera de sus formas y variados contextos, en la práctica se los suele tomar como sinónimos de procedimientos y funciones dependiendo del lenguaje.

5. Programación Funcional

El valor generado por una función  depende exclusivamente de los argumentos alimentados a la función. Al eliminar los efectos secundarios se puede entender y predecir el comportamiento de un programa mucho más fácilmente. Esta es una de las principales motivaciones para utilizar la programación funcional.

El paradigma conocido como Programación por procedimientos utilizado en lenguajes de bajo nivel  un nivel se conoce como Programación funcional en los lenguajes de alto nivel.

6. Programación Estructurada (Esteeeee!!)

La programación estructurada es un paradigma ( Modelo) de programación (1966) orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora recurriendo únicamente a subrutinas ( funciones ) y tres estructuras básicas:

  1. secuencia
  2. selección o condicional (if o if/elif/elif..else) 
  3. iteración (bucles for y while o equivalentes del lenguaje)

asimismo, se considera innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a código espagueti, mucho más difícil de seguir y de mantener, y fuente de numerosos errores de programación  => NO SE DEBE  USA SALTOS INCONDICIONALES!.

La combinación de las tres estructuras básicas, secuencia, selección e iteración, son suficientes para expresar cualquier función computable. Esta observación no se originó con el movimiento de la programación estructurada. 

Structured Programing Link

Objetivos PE :  mejorar la claridad, calidad y tiempo de desarrollo de un programa.

7. Programación Orientada a Objeto ( Esteeee!!)

 

La programación orientada a objetos (POO, en español; OOP, según sus siglas en inglés) es una metodología de programación que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial.

Muchos de los objetos prediseñados de los lenguajes de programación actuales permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al usuario la creación de sus propias bibliotecas , esto es el caso de C++ y Phyton.

Está basada en varias técnicas: herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. No veremos esto.. pero es importante tener una idea informativa del tema.

Lenguajes que utilizan POO: Java, C++, C#, Python, PHP, JavaScript, Ruby, Perl, Object Pascal, Objective-C, Dart, Swift, Scala, Common Lisp, MATLAB, and Smalltalk.

Objetivos POO :  metodología de programación que viene a innovar la forma de obtener resultados.