1.3    ¿Qué caracteriza a un buen lenguaje?

Las razones para el éxito o fracaso de un LP pueden ser externas al lenguaje mismo; como por ejemplo en los casos de COBOL y Ada, realizados por presiones gubernamentales, FORTRAN debido al gran soporte de los computadores construidos, SNOBOL por el excelente texto que describe al lenguaje, Pascal y LISP por su uso como objeto de estudio.

No obstante lo anterior, es el programador quien en último término, aunque a veces de forma indirecta, determina que lenguaje "sobrevive" y cual "muere".

Hay muchas razones por las que un programador prefiere un lenguaje  por sobre otro.

  1. Claridad, simplicidad y unidad.

Al final lo que se quiere es tener un número reducido de conceptos diferentes, y con reglas para su combinación, tan simples y regulares como sea posible. A este atributo se le llama integridad conceptual.

  1. Ortogonalidad.

Este término se refiere al atributo de ser capaz de combinar varias características de un lenguaje en todas las combinaciones posibles, con cada combinación teniendo la propiedad de ser significativa.

El aspecto negativo es que un programa podrá ser compilado sin errores, aunque contenga una combinación de características ligeramente incoherentes, o muy ineficientes en ejecución.

Esto hace que este sea un atributo controvertido.

  1. Naturalidad de la aplicación.

Un lenguaje requiere una sintaxis que usada apropiadamente, permite que la estructura del programa refleje la estructura lógica del algoritmo. Algoritmos secuenciales, concurrentes y lógicos tienen diferentes estructuras.

  1. Soporte a la abstracción.

Siempre hay un gap entre la aritmética abstracta de datos y las operaciones que caracterizan la solución a un problema y las estructuras de datos y operaciones primitivos de un lenguaje particular. Por ejemplo, C puede ser un lenguaje apropiado para generar una programación horaria en la Facultad de Ingeniería, pero las estructuras abstractas "estudiante", "asignatura-sección", "sala", etc., naturales en la aplicación, no son directamente implementables en C.

  1. Facilidad de verificación del programa.

Un programa (lenguaje) en que la verificación no es fácil, puede ser algo muy complicado. La simplicidad de la sintaxis y la semántica es un aspecto central que tiende a facilitar la verificación.

  1. Ambiente del programa.

La presencia de un ambiente de programación apropiado puede hacer que un lenguaje técnicamente débil, sea más fácil de usar que un lenguaje poderoso con poco apoyo externo. Sólo Smalltalk ha sido diseñado pensando en esta característica (tods, windows, menús).

  1. Portabilidad de programas.

Ada, FORTRAN, C, Pascal,... tiene definiciones estandarizadas, lo que permite la implementación de aplicaciones portables.

  1. Costos de uso.

El costo es por cierto, un elemento importante en la evaluación de cualquier LP, aunque es posible medir el costo en base a diferentes factores:

  1. Costo de ejecución de un programa.
  2. Costo en la traducción de un programa.
  3. Costo en la creación, testing y uso de un programa.
  4. Costo en la mantención de un programa.