|
Mapa conceptual sobre Introducción al diseño de los Lenguajes de ProgramacionBueno este es el mapa correspondiente a la unidad 2 (Introducción al diseño de los Lenguajes de programación), antes expuesto en clase, debido a las grandes ramificaciones se pudo abarcar el tema por completo, es fácil de entender también. |
Introducción al Diseño de Lenguajes de Programación
El lenguaje natural es el principal instrumento de comunicación utilizado por los seres humanos. Para que exista comunicación, debe existir una comprensión mutua de cierto conjunto de símbolos y reglas del lenguaje. Los lenguajes de programación tienen como objetivo la construcción de programas, normalmente escritos por personas humanas. Estos programas se ejecutarán por un computador que realizará las tareas descritas. El programa debe ser comprendido tanto por personas como por computadores. La utilización de un lenguaje de programación requiere, por tanto, una comprensión mutua por parte de personas y máquinas. Este objetivo es difícil de alcanzar debido a la naturaleza diferente de ambos. En un lenguaje natural, el significado de los símbolos se establece por la costumbre y se aprende mediante la experiencia. Sin embargo, los lenguajes de programación se definen habitualmente por una autoridad, que puede ser el diseñador individual del lenguaje o un determinado comité. Para que el computador pueda comprender un lenguaje humano, es necesario diseñar métodos que traduzcan tanto la estructura de las frases como su significado a código máquina. Los diseñadores de lenguajes de programación construyen lenguajes que saben cómo traducir o que creen que serán capaces de traducir. Si los computadores fuesen la única audiencia de los programas, éstos se escribirían directamente en código máquina o en lenguajes mucho más mecánicos. Una pregunta natural al estudiar los lenguajes de programación es si ya existe un lenguaje perfecto para nuestros requerimientos. Si existiese tal lenguaje, entonces sería importante identificar sus características y no perder el tiempo utilizando lenguajes imperfectos, o tratando de diseñar alguno nuevo. De no ser el caso, se procederá a desarrollar un nuevo lenguaje de programación que se adapte a las necesidades del usuario. Al diseñar lenguajes de programación a menudo es necesario tomar decisiones sobre las características que se incluyen de forma permanente, las características que no se incluyen pero que existen mecanismos que facilitan su inclusión y las que no se permiten. Estas decisiones pueden afectar al diseño final del lenguaje y a menudo entrar en conflicto con otros aspectos del lenguaje. A continuación se resumen algunos principios de diseño de lenguajes de programación: Concisión rotacional. El lenguaje proporciona un marco conceptual para pensar algoritmos y expresar dichos algoritmos con el nivel de detalle adecuado. El lenguaje debe proporcionar un conjunto de conceptos claro, simple y unificado. La sintaxis debe ser legible por el programador (o por otras personas que vayan a utilizar esos programas). Ortogonalidad. Dos características de un lenguaje son ortogonales si pueden ser comprendidas y combinadas de forma independiente. Cuando las características del 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. 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. 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. 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 los programas. Extensiblidad. El lenguaje debe facilitar mecanismos para que el programador pueda aumentar la capacidad expresiva del lenguaje añadiendo nuevas construcciones. Portabilidad. El lenguaje debe facilitar la creación de 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 suficientemente eficientes 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 dispone de tales librerías, es necesario contemplar mecanismos de enlace con otros lenguajes que facilitan la incorporación de librerías externas. Entorno. Aunque el entorno no forma parte del lenguaje, muchos lenguajes débiles técnicamente son ampliamente utilizados debido a que disponen de un entorno de desarrollo potente o agradable. De la misma forma, la disposición de documentación, ejemplos de programas e incluso programadores pueden ser factores clave de la popularidad de un lenguaje de programación. |