Los lenguajes de programación:
De la misma forma que el término genérico "lenguaje" se refiere a cualquier sistema estructurado de comunicación (por ejemplo, gestos, sonidos, símbolos, ... y las reglas que rigen su uso), podemos definir lenguaje de programación como un conjunto de caracteres y reglas que permiten crear un programa , para introducir y tratar la información en un ordenador. Son lenguajes artificiales creados con el objetivo de conseguir la comunicación entre el humano y la máquina, o entre máquinas.
3.1 Clasificación de los lenguajes de programación Los lenguajes de programación se pueden clasificar atendiendo a diversos criterios.
De todos ellos, el criterio que ayuda a una mejor comprensión de lo que en realidad son los lenguajes de programación y para qué se utilizan, es el nivel de abstracción. Según dicho nivel de abstracción, los lenguajes de programación pueden ser:
Lenguaje máquina:
Es el lenguaje de programación que entiende directamente la computadora o máquina. Utiliza el sistema binario, es decir, únicamente utiliza dos dígitos, el 0 y el 1. Con estos dos únicos dígitos, conocidos como bits, forma las cadenas binarias (combinaciones de ceros y unos) con las que la CPU de una máquina procesa la información.
Cualquier cosa que queramos que realice el ordenador debe expresarse con este código de ceros y unos, que es el lenguaje que realmente entiende y utiliza el microprocesador de una ordenado o dispositivos. El lenguaje máquina fue el primer lenguaje de programación.
Los primeros programadores programaban en lenguaje máquina, con números binarios, pero la complejidad de las operaciones realizadas y la facilidad de cometer errores derivó en la necesidad de crear lenguajes de programación más parecidos al lenguaje humano, más sencillos y rápidos de manejar y de entender.
De esta forma, para escribir un programa de forma más sencilla y fácil de recordar, se utilizan los lenguajes de bajo y alto nivel. En ellos la sucesión de unos y ceros es sustituida por letras o palabras, mucho más fáciles de recordar y utilizar, por su mayor semejanza con el lenguaje humano, generalmente el inglés.
Lenguajes de Programación de Bajo Nivel (Lenguaje ensamblador):
A este grupo pertenecen los primeros lenguajes creados intentando sustituir el lenguaje máquina por uno más similar utilizado por el hombre. Se denominan frecuentemente lenguajes ensambladores.
Son mucho más fáciles de utilizar que el lenguaje máquina, pero son específicos de cada procesador, lo que obliga a reescribir los programas hechos con este tipo de lenguaje si nos llevamos el programa a otro computador (poca portabilidad), siendo éste su principal inconveniente.
Estos lenguajes están constituidos básicamente por las instrucciones del lenguaje máquina escritas en forma simbólica, mediante códigos nemotécnicos (los mnemónicos son grupos de 3-4 caracteres alfanuméricos que simbolizan las órdenes o tareas a realizar)., fáciles de leer y de recordar(ejemplo: ADD(sumar), MOV (mover), ...). Un programa escrito en este lenguaje no es directamente ejecutable en la máquina. De esta forma, debido a su simbolismo, debe de ser traducido a un programa equivalente, escrito en lenguaje de máquina, capaz de ser ejecutado. Esta traducción se realiza mediante programas denominados programas ensambladores.
En la actualidad se suele usar en ambientes reducidos, académicos y de investigación, cuando se va a manipular hardware y se pretende conseguir un uso de recursos muy controlado, o cuando se pretende conseguir unos altos rendimientos. En los ensambladores se necesitan muchas instrucciones para tareas simples y su utilización exige grandes conocimientos sobre el hardware de la máquina, por lo que programar en ensamblador es realmente complejo. Muchos dispositivos programables (como los microcontroladores) aún cuentan con el ensamblador como la única manera de ser manipulados.
Lenguajes de Programación de Alto Nivel:
Los lenguajes de alto nivel son más fáciles de aprender y utilizar porque son los que más se parecen al lenguaje natural, ya que se usan palabras o comandos del lenguaje humano (generalmente inglés). Por ello son los más utilizados por los programadores.
Además los lenguajes de alto nivel son independientes de la máquina, por lo que se pueden usar en cualquier computador con muy pocas modificaciones o sin ellas.
Sirven fundamentalmente para crear programas informáticos que solucionan diferentes problemas.
Existen muchos lenguajes de programación de alto nivel con sus diferentes versiones y lenguajes derivados. Entre ellos tenemos el HTML, , C, C++, SQL, JAVA, FORTRAN, Python, Pascal, LOGO, Processing, ...
El primer lenguaje de programación de alto nivel que fue creado es FORTRAN que significa Traductor de Formulas y proviene de las palabras en inglés FORmula TRANslating.
Fortran fue desarrollado por un equipo de investigadores de IBM en la década de 1950, que buscaban un lenguaje de programación que tuviera apariencia al lenguaje humano.
Fortran se sigue utilizando hoy en día para la programación de aplicaciones científicas y matemáticas
Los lenguajes de alto nivel necesitan un programa compilador o un programa intérprete que lo traduzca a lenguaje máquina para que la computadora pueda entenderlo. Estos programas de traducción pueden ser: Compiladores o Intérpretes.
Compiladores e intérpretes Tanto el compilador como el intérprete son programas cuya finalidad es "traducir" las instrucciones enviadas a una máquina en un lenguaje de alto nivel a un lenguaje que el equipo pueda entender.
– Compiladores. Son programas especiales que procesan las instrucciones escritas en un lenguaje de programación de alto nivel y las convierte a lenguaje de máquina. El compilador traduce el programa completo a código máquina antes de empezar a ejecutarlo, a lo que se llama código objeto, y si no hay errores, genera un archivo ejecutable. Gráficamente:
Los compiladores son programas muy grandes que permiten la comprobación de errores. En realidad algunos compiladores pueden traducir lenguaje de alto nivel a un lenguaje ensamblador intermedio, que luego se traduce a código de máquina por un programa ensamblador. Pro la mayoría de los compiladores generan código de máquina directamente.
Por todo lo anterior, todo lenguaje de alto nivel tiene un compilador incorporado. Básicamente, el compilador es la parte central de dicho lenguaje, porque define y traduce las instrucciones recibidas a código máquina.
Una vez compilado el programa, podemos ejecutarlo, es decir, hacer que se inicie la carga del programa y comiencen a realizarse las acciones programadas.. Ejemplos de lenguajes compilados son Pascal o C++.
Las ventajas del utilizar un compilador son:
El programa ejecutable no incluye el código fuente, por lo tanto, el código compilado es más seguro.
Un programa compilado se ejecutan más rápidamente que un programa que está siendo interpretado ya que la traducción se realiza directamente a código máquina.
Las desventajas de utilizar un compilador son:
El código objeto necesita crearse para obtener el archivo ejecutable final, y si el programa es muy largo, el proceso de compilación puede ser muy lento.
El código fuente debe estar libre de errores para que el archivo ejecutable se genere.
El archivo ejecutable generado por el compilador solo funcionará en el sistema operativo en el que fue creado.
– Intérpretes. Un intérprete es un programa que, en tiempo de ejecución, transcribe a lenguaje máquina y ejecuta una por una, en la secuencia descrita en el programa fuente, el conjunto de instrucciones del mismo (sin generar un programa objeto). De esta forma, cada vez que se ejecuta el programa fuente, éste deberá ser interpretado de nuevo; cada vez que se ejecuta una sentencia ésta debe ser interpretada de nuevo.
Es decir, el programa intérprete traduce y ejecuta las instrucciones del programa línea a línea, siguiendo la secuencia real del programa. Cuando detecta un error, la traducción y ejecución del programa se detienen, e indica un código de error. La ejecución del programa en un intérprete es por lo general, más lenta que en un compilador. El intérprete no genera un archivo ejecutable. La ventaja de ello es que cualquier programa puede ser interpretado en cualquier sistema operativo.
Ejemplos de lenguajes interpretados son las primeras versiones de BASIC o Scratch.
Las ventajas del utilizar un intérprete son:
Al ejecutarse línea a línea, resulta ser más fácil de depurar y comprobar errores.
Si el programa es muy largo, un intérprete resulta es más rápido que un compilador porque no tiene que traducir todo el programa para ejecutarlo.
Las desventajas de utilizar un intérprete son:
El código fuente se requiere para poder ejecutar un programa
Los intérpretes son más lentos que los programas compilados o ejecutables.
De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano (lenguaje de alto nivel), para luego compilarlo o interpretarlo hasta un programa más manejable por una computadora. (lenguaje máquina).
Atendiendo al propósito para el que se crean, los lenguajes de programación pueden ser:
Lenguajes de Propósito General: permiten la implementación de prácticamente cualquier algoritmo, el nivel de abstracción es más uniforme, proporciona razonable rendimiento. Ej Pascal, C, C++, Java, Delphi, Lisp, Scheme.
Lenguajes de Propósito Específico: tienen por lo general un conjunto muy restringido de características y un alto nivel de abstracción para cumplir tareas especificas como el procesamiento de textos, gráficos, audio, video e ingeniería. Ejemplos: Snobol, SQL, Matlab
Otro posible criterio de clasificación de los lenguajes de programación es el hacerlo según su paradigma* de programación.
* El término “paradigma” ha sido objeto de muchas interpretaciones. En su origen griego, significaba “modelo”, “ejemplo” o “patrón”. Sobre este punto de partida, podemos hablar de un paradigma como un conjunto de creencias, prácticas y conocimientos que guían el desarrollo de una disciplina durante un período de tiempo. En diversas ramas de la ciencia, un conjunto de ideas en vigencia puede ser reemplazado drásticamente por otro que entre en conflicto con él y se demuestre más acertado. La programación tiene sus propios paradigmas, pero el término “paradigma de programación” no necesariamente representa un modelo único que deba ser respetado hasta que aparezca otro mejor.
Un paradigma de programación es un estilo de desarrollo de programas. Es decir, un modelo para resolver problemas computacionales. Los lenguajes de programación, necesariamente, se encuadran en uno o varios paradigmas a la vez a partir del tipo de órdenes que permiten implementar, algo que tiene una relación directa con su sintaxis. Según su paradigma, los lenguajes de programación pueden ser:
Lenguajes Imperativos.
Lenguajes Declarativos.
Lenguajes Funcionales.
Lenguajes de Lógicos
Lenguajes Orientados a Objetos.
Un objeto es una entidad provista de un conjunto de propiedades o atributos ("datos") y de comportamiento o funcionalidad ("métodos"). Corresponden a los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Una clase es una colección de objetos similares, con unas propiedades y comportamiento comunes que les hacen pertenecer a esa clase y no a otra.
Ejemplos: C++, Java, Python, Visual Basic.