Académique Documents
Professionnel Documents
Culture Documents
I ntr o d u c c i n
Parte 1: Introduccin
Paradigmas y Lenguajes
PARADIGMAS Y LENGUAJES
LICENCIATURA EN SISTEMAS DE INFORMACION
FACULTAD DE CIENCIAS EXACTAS Y NATURALES Y
AGRIMENSURA-UNNE
2DO. AO PRIMER CUATRIMESTRE
PROFESORES TEORIA:
LIC. RICARDO MONZON
ING. RUBEN BERNAL
PROFESORES DE PRACTICO
EXP. LAURA MACIEL
LIC. SONIA CORRALES
LIC. MONICA RINGA
LIC. MARIELA FERRARI
AYUDANTES DE PRACTICA
Carlos Romero
Leandro Rodrguez
HORARIOS DE CLASES TEORICAS:
LUNES DE 18:00 a 20:00
SABADOS DE 09:30 A 12:30.
HORARIOS DE CLASES PRACTICAS:
Grupo M-Z: LUNES DE 14:00 A 16:00. MIERCOLES
DE 15:00 A 17:00 AULA MAGNA.
Grupo A-L: LUNES DE 16:00 A 18:00. MIERCOLES
DE 13:00 A 15:00 AULA MAGNA.
HORARIOS DE LABORATORIO:
A confirmar.
Pgina 2
Parte 1: Introduccin
Paradigmas y Lenguajes
PARTE I: INTRODUCCION.
TEMA 1: PARADIGMAS y Paradigmas de
Programacin
Definicin Terica
Un paradigma est constituido por los supuestos tericos
generales, las leyes y las tcnicas para su aplicacin que
adoptan los miembros de una determinada comunidad
cientfica.
Las leyes explcitamente establecidas y los supuestos tericos.
Por ejemplo, las leyes de movimiento de Newton forman parte
del paradigma newtoniano y las ecuaciones de Maxwell forman
parte del paradigma que constituye la teora electromagntica
clsica.
El instrumental y las tcnicas instrumentales necesarios para
hacer que las leyes del paradigma se refieran al mundo real. La
aplicacin en astronoma del paradigma newtoniano requiere el
uso de diversos telescopios, junto con tcnicas para su
utilizacin y diversas tcnicas para corregir los datos recopilados.
Un componente adicional de los paradigmas lo constituyen
algunos principios metafsicos muy generales que guan el
trabajo dentro del paradigma.
Podemos decir que, los paradigmas son marcos de referencia que
imponen reglas sobre cmo se deben hacer las cosas, indican qu
es vlido dentro del paradigma y qu est fuera de sus lmites.
Un paradigma distinto implica nuevas reglas, elementos, lmites y
maneras de pensar, o sea implica un cambio.
Los paradigmas pueden ser considerados como patrones de
pensamiento para la resolucin de problemas. Desde luego siempre
teniendo en cuenta los lenguajes de programacin, segn nuestro
inters de estudio.
Un paradigma de programacin es entonces una forma de
representar y manipular el conocimiento. Representa un
enfoque particular o filosofa para la construccin del
software. No es mejor uno que otro sino que cada uno tiene
ventajas y desventajas. Tambin hay situaciones donde un
paradigma resulta ms apropiado que otro.
Pgina 3
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
mediante
relaciones
Pgina 5
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 6
Parte 1: Introduccin
Paradigmas y Lenguajes
los
de
compilados
(Compiladores)
como
C,
C++,
Pgina 7
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 8
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 9
Parte 1: Introduccin
Paradigmas y Lenguajes
ESTILOS DE PROGRAMACION
Programacin imperativa
La
programacin imperativa,
en
contraposicin a la
programacin declarativa es un paradigma de programacin que
describe la programacin en trminos del estado del programa y
sentencias que cambian dicho estado. Los programas imperativos
son un conjunto de instrucciones que le indican al computador
cmo realizar una tarea.
La implementacin de hardware de la mayora de computadores es
imperativa; prcticamente todo el hardware de los computadores
est diseado para ejecutar cdigo de mquina, 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
Mquinas 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 mquina nativo del
computador (por ejemplo el lenguaje ensamblador).
Los lenguajes imperativos de alto nivel usan variables y sentencias
ms complejas, pero an siguen el mismo paradigma. Las recetas y
las listas de revisin de procesos, a pesar de no ser programas de
computadora, son tambin conceptos familiares similares en estilo
a la programacin imperativa; cada paso es una instruccin, y el
mundo fsico guarda el estado (Zoom).
Los primeros lenguajes imperativos fueron los lenguajes de
mquina de los computadores originales. En estos lenguajes, las
instrucciones fueron muy simples, lo cual hizo la implementacin
de hardware fcil, pero obstruyendo la creacin de programas
complejos. El lenguaje de programacin llamado "C", cuyo
desarrollo fue iniciado en 1954 por John Backus en IBM, fue el
primer gran lenguaje de programacin en superar los obstculos
presentados por el cdigo de mquina en la creacin de programas
complejos.
Pgina 10
Parte 1: Introduccin
Paradigmas y Lenguajes
Programacin funcional
La Programacin funcional es un paradigma de programacin
declarativa basado en la utilizacin de funciones matemticas.
Historia
Sus orgenes provienen del Clculo Lambda (o -clculo), una
teora matemtica elaborada por Alonzo Church como apoyo a sus
estudios sobre computabilidad. Un lenguaje funcional es, a grandes
rasgos, un azcar sintctico del Clculo Lambda.
Utilidad
El objetivo es conseguir lenguajes expresivos y matemticamente
elegantes, en los que no sea necesario bajar al nivel de la mquina
para describir el proceso llevado a cabo por el programa, y
evitando el concepto de estado del cmputo. La secuencia de
computaciones llevadas a cabo por el programa se regira nica y
exclusivamente por la reescritura de definiciones ms amplias a
otras cada vez ms concretas y definidas, usando lo que se
denominan "definiciones dirigidas".
Caractersticas
Los programas escritos en un lenguaje funcional estn constituidos
nicamente por definiciones de funciones, entendiendo stas no
como subprogramas clsicos de un lenguaje imperativo, sino como
funciones puramente matemticas, en las que se verifican ciertas
propiedades como la transparencia referencial (el significado de
una expresin depende nicamente del significado de sus
subexpresiones), y por tanto, la carencia total de efectos laterales.
Otras caractersticas propias de estos lenguajes son la no
existencia de asignaciones de variables y la falta de construcciones
estructuradas como la secuencia o la iteracin (lo que obliga en la
prctica a que todas las repeticiones de instrucciones se lleven a
cabo por medio de funciones recursivas).
Existen dos grandes categoras de lenguajes funcionales: los
funcionales puros y los hbridos. La diferencia entre ambos estriba
en que los lenguajes funcionales hbridos son menos dogmticos
que los puros, al admitir conceptos tomados de los lenguajes
imperativos, como las secuencias de instrucciones o la asignacin
de variables. En contraste, los lenguajes funcionales puros tienen
una mayor potencia expresiva, conservando a la vez su
Pgina 11
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 12
Parte 1: Introduccin
Paradigmas y Lenguajes
Programacin lgica
La programacin lgica consiste en la aplicacin del corpus de
conocimiento sobre lgica para el diseo de lenguajes de
programacin; no debe confundirse con la disciplina de la lgica
computacional.
La programacin declarativa gira en
predicado, o relacin entre elementos.
torno
al
concepto
de
Motivacin
Histricamente, los ordenadores se han programado utilizando
lenguajes muy cercanos a las peculiaridades de la propia mquina:
operaciones aritmticas simples, instrucciones de acceso a
memoria, etc. Un programa escrito de esta manera puede ocultar
totalmente su propsito a la comprensin de un ser humano,
incluso uno entrenado. Hoy da, estos lenguajes pertenecientes al
paradigma de la Programacin imperativa han evolucionado de
manera que ya no son tan crpticos. Sin embargo, an existen
casos donde el uso de lenguajes imperativos es inviable debido a la
complejidad del problema a resolver.
En cambio, la lgica matemtica es la manera ms sencilla, para el
intelecto humano, de expresar formalmente problemas complejos y
de resolverlos mediante la aplicacin de reglas, hiptesis y
teoremas. De ah que el concepto de "programacin lgica" resulte
atractivo en diversos campos donde la programacin tradicional es
un fracaso.
Campos de aplicacin
La programacin lgica encuentra su hbitat
aplicaciones de inteligencia artificial o relacionadas:
natural
en
Etc.
Pgina 13
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 14
Parte 1: Introduccin
Paradigmas y Lenguajes
Este
ejemplo
es
claramente
acadmico.
Sin
embargo,
consideremos el siguiente ejemplo: el sistema de control de
semforos de una ciudad.
El estado de cada uno de los semforos (verde, rojo o mbar)
constituye los hechos del mundo real. El programa en s consiste
en unas pocas reglas de sentido comn: determinados semforos
no pueden permanecer simultneamente en verde, un semforo
solamente puede transitar de verde a mbar y de mbar a rojo,
etc. La hiptesis es el estado en el que deberan estar cada uno de
los semforos en el siguiente instante de tiempo.
ste es un ejemplo imposible de resolver mediante programacin
tradicional, ya que la lgica subyacente al comportamiento de los
semforos en su conjunto queda enmascarada por simples rdenes
imperativas del tipo "cambiar color de tal o cual semforo".
Lenguajes
El lenguaje de programacin lgica por excelencia es Prolog, que
cuenta con diversas variantes. La ms importante es la
programacin lgica con restricciones, que posibilita la resolucin
de ecuaciones lineales adems de la demostracin de hiptesis.
Los programas construidos un lenguaje lgico estn construidos
nicamente por expresiones lgicas, es decir, que son ciertas o
falsas, en oposicin a un expresin interrogativa (una pregunta) o
expresiones imperativas (una orden).
Prolog, proveniente del ingls Programming in Logic, es un
lenguaje lgico bastante popular en el medio de investigacin en
Inteligencia Artificial. Prolog es un lenguaje muy diferente, tanto de
los imperativos como Fortran, Pascal, C etc, como de los
funcionales como Lisp. En todos los mencionados, las instrucciones
se ejecutan normalmente en orden secuencial, es decir, una a
continuacin de otra, en el mismo orden en que estn escritas, que
slo vara cuando se alcanza una instruccin de control (un bucle,
una instruccin condicional o una transferencia).
En Prolog, las cosas son distintas: el orden de ejecucin de las
instrucciones no tiene nada que ver con el orden en que fueron
escritas. Tampoco hay instrucciones de control propiamente dichas.
Para trabajar con este lenguaje, un programador debe
Pgina 15
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 16
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 17
Parte 1: Introduccin
Paradigmas y Lenguajes
Programacin estructurada
La programacin estructurada es una forma de escribir
programacin de ordenador de forma clara, para ello utiliza
nicamente tres estructuras: secuencial, selectiva e iterativa;
siendo innecesario y no permitindose el uso de la instruccin o
instrucciones de transferencia incondicional ( GOTO ).
Surgimiento de la programacin estructurada
A finales de los aos sesenta surgi una nueva forma de programar
que no solamente daba lugar a programas fiables y eficientes, sino
que adems estaban escritos de manera que facilitaba su
comprensin posterior.
Un famoso Teorema de Dijkstra, demostrado por Edsger Dijkstra en
los aos sesenta, demuestra que todo programa puede escribirse
utilizando nicamente las tres instrucciones de control siguientes:
Secuencia
Instruccin condicional.
Pgina 18
Parte 1: Introduccin
Paradigmas y Lenguajes
Estructura selectiva
La estructura selectiva permite la realizacin de una instruccin u
otra segn un criterio, solo una de estas instrucciones se ejecutar.
Ejemplo:
si a > b entonces
Escribir a es mayor que b
si_no
Escribir a no es mayor que b
fsi
Estructura iterativa
Un bucle iterativo o iteracin de una secuencia de instrucciones,
hace que se repitan mientras se cumpla una condicin, en un
principio el nmero de iteraciones no tiene porque estar
determinado.
Pgina 19
Parte 1: Introduccin
Paradigmas y Lenguajes
Ejemplo:
a:= 0
b:= 7
mientras b > a hacer
Escribir a
a:= a + 1
fin mientras
Esta instruccin tiene tres palabras reservadas mientras, hacer y
fmientras.
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 24
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
mientras
la
programacin
clsica
se
basa
en
comportamiento, representado usualmente por verbos.
el
Es
compleja
la
coordinacin
y
organizacin
entre
programadores para la creacin de aplicaciones de media y
gran envergadura.
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
sistema
sin
revelar
cmo
se
implementan
estas
caractersticas. Los procesos, las funciones o los mtodos
pueden tambin ser abstrados y cuando lo estn, una
variedad de tcnicas son requeridas para ampliar una
abstraccin.
Pgina 30
Parte 1: Introduccin
Paradigmas y Lenguajes
Ada
C++
C#
VB.NET
Visual FoxPro
Clarion
Delphi
Harbour
Eiffel
Java
Objective-C
Ocaml
Oz
PowerBuilder
Python
Ruby
Pgina 31
Parte 1: Introduccin
Smalltalk
Magik (SmallWorld)
Paradigmas y Lenguajes
Pgina 32
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 33
Parte 1: Introduccin
Paradigmas y Lenguajes
Dominios lineales,
funciones lineales.
donde
solo
se
describen
analizan
Pgina 34
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
Parte 1: Introduccin
Paradigmas y Lenguajes
Pgina 37
Parte 1: Introduccin
Paradigmas y Lenguajes
Programacin multiparadigma
Un lenguaje de programacin multiparadigma es un lenguaje
de programacin que soporta ms de un paradigma de
programacin. Segn lo describe Bjarne Stroustrup, "un programa
usando ms de un estilo de programacin ".
El objetivo de diseo de estos lenguajes es permitir a los
programadores utilizar la mejor herramienta para cada trabajo,
admitiendo que ningn paradigma resuelve todos los problemas de
la forma ms fcil y eficiente posible.
Tal es el caso de lenguajes como C++, Delphi o Visual Basic, los
cuales combinan el paradigma imperativo con el orientado a
objetos. Incluso existen lenguajes multiparadigma que permiten la
mezcla de forma natural, como en el caso de Oz: el lenguaje de
programacin Oz tiene subconjuntos que son un lenguaje lgico
(Oz desciende de la programacin lgica), otros que son un
lenguaje de programacin funcional, un lenguaje orientado a
objetos y ms.
Pgina 38