Paradigmas De Programacion
16 de Noviembre de 2014
3.621 Palabras (15 Páginas)232 Visitas
Introducción
En este trabajo hablaremos acerca de los paradigmas de programación, ya que mucha gente conoce algunos tipos de lenguajes de programación pero muy poca conoce estos paradigmas.
Antes que nada daremos una definición de lo que es un paradigma (son simplemente patrones o modelos para realizar un programa).
Y continuación presentando cinco de los tipos de paradigmas de programación más relevantes (Imperativo, Funcional, Lógico, Orientado a objetos y Estructurado) y daremos a conocer de que se trata cada uno de ellos, así como en que se pueden aplicar cada uno de los paradigmas y algunas de sus ventajas y desventajas.
Con este proyecto pretendemos tener el propósito de que sea un primer acercamiento al tema que pueda ser claro, y fácil de entender
PARADIGMAS DE PROGRAMACIÓN
Un paradigma de programación es una propuesta tecnológica que es adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que unívocamente trata de resolver uno o varios problemas claramente delimitados. La resolución de estos problemas debe suponer consecuentemente un avance significativo en al menos un parámetro que afecte a la ingeniería de software. Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de definición. Un paradigma de programación está delimitado en el tiempo en cuanto a aceptación y uso ya que nuevos paradigmas aportan nuevas o mejores soluciones que la sustituyen parcial o totalmente.
Entonces un paradigma de programación son simplemente patrones o modelos para realizar un programa, pero estos modelos no han sido reemplazados sino que cada patrón es aplicable en deferentes niveles o tipos de programación.
Los tipos de paradigmas de programación más comunes son:
a) Imperativo
b) Estructurado
c) Funcional
d) Lógico
e) Orientado a Objetos
IMPERATIVO
Este paradigma, llamado también paradigma algorítmico:
Encuentra soluciones a problemas basándose en la operativa de la máquina de VON NEWMAN, que está provista de un programa en su memoria, el cual se va ejecutando secuencialmente, alimentándose de datos de tal memoria, con los que efectúa sus cálculos, para luego actualizar esta memoria.
La programación en el entorno del paradigma imperativo determina los datos que son requeridos para el cálculo, asocia a esos datos a variables que son direcciones de memoria, para luego efectuar paso a paso, las transformaciones de los datos almacenados, de forma que el valor final de la variable sea el resultado buscado.
En el lenguaje común, a la serie de transformaciones realizadas sobre los datos originales les llamamos cálculos, que son generados por los algoritmos que transforman los datos de entrada en la solución al problema en cuestión.
Para guiar estos cálculos, el paradigma imperativo proporciona en su versión básica las siguientes estructuras de control de flujos de datos:
Secuencial: Típica de la propia naturaleza de la máquina, donde se ejecutan una a continuación de otra cada una de las instrucciones del programa almacenado en su memoria.
Selección condicional: Produce una bifurcación del flujo de datos, cuando se cumple cierta condición previamente definida, caso contrario, seguiría el curso secuencial del programa.
Selección incondicional: Bifurca imperativamente la estructura secuencial del flujo de datos, obligando a ejecutar una instrucción distinta a la siguiente en el orden especificado por el programador.
Estas estructuras básicas existen en cualquier programa construido bajo el paradigma imperativo, cuya evolución ha generado otros nuevos tipos de estructuras de control de flujo, tales como while, do, if..then..else, etc que simplifican la tarea del programador.
Además, la naturaleza primaria de las celdas de memoria ha sido sustituida progresivamente por abstracciones como las variables, registros, array y otros tipos de datos complejos que simplifican el diseño de los algoritmos del programa.
Independiente de tales modificaciones, el rasgo característico del paradigma imperativo es la presencia de efectos laterales, porque maneja el concepto de celda de memoria o las abstracciones surgidas sobre él, donde los cálculos intermedios siempre modificaran tales celdas, variables o estructuras de datos que representan el estado actual del problema en la computadora.
Por otra parte, la existencia de estructuras de control es inevitable ya que la implementación de un algoritmo implica la existencia de una serie de pasos precisos, en forma de secuencias de instrucciones, bifurcaciones, repeticiones definidos por el programador.
En este ámbito, un error en la secuencia será un error lógico que implicará un resultado erróneo, y un error en la asignación de un valor a una variable implicará un error de cálculo que distorsionará los cálculos subsiguientes.
El paradigma imperativo tiene su límite natural en dos de sus características intrínsecas:
Efectos laterales: La existencia de estos efectos por una aparte, hacen que los programas no sean seguros puesto que cualquier posición de memoria puede ser actualizada de forma no adecuada, y otra parte, el concepto de una única memoria global actualizada de forma repetida por las instrucciones del programa dificulta la portabilidad y reusabilidad de código. Por tal razón, para minimizar los problemas por la existencia de variables en memoria compartida aparece el paradigma funcional, donde la ausencia de efectos laterales es su rasgo definitorio fundamental.
Limitación de aplicación: Su operativa se ajusta únicamente a aquellos problemas de naturaleza algorítmica clásica, similares en ejecución al de los cálculos matemáticos que no abordan con solvencia muchos problemas interesantes para resolver con la computadora.
Es llamada así porque esta basada en comandos que actualizan variables que están en almacenamiento, en 1950, cuando los programadores reconocieron que las variables y comandos de asignación constituyen una simple pero útil abstracción de memoria que se actualiza. Basado en el modelo de computador más extendido, el llamado modelo de Von Neumann. Von Neumann define una máquina que es capaz de ejecutar una serie de instrucciones secuencialmente, una tras de otra. Estas instrucciones deben estar almacenadas en memoria principal para poder ser leídas y ejecutadas por la unidad de control. Los dispositivos periféricos nos permiten obtener los resultados e introducir datos que queremos procesar en el sistema.
El paradigma imperativo permite expresar algoritmos que se realizan de acuerdo a este modo de funcionamiento.
Recordemos que un Algoritmo, es un método preciso para resolver automáticamente un problema. Consta de una representación de los datos que se manejan y un conjunto de pasos tales que cada uno de ellos resuelve un problema menor. Es necesario describir el orden en el que se deben ejecutar estos pasos para poder introducirse en el ordenador
Si se analizan las características fundamentales de este paradigma se detectan las siguientes:
Concepto de celda de memoria: ("variable") para almacenar valores. El componente principal de la arquitectura es la memoria, compuesto por un gran número de celdas donde se almacenan los datos. Las celdas tienen nombre (concepto de variable) que las referencian, y sobre los que se producen efectos de lado y definiciones de alias.
Operaciones de asignación: Estrechamente ligado a la arquitectura de la memoria, se encuentra la idea de que cada valor calculado debe ser "almacenado", es decir asignado a una celda. Esta es la razón de la importancia de la sentencia de asignación en el paradigma imperativo. Las nociones de celda de memoria y asignación en bajo nivel, se tienden a todos los lenguajes de programación y fuerzan en los programadores un estilo de pensamiento basado en la arquitectura de Von Neumann.
Las asignaciones poseen la forma siguiente:
expresión1:=expresión2
donde: 1: denota la localidad de memoria y
2 : denota un valor.
Repetición: Un programa imperativo, normalmente realiza su tarea ejecutando repetidamente una secuencia de pasos elementales, ya que en este modelo computacional la única forma de ejecutar algo complejo es repitiendo una secuencia de instrucciones.
ESTRUCTURADO
La programación estructurada consiste en escribir un programa de acuerdo con unas reglas y un conjunto de técnicas. Las reglas son: el programa tiene un diseño modular, los módulos son diseñados descendentemente, cada módulo de programa se codifica usando tres estructuras de control (secuencia, selección e iteración); es el conjunto de técnicas que han de incorporar: recursos abstractos; diseño descendente y estructuras básicas de control.
Descomponer un programa en términos de recursos abstractos consiste en descomponer acciones complejas en términos de acciones más simples capaces de ser ejecutadas en una computadora.
El diseño descendente se encarga de resolver un problema realizando una descomposición en otros más sencillos mediante módulos jerárquicos. El resultado de esta jerarquía de módulos es que cada módulo se refina por los de nivel más bajo que resuelven problemas más pequeños y contienen más detalles sobre los mismos.
Las estructuras básicas de control sirven para especificar el orden en que se ejecutarán
...