Dirección General de Educación Superior
Tecnológica
Instituto
Tecnológico De Salina Cruz
Tema:
Paradigmas
de Programación.
Carrera:
Ingeniería
en Tecnologías de la Información y Comunicaciones
Materia:
Fundamentos
de Programación
Profesor:
MC.
Susana Mónica Román Nájera
Alumno:
Delgadillo
Girón Doygail de los Ángeles
Semestre:
Primer
Semestre
Grupo:
I-E1
INDICE
Contenido
INTRODUCCION
¿Qué es un paradigma de
programación? Un paradigma de programación provee (y determina) la visión y
métodos de un programador en la construcción de un programa o subprograma.
Diferentes paradigmas resultan en diferentes estilos de programación y en
diferentes formas de pensar la solución de problemas (con la solución de
múltiples “problemas” se construye una aplicación). Los lenguajes de
programación son basados en uno o más paradigmas Por ejemplo: Smalltalk y Java
son lenguajes basados en el paradigma orientado a objetos. El lenguaje de
programación Scheme, en cambio, soporta sólo programación funcional.
En cambio Python, soporta
múltiples paradigmas.
Edward Sapir, definió el
lenguaje como un método humano y no instintivo de comunicar ideas, emociones y
deseos mediante un sistema de símbolos producidos voluntariamente. Esta
definición en principio se refiere a un lenguaje natural, que es aquel lenguaje
hablado o escrito que usamos para la comunicación mas cotidiana y general. No
obstante en este trabajo, nos es de interés otro tipo de lenguajes llamados
“lenguajes formales”.
Los paradigmas de
programación son la forma que determinan los métodos y las herramientas que un
programador usara en la construcción de un software, es la manera en la que nos
comunicamos con las maquinas hoy en día. Mayormente los lenguajes de
programación están basados en uno o más paradigmas, a estos se les puede llamar
multiparadigmas. Esperando que este trabajo sea de suma importancia para
nuestro lector.
PARADIGMA 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.
Ejemplo:
Probablemente el
paradigma de programación que actualmente es el más usado a todos los niveles
es la orientación a objeto. El núcleo central de este paradigma es la unión de
datos y procesamiento en una entidad llamada "objeto", relacionable a
su vez con otras entidades "objeto".
Tradicionalmente datos y
procesamiento se han separado en áreas diferente del diseño y la implementación
de software. Esto provocó que grandes desarrollos tuvieran problemas de
fiabilidad, mantenimiento, adaptación a los cambios y escalabilidad. Con la
orientación a objetos y características como el encapsulado, polimorfismo o la
herencia se permitió un avance significativo en el desarrollo de software a
cualquier escala de producción.
La orientación a objeto
parece estar ligada en sus orígenes con lenguajes como Lisp y Simula aunque el
primero que acuñó el título de programación orientada a objetos fue Smalltalk.
LENGUAJE DE PROGRAMACIÓN
Lenguaje
de programación es
un idioma artificial diseñado para expresar procesos que pueden ser llevadas a
cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de
una máquina, para expresar algoritmos con precisión, o como modo de comunicación
humana.1 Está formado por un conjunto de símbolos y
reglas sintácticas y semánticas que definen su estructura y el significado de
sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila y se mantiene el código fuente de un programa informático se le llama programación.
También la palabra programación
se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos,
a través de los siguientes pasos:
·
El
desarrollo lógico del programa para resolver un problema en particular.
·
Escritura
de la lógica del programa empleando un lenguaje de programación específico
(codificación del programa).
·
Ensamblaje
o compilación del programa hasta convertirlo en lenguaje de máquina.
·
Prueba
y depuración del programa.
·
Desarrollo
de la documentación.
Existe un error común que trata
por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos
engloban a los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de
programación, sino un conjunto
de instrucciones que
permiten diseñar el contenido de los documentos).
Permite especificar de manera
precisa sobre qué datos debe operar una computadora, cómo deben ser
almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de
circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural. Una
característica relevante de los lenguajes de programación es precisamente que
más de un programador pueda usar un conjunto común de instrucciones que sean
comprendidas entre ellos para realizar la construcción de un programa de forma
colaborativa.
TIPOS DE PARADIGMA DE PROGRAMACIÓN.
IMPERATIVA O POR PROCEDICIMIENTO
La programación imperativa, en contraposición a la programación
declarativa es
un paradigma
de programación que
describe la programación en términos del estado del programa y sentencias que
cambian dicho estado. Los programas imperativos son un conjunto de
instrucciones que le indican al computador cómo realizar una tarea.
La implementación de hardware de la mayoría de computadores es imperativa;
prácticamente todo el hardware de los computadores está diseñado para
ejecutar código de máquina, que es nativo al computador,
escrito en una forma imperativa. Esto se debe a que el hardware de los
computadores implementa el paradigma de las Máquinas de Turing. Desde esta perspectiva de bajo
nivel, el estilo del programa está definido por los contenidos de la memoria, y
las sentencias son instrucciones en el lenguaje de máquina nativo del
computador (por ejemplo el lenguaje ensamblador).
Los lenguajes imperativos de alto
nivel usan variables y sentencias más complejas,
pero aún siguen el mismo paradigma. Las recetas y las listas de revisión de
procesos, a pesar de no ser programas de computadora, son también conceptos
familiares similares en estilo a la programación imperativa; cada paso es una
instrucción, y el mundo físico guarda el estado (Zoom).
Los primeros lenguajes
imperativos fueron los lenguajes de máquina de los computadores originales. En
estos lenguajes, las instrucciones fueron muy simples, lo cual hizo la
implementación de hardware fácil, pero obstruyendo la creación de programas
complejos. Fortran, cuyo desarrollo fue iniciado
en 1954 por John Backus en IBM, fue el
primer gran lenguaje de programación en superar los obstáculos presentados por
el código de máquina en la creación de programas complejos.
Algunos
lenguajes imperativos
·
BASIC
·
C
·
Fortran
·
Pascal
·
Perl
·
PHP
·
Lua
·
Java
·
Python
FUNCIONAL.
En ciencias de la
computación, la programación funcional es un paradigma de programación
declarativa basado en la utilización de funciones aritméticas que no maneja
datos mutables o de estado. Enfatiza la aplicación de funciones, en contraste
con el estilo de programación imperativa, que enfatiza los cambios de estado.
La programación funcional tiene sus raíces en el cálculo lambda, un sistema
formal desarrollado en los 1930s para investigar la definición de función, la
aplicación de las funciones y la recursión. Muchos lenguajes de programación
funcionales pueden ser vistos como elaboraciones del cálculo lambda.
En la práctica, la
diferencia entre una función matemática y la noción de una "función"
utilizada en la programación imperativa es que las funciones imperativas pueden
tener efectos secundarios, al cambiar el valor de cálculos realizados
previamente. Por esta razón carecen de transparencia referencial, es decir, la
misma expresión sintáctica puede resultar en valores diferentes en diferentes
momentos dependiendo del estado del programa siendo ejecutado. Con código
funcional, en contraste, 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, y esta es una de las principales motivaciones
para utilizar la programación funcional.
Los lenguajes de
programación funcional, especialmente los que son puramente funcionales, han
sido enfatizados en el ambiente académico principalmente y no tanto en el
desarrollo de software comercial. Sin embargo, lenguajes de programación
importantes tales como Scheme, Erlang, Objective Caml y Haskel, han sido
utilizados en aplicaciones comerciales e industriales por muchas
organizaciones. La programación funcional también es utilizada en la industria
a través de lenguajes de dominio específico como R (estadística), Mathematica
(matemáticas simbólicas), J y K (análisis financiero), F# en Microsoft.NET y
XSLT (XML). Lenguajes de uso específico usados comúnmente como SQL y Lex/Yacc,
utilizan algunos elementos de programación funcional, especialmente al procesar
valores mutables. Las hojas de cálculo también pueden ser consideradas
lenguajes de programación funcional.
Lenguajes funcionales
Entre los lenguajes funcionales
puros, cabe destacar a Haskell y Miranda. Los lenguajes funcionales híbridos
más conocidos son Scala, Lisp, Scheme, Ocaml, SAP y Standard ML (estos dos últimos, descendientes del
lenguaje ML). Erlang es otro lenguaje funcional de programación
concurrente. Mathematica permite la programación en múltiples
estilos, pero promueve la programación funcional. R también es un lenguaje funcional
dedicado a la estadística.2 Recientemente Microsoft Research está
trabajando en el lenguaje F# (Functional#).
LOGICO
La programación
lógica es un tipo de paradigmas de programación dentro del paradigma de programación declarativa. El resto de los subparadigmas de
programación dentro de la programación declarativa son: programación funcional, programación con restricciones, programas DSL (de
dominio específico) e híbridos. La programación lógica gira en torno al
concepto de predicado, o relación entre
elementos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte
más matemático. Históricamente,
los ordenadores se han programado
utilizando lenguajes muy cercanos a las
peculiaridades de la propia máquina: operaciones aritméticas simples,
instrucciones de acceso a memoria, etc. Un programa escrito de esta manera puede
ocultar totalmente su propósito a la comprensión de un ser humano, incluso uno
entrenado. Hoy día, estos lenguajes pertenecientes al paradigma de la Programación
imperativa han
evolucionado de manera que ya no son tan crípticos.
En cambio, la lógica matemática es la manera más sencilla,
para el intelecto humano, de expresar formalmente problemas complejos y de
resolverlos mediante la aplicación de reglas, hipótesis y teoremas. De ahí que
el concepto de "programación lógica" resulte atractivo en diversos
campos donde la programación tradicional es un fracaso.
Lenguajes
El lenguaje de programación
lógica por excelencia es Prolog, que cuenta con diversas variantes. La más
importante es la programación lógica con restricciones (véase artículo sobre
programación con restricciones), que posibilita la resolución de ecuaciones
lineales además de la demostración de hipótesis.
DECLARATIVO
La Programación Declarativa, en contraposición a la 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. La solución
es obtenida mediante mecanismos internos de control, sin especificar
exactamente cómo encontrarla (tan sólo se le indica a la computadora qué es lo que se desea obtener o qué es
lo que se está buscando). No existen asignaciones destructivas, y las variables
son utilizadas con Transparencia referencial
Algunos
lenguajes declarativos
·
Haskell (Programación funcional)
·
ML (Programación funcional)
·
Lisp (Programación funcional)
·
Prolog (Programación Lógica)
·
F-Prolog
(Programación Lógica Difusa)
·
Curry
(Programación Lógico-Funcional)
·
SQL
ORIENTEDA A OBJETOS
La programación orientada a objetos o POO (OOP según sus siglas en
inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en
varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de los años
1990. En la actualidad, existe variedad de lenguajes de programación que
soportan la orientación a objetos.
Lenguajes
orientados a objetos
Simula (1967) es aceptado como el
primer lenguaje que posee las características principales de un lenguaje
orientado a objetos. Fue creado para hacer programas de simulación, en donde
los "objetos" son la representación de la información más importante. Smalltalk (1972 a 1980) es
posiblemente el ejemplo canónico, y con el que gran parte de la teoría de la
programación orientada a objetos se ha desarrollado.
Entre los lenguajes orientados a
objetos se destacan los siguientes:
·
ABAP -> SAP Lenguaje
orientado a eventos
·
ABL
Lenguaje de programación de OpenEdge de Progress Software
·
ActionScript
·
ActionScript 3
·
Ada
·
C++
·
C#
·
Clarion
·
Clipper (lenguaje de programación) (Versión 5.x con librería de objetos
Class(y))
·
D
·
Object Pascal (Embarcadero Delphi)
·
Gambas
·
Genie
·
Harbour
·
Eiffel
·
Fortran 90/95
·
Java
·
JavaScript (la herencia se realiza por
medio de la programación basada en prototipos)
·
Lexico (en castellano)
·
Objective-C
·
Ocaml
·
Oz
·
R
·
Perl (soporta herencia múltiple.
La resolución se realiza en preorden, pero puede modificarse al
algoritmo linearization C3 por
medio del módulo Class::C3 en CPAN)
·
PHP (a partir de su versión 5)
·
PowerBuilder
·
Python
·
Ruby
·
Self
·
Smalltalk (Entorno de objetos puro)
·
Magik (SmallWorld)
·
Vala
·
VB.NET
·
Visual FoxPro (en su versión 6)
·
Visual Basic 6.0
·
Visual DataFlex
·
Visual Objects
·
XBase++
·
Lenguaje DRP
·
Lenguaje de programación Scala (lenguaje usado por Twitter) http://www.scala-lang.org/page.jsp
Muchos de estos lenguajes de
programación no son puramente orientados a objetos, sino que son híbridos que
combinan la POO con otros paradigmas.
Al igual que C++, otros
lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX,
han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de
programación clásico.
Un nuevo paso en la abstracción
de paradigmas de programación es la Programación Orientada a Aspectos (POA). Aunque es todavía una metodología en
estado de maduración, cada vez atrae a más investigadores e incluso proyectos
comerciales en todo el mundo.
No hay comentarios:
Publicar un comentario