Está en la página 1de 6

Criterios de diseño de los Lenguajes de Programación

Son las características deseables de los lenguajes de programación y que son tenidas en cuenta
en el momento de su diseño. Estas al no ser excluyentes, si se mejora una de ellas tambien
puede mejorar otras relacionadas, pero inevitablemente también puede alejarla de otras
características contrapuestas a la primera. Cada diseño de un lenguaje supone un compromiso
o equilibrio entre las características deseables.
Facilidad de lectura y escritura
Facilidad de escritura (writability)
Facilidad para expresar un cálculo de forma clara, correcta, concisa, y rápida. (es una
característica muy genérica)
Legibilidad
El diseño del lenguaje debe permitir que la lectura de los programas lleve fácilmente a
una compresión correcta del cálculo que significan.
Generalidad y Ortogonalidad
Generalidad
Las características o construcciones del lenguaje deben ser aplicables uniformemente y
con la mínimas restricciones en todos los contextos posibles.
Ortogonalidad (independencia)
Las diferentes características deben ser lo más independientes posible entre ellas, en el
sentido de que el uso de una no debe modificar, limitar o impedir el uso simultáneo o
combinado de otra.
Uniformidad y Simplicidad
Uniformidad
Características parecidas deberían tener apariencias parecidas. Características distintas
no deberían tener la misma apariencia
Simplicidad
El numero de características o posibilidades distintas o independientes debería ser el
mínimo posible. No debería haber características distintas pero muy parecidas.
Expresividad y fiabilidad
Expresividad
El lenguaje es expresivo cuando permite expresar con facilidad procesos o estructuras
complejos.

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 32
Fiabilidad El lenguaje debe hacer fácil la construcción de programas fiables, y debe
impedir o dificultad la construcción de programas no fiables.
Definición correcta y portabilidad
Definición precisa y clara
Como ya se ha comentado, la correctitud y el significado de todo programa deben estar
definidos sin ambigüedades, y además, estas definiciones deben fácilmente legibles y
comprensibles.
Independencia de la máquina y el S.O.
En general, el lenguaje debe permitir la construcción con la máxima facilidad posible
de programas usables en arquitecturas hardware y SS.OO. distintas con un mínimo de
cambios.
Eficiencia
Eficiencia en la traducción
El diseño del lenguaje debe permitir fácilmente la construcción de traductores que sean
eficientes en uso de tiempo y memoria.
Eficiencia de ejecución
El diseño del lenguaje no debe dar lugar a que la interpretación o ejecución de los
programas traducidos conlleve un alto gasto en tiempo o memoria.

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 33
¿Que es paradigma?
Paradigma es un término de origen griego ("παράδειγμα"/"parádeigma") que significa
ejemplo, modelo, patrón. En un sentido amplio se corresponde con algo que va a servir como
modelo o ejemplo a seguir en una situación dada. Son las “directrices de un grupo” que
establecen límites y determinan cómo se debe actuar dentro de dichos límites.
El término apareció por primera vez en Lingüística, en la teoría del signo lingüístico creado
por Ferdinand de Saussure, en la que relacionaba el signo (la palabra) con el conjunto de
elementos que constituyen el lenguaje.
La RAE indica tres acepciones para esta palabra:
m. Ejemplo o ejemplar.
Ej. Esa chica es el paradigma de la paciencia.
m. Ling. Cada uno de los esquemas formales en que se organizan las palabras nominales y
verbales para sus respectivas flexiones.
Ej. paradigma de la conjugación verbal.
En la gramática, el verbo "cantar" sirve como paradigma de la conjugación, debido a que
se conjuga en diversos tiempos y modos, y que otros verbos que terminan en "ar" pueden
seguir el mismo modelo.
m. Ling. Conjunto cuyos elementos pueden aparecer alternativamente en algún contexto
especificado; p. ej., niño, hombre, perro, pueden figurar en El ……. se queja.
Ej. paradigma de las preposiciones.
La RAE enmienda la vigésima tercera edición, incorporando la siguiente acepción:
m. Teoría cuyo núcleo central se acepta sin cuestionar y que suministra la base y modelo para
resolver problemas y avanzar en el conocimiento;
Ej., en la ciencia, las leyes del movimiento y la gravitación de Newton y la teoría de la
evolución de Darwin. Paradigmas Newtoniano y Darwiniano.
Si bien la primera acepción, la que se compara con ejemplo, se aproxima, la última es la más
adecuada cuando utilizamos la palabra Paradigma en relación a la programación. En los ámbitos
científico, religioso u otro contexto epistemológico, el término paradigma indica un esquema
formal de organización, que es utilizado como sinónimo de marco teórico o conjunto de
teorías.

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 34
¿A qué se le llama paradigma de programación?
Un paradigma de programación determina los lineamientos generales y los métodos que
usa un programador para la construcción programas. Diferentes paradigmas resultan en
diferentes estilos de programación y formas de pensar la solución de un problema.
En general, los lenguajes de programación se enmarcan en uno o más paradigmas, es
decir, que la pertenencia de un lenguaje a un paradigma no es necesariamente excluyente.
Por ejemplo:
 Smalltalk y Eiffel son lenguajes basados en el paradigma orientado a objetos puro.
 Miranda, Haskell, ML, Scheme, soportan sólo programación funcional.
 Python, F# y Ruby soportan múltiples paradigmas.

Paradigmas de programación y su proximidad con la máquina de


Von Neumann
El nivel de abstracción juega un papel preponderante en la evolución de los paradigmas
de programación y en consecuencia de los lenguajes de programación asociados. Como ya
vimos, cada lenguaje de programación tiene su propio nivel de abstracción. Dicho nivel se
corresponde en cierta medida, con el Esquema de máquina multinivel como el Nivel de lenguaje
orientado al problema.

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 35
Inicialmente los lenguajes comenzaron indicando prácticamente cada acción que debía
realizar la máquina para solucionar un problema dado. Esto tiene su máxima expresión en el
lenguaje de máquina, donde toda la información se codifica en binario, seguidos por los
lenguajes de ensambladores, que representan acciones más abstractos y más legibles,
abstracciones del código binario, mientras que muchos de los lenguajes posteriores son
abstracciones del ensamblador, que en algunos casos se pueden identificar nuevos niveles de
abstracción, como el lenguaje C y el C++ o el Pascal y el Delphi.
Cuando los lenguajes se clasifican en lenguajes de: bajo nivel y alto nivel, (algunos
autores agregan un nivel medio) esta clasificación refiere precisamente, al nivel de abstracción
que proveen.
Se podría pensar entonces que los lenguajes pertenecientes a un nivel en particular,
proveen todos las mismas capacidades de abstracción. Sin embargo, la realidad es un poco más
compleja, ya que el nivel de abstracción de un lenguaje depende de varios factores como son:
el paradigma de programación que soporta y su sintaxis, entre otros.
Por ejemplo, un lenguaje que responde al paradigma declarativo (funcional o lógico) suele
proveer un nivel de abstracción más alto que los lenguajes que siguen el paradigma imperativo,
a costa de una gran proximidad con la complejidad matemática (por lo que históricamente no
han tenido muchos adeptos).
Un lenguaje que sigue el paradigma imperativo es una abstracción del modelo de
máquina de Von Newmann.
UCP
UC
Dispositivo Dispositivo
UAL
de entrada de salida

Memoria

Máquina de Von Neumann


La cercanía de los lenguajes imperativos con el modelo de máquina subyacente, permite
por un lado obtener programas de muy alto rendimiento y, por otro lado, los elementos del
lenguaje proveen un nivel de abstracción menor, y en consecuencia el código fuente resultante
es más largo. Los lenguajes imperativos suelen ser más fáciles de aprender, pero la resolución
de problemas es más trabajosa.

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 36
Clasificación por paradigmas de programación
Paradigma Imperativo: describe la programación como una secuencia instrucciones o
comandos que cambian el estado de un programa. El código máquina en general está basado en
el paradigma imperativo. Su contrario es el paradigma declarativo. En este paradigma se incluye
al paradigma procedural (o procedimental) entre otros.
Paradigma Orientado a Objetos: está basado en la idea de encapsular estado y operaciones
en objetos. En general, la programación se resuelve comunicando dichos objetos a través de
mensajes (programación orientada a mensajes). Se puede incluir -aunque no formalmente-
dentro de este paradigma, el paradigma basado en objetos, que además posee herencia y
subtipos entre objetos. Ej.: Simula, Smalltalk, C++, Java, Visual Basic .NET, etc.
Su principal ventaja es la reutilización de códigos y su facilidad para pensar soluciones a
determinados problemas.
Paradigma Declarativo (o descriptivo): Se basa en describir (declarar) cómo es algo y no
cómo se hace algo (o cómo se logra paso a paso), tal como pasaba en el imperativo. En otras
palabras, se enfoca en describir las propiedades de la solución buscada, no especificando el
algoritmo (conjunto de sentencias) usado para encontrar esa solución. Es más complicado de
implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero ventajas en
la solución de determinados problemas. Este paradigma se contrapone al imperativo. Dentro de
este se encuentran incluidos los paradigmas funcional y lógico.
Paradigma Funcional: Este paradigma concibe a la computación como la evaluación de
funciones matemáticas y evita declarar y cambiar datos. En otras palabras, hace hincapié en
la aplicación de las funciones y composición entre ellas, más que en los cambios de estados y
la ejecución secuencial de comandos (como lo hace el paradigma procedimental). Permite
resolver ciertos problemas de forma elegante, evitando algunos los efectos secundarios
comunes en otras formas de programar.
Paradigma lógico: Se basa en la definición de reglas lógicas para luego, a través de un motor
de inferencias lógicas, responder o preguntas, incógnitas o hipótesis planteadas al sistema y así
resolver los problemas. No solamente es capaz de responder si una hipótesis es verdadera o
falsa. También es capaz de determinar que valores hacen cierta la hipótesis.
Otros paradigmas son:
- guiado por eventos
- basada en prototipos
- arquitectura dirigida por modelos (MDA), etc.
PL 4 04 60Mat+30

Paradigmas y Lenguajes / Paradigmas de Programación


Pag. 37

También podría gustarte