Ya sabemos que los lenguajes de programación han evolucionado, y siguen haciéndolo, siempre hacia la mayor usabilidad de los mismos (que el mayor número posible de usuarios lo utilicen y exploten).
La elección del lenguaje de programación para codificar un programa dependerá de las características del problema a resolver.
Podemos clasificar los distintos tipos de Lenguajes de Programación en base a distintos criterios:
Según lo cerca que esté del lenguaje humano
-
- Lenguajes de programación de alto nivel. Los lenguajes de programación de alto nivel se caracterizan por traducir los algoritmos a un lenguaje mucha más fácil de entender para el programador. Estos lenguajes no están orientados a la máquina (donde se va a ejecutar) lo cual hace que los programas escritos con este tipo de lenguaje se puedan ejecutar en cualquier tipo de ordenador. Tienen el inconveniente de que este conjunto de instrucciones no es directamente ejecutable por la máquina, sino que deberá ser traducido al lenguaje máquina, que la computadora será capaz de entender y ejecutar.
-
- Lenguajes de programación de bajo nivel. Los lenguajes de bajo nivel son lenguajes que aprovechan al máximo los recursos del ordenador donde se van a ejecutar, Los lenguajes de más bajo nivel son los lenguajes máquinas, A este nivel le sigue el lenguaje ensamblador.
-
Lenguaje máquina. Se programan sus registros directamente con 0s y 1s. Difícil de programar y resolver errores.
- Lenguaje ensamblador. Se trata de un primer nivel de abstracción respecto al lenguaje máquina, aunque conceptualmente está mucho más cercano al equipo que al razonamiento humano.
Estos lenguajes tienen importantes inconvenientes, por ejemplo:
- Su adaptación a la máquina (donde se va a ejecutar) hace que no se pueda utilizar en otro ordenador al menos que tenga las mismas características que el ordenador (para el que se hizo).
- Dificultad en el manejo de dicho lenguaje.
Según su forma de ejecución
Un ordenador realizará cada una de las instrucciones indicadas en un programa. Dicho programa podrá estar escrito en muchos lenguajes de programación pero solo hay uno que entiende el ordenador: el lenguaje máquina.
Si el programa no está escrito en dicho lenguaje habrá que hacer una traducción para que el ordenador lo entienda.
Según como se realice dicha traducción, se pueden dividir en dos grupos:
- Lenguajes compilados: Son aquellos lenguajes que se traducen a través de un programa traductor llamado compilador. Dicho programa traduce todo el programa al lenguaje máquina, generando un nuevo fichero ejecutable, que contiene la misma información que el fichero original (código fuente) pero escrito en lenguaje máquina. Si no hay cambios en el fichero original, no hará falta volver a realizar, de nuevo, dicha traducción. Por ejemplo: C, Pascal, etc.
- Lenguajes interpretados: Un programa escrito en un lenguaje interpretado supone el tener que traducir el programa cada vez que se quiera ejecutar. A los programas, que realizan dicha traducción, se les llama intérpretes. Dichos programas no generan un fichero ejecutable, por ello, es necesario realizar la traducción cada una de las veces que se ejecute el programa. Por ejemplo: Basic, etc.
La ventaja de los lenguajes compilados frente a los interpretados es que no hace falta traducir el programa cada vez; sin embargo, su inconveniente es que no podremos ejecutar el programa hasta que no haya ningún error. Los intérpretes van traduciendo y ejecutando instrucción a instrucción lo cual hace que se pueda ejecutar el programa (aunque haya errores). En el momento que llegue a dicha instrucción errónea, se parará el programa.
Para obtener las ventajas de ambos tipos de lenguajes, algunos combinan estas dos tareas:
- Primero, el programa original (en Java, los ficheros donde se guarda el programa fuente tienen extensión “java”) se hace una primera traducción pero no al lenguaje máquina sino a un lenguaje intermedio (en Java es bytecodes). De dicha traducción se obtiene un fichero (en Java tienen extensión “class”). Esto equivaldría a la fase de compilación.
- En una segunda fase, dicho archivo es traducido (interpretado) en cada ejecución.
Esto es lo que realiza, por ejemplo, Java. A estos lenguajes se les llama lenguajes intermediarios.
Durante todo este proceso (que se realizan en los lenguajes intermedios), el código pasa por diferentes estados. La siguiente figura muestra el proceso de transformación del código fuente a máquina para el lenguaje Java.
Por lo tanto tendremos:
Código Fuente
|
Es el escrito por los programadores en algún editor de texto. Se escribe usando algún lenguaje de programación de alto nivel y contiene el conjunto de instrucciones necesarias que debe seguir el ordenador para implementar el algoritmo.
Se trata de información conceptualmente más cercana al programador que a la máquina, que no es capaz de ejecutarlo directamente.
Un aspecto muy importante en esta fase es la elaboración previa de un algoritmo, que lo definimos como un conjunto de pasos a seguir para obtener la solución del problema. El algoritmo lo diseñamos en pseudocódigo y con él, la codificación posterior a algún Lenguaje de Programación determinado será más rápida y directa.
Para obtener el código fuente de una aplicación informática:
- Se debe partir de las etapas anteriores de análisis y diseño.
- Se diseñará un algoritmo que simbolice los pasos a seguir para la resolución del problema.
- Se elegirá una Lenguajes de Programación de alto nivel apropiado para las características del software que se quiere codificar.
- Se procederá a la codificación del algoritmo antes diseñado.
La culminación de la obtención de código fuente es un documento con la codificación de todos los módulos, funciones, bibliotecas y procedimientos necesarios para codificar la aplicación.
Puesto que, como hemos dicho antes, este código no es inteligible por la máquina, habrá que TRADUCIRLO, obteniendo así un código equivalente pero ya traducido a código binario que se llama código objeto. Que no será directamente ejecutable por la computadora si éste ha sido compilado.
Un aspecto importante a tener en cuenta es su licencia. Así, en base a ella, podemos distinguir dos tipos de código fuente:
- Código fuente abierto. Es aquel que está disponible para que cualquier usuario pueda estudiarlo, modificarlo o reutilizarlo.
- Código fuente cerrado. Es aquel que no tenemos permiso para editarlo.
|
Código Objeto
|
Se trata de un código intermedio para los lenguajes intermedios, por lo tanto no es directamente ejecutable por el equipo. Para que la máquina pueda ejecutar el programa es necesario transformarlo al lenguaje que ésta maneja con un intérprete. El código objeto se obtiene mediante el uso de un compilador.
El código objeto no es directamente inteligible por el ser humano, pero tampoco por la computadora. Es un código intermedio entre el código fuente y el ejecutable.
En definitiva, es el resultado de traducir código fuente a un código equivalente formado por unos y ceros que aún no puede ser ejecutado directamente por la computadora.
Consiste en un bytecode (código binario) que está distribuido en varios archivos, cada uno de los cuales corresponde a cada programa fuente compilado.
Sólo se genera código objeto una vez que el código fuente está libre de errores sintácticos y semánticos.
|
Código Ejecutable
|
Es el código máquina resultante de enlazar los archivos de código objeto con ciertas rutinas y bibliotecas necesarias. El sistema operativo será el encargado de cargar el código ejecutable en memoria RAM y de proceder a su ejecución. dora.
Los programas compilados no producen código objeto. El proceso de compilación ya realiza el paso de fuente a ejecutable directamente.
Para obtener un sólo archivo ejecutable, habrá que enlazar todos los archivos de código objeto, a través de un software llamado linker (enlazador) y obtener así un único archivo que ya sí es ejecutable directamente por la computadora.
También es conocido como código máquina y ya sí es directamente inteligible por la computadora.
Generación de código ejecutable.
En el esquema de generación de código ejecutable, vemos el proceso completo para la generación de ejecutables.
A partir de un editor, escribimos el lenguaje fuente con algún Lenguaje de programación. (En el ejemplo, se usa Java).
A continuación, el código fuente se compila obteniendo código objeto o bytecode.
Ese bytecode, a través de la máquina virtual (se verá en el siguiente punto), pasa a código máquina, ya directamente ejecutable por la computadora.
|
Código binario resultante de la traducción de código de alto nivel que aún no puede ser ejecutado.
Pequeño software encargado de unir archivos para generar un programa ejecutable.
Secuencia invariable de instrucciones que forman parte de un programa y que son reutilizables.
Conjunto de subprogramas que sirven para desarrollar componentes software o que actúan como interfaz de comunicación entre componentes software.
Conjunto ordenado de pasos a seguir para la resolución de un problema.
Expresión de ideas en un lenguaje a medio camino entre el humano y el de programación.
Igual que las función, pero al ejecutarse no devuelven ningún valor.
Cada parte, con una funcionalidad concreta, en que se divide una aplicación.
Parte de código muy pequeña con una finalidad muy concreta.