2. Paradigmas del Lenguaje
• Nocion de Paradigma, “la estructura de las
revoluciones cientificas, Thomas Kuhn”
– Definida como : “logros cientificos universalmente
reconocidos que durante un tiempo proporcionan
problemas y soluciones modelo para una
comunidad de profesionales” [Kuhn, 1962]
– Paradigma de lenguajes de programacion: “
pueden definirse comprensiblemente por sus
propiedades o extensiblemente por uno o mas
ejemplos” [Wegner, 1988]
3. Paradigmas Imperativos
• Son aquellos que facilitan los cálculos por medio
de cambios de estado(cambios de RAM)
– Paradigma basado en bloques: Fortran el primer
lenguaje con bloques de programa, divide el estado en
bloques que representan subrutinas y datos comunes.
– Paradigma basado en objetos, describe los lenguajes
que soportan objetos en interacción. Un objeto es un
grupo de procedimientos que comparten un
estado.[Wegner, 1988], por ejemplo en ADA los
objetos son llamados paquetes, C++ los objetos son
agrupados en clases.
4. – Paradigma de la programación distribuida: la
programación concurrente ha sido dividida en dos amplias
categorías, sistemas acoplados forma débil o fuerte.
Distribuido se refiere por lo general a lenguajes para
sistemas acoplados débilmente que soportan un grupo de
programadores trabajando en un programa de forma
simultanea. (RED las CPU múltiples no son esenciales en
este paradigma).
• Un sistema acoplado fuertemente permite que mas de un proceso
en ejecución tenga acceso a la misma ubicación de memoria.
• La programación concurrente esta asociada con mas de una CPU
funcionando en paralelo.
En ADA dos o mas procedimientos se ejecutan en forma
independiente
5. Paradigmas Declarativos
• Un lenguaje declarativo es uno en el que un
programa especifica una relacion o funcion
[Wegner, 1988], no se realizan asignacion de
variables del programa. El interprete o
compilador para el lenguaje administra la
memoria por nosotros . Estos lenguajes son de
nivel mas elevado que los imperativos, el
programados trabaja mas alejado de la CPU.
6. • Paradigma de la programacion logica: Esta
basada en un subconjunto del calculo de
predicados (axiomas, reglas implica deducir
nuevos hechos), incluyendo instrucciones
escritas en formas conocidas como clausulas
de Horn.(ejemplo PROLOG).
• Paradigma funcional: operan solamente a
traves de funciones
7. • Paradigma del lenguaje de base de datos: las
propiedades que los distinguen para tratar
bases de datos son la persistencia y la
administracion de cambios. Las entidades de
base ed datos no desaparecen despues de
finaliza un programa, sino que permanecen
activas indefinidamente como fueron
estructuradas originalmente.
8. Criterios de Lenguaje
• Descripciones bien definidas
– La sintaxis BNF (Backus – Naur – Form) seguida de
ejemplos de programación. (colección de
instrucciones formadas al seguir un conjunto de
reglas que diferencian los programas validos de
los no validos).
– BNF fue extendido de diversas maneras, conocidas
como EBNF (forma extendida Backus –Naur)
9. • Notación BNF (Backus-Naur Form). Es de las primeras notaciones que
se empezó a utilizar para especificar lenguajes de programación.
Notación BNF: <elemento no terminal>::= Definición1 | Definición2 | ...
Los elementos terminales, o sea, que pertenecen al vocabulario, se
escriben tal cual.
Los elementos no terminales se escriben entre los símbolos <>.
Ejemplo: Descripción sintáctica de una expresión matemática en
notación BNF:
---> 4*(3+1)
<expresión> ::= <numero> | (<expresión>) |
<expresión><operador><expresión>
<operador> ::= + | - | * | /
<numero> ::= <digito> | <numero><digito>
<digito> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
10. • Diagramas sintácticos. Es una representación
gráfica de la sintaxis. Tiene la ventaja de ser
más intuitivo. Ejemplo: Descripción sintáctica
de una expresión matemática en diagrama
Sintáctico: ---> 4*(3+1)
11. • Semántica
• Define el significado de las construcciones sintácticas
del lenguaje y de las expresiones y tipos de datos
utilizadas
Ejemplo:
if (a>b) max := a else max := b;
el significado corresponde a la construcción algorítmica
Si … entonces … sino …
• Además la expresión después de If debe tener un
resultado lógico (verdad o falso.)
12. • Comprobabilidad : la prueba que un
programa es correcto involucra tres pasos:
– Comprobacion que el programa cumple con la
intencion del programador.
– Probar que el compilador traduce de manera
correcta a codigo de maquina la sintaxis y la
semantica del lenguaje empleado.
– Comprobar que la maquina misma funciona
correctamente
13. • Confiabilidad:
– El software se considera confiable si se comporta
como es anunciado y produce los resultados que
el usuario espera.
• Traduccion rapida
– La traduccion del codigo fuente involucra tres
pasos:
• Analisis Lexicografico
• Analisis Sintactico
• Analisis Semantico
14. • Codigo objeto eficiente:
– Despues de compilar en codigo objeto, no se hace
referencia adicional al lenguaje fuente.
• Ortogonalidad:
– los componentes son independientes entre si y se
comportan dela misma manera en cualquier
circunstancia
15. • Generalidad: se refiere a la existencia de solo las
características necesarias del lenguaje, con las
otras componentes en una manera libre y
uniforme sin limitación y con efectos previsibles.
• Consistencia y notaciones comunes:
• Uniformidad: la consistencia esta relacionada con
la uniformidad. Esto quiere decir que nociones
similares deberían comportarse de la misma
manera
16. • Subconjunto: un subconjunto de un lenguaje
es una implementacion de solo una parte del
mismo, sin caracteristicas especiales.
• Extensibilidad: el inverso de subconjuntos, un
lenguaje puede tener un nucleo estandar, el
cual es invariable en cada implementacion,
pero con varias extensiones.
17. • Transportabilidad: es transportable si sus
programas pueden compilarse y ejecutarse en
diferentes maquinas sin tener que reescribir el
codigo fuente.