Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Contenido
2 Lenguajes de programación........................................................................................................................5
Se define un sistema informático como el conjunto de elementos que permiten procesar información por
medio de ordenadores, cuya finalidad es obtener nueva información a partir de la ya existente. Los
elementos que compone un sistema informático son:
Hardware: es el conjunto de todos los elementos físicos que compone el ordenador. Informalmente
se trata de todas las partes del ordenador que pueden ser tocadas con las manos: procesador,
memoria, periféricos, placas, buses, circuitos, etc.
Software: El software es:
Página 1 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Los sistemas informáticos son complejos Se diseñan, estudian y organizan por niveles
Cada nivel se construye con componentes (instrucciones o servicios) proporcionados por el nivel inferior y
proporciona nuevos componentes más complejos al nivel superior.
Usuario final (no programa)
Nivel 6 – Aplicaciones dedicadas
Traducidos (bases datos, juegos…)
Nivel 5 – Lenguajes evolucionados
Traducidos (compiladores)
Nivel 4 – Lenguaje ensamblador
Traducidos (prog. Ensamblador)
Nivel 3 – Núcleo del Sistema Operativo
Interpr. Parcial (programa del S.O.)
Nivel 2 – Lenguaje máquina (convencional)
Interpr. Microprograma intérprete
Nivel 1 – Hardware / circuitos digitales
La UC es el intérprete, ejecuta sobre la UP las instrucciones de LM
Elementos fundamentales
o Unidades funcionales
o Jerarquía de almacenes
o Unidad de control
Organización de referencia para el curso:
o PC de sobremesa.
Página 3 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
si (condición) {
Calcular dirección destino de salto;
PC = dirección destino de salto;
}
End ejecutar
Un programa informático es un conjunto de datos e instrucciones que se ejecutan de manera secuencial con
el objetivo de realizar una o varias tareas en un sistema informático.
Un programa informático es creado por un programador en un lenguaje determinado, que será compilado y
ejecutado por un sistema. Cuando un programa es llamado para ser ejecutado, el procesador ejecuta el
código compilado del programa instrucción por instrucción.
Haciendo un abuso del lenguaje, podemos decir que un programa informático es software, pero no sería del
todo correcto, ya que software comprende un conjunto de programas.
Según su función se distinguen tres tipos de software:
Software de sistema: conjunto de programas escritos para servir a otros programas. El sistema
operativo, es un software de sistema, es el encargado de controlar y gestionar el hardware, así como
de gestionar el software de aplicación. Ejemplo, un sistema operativo como Ubuntu.
Software de programación: es el conjunto de herramientas que nos permiten desarrollar programas
informáticos (Compiladores, editores, Gestores de Archivos...ahora integrados en IDEs).
Software de aplicación: incorporará las librerías necesarias para entenderse con el sistema
operativo, y éste a su vez sería el que se comunicase con el hardware. Como ejemplo podemos
destacar los navegadores como Mozilla Firefox.
En informática una máquina virtual es un software que emula a un ordenador y puede ejecutar programas
como si fuese una computadora real. Este software en un principio fue definido como "un duplicado
eficiente y aislado de una máquina física".
Una característica esencial de las máquinas virtuales es que los procesos que ejecutan están limitados por
los recursos y abstracciones proporcionados por ellas. Estos procesos no pueden escaparse de esta
"computadora virtual".
Uno de los usos domésticos más extendidos de las máquinas virtuales es ejecutar sistemas operativos para
"probarlos". De esta forma podemos ejecutar un sistema operativo que queramos probar (GNU/Linux, por
ejemplo) desde nuestro sistema operativo habitual (Mac OS X por ejemplo) sin necesidad de instalarlo
directamente en nuestra computadora y sin miedo a que se desconfigure el sistema operativo primario.
Página 4 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
2 Lenguajes de programación.
Página 5 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Página 6 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
El nivel de abstracción es el modo en que los lenguajes se alejan del lenguaje máquina y se acercan cada vez
más a un lenguaje similar a los que utilizamos diariamente para comunicarnos. Cuando más alejado esté del
lenguaje máquina, de mayor nivel será el lenguaje.
Primera generación: Sólo hay un lenguaje de primera generación: el lenguaje máquina. Los lenguajes de
máquina están escritos en código máquina, directamente inteligibles por el ordenador, siendo sus
instrucciones cadenas binarias (0 y 1) que conforman operaciones que el ordenador puede entender sin
interpretación alguna.
La programación en un lenguaje de bajo nivel tiene como ventajas una mayor adaptación al equipo, además
de la posibilidad de obtener la máxima velocidad con el mínimo uso de memoria.
Sin embargo, tiene importantes inconvenientes, como la imposibilidad de escribir código independiente de
la máquina y la mayor dificultad en la programación y en la comprensión de los programas.
Segunda generación: los lenguajes de segunda generación, en lugar de unos y ceros, se programa usando
unas instrucciones para realizar operaciones sencillas con datos simples o posiciones de memoria. El
principal es el lenguaje ensamblador. Para su ejecución necesita su traducción al lenguaje máquina.
Los lenguajes de programación de alto nivel se caracterizan por expresar los algoritmos de una manera
adecuada a la capacidad cognitiva humana, en lugar de estar orientados a su ejecución en las máquinas.
Tercera generación: la gran mayoría de los lenguajes de programación que se utilizan hoy en día pertenecen
a este nivel de abstracción. En su mayoría, los lenguajes del paradigma de programación orientada a objetos
son lenguajes de propósito general que permiten un alto nivel de abstracción y una forma de programas
mucho más entendible e intuitiva.
Ejemplos: C++, COBOL, Fortran, Java, PHP, PL/SQL,…
Cuarta generación: son lenguajes creados con un propósito específico, al ser un lenguaje tan específico
permite reducir la cantidad de líneas de código que tendríamos que hacer con otros lenguajes de tercera
generación mediante procedimientos específicos (SQL para BDD, HTML para visualización de páginas,
maple...). Por ejemplo, si tenemos que resolver una ecuación en un lenguaje de tercera generación,
tendríamos que crear complejos métodos para resolverla, mientras que un lenguaje de cuarta generación
como Maple, nos resuelve este problema con solo introducir la ecuación.
Página 7 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Quinta generación: también llamados lenguajes naturales, pretenden abstraer más aún el lenguaje
utilizando un lenguaje natural con una base de conocimientos que produce un sistema basado en el
conocimiento. Este tipo de lenguajes los podemos encontrar frecuentemente en inteligencia artificial y lógica
(LISP, PROLOG, etc.).
Página 8 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Dependiendo de cómo un programa se ejecute dentro de un sistema, se puede distinguir tres categorías de
lenguajes:
a) Lenguajes compilados: Antes de poder utilizarse el programa debe utilizarse un traductor
llamado “compilador” que se encarga de traducir (“compilar”) el programa original (“código
fuente”) en código objeto y otro programa (“enlazador” o “linkador”) que unirá el código objeto
del programa con el código objeto de las librerías necesarias producir el programa ejecutable.
Los programas ejecutables están en binario y son los únicos necesarios para el funcionamiento
del programa. Ejemplo: Visual Studio de Microsoft.
b) Lenguajes interpretados: ejecutan las instrucciones directamente, sin que se genere código
objeto, para ello es necesario un programa intérprete en el sistema operativo o en la propia
máquina donde cada instrucción es interpretada y ejecutada de manera independiente y
secuencial. Así, cada vez que se usa el programa debe utilizarse un traductor llamado
“intérprete” que se encarga de traducir (“interpretar”), sin generar código objeto, las
instrucciones del programa original (“código fuente”) a código máquina según van siendo
utilizadas. Para el funcionamiento del programa siempre es necesario disponer del código
original y del intérprete.
La principal ventaja con respecto al lenguaje compilador es que ser traducen a tiempo real solo
las instrucciones que se utilicen en cada ejecución, en vez de interpretar todo el código, se vaya
a utilizar o no.
Página 9 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Página 10 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Es el caso por ejemplo de SQL, un lenguaje declarativo de cuarta generación diseñado para trabajar con
bases de datos. Este lenguaje SQL es interpretado por el motor de la Base de Datos, no por la CPU.
Página 11 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Página 12 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Nuestro programa, esté programado en el lenguaje que esté y se quiera ejecutar en la arquitectura que sea,
necesita ser traducido para poder ser ejecutado (con la excepción del lenguaje máquina).
Por ello, deberemos definir los distintos tipos de código por los que pasará nuestro programa antes de ser
ejecutado por el sistema.
El código fuente de un programa informático (o software) es un conjunto instrucciones escritas en
un lenguaje de programación determinado e indica lo que debe realizar el ordenador para ejecutar
dicho programa. Por tanto, en el código fuente de un programa describe por completo su
funcionamiento.
El código fuente de un programa está escrito por un programador en algún lenguaje de
programación, pero en este primer estado no es directamente ejecutable por la computadora, sino
que debe ser traducido a otro lenguaje (el lenguaje máquina o código objeto) que sí pueda ser
ejecutado por el hardware de la computadora. Para esta traducción se usan los llamados
compiladores, ensambladores, intérpretes y otros sistemas de traducción.
El código objeto al código que resulta de la compilación del código fuente. Consiste en lenguaje
máquina y se distribuye en varios archivos que corresponden a cada código fuente compilado. Para
obtener un programa ejecutable se han de enlazar todos los archivos de código objeto con un
programa llamado enlazador (linker).
El código ejecutable, Este código ya es nuestro programa ejecutable, programa que se ejecutará
directamente en nuestro sistema o sobre una máquina virtual en el caso de los lenguajes de
programación virtuales.
Tradicionalmente, el código ejecutable es un archivo binario cuyo contenido se interpreta por el
ordenador como un programa, pero generalmente, contiene instrucciones en código máquina de un
procesador en concreto y código intermedio que requiere un intérprete para ejecutarlo. Además,
suele contener llamadas a funciones específicas de un sistema operativo.
Dependiendo del tipo de que se traten las instrucciones, hablaremos de ejecutables portables (se
pueden ejecutar en varias plataformas) y no portables (destinado a una plataforma concreta). Por
ejemplo, un ejecutable Java es portable ya que utiliza un código intermedio no asociado a un
procesador en concreto.
Sin embargo, en un sentido más general, un programa ejecutable no tiene por qué necesariamente
contener código de máquina, sino que puede tener instrucciones a interpretar por otro programa.
Este tipo de ejecutables son conocidos con el nombre de scripts.
Página 13 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Determinar si un archivo es ejecutable es sobre todo una cuestión de convención. Unos sistemas
operativos se basan en la extensión de archivo (como la terminación .exe) y otros lo hacen leyendo
los metadatos (como los bits de permiso de ejecución en Unix).
En la mayoría de los sistemas modernos, un archivo ejecutable contiene mucha información que no
es parte del programa en sí; recursos como textos e imágenes, requisitos del entorno de ejecución,
información simbólica y de depuración, u otra información que ayude al sistema operativo a ejecutar
el programa.
Página 14 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
3.3 Compilación
El proceso para la obtención del código ejecutable del programa se lleva a cabo mediante dos programas: el
compilador y el enlazador. Mientras que el enlazador solamente une el código objeto con las librerías, el
trabajo del compilador es mucho más completo.
Al proceso completo se le conoce con el nombre de compilación.
Página 15 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
I. Análisis lexicográfico: se leen de manera secuencial todos los caracteres del código fuente,
buscando palabras reservadas, operaciones, caracteres de puntuación y agrupándolos todos en
cadenas de caracteres que se denominan lexemas.
II. Análisis sintáctico-semántico: agrupa todos los componentes léxicos estudiados en la fase anterior
en forma de frases gramaticales, revisando la coherencia de las mismas.
III. Generación de código intermedio: una vez finalizado el análisis, se genera una representación
intermedia a modo de pseudocódigo con el objetivo de facilitar la tarea de traducir al código objeto.
IV. Optimización de código: revisa el código pseudocódigo generado en el paso anterior optimizándolo
para que el código resultante sea más fácil y rápido de interpretar por la máquina.
V. Generación de código: genera el código objeto de nuestro programa en un código de lenguaje
máquina relocalizable, con diversas posiciones de memoria sin establecer, ya que no sabemos en
qué parte de la memoria volátil se va a ejecutar nuestro programa.
VI. Enlazador de librerías: se enlaza el código objeto con las librerías necesarias, produciendo en último
término el código ejecutable. Características:
a. No cambia de nivel (no traduce ni interpreta).
b. Más rápido que el ensamblador, lo que facilita la programación modular.
c. Reubicación (si se juntan varios módulos) dir. reubicada = dir. reubicable + DESPLAZ.
d. Resolución referencias externas y creación de fichero cargable, con información añadida de
reubicación para el cargador.
Página 16 de 17
T1. Introducción al desarrollo del software DAW 2022/2023
Página 17 de 17