0% encontró este documento útil (0 votos)
9 vistas8 páginas

Lenguajes de Programación Resumen Paradigmas

Un paradigma de programación es un conjunto de patrones conceptuales que guían el desarrollo de software, permitiendo la formulación de algoritmos y la estructuración de programas. Existen varios paradigmas, incluyendo el procedimental, orientado a objetos, funcional y lógico, cada uno con sus características y enfoques específicos para resolver problemas. La programación orientada a objetos, por ejemplo, se centra en objetos que interactúan mediante mensajes, mientras que el paradigma funcional se basa en la composición de funciones sin estado ni asignaciones de memoria.

Cargado por

shuninksa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
9 vistas8 páginas

Lenguajes de Programación Resumen Paradigmas

Un paradigma de programación es un conjunto de patrones conceptuales que guían el desarrollo de software, permitiendo la formulación de algoritmos y la estructuración de programas. Existen varios paradigmas, incluyendo el procedimental, orientado a objetos, funcional y lógico, cada uno con sus características y enfoques específicos para resolver problemas. La programación orientada a objetos, por ejemplo, se centra en objetos que interactúan mediante mensajes, mientras que el paradigma funcional se basa en la composición de funciones sin estado ni asignaciones de memoria.

Cargado por

shuninksa
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

DEFINICION DE PARADIGMA DE

PROGRAMACIÓN
Podemos definir un paradigma como una colección de patrones conceptuales que modelan
la forma de razonar sobre problemas, de formular algoritmos y de estructurar programas, de
esta manera, podríamos decir que los paradigmas son los métodos que orientan el proceso
de desarrollo de software.
Hablamos de un lenguaje que soporta un paradigma si este lenguaje provee mecanismos
que facilitan su implementación eficiente. Es decir, proporciona mecanismos que permitan la
sencilla aplicación del paradigma.
Mientras que un lenguaje admite un paradigma, si es posible escribir programas siguiendo
los lineamientos del paradigma, pero con un notable esfuerzo. el lenguaje no exige la
aplicación del paradigma, no provee facilidades para programar en el paradigma y la
programación se torna mucho más forzada.

PARADIGMAS DE PROGRAMACIÓN
Paradigmas procedimentales u operacionales,
cuyo modelo se basa en especificar instrucciones paso a paso para que la computadora
realice una tarea. están ajustados a la arquitectura de Bon Nomain y se centran en cómo
resolver determinados problemas, es decir, cómo obtener la solución, son los paradigmas
más tradicionales y ampliamente utilizados.

Dentro del paradigma procedimental u operacional encontramos el paradigma imperativo,


donde el desarrollo del programa consiste en construir los Estados sucesivos de la máquina
necesarios para llegar a la solución mediante el uso de órdenes o instrucciones.
Y el orientado a objetos donde se construyen objetos completos de datos y se designa un
conjunto limitado de funciones para que operen sobre estos datos.

Paradigmas Declarativos en este caso, los paradigmas se enfocan


en describir el estado deseado del programa sin especificar cómo llegar a él. la forma de
especificar y ejecutar está alejada de la arquitectura, y es la lógica y la matemática las que
brindan formas de expresión basadas en reglas, como en él lógico o basadas en funciones
como en el paradigma funcional, consisten en determinar que se desea solucionar y no
cómo se desea hacerlo.

Dentro del paradigma declarativo, agrupamos al paradigma funcional, donde se examina la


función que el programa representa y no los cambios de Estado de acuerdo a cómo se
ejecuta el programa en este paradigma se observa el resultado deseado en lugar de los
datos disponibles, y al paradigma lógico, donde las declaraciones verifican la existencia de
cierta condición habilitadora y cuando se satisface se ejecuta una acción apropiada. La
ejecución es similar a la del lenguaje imperativo, excepto que los enunciados no son
secuenciales, las condiciones habilitadoras son las que determinan el orden de ejecución.
Dentro de otros paradigmas, hemos agrupado a los paradigmas más actuales, como son el
de programación orientada a aspectos que separa a conceptos transversales comunes
que se encuentran dentro de los distintos códigos. La de programación orientada a
eventos, que responde a ciertas situaciones que provocan cambios en el estado del
sistema, y el de programación concurrente, que maneja la ejecución simultánea de
múltiples tareas.

PARADIGMA IMPERATIVO.
El paradigma imperativo debe su nombre al papel dominante que desempeñan las
sentencias imperativas. Su esencia es el cálculo iterativo, paso a paso, de valores de nivel
inferior y su asignación a posiciones de memoria. Este paradigma tiene una historia
relativamente larga porque los diseñadores de lenguajes, ya en los años 50, reconocieron
que las variables y las sentencias de asignación constituyen una abstracción simple del
conjunto de instrucciones de máquina para leer y actualizar los datos. Debido a su estrecha
relación con la arquitectura de la máquina, los lenguajes de programación imperativos
pueden implementarse muy eficientemente, por lo menos en un principio.
Si se analizan las características fundamentales de este tipo de paradigma, se detectan las
siguientes. Concepto de celda de memoria o variable, como la conocemos para almacenar
valores. El principal componente de la arquitectura es la memoria, compuesta por un gran
número de celdas donde se almacenan los datos. Las celdas tienen nombres, ese es el
concepto de variable que las van a referenciar y sobre las que se producen efectos de lado
y definiciones de ahí. Operaciones de asignación, estrechamente ligadas a la arquitectura
de la memoria, se encuentra en 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 las sentencias de
asignación en el paradigma imperativo. Las nociones de celda de memoria y asignación a
bajo nivel se extienden a todos los lenguajes de programación y fuerzan a los
programadores a un estilo de pensamiento adaptado a la arquitectura.
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. En
resumen, podemos señalar que el paradigma imperativo propicia un entorno de
programación procedimental en el que la secuencia de control, el concepto de variable y la
operación de asignación son sus componentes fundamentales. En este paradigma de
programación podemos incluir lenguajes como Fortran, C, Pascal, Cobol y otra gran
cantidad de lenguajes que en su mayoría soportan el paradigma imperativo. Hoy en día,
incluyen características o han agregado extensiones que les permiten admitir otros
paradigmas.
Si se piensa en un programa en términos de una ecuación, la ecuación que define un
programa escrito en el paradigma imperativo es programa = algoritmos + estructuras de
datos.

En la programación imperativa, se solía hacer uso indiscriminado y sin control de las


instrucciones de salto condicion al e incondicional, lo que provocaba cierta complejidad en
la lectura y en las modificaciones de un programa. Eliminar estas dificultades fue uno de los
propósitos de la programación estructurada, y por ello, en ocasiones se ha definido como la
técnica de programación sin saltos condicionales e incondicionales. Como consecuencia,
podemos indicar que todo programa estructurado puede ser leído de principio a fin sin
interrupciones en la secuencia normal de lectura.
Al mismo tiempo que se obtiene mayor claridad de programación por medio de estas
técnicas, la puesta en marcha es más rápida, así como la confección de documentación. Un
programa estructurado es fácil de leer y comprender. Fácil de codificar en una amplia gama
de lenguajes y en diferentes sistemas. ¿Es fácil de mantener? Eficiente, aprovechando al
máximo los recursos de la computadora y su modularidad.

Durante los años 70, fue claro que esos programas bien estructurados no eran suficientes
para dominar la complejidad involucrada en el desarrollo de grandes sistemas. Lo más
adecuado es descomponer el problema en partes cuya resolución sea más factible. La
programación de cada una de estas partes se realiza en forma independiente de las otras,
incluso a veces por diferentes personas.
El diseño descendente o diseño top-down consiste en una serie de composiciones
sucesivas del problema inicial que describen el refinamiento progresivo del repertorio de
instrucciones que van a formar parte del programa. La utilización de esta técnica de diseño
tiene los siguientes objetivos básicos:
- Simplificación del problema y de los subprogramas resultantes de cada
descomposición.
- Las diferentes partes del problema pueden ser programadas de modo independiente
e incluso por diferentes personas.
- El programa final queda estructurado de forma de bloques o módulos, lo que hace
más sencilla su lectura.
El otro inconveniente que existía era el uso de variables globales. Eran accedidas por varios
procedimientos. Los procedimientos pueden llamarse entre sí creando un acoplamiento
débil, dado que es poco probable que una modificación a un procedimiento afecte a los
procedimientos que lo utilizan. Sin embargo, el acceso a las variables globales crea un
acoplamiento fuerte, ya que cualquier modificación a una variable global probablemente
forzará modificaciones a todos los procedimientos que acceden a ella.
Con la utilización del diseño modular y top-down surgen los conceptos de programa
principal y subprogramas, declaración y llamadas a subprogramas subprogramas internos y
externos, entidades globales y locales, parámetros o variables de enlace, y recursividad. Se
busca estructurar el control y la abstracción de datos para fomentar la reusabilidad y la
extensibilidad.
Como hemos dicho, el paradigma imperativo tenía muchas limitaciones, como por ejemplo
que se hace difícil razonar una solución cuando se tiene alta dependencia de la arquitectura
de la computadora. No cuenta con el concepto de transparencia referencial, puede provocar
efectos colaterales y las estructuras de control desdibujan la lógica del programa, creando
problemas de mantenimiento y seguridad. Pero la falla fundamental de la programación
imperativa era que las variables globales pueden potencialmente ser accedidas,
actualizadas, y modificadas por cualquier parte del programa. Por estas limitaciones que
presentaba la programación imperativa, sumado a la necesidad de producir software de
manera rápida, segura y confiable, es que surge la programación orientada a objetos como
una solución a estos problemas.
PARADIGMA ORIENTADO A OBJETOS
La programación orientada a objetos se puede considerar como una extensión del
paradigma imperativo, dado que surge como solución a los problemas que presentaba este
paradigma. Este paradigma orientado a objetos se caracteriza por reconocer las entidades
del problema. Una entidad es un objeto caracterizado por atributos y comportamientos de
acuerdo a su propósito y habilidades.
En un lenguaje orientado a objetos, un programa es un conjunto de objetos que interactúan
a través del paso de mensajes. Por ello, el paradigma orientado a objetos se describe a
menudo usando el concepto de objeto-mensaje, en el que cada objeto, elemento autónomo
de información creado en tiempo de ejecución, es solicitado para realizar un determinado
servicio mediante el envío a ese objeto del mensaje apropiado. Quien pide un servicio no
precisa conocer cómo el objeto proporciona ese servicio. La implementación es interna al
objeto y la gestiona el que suministra el objeto. La información se produce en qué se puede
obtener más que en cómo se obtiene.
Un objeto es una estructura abstracta que describe con la mayor fiabilidad posible un objeto
del mundo real y cómo se relaciona o interactúa con el resto del mundo que lo rodea a
través de las interfaces. Para programar, se definen las interacciones entre un grupo de
objetos y el comportamiento de cada uno. Por lo tanto, la ecuación que define un programa
en el paradigma orientado a objetos es: programa = Objetos + mensajes.

La Programación Orientada a Objetos (POO) requiere el cumplimiento de ciertas


propiedades, como:
- La abstracción de datos, que permite a una clase definir un patrón de
comportamiento a partir del cual es posible crear varias instancias.
- El encapsulamiento, que asegura que el contenido de la información de un objeto
está oculto al exterior. El estado interno de un objeto solo puede ser accedido y
modificado como respuesta a un mensaje, y la representación física de cada clase y
la implementación de las operaciones no son visibles desde el exterior.
- La modularidad, que permite la división de una aplicación en partes más pequeñas.
- La jerarquía, que permite clasificar u ordenar las abstracciones

Los conceptos clave de este paradigma son:


- Los objetos, que son entidades que combinan datos y procedimientos que operan
sobre estos datos. Poseen estado, comportamiento e identidad.
- Las clases y subclases, que son la descripción abstracta de un grupo de objetos con
características comunes. Comparten estructura y comportamiento.
- La herencia, que puede ser por especialización o generalización. Es una propiedad
que permite a los objetos ser construidos a partir de otros objetos. Supone una clase
base y una jerarquía de clases que contiene las clases derivadas de la clase base.
Se heredan atributos y métodos. En la generalización, una superclase representa
una generalización de la subclase, y en la especialización, una subclase representa
una especialización de la clase superior. Esta propiedad reduce la redundancia y
fomenta la reusabilidad en un sistema.
- El polimorfismo por inclusión, que se refiere a la capacidad de que objetos de
diferentes clases respondan al mismo mensaje. Permite que un mismo mensaje
actúe de diferente modo cuando actúa sobre objetos diferentes ligados por herencia.
El lenguaje puro que representa al paradigma es Smalltalk. Pero también podemos
mencionar C++, Java y Ada, entre otros, que surgieron después de los años 80."

PARADIGMA FUNCIONAL
El paradigma funcional está basado en el modelo matemático de composición funcional,
donde el resultado de un cálculo es la entrada del siguiente, y así sucesivamente hasta
obtener el resultado deseado. El fundamento de la programación funcional es el cálculo
lambda, desarrollado por Church en 1941. Para programar, se construyen funciones
complejas sobre funciones sencillas construidas previamente, que se aplican a los datos de
entrada. No existe la idea de variable o asignación de memoria.
A diferencia de la programación imperativa, no hay una noción implícita de estado y, por lo
tanto, no hay necesidad de instrucciones de asignación. Entonces, un programa según el
paradigma funcional será una función, una transformación de un input en un output donde el
output, es decir, el resultado, dependerá de los argumentos que se ingresen. La
computación se logra mediante la evaluación de expresiones, no mediante la ejecución de
sentencias. Entonces, la ecuación que define un programa escrito en el paradigma funcional
es: programa = funciones + estructuras de datos.
La metáfora más usual asociada al paradigma funcional es la de una calculadora
Componentes:
- Conjunto de objetos que son los miembros del dominio y rango de las funciones y
dependen de las características del lenguaje.
- Conjunto de funciones primitivas, que son las funciones predefinidas proporcionadas
por el lenguaje y dependen del dominio de aplicación del mismo.
- Conjunto de formas funcionales o funciones de alto orden, cuyo argumento o
resultado es otra función, y tienen un fuerte impacto en la expresividad del lenguaje,
ya que, junto con las funciones primitivas, constituyen la base para construir otras
funciones.
- La operación de aplicación es el principal mecanismo de control y determina cómo
las funciones se llaman entre sí y cómo se aplican los argumentos a una
determinada función.

Propiedades:
Las propiedades de los lenguajes funcionales incluyen:
- Semántica de valores: Desaparece la noción de estado de la arquitectura
subyacente. No existe el concepto de ubicación de memoria, cuya abstracción en el
paradigma imperativo son las variables, ni la modificación de las variables a través
de sentencias de asignación como en el paradigma imperativo. Las variables se
asocian únicamente a valores, no a ubicaciones de memoria.
- Transparencia referencial: En los lenguajes funcionales, una función calcula
diferentes resultados únicamente a partir de su argumento. Para el mismo valor del
argumento, siempre dará el mismo resultado. No hay efectos colaterales como en el
paradigma imperativo. Los diferentes resultados que se pueden obtener de una
función dependen únicamente de sus argumentos.
- Funciones como valores de primera clase: Las funciones pueden ser pasadas como
argumento, pueden ser retornadas como resultado de otras funciones o pueden
combinarse para componer nuevas funciones. Esto permite definir nuevas funciones
mediante la aplicación parcial.
- Evaluación perezosa: Implica un orden de evaluación no estricto. Se evalúa cada
parte del argumento de una función solo cuando es indispensable. Se recuerdan los
valores de los argumentos ya calculados para evitar su reevaluación. Este tipo de
evaluación está asociada a una reducción de orden normal, donde se evalúa cada
argumento solo cuando es indispensable, y se recuerdan los valores de los
argumentos ya calculados.
Entre los lenguajes funcionales podemos mencionar a Lisp, Miranda, Erlang, Haskell, y
Scheme.

PARADIGMA LOGICO:
El paradigma lógico entiende la programación como una especificación de teorías lógicas,
donde la ejecución es un proceso. En los lenguajes lógicos se utiliza el formalismo de la
lógica de primer orden para representar el conocimiento sobre un problema y para hacer
preguntas que, si se demuestra que se pueden deducir, se convierten en teoremas a partir
del conocimiento dado en forma de axiomas y reglas de deducción.
Así, un programa en este paradigma es un conjunto de hechos, afirmaciones o
proposiciones, también llamadas, y de reglas lógicas previamente establecidas, de donde
se obtienen conclusiones en base a una serie de preguntas o cuestiones lógicas. Para
programar, se definen enunciados lógicos y se determina la veracidad de los enunciados
para individuos concretos.
El lenguaje de programación representativo de este paradigma es Prolog, y los conceptos
clave de la programación lógica son, por lo tanto:
- Aserciones: Un conjunto de hechos, como "los ravioles son pastas", que establecen
una relación entre objetos y son la forma más sencilla de sentencia. Se definen
como una verdad.
- Cláusulas de Horn: Son una forma restrictiva de la lógica de predicados con una sola
conclusión en cada cláusula. Es el nombre que se da a las instrucciones básicas del
paradigma y permiten representar la mayoría de las proposiciones lógicas.
- Relaciones: Son las relaciones que se establecen entre las aserciones y que en la
programación lógica juegan el mismo papel que los procedimientos en otros
paradigmas.
Entonces, la ecuación que define un programa en el paradigma lógico es: programa
=lógica + control + estructuras de datos.

En este paradigma existe una abstracción de la realidad que se define como un conjunto de
hechos y reglas que, a su vez, permiten la deducción de otros hechos y la definición de
nuevas relaciones a partir de otras ya existentes. La base de conocimiento define el
alcance, es decir, lo que forma parte de nuestro universo de cosas conocidas y lo que no.
Por ejemplo, si queremos decir que los ravioles y los fideos son pastas, tendremos una
base de conocimiento de comidas y los incluiremos allí.
El mecanismo de inferencia que se utiliza para validar proposiciones en base a otras
proposiciones dadas es un método para decidir si una proposición es válida o no. Es decir,
permite sacar conclusiones a partir de un conocimiento dado para resolver las consultas.
Entonces, nos preguntamos, ¿dónde aplicamos la lógica en computación?
La lógica se aplica, por ejemplo, en el lenguaje de consultas de base de datos, en el
desarrollo de aplicaciones de inteligencia artificial, en el procesamiento del lenguaje natural,
en la escritura de compiladores y en la construcción de sistemas expertos, así como en la
búsqueda de patrones, entre otros.

RESUMEN DE CADA UNO. CONCEPTOS Y


DEMÁS.
Paradigma Imperativo:
- Cumple con conceptos como ejecución paso a paso, variables, asignación y
repetición.
- Lenguajes representativos: C, Kanal, Go.

Paradigma Orientado a Objetos:


- Conceptos como modularidad, clases, herencia, encapsulamiento, polimorfismo.
- Lenguajes representativos: Java, Smalltalk.

Paradigma Funcional:
- Predominan conceptos como funciones como datos primitivos, valores sin efectos
colaterales, transparencia referencial.
- Lenguajes representativos: Lisp, Haskell, Scala, Erlang.

Paradigma Lógico:
- Se caracteriza por la definición de reglas y relaciones lógicas, utilizando unificación
como elemento de computación.
- Lenguajes representativos: Prolog, Datalog.

Programación Orientada a Aspectos:


- Aplica conceptos como modulación y separación de conceptos comunes
transversales a los módulos.
- Lenguajes representativos: AspectJ, Spring, IoP.

Programación Orientada a Eventos:


- Se caracteriza por una secuencia de eventos, como clic del mouse y cambios de
estado.
- Lenguajes representativos: Akka, Vert.x.

Programación Concurrente:
- La ejecución de tareas se realiza en forma simultánea, con lenguajes que cuentan
con instrucciones especiales para modelar conceptos relacionados.
- Lenguajes representativos: Java, Go, Rust.
-
Cada paradigma tiene su propia forma de abordar los problemas de programación y su
conjunto de lenguajes que lo representan.

Algunos lenguajes de programación pueden soportar múltiples paradigmas de


programación. Por ejemplo, C++ puede ser empleado para desarrollar software utilizando
tanto un modelo de programación orientada a objetos como puramente imperativo. En estos
casos, es el programador quien decide qué paradigma utilizar.
En la actualidad, es bastante común encontrar lenguajes de diseño que soportan múltiples
paradigmas de programación. Estos lenguajes son aquellos que abarcan al menos dos
paradigmas diferentes. Dentro de esta categoría podemos encontrar tanto nuevos lenguajes
como otros ya conocidos. Por ejemplo, Closure incluye paradigmas lógicos y funcionales,
Python utiliza paradigmas imperativos, orientado a objetos y funcional, Ruby admite
paradigmas funcional y orientado a objetos, PHP combina paradigmas imperativo, funcional
y orientado a objetos, y así sucesivamente.
Estos lenguajes versátiles ofrecen a los programadores una amplia gama de herramientas y
enfoques para abordar diferentes tipos de problemas de programación.

También podría gustarte