Criterio de _____disey=o_e_implementacion_de_los_lenguajes
1.
2. También es importante determinar cuando
un lenguaje es eficiente, para esto existen
determinados criterios o características que
nos ayudan
No existen lenguajes buenos o malos sino
apropiados e inapropiados para una
determinada situación o problema.
Para esto cada autor refleja según su criterio
que características importantes debe cubrir
un lenguaje para un buen desempeño del
mismo
3. Definiciones bien definidas. Los programadores de Fortran o
Pl/1 trabajan a menudo como un grupo. Si uno no sabía o había
olvidado como escribir el código para efectuar una tarea
particular, la cosa más fácil por hacer era preguntarle a un
amigo. Los manuales eran volúmenes inmensos pobremente
organizados que enseñaban mediante ejemplos con más
frecuencia que por cualquier otro medio
Sintaxis BNF y EBNF: La sintaxis del lenguaje está descrita en los forma
Backus Naur (BNF),
Semántica. Un lenguaje también debe de estar definido
semánticamente al describir la manera precisa lo que significa una
construcción particular
4. Comprobabilidad. Probar con certeza matemática que un
programa es correcto es un proceso lento. C.A.R. Hoare
cree que “las ventajas prácticas de la comprobación de
programas se sobrepondrán a las dificultades, en vista de
los costos creciente de los errores de programación”.
La prueba de que un programa es correcto involucra tres
pasos:
1. la comprobación de que el programa cumple con la intención del
programador;
2. la prueba de que el compilador traduce de manera correcta a
código máquina la sintaxis y la semántica del lenguaje empleado;
y
3. que se compruebe que la máquina misma funciona
correctamente
5. Confiabilidad. El software se considera confiable si se
comporta como es anunciado y produce los resultados que
el usuario espera. Cuando se presenta un error, debería
ser fácilmente detectado y corregido
Traducción rápida. Los lenguajes de programación que se
consideran en esta materia, generalmente son
independientes de la máquina. Es decir, un programa
escrito en el lenguaje puede ser traducido y ejecutado en
una variedad de máquinas diferentes
Código objeto eficiente. Después de que el código fuente se
compila en código objeto, no se hace referencia adicional al
lenguaje fuente. Así es en tiempo de compilación que los asuntos
de la eficiencia en el uso de memoria y tiempo de ejecución
deben ser considerados. Existe generalmente un balance
comparativo entre el trabajo que el programador debe hacer y el
trabajo que el compilador puede hacer
6. Ortogonalidad. La palabra ortogonal viene del griego y se
refiere a líneas rectas cruzándose en ángulos rectos. Las
variables aleatorias se consideran ortogonales. Con esto
queremos decir que los componentes son independientes
entre sí y que se comportan en la misma manera en
cualquier circunstancia
Generalidad. La generalidad está relacionada con la
ortogonalidad. Se refiere a la existencia de sólo
características necesarias del lenguaje, con las otras
compuestas en una manera libre y uniforme sin limitación
y con efectos previsibles. Como ejemplo de una carencia
de generalidad, considere la del tipo de unión libre en
Pascal
Consistencia en notaciones comunes. la notación de los
lenguajes de programación debería ser consistente con las
notaciones comúnmente usadas en matematica
7. Uniformidad. Una cuestión de uniformidad tiene que ver
con la necesidad de tener inicios y finales.
Subconjuntos. Un subconjunto de un lenguaje es una
implementación de sólo una parte del mismo, sin
características especiales
Extensibilidad. El inverso de los subconjuntos es la
extensibilidad. Un lenguaje puede tener un núcleo
estándar, el cual es invariable en cada implementación,
pero con varias extensiones. Las ventajas de los
subconjuntos son mejoradas cuando un lenguaje puede
ser extendido en formas útiles.
Transportabilidad. Un lenguaje es transportable si sus
programas pueden compilarse y ejecutarse en diferentes
máquinas sin tener que reescribir el código fuente
8. Aspectos de diseño
Claridad, simplicidad y unidad de conceptos
Sintaxis y semántica bien definidas.
Consistencia con las notaciones usuales
Soporte para la abstracción
Independencia de la máquina
Verificabilidad.
Redundancia.
Ortogonalidad.
9. Aspectos de Implementación
Portabilidad
Soporte Externo
Calidad del compilador o intérprete
Bajo costo de mantenimiento
Documentación
10. Aspectos de Implementación
Portabilidad
Soporte Externo
Calidad del compilador o intérprete
Bajo costo de mantenimiento
Documentación