+ - 0:00:00
Notes for current slide
Notes for next slide

Arquitectura de computadoras y lenguajes de programación

Manuel Vargas
UCR

Diagrama de la arquitectura de von Neumann. Fuente: David Strigoi.

1 / 21

Contenidos

  • Características generales de las computadoras.

  • Historia de la computadora

    • Primeras computadoras.

    • La máquina de Turing.

    • Computadoras eletrónicas.

  • La arquitectura de von Neumann.

  • Lenguaje máquina.

  • Lenguajes de programación.

2 / 21

Computadoras

  • Una computadora es una máquina que ejecuta automáticamente secuencias de cálculos y operaciones lógicas, llamadas comandos o instrucciones. Estas secuencias son denominadas programas.

  • Los programas reciben un conjunto de datos de entrada, que procesan mediante los comandos, para enviar los resultados a los dispositivos de salida.

  • En las computadoras modernas, es posible cambiar los programas que ejecutan sin necesidad de alterar sus componentes físicos.

Imagen de Lorenzo Herrera en Unsplash.
Imagen de Luca Bravo en Unsplash.
3 / 21

Computadoras digitales binarias

  • Las computadoras modernas están construídas con base en circuitos integrados (CI), también llamados chips o microchips.

  • Los CI procesan información digital (que usa valores discretos), la cual generalmente es binaria (i.e. de dos valores).

  • Los CI de una computadora procesan dos estados correspondientes a dos niveles de tensión eléctrica: alto y bajo. Estos estados se representan con 0 y 1. Esto facilita la aplicación de la lógica binaria y de la aritmética binaria.

Imagen de Slejven Djurakovic disponible en Unsplash.
Imagen de Yasin Hasan disponible en Unsplash.
4 / 21

Historia de la computadora

5 / 21

Historia de la computadora

  • Durante el siglo XVII, varios matemáticos construyeron calculadoras mecánicas experimentales capaces de sumar, restar, multiplicar y dividir.

5 / 21

Historia de la computadora

  • Durante el siglo XVII, varios matemáticos construyeron calculadoras mecánicas experimentales capaces de sumar, restar, multiplicar y dividir.

  • En la primera mitad del siglo XIX, Charles Babbage diseñó la máquina analítica, considerada la primera computadora programable. Era una máquina de vapor que contaba con una unidad central de procesamiento, memoria y una impresora. Para la entrada de datos y programas estaba previsto el uso de tarjetas perforadas.

5 / 21

Historia de la computadora

6 / 21

Historia de la computadora

  • Por esa misma época, Ada Lovelace elaboró sobre el trabajo de Babbage e introdujo varios conceptos utilizados actualmente en programación. Entre otros aportes, describió en detalle como la máquina analítica podía generar una secuencia de números de Bernoulli. Este desarrollo se considera el primer algoritmo diseñado para ser ejecutado por una computadora y por este motivo, muchos la consideran la primera programadora de computadoras.

6 / 21

Historia de la computadora

7 / 21

Historia de la computadora

  • A mediados del siglo XIX, George Boole introdujo el álgebra booleana, la cual trata sobre las operaciones (ej. AND, OR, NOT) en valores lógicos (Verdadero o Falso). Esto constituye el fundamento teórico en el que se basan los circuitos digitales, además de tener múltiples aplicaciones en matemáticas como, por ejemplo, en teoría de conjuntos.

7 / 21

Historia de la computadora

  • A mediados del siglo XIX, George Boole introdujo el álgebra booleana, la cual trata sobre las operaciones (ej. AND, OR, NOT) en valores lógicos (Verdadero o Falso). Esto constituye el fundamento teórico en el que se basan los circuitos digitales, además de tener múltiples aplicaciones en matemáticas como, por ejemplo, en teoría de conjuntos.

  • En la primera mitad del XX, Claude Shannon demostró como el álgebra booleana podía ser aplicada al diseño de circuitos. Es considerado el padre de la teoría de información, la cual estudia la cuantificación, el almacenamiento y la comunicación de información. También sentó las bases matemáticas de la criptografía.

7 / 21

La máquina de Touring

8 / 21

La máquina de Touring

  • Durante el período entre las guerras mundiales, Allan Turing desarrolló la máquina de Turing, un dispositivo teórico que manipula símbolos de una cinta de acuerdo con una tabla de reglas.

8 / 21

La máquina de Touring

  • Durante el período entre las guerras mundiales, Allan Turing desarrolló la máquina de Turing, un dispositivo teórico que manipula símbolos de una cinta de acuerdo con una tabla de reglas.

  • La máquina de Turing simula el funcionamiento de un algoritmo y los conceptos de entrada, procesamiento y salida.

8 / 21

La máquina de Touring

  • Durante el período entre las guerras mundiales, Allan Turing desarrolló la máquina de Turing, un dispositivo teórico que manipula símbolos de una cinta de acuerdo con una tabla de reglas.

  • La máquina de Turing simula el funcionamiento de un algoritmo y los conceptos de entrada, procesamiento y salida.

  • La mayoría de las computadoras modernas están basadas en el concepto de la máquina de Turing.

8 / 21

Representación artística de la máquina de Turing

9 / 21

Representación artística de la máquina de Turing

Representación artística de una máquina de Turing. Imagen de Porao en Wikimedia.
9 / 21

Primeras computadoras electrónicas

10 / 21

Primeras computadoras electrónicas

  • Con base en las ideas de Turing, las computadoras Colossus fueron construídas durante la Segunda Guerra Mundial en el Reino Unido para descifrar mensajes codificados.

10 / 21

Primeras computadoras electrónicas

  • Con base en las ideas de Turing, las computadoras Colossus fueron construídas durante la Segunda Guerra Mundial en el Reino Unido para descifrar mensajes codificados.

  • A pesar de que se consideran de las primeras computadoras digitales electrónicas programables, su programación se realizaba a través de componentes de hardware, como interruptores y enchufes, y no con un programa almacenado.

10 / 21

Primeras computadoras electrónicas

11 / 21

Primeras computadoras electrónicas

11 / 21

Primeras computadoras electrónicas

  • ENIAC (Electronic Numerical Integrator and Computer) es considerada la primera computadora programable digital de propósito general. Era capaz de seguir el modelo de la máquina de Turing, por lo que era Turing-completa. Podía resolver 5000 sumas o 300 multiplicaciones en 1 segundo.

  • Fue inicialmente diseñada para calcular tablas de tiro de artillería para el ejército de Estados Unidos. Su construcción se completó en 1946.

11 / 21

Primeras computadoras electrónicas

Computador Colossus operado por integrantes del Women's Royal Naval Service (WRNS). Imagen de autor desconocido en Wikimedia.
ENIAC programado por Glen Beck y Betty Snyder. Imagen del Ejército de Estados Unidos en Wikimedia.
12 / 21

Primeras computadoras electrónicas

ENIAC programado por Jean Jennings, Marlyn Wescoff y Ruth Lichterman. Imagen del Ejército de Estados Unidos.
Programadoras de ENIAC mostrando algunos de sus componentes. Imagen del Ejército de Estados Unidos en Wikimedia.
13 / 21

La arquitectura de von Neumann

14 / 21

La arquitectura de von Neumann

  • En 1945, John von Neumann propuso un concepto conocido como programa almacenado, en el cual los datos y los programas se almacenan en una estructura llamada memoria, separada del hardware que ejecuta las instrucciones.

14 / 21

La arquitectura de von Neumann

  • En 1945, John von Neumann propuso un concepto conocido como programa almacenado, en el cual los datos y los programas se almacenan en una estructura llamada memoria, separada del hardware que ejecuta las instrucciones.

  • Este modelo permite que las computadoras sean más fáciles de reprogramar y es conocido actualmente como arquitectura de von Neumann.

14 / 21

Diagrama de la arquitectura de von Neumann

15 / 21

Diagrama de la arquitectura de von Neumann

Diagrama de la arquitectura de von Neumann. Imagen de David Strigoi en Wikimedia.
15 / 21

Componentes de la arquitectura de von Neumann

Memoria principal

16 / 21

Componentes de la arquitectura de von Neumann

Memoria principal

  • Almacena las instrucciones de los programas y los datos que utilizan estos programas.

16 / 21

Componentes de la arquitectura de von Neumann

Memoria principal

  • Almacena las instrucciones de los programas y los datos que utilizan estos programas.

  • Es común denominarla como RAM (Random Access Memory, Memoria de Acceso Aleatorio), lo que significa que toma el mismo tiempo acceder a cualquier posición de la memoria.

16 / 21

Componentes de la arquitectura de von Neumann

Memoria principal

  • Almacena las instrucciones de los programas y los datos que utilizan estos programas.

  • Es común denominarla como RAM (Random Access Memory, Memoria de Acceso Aleatorio), lo que significa que toma el mismo tiempo acceder a cualquier posición de la memoria.

  • Cada posición de memoria tiene una dirección a la que se hace referencia cuando se desea leer o escribir.

16 / 21

Componentes de la arquitectura de von Neumann

Unidad central de procesamiento

17 / 21

Componentes de la arquitectura de von Neumann

Unidad central de procesamiento

  • La Unidad Central de Procesamiento o CPU (Central Processing Unit) se encarga de ejecutar las instrucciones de los programas.

17 / 21

Componentes de la arquitectura de von Neumann

Unidad central de procesamiento

  • La Unidad Central de Procesamiento o CPU (Central Processing Unit) se encarga de ejecutar las instrucciones de los programas.

  • Está compuesta por dos partes:

    • La Unidad de Control: determina cuál es la siguiente instrucción a ejecutar. Contiene memorias temporales de alta velocidad y poca capacidad llamadas registros, para almacenar los operandos y el resultado de las instrucciones.

    • La Unidad de Aritmética y Lógica o ALU (Arithmetic and Logic Unit): ejecuta las operaciones aritméticas y lógicas.

17 / 21

Componentes de la arquitectura de von Neumann

Sistemas de entrada y salida

18 / 21

Componentes de la arquitectura de von Neumann

Sistemas de entrada y salida

  • Permiten que la computadora interactúe con el usuario y, en general, con el mundo exterior.

18 / 21

Componentes de la arquitectura de von Neumann

Sistemas de entrada y salida

  • Permiten que la computadora interactúe con el usuario y, en general, con el mundo exterior.

  • Algunos ejemplos son el teclado y el ratón, como sistemas de entrada, y la pantalla y la impresora, como sistemas de salida.

18 / 21

Código binario

19 / 21

Código binario

  • Los CI de las computadoras usan voltajes bajos y altos para representar dos posibles valores de información: 0 y 1. Este es un sistema binario y cada dígito binario (0 o 1) se denomina bit (binary digit).

19 / 21

Código binario

  • Los CI de las computadoras usan voltajes bajos y altos para representar dos posibles valores de información: 0 y 1. Este es un sistema binario y cada dígito binario (0 o 1) se denomina bit (binary digit).

  • Los bits se agrupan (por ejemplo, en bytes = 8 bits) para representar elementos de información más complejos, como números más grandes o carácteres de texto. Por ejemplo:

    • El número decimal 14 se representa en binario como 1110:
      1110 = 2^3*1 + 2^2*1 + 2^1*1 + 2^0*0 = 8 + 4 + 2 + 0 = 14
    • La palabra bit se representa en código ASCII como:
      01100010 01101001 01110100 = bit
19 / 21

Lenguaje máquina

20 / 21

Lenguaje máquina

  • El lenguaje máquina es un conjunto de instrucciones binarias interpretables por un CPU. Las instrucciones representan acciones a ser ejecutadas por la computadora. Cada CPU tiene su propio lenguaje máquina.

20 / 21

Lenguaje máquina

  • El lenguaje máquina es un conjunto de instrucciones binarias interpretables por un CPU. Las instrucciones representan acciones a ser ejecutadas por la computadora. Cada CPU tiene su propio lenguaje máquina.

  • Un programa consiste de una secuencia de instrucciones en lenguaje máquina.

20 / 21

Lenguaje máquina

  • El lenguaje máquina es un conjunto de instrucciones binarias interpretables por un CPU. Las instrucciones representan acciones a ser ejecutadas por la computadora. Cada CPU tiene su propio lenguaje máquina.

  • Un programa consiste de una secuencia de instrucciones en lenguaje máquina.

  • Por ejemplo, la siguiente instrucción suma los contenidos de los registros 1 y 2 y almacena el resultado en el registro 6 de un CPU:

Instrucción de suma en lenguaje máquina. Fuente Machine code - Wikipedia.
20 / 21

Lenguajes de programación

21 / 21

Lenguajes de programación

  • Debido a que programar una computadora en lenguaje máquina es excesivamente lento y complicado, en la década de 1950 comenzaron a crearse lenguajes de programación que, en lugar de unos y ceros, consisten de instrucciones formadas por palabras, usualmente en idioma inglés. Por ejemplo, el siguiente programa en lenguaje C imprime la hilera de texto "hello, world\n":

21 / 21

Lenguajes de programación

  • Debido a que programar una computadora en lenguaje máquina es excesivamente lento y complicado, en la década de 1950 comenzaron a crearse lenguajes de programación que, en lugar de unos y ceros, consisten de instrucciones formadas por palabras, usualmente en idioma inglés. Por ejemplo, el siguiente programa en lenguaje C imprime la hilera de texto "hello, world\n":

21 / 21

Contenidos

  • Características generales de las computadoras.

  • Historia de la computadora

    • Primeras computadoras.

    • La máquina de Turing.

    • Computadoras eletrónicas.

  • La arquitectura de von Neumann.

  • Lenguaje máquina.

  • Lenguajes de programación.

2 / 21
Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow