No es fácil elegir un lenguaje de programación para cada proyecto. Dependiendo de las características del proyecto, entorno, etc.. deberemos de elegir bien. Será más complejo aún, si además convivirán varios sistemas informáticos interconectados, comunicándose entre sí.
De la misma forma, será más complejo si en el proyecto tenemos elementos programados a bajo y alto nivel. También se añade complejidad si los entornos de ejecución son varios: escritorio, web, móvil.. o varios sistemas operativos.
Es importante tener claras las características, y conocer, por lo menos en líneas generales, la mayor cantidad de lenguajes. Así elegiremos bien, y luego profundizaremos más y más a lo largo del proyecto, o subproyecto.
Las características
Estas características se conocen, o se establecen como prioridades a la hora de diseñar un lenguaje, de construir el compilador que traduce o interpreta el código fuente. No son características sólo desde el punto de vista del día a día del que pica el código, o del que paga el proyecto.
Regularidad
La regularidad de un lenguaje se estudia viendo cómo se comportan las características de un lenguaje, si están bien integradas. Se subdivide en generalidad, ortogonalidad y uniformidad. Si alguna no se cumple se marcará como lenguaje irregular.
Generalidad: un lenguaje tiene generalidad eliminando casos especiales de los constructores. Por ejemplo, deben tener variables de procedimientos, anidación de funciones, arreglos de longitud variable, creación de nuevos operadores.
Ortogonalidad: los constructores se deben comportar de igual forma en todos los contextos, además, se deben de poder combinar de cualquier forma significativa y que no incurra en comportamientos inesperados.
Esto desemboca en facilidad de programación, pero dificultad al hacer el traductor, y quizá puede desembocar en ejecuciones ineficientes ya que provee de mucha flexibilidad al programador.
Uniformidad: se refiere a que lo parecido se ve parecido y lo distinto distinto. Por ejemplo, si toda sentencia debe acabar con un punto, entonces absolutamente todas las sentencias deben acabar con un punto para ser uniforme.
Simplicidad
Se refiere a la cantidad de estructuras o conceptos que están disponibles en un lenguaje para construir los programas. Si hay pocos constructores es simple. Por ejemplo, BASIC es un lenguaje simple porque tiene pocos constructores, pero esto dificulta la construcción de aplicaciones complejas y grandes.
Es decir, un lenguaje es simple si tiene la menor cantidad de constructores. Hay que tratar la simplicidad de un lenguaje desde el punto de vista semántico (cantidad de conceptos) y sintáctico (código fácil de leer por lo simple de su sintaxis).
Expresividad
Es la cualidad de un lenguaje de programación que permite representar procesos y estructuras complejas. Es esta característica encontramos por ejemplo la recursividad, lenguajes orientados a objetos, datos de tamaño variable.
Este concepto puede entrar en conflicto con la simplicidad sintáctica, teniendo código menos legible.
Extensibilidad
Es la capacidad de poder añadir nuevas características al lenguaje, como librerías, sobrecarga de operadores, nuevos operadores o modularidad. Esta modularidad desemboca en la escalabilidad de los proyectos, con los que la ampliación y/o reutilización de códigos fuentes se facilite.
Deja una respuesta