Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Principios de Diseño de Los Lenguajes PDF
Principios de Diseño de Los Lenguajes PDF
2.3. Regularidad
Es una cualidad algo mal definida de un lenguaje que expresa lo bien que están integradas las características del mismo.
Una mayor regularidad implica:
o Pocas restricciones en el uso de constructores.
o Menos interacciones raras entre dichos constructores.
o En general, menos sorpresas en la forma en que se comportan las características del lenguaje.
o Uniformidad:
Las cosas similares deben verse de forma similar y tener significados similares, y a la inversa, las
cosas diferentes se tienen que ver de forma diferente.
Las no uniformidades son de dos tipos:
Cosas similares no parecen ser o se no comportan de manera similar.
Cosas no similares, parecen ser o se comportan de manera similar.
Ejemplo de violación de este concepto puede ser:
En C++ es necesario un punto y coma después de la definición de clase, pero está prohibido
después de la definición de una función.
class A { ... };
int f() { ... }
El afán por hacer imponer una meta, como puedan ser la generalidad o la ortogonalidad en el diseño de un lenguaje,
puede resultar peligroso.
Si una no regularidad no puede justificarse de forma razonable entonces se puede decir que es un error de diseño.
while(*s++ == *t++);
Extensibilidad:
o Principio que indica que debería de haber algún mecanismo general que permita al usuario añadir nuevas
características al lenguaje.
o Podría significar simplemente el añadir:
Nuevos tipos al lenguaje.
Nuevas funciones a una biblioteca.
Nuevas palabras claves.
o A lo largo de los últimos 10 años la extensibilidad ha pasado a ser de importancia primordial como una
propiedad de los lenguajes. En concreto la simplicidad sin extensibilidad, prácticamente tiene garantizado el
fracaso del lenguaje.
Capacidad de restricción:
o Un diseño de lenguaje debería dar la posibilidad de que un programador pudiera programar de una forma útil
empleando un conocimiento mínimo del lenguaje, por lo que el diseño de un lenguaje debería promover la
capacidad de definir subconjuntos del lenguaje.
o Esto resulta útil de dos maneras:
No es necesario que el programador aprenda todo el lenguaje para utilizarlo con efectividad.
Un escritor de compilador podría elegir implementar únicamente un subconjunto en el caso de que la
implementación de todo lenguaje resultara demasiado costosa e innecesaria.
DO 99 I = 1.10
Pudiera parecer que se quiere ejecutar 99 veces la asignación del valor 1.10 a la variable I, cuando
en realidad lo que se hace es asignar el valor 1.10 a la variable DO99I.
Precisión:
o A veces conocida como claridad.
o Es la existencia de una definición precisa para un lenguaje, de tal manera que el comportamiento de los
programas pueda ser predecible.
o Pasos para lograrlo:
Publicación de un manual o informe del lenguaje por parte del diseñador.
Adopción de un estándar emitido por una organización nacional o internacional de estándares:
ANSI.
ISO.
…
Seguridad:
o Este principio se basa en minimizar los errores de programación y permitir que dichos errores sean detectados e
informados.
o La seguridad está íntimamente relacionada con la confiabilidad y con la precisión.
o Este es el principio que condujo a los diseñadores del lenguaje a introducir los tipos, la verificación de tipos y las
declaraciones de variables en los lenguajes de programación.
o Con esto se puede comprometer tanto la expresividad como lo conciso del lenguaje.