Aspectos a considerar en el diseño de lenguajes de programacion
Estas decisiones pueden afectar al diseño final del lenguaje y a menudo entrar en conflicto con otros aspectos del lenguaje.
Acontinuación se resumen algunos principios de diseño de lenguajes de programación:
• Concisión notacional. El lenguaje proporciona un marco conceptual para pensar algoritmos y expresar dichos algoritmos con el nivel de detalle adecuado. El lenguaje debe ser una ayuda al programador (incluso antes de comenzar a codificar) proporcionando un conjunto de conceptos claro, simple y unificado. La sintaxisdebe ser legible por el programador (o por otras personas que vayan a utilizar esos programas). Deben buscarse soluciones de compromiso entre lenguajes demasiado crípticos (por ejemplo, C) y lenguajes demasiado prolijos (Cobol, XSLT).
• Ortogonalidad. Dos características de un lenguaje son ortogonales si pueden ser comprendidas y combinadas de forma independiente. Cuando las característicasdel lenguaje son ortogonales, el lenguaje es más sencillo de comprender, porque hay menos situaciones excepcionales a memorizar. La ortogonalidad ofrece la posibilidad de combinar características de todas las formas posibles (sin excepciones). La falta ortogonalidad puede suponer la enumeración de situaciones excepcionales o la aparición de incoherencias. Un ejemplo de falta de ortogonalidad esla limitación que impone Pascal para que una función devuelva determinados tipos de valores.
• Abstracción. El lenguaje debe evitar forzar a los programadores a tener que enunciar algo más de una vez. El lenguaje debe permitir al programador la identificación de patrones repetitivos y automatizar tareas mecánicas, tediosas o susceptibles de cometer errores. Ejemplos de técnicas de abstracciónson los procedimientos y funciones, la generalidad, los lenguajes de patrones de diseño, etc.
• Seguridad. La fiabilidad de los productos software es cada vez más importante. Lo ideal es que los programas incorrectos no pertenezcan al lenguaje y sean rechazados por el compilador. Por ejemplo, los sistemas con chequeo de tipos establecen restricciones a los posibles programas que puedenescribirse en un lenguaje para evitar que en tiempo de ejecución se produzcan errores. Existen lenguajes como Charity que garantizan la terminación de sus programas [Charity].
• Expresividad. El programador debe poder expresar sus intenciones. En ocasiones, demasiada expresividad puede implicar falta de seguridad. De hecho, algunos sistemas limitan la expresividad para mejorar la fiabilidad de losprogramas (por ejemplo, laaritmética de punteros no es permitida en algunos lenguajes).
• Extensiblidad. El lenguaje debe facilitar mecanismos para que el programador pueda aumentar la capacidad expresiva del lenguaje añadiendo nuevas construcciones. En Haskell, por ejemplo, el programador puede definir sus propias estructuras de control.
• Portabilidad. El lenguaje debe facilitar la creaciónde programas que funcionen en el
mayor número de entornos computacionales. Este requisito es una garantía de supervivencia de los programas escritos en el lenguaje y, por tanto, del propio lenguaje. Para conseguir la portabilidad, es necesario limitar las características dependientes de una arquitectura concreta.
• Eficiencia. El programador debe poder expresar algoritmos suficientementeeficientes o el lenguaje debe incorporar técnicas de optimización de los programas escritos en él.
• Librerías e interacción con el exterior. La inclusión de un conjunto de librerías que facilita el rápido desarrollo de aplicaciones es una componente esencial de la popularidad de los lenguajes. Si no se dispne de tales librerías, es necesario contemplar mecanismos de enlace con otros lenguajes...
Regístrate para leer el documento completo.