Please enable JavaScript.
Coggle requires JavaScript to display documents.
CARACTERÍSTICAS DE LOS LENGUAJES DE PROGRAMACIÓN - Coggle Diagram
CARACTERÍSTICAS DE LOS LENGUAJES
DE PROGRAMACIÓN
Eficiencia
La eficiencia de un lenguaje le permite al programador realizar o cumplir adecuadamente sus funciones mediante códigos con el fin de controlar el comportamiento físico o lógico de una computadora. De aquí se derivan varias subcategorías tales como:
De la traducción
Hace más fácil construir un traductor eficaz y de poco tamaño. Influyen aspectos como la cantidad de pasadas que debe hacer el traductor al código de fuente. La flexibilidad del lenguaje le permite al programador hacer el código, el cual se hace más complejo en el desarrollo del traductor. Por otra parte, hay flexibilidades que provocan poca fiabilidad a la hora de ejecutar los programas, ya que presentan ciertos errores en algunas ejecuciones. Por ejemplo: permitir variables que cambien de tipo facilita al programador pero complica al traductor; mientras que definir todas las variables al principio de un bloque facilita al traductor pero complica al programador.
De la programación
Hace más fácil a los programadores construir programas. La sintaxis de un lenguaje de programación,también conocido como
azúcar sintáctico
hace el lenguaje "más dulce" para el uso por programadores porque aunque no añade nada nuevo, facilita diferentes maneras de programar lo mismo; por ejemplo, las diferentes formas de bucles.
De la implementación
Hace más fácil poner en funcionamiento el traductor. No la eficiencia con la que traduce, sino la eficiencia con la que lleva a cabo sus funciones de manera adecuada
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. 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). Por ejemplo,
BASIC
es un lenguaje simple porque tiene pocos constructores, pero esto dificulta la construcción de aplicaciones complejas y grandes.
Capacidad de restricción
Es una característica que tienen los lenguajes para que un programador no tenga que conocer muchos constructores para resolver el problema que está desarrollando. Es decir, un lenguaje tiene capacidad de restricción si un programador puede centrarse en un subconjunto mínimo de conceptos del lenguaje para ser posible que construya la solución que necesita. Esto facilita e incrementa el desarrollo de los lenguajes, así se van añadiendo nuevas funcionalidades sin que sea necesario utilizarlas. Con esto entra en juego la
eficiencia
del lenguaje, porque no usar ciertas funcionalidades, aunque estén disponibles, no debe resultar el programas que se ejecuten más lentamente.
Regularidad
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.
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 el 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. Por ejemplo, si toda sentencia debe acabar con un punto, entonces absolutamente todas las sentencias deben acabar con un punto para ser uniforme.
Generalidad
Un lenguaje tiene generalidad eliminando casos especiales de los constructores. Por ejemplo, deben tener variables de procedimientos, validación de funciones, arreglos de longitud variable, creación de nuevos operadores.
Extensibilidad
Permite añadir nuevas características al lenguaje, como librerías, sobrecarga de operadores, nuevos operadores o modularidad. Este modularidad desemboca en la escalabilidad de los proyectos, con los que la ampliación y/o reutilización de códigos fuentes se facilite
Expresividad
Permite representar procesos y estructuras complejos. En 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.
Uso de las convenciones y notaciones estandarizadas
Los lenguajes deben utilizar las notaciones y convenciones estandarizadas. Por ejemplo el uso de operadores aritméticos básicos, estructuras de control
if-else while for..
Este uso repercute directamente en hacer más fácil la migración desde otros lenguajes, ocurren menos errores, es más eficiente en la programación.
Portabilidad
Es la posibilidad de construir programas independientes de la máquina donde se ejecuten. Los lenguajes que se ejecutan sobre máquinas virtuales son totalmente portables:
Java, Scala, PHP..
Seguridad
Se refiere a la predicción de errores en el código fuente, evitándolos. Para hacer más seguros los lenguajes de programación se compromete en cierta medida la expresividad de estos. El tipado de variables debe ser estricto, y su verificación.
Precisión
Los lenguajes deben ser precisos en su interpretación, es decir, se deben comportar siempre tal y como se espera que se comporten. Esta precisión repercute en que sean predecibles, y a su vez, influye en la portabilidad, ya que facilita la creación de traductores.
Interoperabilidad
Referido a la propiedad que tienen los programas de interactuar entre sí. Deben proveer de mecanismos de intercomunicación entre sí, de forma que no haga falta una comunicación previa para intercambiar información.
De esto se derivan estándares del
W3C
, lenguajes de marcado como el
XML
, la estandarización de las
API Rest
.
También se puede dar interoperabilidad a nivel de lenguaje dentro de un programa. En este caso podemos encontrar cómo usamos
SQL
dentro de otros programas. También encontramos cómo
Scala
se compila a
bitecode
compatible con la Máquina Virtual de
Java
, pudiendo usar cualquier librería programada en
Java
. A menudo hay soluciones en las que se combinan varios lenguajes de programación en un mismo programa.