PROGRAMA INFORMÁTICO
Concepto
Concepto de programa informático
Concepto de programa informático
Un programa informático es un grupo de instrucciones que están escritas en un
lenguaje de programación sobre el que se aplican una serie de datos para
resolver un problema.
Ejemplo: este programa mostrará “Hola Mundo” por la pantalla
Aplicación informática
➢ Las aplicaciones informáticas suelen estar formadas por varios programas con
sus librerías correspondientes aunque podrían constar solamente de un
programa.
➢ Cuando son varios programas que pueden ejecutarse independientemente uno
del otro suelen denominarse suite o paquete integrado como por ejemplo la suite
ofimática de OpenOffice
➢ Las aplicaciones tienen un nexo de unión en común, comparten librerías,
almacén incluso datos. La compatibilidad entre ellos es completa.
➢ Una aplicación informática está en contacto con el usuario y no con el
hardware. Será el sistema operativo el que haga de nexo de unión entre ambos
(aplicación informática y Hardware)
Ejemplos
○ Microsoft Office (que incluye Word, Excel, PowerPoint, Outlook, etc.)
○ Google Workspace (con aplicaciones como Google Docs, Google Sheets, Google Slides, Gmail,
etc.)
○ LibreOffice (una alternativa gratuita que incluye Writer, Calc, Impress, etc.)
Como se ejecuta un programa
Si queremos iniciar un programa necesitaremos recursos hardware del ordenador,
como son el procesador, la memoria RAM, dispositivos E/S, etc. Las instrucciones
para inicializar el programa se cargan en la memoria principal y se ejecutarán en la
CPU (unidad central de proceso).
➔ La CPU es el componente principal de un ordenador encargado de interpretar y
ejecutar las instrucciones de los programas.
➔ Controla todas las funciones principales del sistema, como los cálculos, la lógica
y la gestión de datos.
➔ La CPU es crucial para el funcionamiento de cualquier dispositivo informático.
CPU
Procesador (CPU)
Componentes que conforman la CPU:
La Unidad de Control (UC): se encarga de interpretar y ejecutar las instrucciones
que se almacenan en la memoria principal y, además, genera las señales de control
necesarias para ejecutarlas.
La Unidad Aritmético-Lógica (UAL): es la que recibe los datos y ejecuta
operaciones de cálculo y comparaciones, además de tomar decisiones lógicas
(si son verdaderas o falsas), pero siempre supervisada por la Unidad de Control.
Los registros: son los que almacenan la información temporal, almacenamiento
interno de la CPU.
MEMORIA (RAM y almacenamiento)
La memoria de un sistema informático se divide principalmente en dos tipos:
➔ La memoria principal (RAM) y el almacenamiento secundario (discos duros o
SSD)
➔ Cuando ejecutamos un programa, este se carga desde el almacenamiento
secundario a la memoria RAM, que es mucho más rápida.
➔ La RAM almacena temporalmente tanto el código del programa como los
datos que este necesita procesar.
➔ La RAM es volátil, lo que significa que toda la información se borra cuando
se apaga el ordenador.
BUS DE DATOS
El bus de datos es una vía de comunicación que permite el intercambio de
información entre la CPU, la memoria y otros dispositivos del sistema.
Hay tres tipos de buses principales:
➔ Bus de datos: Transporta los datos.
➔ Bus de direcciones: Transporta las direcciones de memoria.
➔ Bus de control: Transporta las señales de control y sincronización.
Ejecución de una instrucción
Cuando ejecutamos una instrucción podemos distinguir dos fases:
➔ Fase de búsqueda: se localiza la instrucción en la memoria principal y se envía a
la Unidad de Control para poder procesarla.
➔ Fase de ejecución: se ejecutan las acciones de las instrucciones:
◆ Obtiene la obtiene la primera instrucción de la memoria,
◆ Se decodifica la instrucción para determinar el código de operación y los
datos,
◆ Ejecuta la instrucción y en algunos casos almacena el resultado. Este
proceso se ejecuta continuamente hasta que se leen todas las instrucciones
del programa.
Aplicación informática
Existen multitud de aplicaciones informáticas:
➢ Programas de contabilidad
➢ bases de datos
➢ Programas de diseño gráfico
➢ Procesadores
➢ hoja de cálculo
➢ herramientas de correo electrónico
Código fuente de un programa
Es el conjunto de archivos que
contienen órdenes o instrucciones
que forman el programa.
➔ Es realizado por los
programadores usando
algún editor de texto o
herramienta de
programación.
➔ No se puede ejecutar
directamente en el
ordenador.
➔ Para hacer cambios en
un programa es
necesario acceder al
código fuente.
Ejemplo de código fuente del Lenguaje Java
/ /Ejemplo básico de un programa en Java
public class HolaMundo {
// El método principal que ejecuta el programa
public static void main(String[] args) {
// Imprime "Hola, mundo" en la consola
[Link]("Hola, mundo");
}
}
El proceso de traducción y compilación
Los traductores son programas cuya finalidad es traducir lenguajes de alto nivel a
lenguajes de bajo nivel como ensamblador o código máquina.
Existen dos grupos de traductores: intérpretes y compiladores.
Intérprete
Intérprete:
➢ Traduce el código fuente línea a línea.
Primero traduce la línea, detiene la traducción
y posteriormente la ejecuta. Lee la siguiente
línea, detiene la traducción y posteriormente la
ejecuta…..
➢ El intérprete tiene que estar en memoria
ejecutándose para poder ejecutar el programa.
También el código fuente tiene que estar en
memoria.
Compilador
El proceso de compilación de un programa implica convertir el código fuente
(escrito en un lenguaje de programación como Java, C++ o Python) en un formato
que pueda ser ejecutado por una máquina.
Pasos del proceso de compilación:
➔ Escritura del código fuente: El desarrollador escribe el código en un lenguaje
de alto nivel (por ejemplo, Java o C++). Este código es entendible por
humanos, pero no puede ser ejecutado directamente por una máquina.
➔ Compilación: El compilador traduce el código fuente a un código de bajo nivel
llamado código objeto o bytecode (dependiendo del lenguaje). Por ejemplo:
★ En C/C++, el compilador genera código objeto (archivo .o o .obj).
★ En Java, el compilador genera bytecode (archivo .class) que luego es
ejecutado por la Máquina Virtual de Java (JVM).
Compilador
➔ Compilación:
Fases del compilador
➢ Análisis léxico: se lee el código obteniendo unidades de caracteres
llamados tokens. Ejemplo: la instrucción resta = 2 – 1, genera 5 tokens:
resta, =, 2, -, 1.
➢ Análisis sintáctico: recibe el código fuente en forma de tokens y ejecuta el
análisis para determinar la estructura del programa, se comprueba si
cumplen las reglas sintácticas.
➢ Análisis semántico: revisa que las declaraciones sean correctas, los tipos
de todas las expresiones, si las operaciones se pueden realizar, si los arrays
son del tamaño correcto, etc.
➢ Generación de código intermedio: después de analizarlo todo, se crea una
representación similar al código fuente para facilitar la tarea de traducir al
código objeto.
➢ Optimización de código: se mejora el código intermedio anterior para que
sea más fácil y rápido a la hora de interpretarlo la máquina.
➢ Generación de código: se genera el código objeto.
Compilador
➢ Ensamblado (si es necesario): Si el código se traduce a código máquina, el
ensamblador convierte el código objeto en código ejecutable binario.
➢ Enlazado (Linking): El enlazador toma todos los archivos objeto generados
(y las bibliotecas externas si las hay) y los une para formar un archivo
ejecutable o bytecode completo que pueda ser ejecutado.
➢ Ejecución: Una vez creado el archivo ejecutable (en el caso de lenguajes
compilados como C/C++) o el bytecode (en el caso de lenguajes como Java),
el programa puede ser ejecutado directamente por la CPU o por una máquina
virtual (en el caso de Java, la JVM).
➢ Si en el compilador se detecta algún tipo de error no se generará el código
objeto y tendremos que modificar el código fuente para volver a pasarlo por el
compilador.
Compilador
Compilación y ejecución en un programa en Java
Una máquina virtual es un tipo de software capaz de ejecutar programas como si
fuese una máquina real.
Máquina Virtual de Java (JVM)
● Es responsable de ejecutar los programas Java, interpretando el código
compilado llamado bytecode y traduciendo este bytecode a instrucciones que
el sistema operativo puede entender.
● Proporciona una capa de abstracción entre el código Java y el hardware
donde se ejecuta.
● Permite que los programas Java se ejecuten en cualquier dispositivo o
sistema operativo que tenga instalada una JVM, lo que cumple con la
filosofía de "escribe una vez, ejecuta en cualquier lugar" (WORA, por sus
siglas en inglés).
● Por tanto los programas que se compilan en lenguaje Java son capaces de
funcionar en cualquier plataforma (UNIX, Mac, Windows, Solaris, etc.).
Funcionamiento de la Máquina Virtual de Java
Pasos para compilar y ejecutar un programa en JAVA:
● El código fuente estará escrito en archivos de texto planos con la extensión
.java.
● El compilador javac (programa) generará uno o varios archivos siempre que
no se produzcan errores y tendrán la extensión .class.
● Este fichero .class contendrá un lenguaje intermedio entre el ordenador y el
SO y se llamará bytecode.
● La JVM carga el bytecode en memoria utilizando el Class Loader, un
componente que gestiona la localización y carga de clases necesarias para la
ejecución del programa.
● Verificación del bytecode: Una vez cargado el bytecode, la JVM verifica que
el código no contenga errores o instrucciones que puedan causar fallos de
seguridad, como accesos ilegales a memoria.
Funcionamiento de la Máquina Virtual de Java
Pasos para compilar y ejecutar un programa en JAVA:
● Ejecución del bytecode: Finalmente el bytecode es interpretado o
compilado por el Just-In-Time (JIT) compiler, que traduce el bytecode en
código máquina específico de la plataforma en tiempo de ejecución para
mejorar el rendimiento.
Funcionamiento de la Máquina Virtual de Java
● Una de las desventajas de usar este tipo de lenguajes que se basan en una
máquina virtual puede ser que son más lentos que los lenguajes ya
compilados, debido a la capa intermedia. No obstante, cabe destacar que no
una desventaja demasiado crítica.