Conoce diversas clasificaciones de lenguajes de programación. Entiende especialmente los dos tipos de lenguajes más importantes; los lenguajes de bajo nivel y los de alto nivel. Veremos también algo sobre la evolución de los lenguajes.
Después de conocer algunos de los conceptos básicos de programación, en este artículo vamos a seguir aportando algo más de conocimiento teórico para iniciarse en la programación, haciendo un análisis de los tipos de lenguajes de programación que nos podemos encontrar en la industria.
Distintas clasificaciones de lenguajes de programación
Podemos encontrar diversas clasificaciones de lenguajes de programación, tantas como nos podamos imaginar, atendiendo a diversas de las características que pueden tener. Por ejemplo, podemos clasificar lenguajes atendiendo a:
- Si son de alto o bajo nivel
- El paradigma o estilo de programación que tienen
- El objetivo o ámbito de los programas que vamos a desarrollar
- Si son open source o si son privativos
Por supuesto, si estamos iniciándonos a la programación no nos interesa detenernos a explicarlas todas, porque seguro que estamos deseando comenzar a ver código, pero sí hay que aclarar al menos una de ellas, como son los lenguajes de alto y bajo nivel.
Código binario
El ordenador, en el fondo, sólo entiende un lenguaje conocido como código binario o código máquina, consistente en ceros y unos. Es decir, sólo utiliza 0 y 1 para codificar cualquier acción.
Esto es algo totalmente sorprendente si lo piensas!! Cualquier programa de nuestro día a día, desde uno tan simple que solo calcule la suma de dos números, a uno tan complejo como el navegador que estás usando para acceder a este contenido, funcionan en el ordenador haciendo uso tan solo de ceros y unos.
Por supuesto, ningún programador usa código binario para expresar un programa. En realidad hay toda una cantidad de capas de software y hardware para conseguir que, cuando nosotros tenemos que expresar programas, no tengamos que pensar en la complejidad de codificar de una manera tan compleja.
Lenguajes de bajo y alto nivel
Por supuesto, los programadores apreciamos escribir código que podamos entender fácilmente. Si no fuera así, a poco que una aplicación comenzase a complicarse, sería imposible de desarrollar. Los lenguajes de programación modernos han llegado a un nivel en el que se pueden estructurar los programas en muchas piezas pequeñas y de fácil comprensión, para que consigamos hacer nuestras aplicaciones de una manera fácil y, sobre todo, con alta capacidad para su mantenimiento.
Entonces, aquí encontramos la clasificación de lenguajes que creemos más importante de entender cuando estamos comenzando, el bajo y alto nivel: Los lenguajes más próximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran más cercanos a los programadores y usuarios se denominan lenguajes de alto nivel.
Lenguajes de bajo nivel
Los lenguajes de bajo nivel son totalmente dependientes de la máquina, es decir, dependen directamente del hardware donde van a ejecutarse. Por ello, los programas que se realizan con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas, con otros tipos de procesadores.
Al estar prácticamente diseñados a medida del hardware, aprovechan al máximo las características del mismo. Son extremadamente rápidos, aunque las operaciones que les podemos pedir también son extremadamente simples.
Dentro de este grupo se encuentran:
- El lenguaje máquina: este lenguaje ordena a la máquina las operaciones fundamentales para su funcionamiento. Consiste en la combinación de 0's y 1's, para formar las ordenes entendibles por el hardware de la máquina. Este lenguaje es mucho más rápido que los lenguajes de alto nivel. La desventaja es que son tremendamente difíciles de manejar y usar, además de tener códigos fuente enormes, donde encontrar un fallo es meramente imposible.
- El lenguaje ensamblador: es un derivado del lenguaje máquina y está formado por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición de este tipo de lenguajes se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuente eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje máquina, puesto que siguen siendo bastante difíciles de manejar y permiten expresar solamente operaciones muy básicas, como acceder a una posición de memoria, cambiar un bit, ponerlo todo a ceros, etc.. Nadie actualmente programa con lenguaje ensamblador puesto que existe una gran dificultad para aprender ese lenguaje y los programas no pueden crecer mucho porque son difíciles de probar y mantener.
Lenguajes de alto nivel
Son aquellos que se encuentran más cercanos al lenguaje natural de las personas, que al lenguaje máquina. Están dirigidos a solucionar problemas mediante el uso de EDD's.
EDD's son las abreviaturas de Estructuras Dinamicas de Datos, algo muy utilizado en todos los lenguajes de programación. Son estructuras que pueden cambiar de tamaño durante la ejecución del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa.
Se tratan de lenguajes independientes de la arquitectura del ordenador y de su hardware. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una máquina a otra sin ningún tipo de problema. Depende del lenguaje pueden existir unas u otras limitaciones, pero siempre que exista un intérprete o compilador para ese lenguaje en el lugar donde lo quieras ejecutar, funcionará.
Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que están diseñando el programa. Tan solo necesitan un traductor que consiga transformar el código fuente del lenguaje de alto nivel a un código cercano a las características de la maquina. A ese traductor es el que llamamos habitualmente Compilador.
Los lenguajes de alto nivel suelen usar tipos de datos para la programación que son conjuntos de valores admisibles para su almacenamiento en posiciones de memoria. Hablaremos más adelante de estos tipos de datos.
Por supuesto, los lenguajes de alto nivel son los que se usan hoy en día y hay una gran variedad de ellos. De hecho decenas o cientos de lenguajes, sindo que aparecen nuevos todos los años. Ellos también tienen sus propias clasificaciones, por ejemplo hay lenguajes de propósito general (mediante los cuales podemos desarrollar cualquier tipo de aplicación) y de propósito especifico (que nos sirven principalmente para un cometido determinado, como FORTRAN para trabajos científicos).
Lenguajes de Medio nivel
Lo cierto es que no todo el mundo considera "medio nivel" como un término aceptado. Debe quedar clara que la clasificación es alto y bajo nivel, pero posiblemente habrás oído hablar de ellos o lo oirás.
Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro de estos lenguajes podría situarse C ya que puede acceder directamente a los registros de la memoria y de otros dispositivos de hardware del sistema: manipular direcciones de memoria, acceder a los puertos de una impresora, etc. El acceso directo a esas posiciones de memoria es una de las características de los lenguajes de bajo nivel, pero los lenguajes de medio nivel, a la vez, permiten expresar las instrucciones de una manera entendible para los humanos, algo que tiene que ver con los lenguajes de alto nivel.
Nosotros, sinceramente, preferimos decir que todo lenguaje de medio nivel es en realidad un lenguaje de alto nivel. Los de bajo nivel resultan mucho más complejos. Es verdad que la mayoría de los lenguajes de alto nivel actuales no permiten acceder directamente al hardware, manipulando por ejemplo posiciones de memoria, algo que resulta muy peligroso en la práctica, pero, desde el momento en el que se pueden hacer construcciones con código entendible por humanos, ya estamos hablando de lenguajes de alto nivel.
Los lenguajes de programación de medio nivel, como C, son los que se usan por ejemplo para construir los drivers de los dispositivos, como los drivers de las impresoras, tarjetas gráficas, etc.
Generaciones de lenguajes de programación
En la evolución de los lenguajes de programación hemos visto cómo han ido apareciendo diversos lenguajes que tenían unas características más depuradas y sofisticadas. Estas generaciones también se podrían usar para clasificar los lenguajes de programación. Encontramos actualmente 5 etapas o generaciones.
- Primera generación: lenguaje maquina.
- Segunda generación: se crearon los primeros lenguajes ensambladores.
- Tercera generación: se crean los primeros lenguajes de alto nivel. Ej. C, Pascal, Cobol
- Cuarta generación. Son los lenguajes capaces de generar código por si solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser un experto en el lenguaje. Aquí también se encuentran los lenguajes orientados a objetos, haciendo posible la reutilización d partes del código para otros programas. Ej. Visual, Natural Adabes
- Quinta generación: aquí se encuentran los lenguajes orientados a la inteligencia artificial. Estos lenguajes todavía están poco desarrollados. Ej. LISP
Conclusión
Ahora ya tienes un poco más de conocimiento sobre los lenguajes de programación y cómo han ido evolucionando a lo largo de la corta pero intensa historia de la informática.
No te tienes que preocupar mucho por tener que usar lenguajes compliados y cercanos a la máquina, porque prácticamente nadie usa lenguajes como el ensamblador. Simplemente se explican prácticamente a nivel de curiosidad en la universidad, en las asignaturas que explican el funcionamiento de los procesadores (CPU). Por supuesto, nosotros vamos a aprender a programar usando lenguajes de alto nivel, fáciles de entender y usar.
En el próximo artículo vamos a seguir analizando los tipos de lenguajes de programación, pero centrándonos en los paradigmas que ellos aplican. Esto también nos permitirá de alguna manera clasificar los lenguajes, pero además nos ofrecerá una visión general de los distintos estilos de programación que nos podemos encontrar en la industria.
Para los impacientes en ver alguna aplicación más práctica queremos anunciaros que dentro de poco también encontrarás en este manual una presentación de las posibilidades de Javascript, uno de los lenguajes más recomendados para aprender a programar. Esto nos va a permitir comenzar a ver algo de código sencillo, y luego en siguientes artículos volveremos a la teoría para estudiar el proceso de traducción o compilación de los lenguajes.