Cualidades de un lenguaje de programación
Es difícil decir cuáles son las cualidades que debe tener el lenguaje ideal debido a la extensa gama de áreas de aplicación. Es decir, no podemos tener un lenguaje que sea óptimo para todas las áreas.
Es análogo a pensar que existe un carro perfecto, bueno, lujoso, barato, espacioso, compacto, ahorrador, etc. Por eso nos limitaremos a mencionar las características deseables en un lenguaje de programación.
Simplicidad: Se refiere al grado de dificultad para el programador para escribir programas y leer programas de otros, aprender y enseñar el lenguaje. Hay lenguajes como C que sacrifican la simplicidad y claridad a cambio de la velocidad y eficiencia. Por eso se dice que “C es un lenguaje para programadores expertos”. Así también encontramos a Pascal que es un lenguaje amigable para enseñar la programación estructurada.
Uniones: Se refiere al momento en que se define el tipo de dato de las variables. Es decir, en un lenguaje fuertemente tipificado la definición del tipo de una variable se puede hacer en tiempo de compilación.
Por el contrario en los débilmente tipificados se puede hacer en tiempo de ejecución. Esto puede ser bueno o malo ya que permitir que una variable cambie de tipo en tiempo de ejecución permite errores “lógicos”, por otra parte en algunos casos son buenos cuando se desconoce el tipo de objeto que regresará una función.
Ortogonalidad: Se refiere al significado de las palabras reservadas o símbolos. Si una palabra reservada siempre tiene el mismo significado independientemente del contexto en que se use el lenguaje tiene mayor ortogonalidad que en otro donde no sucede eso.
Un ejemplo es el significado de “+” si siempre representa la suma aritmética es ortogonal, por el contrario si representa a la suma para variables numéricas y concatenación para variables de tipo cadena entonces es menos ortogonal.
Fiabilidad de los programas: Se refiere al comportamiento del programa, al momento de cambiarlo de plataforma, de ejecutarlo más de una vez con el mismo conjunto de datos de entrada. Un lenguaje es más fiable si es fuertemente tipificado, restringe el uso de alias y las pérdidas de memoria y si tiene una sintaxis y semántica bien definida.
Abstracción: Se refiere al nivel de complejidad de las funciones o clases incorporadas que le ahorran al programador tiempo de desarrollo al proporcionarle algoritmos ya implementados. Por ejemplo: en Pascal se cuenta con el tipo de datos string que nos permite almacenar cadenas y algunas funciones sobre cadenas como: len(), upper(), etc.
Pero si queremos implementar alguna estructura abstracta como una pila, cola, etc. Debemos definir a la estructura y las funciones para manejarla. Hoy en día la mayor parte de los lenguajes ya cuenta con una clase Pila que tiene los métodos para manejarla. Así el programador únicamente debe indicar que utilizará un objeto de la clase Pila para contar con todos los algoritmos ya programados.
Implementación eficiente: Se refiere a la facilidad o dificultad que se tiene para implementar prácticamente un lenguaje de programación. Podemos tener un nuevo paradigma con un nuevo lenguaje, pero no se cuenta con los medios necesarios para implementarlo eficientemente.
Tal fue el caso de Smalltalk que fue el primer lenguaje orientado a objetos, pero debido al tipo de computadoras y sistemas operativos que existían en ese tiempo no era posible tener un compilador eficiente.
Fuente: Apuntes de Programación con lenguajes de cuarta generación de la FCA de la UNAM