Anda di halaman 1dari 37

Introduccin a la

computacin y su historia

Introduccin a la computacin Algoritmos y Programacin 1


Informtica
Es el rea de la ciencia y la tecnologa que estudia
el manejo de la informacin usando
computadores.
Cmo procesar datos existentes para extraer
nueva informacin til para algn propsito?
Y cmo hacerlo de manera eficiente?

Entendiendo la
tecnologa y aplicando
A travs de la metodologas
programacin

Introduccin a la computacin Algoritmos y Programacin 2


Programming
Es el proceso mediante el cual transmitimos a un
computador las operaciones que queremos que haga.

Los computadores no entienden espaol (ni tampoco


ingls)!

Debemos traducir del espaol al lenguaje del computador,


que se basa en la electricidad.

Introduccin a la computacin Algoritmos y Programacin 3


The computer
Es una mquina electrnica programable capaz
de recibir datos, memorizarlos, hacer clculos con
ellos y entregar nuevos datos (resultados).

Introduccin a la computacin Algoritmos y Programacin 4


What is a computer good at?
Clculos repetitivos
Clculos aritmticos complejos
Grandes volmenes de informacin
Precisin numrica
Velocidad de procesamiento y respuesta

Y para qu NO es bueno?

Introduccin a la computacin Algoritmos y Programacin 5


History of Computing
Antigedad (hasta WWII)

Anticitera, Grecia, 150 a. C. y 100 a. C


Usada para calcular eventos astronmicos,
encontrada en el fondo del mar.

Calculadora de Pascal, Francia, 1642


Serva para sumar y restar, luego mejorada por
Leibniz multiplicacin y divisin.

Mquina analtica de Babbage, Reino Unido, 1837


Primer computador de propsito general, slo
pudo ser puesto a funcionar 110 aos ms tarde.

Introduccin a la computacin Algoritmos y Programacin 6


History of Computing
Segunda guerra mundial (WWII)
COLOSUS y Bombe (1943) fueron creados para descifrar
las comunicaciones nazis (Enigma), con la ayuda de Alan
Turing.
John von Neumann, Mauchley y Eckert: ENIAC, EDVAC,
EDSAC, etc.
Mquinas de enormes
tamaos y consumo de
energa: tubos de vaco.

Introduccin a la computacin Algoritmos y Programacin 7


History of Computing
Los 60s (post WWI)
Schocley, Bardeen y Brattain, inventaron el
transistor en 1948, trabajando para Bell Labs.
Kilby y Noyce inventaron el circuito
integrado en 1958.
Muchos transistores se
pudieron integrar en un
chip: los computadores se
volvieron ms pequeos,
baratos y rpidos.

Introduccin a la computacin Algoritmos y Programacin 8


History of Computing
Los 80s (el computador personal)
Incremento en miniaturizacin: millones de
transistores en un solo chip.
IBM y Apple comercializaron el computador
personal o de escritorio.

Introduccin a la computacin Algoritmos y Programacin 9


History of Computing
Siglo XXI
Varios procesadores (cores) en un solo chip
Sistemas embebidos: computadores como
parte de otro tipo de dispositivos

Y el futuro?

Introduccin a la computacin Algoritmos y Programacin 10


Capas de abstraccin en
un sistema de cmputo

Introduccin a la computacin Algoritmos y Programacin 11


Computer components
Disco duro
Teclado
Mouse
DDR3 Core i5, i7
Pantalla
DDR4 Cortex M15
Wi-Fi
Audio

Memoria CPU I/O


a
se guard

t a
cu n i ca
e u
ej com
se se

SOFTWARE: HARDWARE: los


los programas circuitos

Introduccin a la computacin Algoritmos y Programacin 12


Von Neumann architecture
Almacena datos e
instrucciones

Memoria

Entiende las Unidad Ejecuta las operaciones


instrucciones y activa las Unidad Aritmtica-
de (clculos)
Lgica
operaciones Control

CPU

I/O

Se comunica con
el exterior

Introduccin a la computacin Algoritmos y Programacin 13


There is no magic!
Cualquier computador es esencialmente capaz
de hacer exactamente lo mismo
Para hacerle entender a un computador lo que
debe hacer, existe una serie de transformaciones
que cruzan mltiples capas de abstraccin.
Porqu es importante la abstraccin?
Cundo es importante la concrecin?

Introduccin a la computacin Algoritmos y Programacin 14


Abstraction layers

Problema

Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Circuitos

Transistores

Introduccin a la computacin Algoritmos y Programacin 15


Problema

Problem
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Ideas, dificultades, oportunidades. Circuitos

Transistores

Planteamos problemas en lenguaje natural, por


ejemplo, espaol.
lenguajes AMBIGUOS!

Ahorita voy a hacer una vuelta


Los estudiantes que sacaron notas bajas deben
repetir la materia

Introduccin a la computacin Algoritmos y Programacin 16


Problema

Algorithm
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Procedimiento paso a paso (para resolver Circuitos

Transistores
un problema) que debe ser
Finito: el procedimiento debe terminar
Calcular todos los dgitos decimales del nmero infinito
Preciso: pasos definidos de manera precisa
Receta de cocina: no deje que se vuelva grumoso
impreciso
Algoritmo: no permita que la variabilidad de la densidad de
masa supere el 5%
Computable: pasos que pueden ser calculados por un
computador
Encuentre el nmero primo ms grande no existe

Introduccin a la computacin Algoritmos y Programacin 17


Problema

Algorithm
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Circuitos

Transistores

Problema

Algoritmo A Algoritmo B Algoritmo C

Requiere el Posibilita la Requiere la


menor nmero concurrencia. mnima
de pasos. cantidad de
memoria.

Introduccin a la computacin Algoritmos y Programacin 18


Problema

Program
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Es la representacin de un Circuitos

Transistores

algoritmo en un lenguaje que


pueda ser procesado por el computador
Implementamos programas
usando lenguajes de programacin
Lenguajes para diferentes propsitos:
Fortran: clculos cientficos
Java: internet, mviles
Python: propsito general, scripts, internet
C: control de bajo nivel, velocidad

Introduccin a la computacin Algoritmos y Programacin 19


Programming language
Es un lenguaje mediante el cual podemos
darle instrucciones al computador.

Lenguajes de alto independientes de la CPU, e.g.


nivel: Python
Lenguajes de assembly => uno para cada
bajo nivel: CPU


0111011

Introduccin a la computacin Algoritmos y Programacin 20


Problema

Program
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Circuitos

Transistores

Algoritmo

Programa en Programa en Programa en


lenguaje C lenguaje Java lenguaje Python

Se ejecuta ms Es ms portable Se escribe ms


rpido rpido

Introduccin a la computacin Algoritmos y Programacin 21


Translator
Programa que traduce un programa escrito en un lenguaje
de alto nivel al lenguaje de mquina, para poder ser
ejecutado por el computador.

C++ Python FORTRAN

TRADUCTOR
Automvil Computador Celular

Dos tipos de traductores: compilador e intrprete

Introduccin a la computacin Algoritmos y Programacin 22


Interpreter vs. compiler
Intrprete: acta en tiempo de ejecucin (runtime)
Compilador: traduccin completa antes de ejecucin

myprog.py myprog.c myprog.java


public class
b=1 int main(void){ HelloWorld { public
vec[a] = func(b) int a, b; static void
a = b+ 1 a = 3; main(String[] args)
if a==10: printf(a=%d, { System.out.println(
b=0 a); a=3"); } }
} exit(0);
print a }
COMPILADOR
(a bytecode)
COMPILADOR
myprog.class
INTRPRETE
010100100101010
(Python engine) 100101010001111
myprog.exe 010100101010001
010100101101001
010100100101010
100101010001111
010100101010001 Java Virtual
010100101101001 Machine

COMPUTADOR COMPUTADOR COMPUTADOR


(Hardware) (Hardware) (Hardware)

hola hola hola

Introduccin a la computacin Algoritmos y Programacin 23


Programming stages
Tiempo de programacin: momento en el
que se escribe el programa

Tiempo de traduccin: momento en el que


el traductor traduce el programa

Tiempo de ejecucin: momento en el que


el programa se ejecuta

Introduccin a la computacin Algoritmos y Programacin 24


ISA: Instruction-set Problema

Algoritmo

architecture
Programa

Instruction-set Architecture

Micro-arquitectura

Conjunto de instrucciones para Circuitos

Transistores

controlar el procesador
Interface entre el software y el hardware
Assembly vs. Machine code

LW R1, 0x8000 0100101011101011


ADD R1, R4, R6 0110111000101010

instruccin operandos => tipos de datos

Introduccin a la computacin Algoritmos y Programacin 25


Problema

ISA
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Circuitos

Transistores

Programa

ARM ISA X86 ISA PowerPC ISA

Consume menos Es ms comn Es ms estable


energa

Introduccin a la computacin Algoritmos y Programacin 26


Problema

Micro-architecture
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Conjunto de mecanismos y estructuras Circuitos

Transistores

de hardware que no estn expuestas al


programador o programa.

Introduccin a la computacin Algoritmos y Programacin 27


Problema

Micro-architecture
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Circuitos

Transistores

X86 ISA

8086 Core i3 Core i7

Introduccin a la computacin Algoritmos y Programacin 28


Problema

Circuits
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Compuertas lgicas que permiten Circuitos

Transistores

hacer operaciones elementales con bits:

INPUT AND OR NOT

0 0 0 0 1 1
0 1 0 1 1 0
1 0 0 1 0 1
1 1 1 1 0 0

Lo van a estudiar en Electrnica Digital

Introduccin a la computacin Algoritmos y Programacin 29


Problema

Transistors
Algoritmo

Programa

Instruction-set Architecture

Micro-arquitectura

Elemento base de la electrnica que Circuitos

Transistores

funciona como un switch.


Fabricados con silicio (CMOS)
Litografa de 10nm

Lo van a estudiar en Electrnica

Introduccin a la computacin Algoritmos y Programacin 30


Summary: abstraction layers
Problema

PROGRAMADOR

Algoritmo

PROGRAMADOR

Programa

TRADUCTOR

Instruction-set Architecture
Micro-arquitectura
Circuitos
Transistores

Introduccin a la computacin Algoritmos y Programacin 31


Codificacin de la
informacin

Introduccin a la computacin Algoritmos y Programacin 32


Binary system
Formato de un nmero decimal:
d0100 + d1101 + d2102 + dn10n

Formato de un nmero binario o en base 2:


b020 + b121 + b222 + bn2n Cul es el nmero ms
grande que puede
b01 + b12 + b24 + b38 + b416 representarse con 8 bits?

Ejemplo:
(1101)2 = (120 + 021 + 122 + 123)10
= (11 + 02 + 14 + 18)10
= 1310
Introduccin a la computacin Algoritmos y Programacin 33
Bits, bytes, words
Bit: unidad absoluta mnima de informacin que
tiene la capacidad de almacenar un 1 o un 0.
Byte: 8 bits, unidad mnima de informacin (bits)
que el procesador puede manejar y la memoria
almacenar.
Un byte puede tomar 256 valores diferentes.
Word: unidad mmxima de informacin bits) que
el procesador puede manejar y la memoria
almacenar; es especfico de la arquitectura del
procesador.
En computadores de escritorio o porttiles es:

32 o 64 bits => 4 u 8 bytes


Introduccin a la computacin Algoritmos y Programacin 34
Memory
Direccin Contenido bits
1 10111010
2 01100011
byte
3 10101000
Cuntas 4 00011011
posiciones de 5 11111010
memoria puedo 6 00000011
direccionar con 7 10111010
direcciones que word (32 bits)
8 01011110
usan 32 bits?
9 00001000
10 10111010
11 11111011
12 10111010

45674 10111010

4.294.967.295 10101000

Direccin
Direccin vs.
vs. Contenido!
Contenido!
Introduccin a la computacin Algoritmos y Programacin 35
Binary information coding
Fragmento de memoria Tabla ASCII
Decimal Carcter Decimal Carcter
Direccin Contenido ASCII
65 A 78 N
3981 01010100 T
66 B 79 O
3982 01001111 O
67 C 80 P
3983 01001100 L
68 D 81 Q
3984 01000101 E
69 E 82 R
3985 01010010 R 70 F 83 S
3986 01000001 A 71 G 84 T
3987 01010010 R 72 H 85 U
73 I 86 V
74 J 87 W
75 K 88 X
Qu palabra ASCII est L Y
76 89
almacenada en ese
77 M 90 Z
fragmento de memoria?

Introduccin a la computacin Algoritmos y Programacin 36


ASCII Table

Introduccin a la computacin Algoritmos y Programacin 37

Anda mungkin juga menyukai