Conceptos básicos de computación
Agenda
- Analógico / Digital
-
Bases numéricas
- Base 2, 10, 16...
- bits y bytes
-
Hardware
- Partes principales
- Chips y transistores
-
Software
- Sistema operativo
- Programas
- Codificación de caracteres, MIME type
La tecnología no es buena
ni mala,
ni tampoco neutral»
Melvin Kranzberg
Analógico / Digtal
De la realidad a números
¿Qué es una señal digital?
Una señal digital es una señal usada para representar datos como una secuencia de valores discretos. Para cada instante estos valores pueden tomar un valor de un conjunto finito de valores.
Proakis, John G. (2007) Digital Signal Processing. Pearson Prentice Hall
En cambio, una señal analógica es de naturaleza continua.
Discretizar para manipular
Esta discretización,
¿cómo afecta a los compositores?
Continuo
Discreto
¿Continuo?
¿Discreto?
Compartir es bueno,
y con tecnología digital, compartir es fácil.
Richard Stallman
¿Por qué se digitaliza?
Ventajas
Al ser valores discretos se pueden instrumentar técnicas de detección y corrección de errores, tanto en la transmisión como al persistir en memoria.
Pasar la realidad a números, todo lo que puede procesar un computadora
¿Cómo se digitaliza?
Parámetros
- Frecuencia de muestreo
- Resolución
Frecuencia de muestreo
Señal analógica
Muestras digitales
t
Resolución
2 bits por muestra
3 bits por muestra
No puede ser, pero es. El número de páginas de este libro es exactamente infinito
Borges, "El libro de arena"
Ejercicios
Responda si es verdadero o falso
- Digitalizar es convertir un libro en un archivo digital.
- Digitalizar una señal es tomar muestras de ella de modo que, poco espaciadas, puedan utilizarse para producir una réplica perfecta.
- Sólo cuando los datos son procesados, organizados, estructurados o presentados en contexto es que podemos hablar de información.
Bases numéricas
Representando números
Binario (base-2):
0, 1
Decimal (base-10):
0 ... 9
Hexadecimal (base-16):
0 ... 9, A ... F
El propósito de la computación es el entendimiento, no números
Richard Stallman
Binario
2
10
Solo hay 10 clases de personas,
las que saben binario y las que no.
bit
Acrónimo de binary digit, dígito binario.
El bit es la unidad mínima de información empleada en informática, en cualquier dispositivo digital, o en la teoría de la información
Byte
Conjunto ordenado de 8 bits
Decimal | Binario | Hexadecimal |
---|---|---|
127 | 0111 1111 | 7F |
192 | 1100 0000 | C0 |
168 | 1010 1000 | A8 |
nibble
Normalmente se lo representa como un un número hexadecimal de dos cifras
Medida de datos
Se utiliza el byte y sus múltiplos para medir cantidad de datos
Nombre | Símbolo (SI) | Múltiplo |
---|---|---|
bit | b o bit | 0/1 |
byte | B | 8 bits |
kilobyte | kB | 1000 bytes |
megabyte | MB | 10⁶ bytes |
gigabyte | GB | 10⁹ bytes |
terabyte | TB | 10¹² bytes |
petabyte | PB | 10¹⁵ bytes |
Si usamos potencias de 2 (IEC): kiB ("kibibyte"), MiB, GiB...
1000 vs 1024
Velocidad de transferencia
Se suele expresar en bits por segundo
kilobits por segundo | kbps | 1000 bits por segundo | audio |
megabits por segundo | mbps | 10^6 bits por segundo | internet |
gigabits por segundo | gbps | 10^9 bits por segundo | redes |
megabytes por segundo | MBps o MB/s |
10^6 bytes por segundo | aplicaciones |
Estoy fascinado con la idea de que la genética es digital. Un gen es una larga secuencia de letras codificadas, como la información de la computadora. La biología moderna se está convirtiendo en una rama de la tecnología de la información.
Richard Dawkins
Hexadecimal
Representar números con solo dos símbolos (0/1) es inconveniente para humanos. Podríamos usar decimal, pero es más sencilla la conversión usando una base múltiplo de 2 como ser 16. Con 16 símbolos:
0000 | 0 |
1001 | 9 |
1010 | A |
1111 | F |
Para evitar confusiones se suele agregar un " 0x":
0000 1111 ₂ == 0x0F == 15 ₁₀
Base64
Utilizada para realizar codificación de binario a texto, representado con 64 caracteres ASCII.
RFC 3548. También usado Base64 (RFC 4648).
Ejemplo: Un correo por dentro
Delivered-To: bernardo.alba@unservidor.com Return-Path: <alicia@uba.ar> MIME-Version: 1.0 Received: by 10.107.46.7 with HTTP; Thu, 28 Sep 2017 06:14:11 -0700 (PDT) X-Originating-IP: [157.92.3.166] From: Alicia <alicia@uba.ar> Date: Thu, 28 Sep 2017 10:14:11 -0300 Subject: Ejemplos para las clases To: Bernardo Alba <bernardo.alba> Content-Type: text/plain; charset="UTF-8"
Les envio lo prometido para trabajar en las próximas clases.
Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
<div><font color="#1F1F1F">Les envio lo prometido para trabajar en las clas= es</font></div>
Content-Type: application/msword; name="ejemplos.doc" Content-Transfer-Encoding: base64
UEsDBBQAAAgAABOBjElexjIMJwAAACcAAAAIAAAAbWltZXR5cGVhcHBsaWNhdGlvbi92bmQub2Fz aXMub3BlbmRvY3VtZW50LnRleHRQSwMEFAAACAAAE4GMSSJYob2WKQAAlikAABgAAABUaHVtYm5h jEkAAAAAAAAAAAAAAAAaAAAAAAAAAAAAAAAAADFGAABDb25maWd1cmF0aW9uczIvc3RhdHVzYmFy L1BLAQIUABQACAgIACqBjEm092jSBQEAAIMDAAAMAAAAAAAAAAAAAAAAAGlGAABtYW5pZmVzdC5y ZGZQSwECFAAUAAgICAAqgYxJc1inaywBAAChBAAAFQAAAAAAAAAAAAAAAACoRwAATUVUQS1JTkYv bWFuaWZlc3QueG1sUEsFBgAAAAASABIAqgQAABdJAAAAAA==
Ejercicios
Responda si es verdadero o falso
- Existen números naturales que pueden ser representados en un sistema numérico (una base) pero no en otro.
- El uso de la representación hexadecimal es muy infrecuente en las tecnologías de información.
- Solo se puede pasar a binario las potencias de 2 (4, 8, 16...).
- No toda forma de representación numérica es alguna variante de la notación posicional.
- La menor medida de dato posible es el byte.
- La velocidad de datos generalmente se mide en bits por segundo y el tamaño se mide en bytes
- ¿Cuántos números puedo representar si dispongo de 1 bit? ¿Y con 2? ¿Con 3? ¿Con n?
- Escriba en decimal y en binario los siguientes números representados en hexadecimal.
- 0x00FF00
- 0x0A
- 0xFF
- 0xFFFF
Problemas
Hardware
Arrojable por la ventana
Turing
von Neumann
Las 4 partes básicas de una computadora
- Entrada: Inputs
- CPU: Central Processing Unit
- Memoria
- Salida: Output
CPU
Entrada
Memoria
Salida
Inputs
Conversión analógico-digital
- micrófono
- pantalla táctil
- cámara
- mouse
- teclado
- acelerómetro y giróscopo
- ...
Central Processing Unit
CPU
Instrucciones a
procesar
Datos a
procesar
Datos
procesados
RELOJ
Procesador
Intel C8086, 5 MHz
1978-1990s
- Unidad de control (CU)
controla el movimiento de datos - Unidad aritmético-lógica (ALU)
calculadora - Registros del procesador
memoria interna muy rápida
<- con tapa sin tapa -> por dentro | v
Memoria
-
Volátil: rápida, de corto plazo, requiere alimentación
- registros del procesador
- memoria caché (KASH)
- memoria RAM principal
- buffer (amortiguador): normalmente entre periféricos
-
No volátil: más lenta, de largo plazo, no requiere alimentación
- ROM/flash
- disco rígido
- pendrive
Memoria caché
Memoria utilizada para datos de tal forma que futuros pedidos por parte del procesador de esos mismos datos puedan ser satisfechos rápidamente.
Estos datos pueden ser el resultado de un cálculo previo o el duplicado de un dato guardado en otra parte, como ser la memoria principal.
Jerarquía de memoria
Outputs
Conversión digital-analógica
- interfaz de video → pantalla
- interfaz de sonido → parlantes
- ...
El hardware eventualmente falla,
el software eventualmente funciona
Michael Hartung
Otras partes
- Motherboard
- Slots de expansión y puertos
(USB, HDMI, de SD) - Fuente de poder (PSU)
Motherboard
Fuente de poder
Power Supply Unit (PSU)
Alimentación de
dispositivos
Alimentación del motherboard
- G, Gate, Compuerta
- S, Source, Fuente
- D, Drain, Drenador
G
S
D
Unos 3 mil millones en un celular actual.
Ejercicios
Responda si es verdadero o falso
- La computadora tiene 3 partes básicas.
- Toda computadora tiene una pantalla.
- Existen computadoras sin memoria caché.
- Los celulares tienen una arquitectura esencialmente distinta a una computadora de escritorio.
- La memoria virtual es parte de la memoria principal.
- Pruebe instalar alguna app que le muestre los valores de hardware y valores de sus periféricos de entrada.
- Si tiene acceso una computadora de escritorio a la cual puede sacarle la tapa, hágalo. Trate de identificar cada una de las partes.
- ¿Cuántas partes puede identificar en la siguiente imagen?
Problemas
Conexiones
CPU ↔ Memoria
Software
Corriendo por las venas de la computadora
Debajo de la superficie de la máquina, el programa se mueve. Sin esfuerzo, se expande y contrae. En gran armonía, los electrones se separan y reagrupan. Las formas en el monitor no son más que ondas en el agua. La escencia permanece invisible debajo.
Master Yuan-Ma, The Book of Programming
Proceso de arranque
Bootstrapping: Desde que encendemos la computadora hasta que podemos utilizarla suceden varias cosas
-
UEFI/BIOS (un firmware)
-
POST (Power On Self Test): Software de bajo nivel que inicializa y verifica que esté todo bien.
-
Busca dispositivo iniciable (booteable)
-
Le pasa el manejo al sistema operativo
-
-
Bootloader (por ej GRUB)
-
Sistema operativo → Kernel
Espacio de usuario
Aplicaciones
Sistema operativo
Espacio de kernel
Administrador de procesos, memoria, archivos, I/O
Hardware
Luego se inicializan drivers, el administrador de ventanas y demás procesos del sistema.
Partición y
sistemas de archivo
Antes de poder usar una memoria no volátil hay que prepararla. A este proceso se le llama formato.
Sistema operativo
Software o conjunto de programas de un sistema informático que gestiona los recursos de hardware y provee servicios a los programas de aplicación.
Tanenbaum, A. (1992) Modern Operating Systems, Englewood Cliffs: Prentice-Hall;
Capas de abstracción
Usuario
aplicaciones
Sistema operativo
Kernel
Hardware
(CPU, memoria, dispositivos)
Directorios y archivos
- Particiones: Contenedor de archivos y directorios
- Directorios: Contenedor de archivos
-
Archivos: Conjunto ordenado de bytes
- Binarios
- De texto plano
Tipos de archivo
-
Binarios
- Ej: DOC (.doc, docx), MPEG Layer 3 (.mp3), JPEG (.jpg), ZIP...
-
De texto plano:
- Contienen únicamente texto legible por humanos
- Utilizan necesariamente una codificación de caracteres (por ej. ASCII, UTF-8 e ISO-8859-1).
- Algunos editores de texto plano son Atom.io y Visual Studio Code.
- Ej: XML, HTML, JSON, YAML, Markdown...
Metadatos de archivo
File: 'manejar.py' Size: 140 Blocks: 32 IO Block: 4096 regular file Device: 34h/52d Inode: 1179711 Access: (0664/-rw-rw-r--) Access: 2018-03-30 22:45:05.297124216 -0300 Modify: 2018-03-30 22:38:13.999571917 -0300 Change: 2018-03-30 22:45:05.289124184 -0300 Birth: -
Virtualización
Codificaci�n de caracteres
Codificaciones de caracteres más comunes
binario | decimal | hexa | caracter |
---|---|---|---|
100 0000 | 64 | 40 | @ |
100 0001 | 65 | 41 | A |
100 0010 | 66 | 42 | B |
100 0011 | 67 | 43 | C |
100 0100 | 68 | 44 | D |
100 0101 | 69 | 45 | E |
100 0110 | 70 | 46 | F |
100 0111 | 71 | 47 | G |
... | ... | ... | ... |
Tabla ASCII
Cuando "hacemos Alt+64" estamos indicando "ingresar el caracter nº 64 de la tabla ASCII".
Un archivo que contenga los caracteres "ABC@" se vería en hexa...
La palabra "Wikipedia" representada en binario y luego en código ASCII. Cada uno de los 9 caracteres utiliza 1 Byte (totalizando 72 bits).
57 | 69 | 6b |
---|---|---|
69 | 70 | 65 |
64 | 69 | 61 |
Los mismos caracteres en hexa
¿Fin de línea?
LF: line feed
avance de línea
0x0A, 10
CR - carriage return
vuelta de carro
0x0D, 13
LF: Sistemas basados en Unix como ser Linux (Android), Mac OS X, etc.
CR+LF: Sistemas no basados en Unix como ser DOS, Microsoft Windows, etc.
Unicode
Mapeo entre símbolos y números (básicamente)
- Administrado por el Unicode Consortium
- También conocido como
Universal Coded Character Set (UCS) - Estándar ISO 10646
- Áreas para caracteres latinos, cirílicos, árabes, hebreos, chinos, japoneses, lenguas muertas, etc.
¡UTF-8 es la solución!
¡Le garantizamos será su codificación favorita!
¨Cansado de lidiar con problemas
de codificaci¢n de caracteres?
Comienzo de espacio publicitario...
UTF-8
Unicode Transformation Format
Ventajas
- Permite codificar cualquier caracter Unicode
- Para escribir texto de cualquier lenguaje
- Archivos XML, JSON y HTML se suelen codificar en UTF-8
- No hay necesidad de buscar la página de códigos (code page correcta)
Desventaja
- Según los caracteres utilizados el archivo resultante puede ser considerablemente de mayor tamaño, aproximadamente el doble en griego o cirílico, el triple en hindi o tailandés.
😍
Código URI
percent-encoding, URL encoding
Utilizado para escribir URIs. Permite codificar caracteres reservados, no reservados, o incluso información binaria.
https://duckduckgo.com/?q=c%C3%B3digo%20uri
https://duckduckgo.com/?q=código uri
RFC 3986
Multipurpose Internet Mail Extensions
Permite saber cómo interpretar un conjunto de datos, como por ejemplo un archivo.
Se lo utiliza ampliamente en internet, particularmente en el protocolo HTTP.
También conocido como
Media Type o Content-Type
Se compone de un tipo, un subtipo
y cero o más parámetros opcionales.
Ejemplo: Un archivo HTML podría designarse como
text/html; charset = UTF-8.
-
text es el tipo
-
html es el subtipo
-
charset = UTF-8 es un parámetro opcional que indica la codificación del caracteres.
Algunos de los tipos más usados
extensión | MIME type |
---|---|
.txt | text/plain |
.xml | text/xml |
.json | application/json |
.html | text/html |
.mp3 | audio/mpeg3 |
.png | image/png |
.jpg | image/jpeg |
.doc | application/msword |
application/pdf |
Programación
Esencialmente un programador escribe archivos de texto plano. Estos luego se traducirán en archivos binarios con instrucciones que la computadora puede entender (código de máquina).
El Tao engendró al lenguaje de máquina. El lenguaje de máquina engendró al ensamblador.
El ensamblador engendró al compilador. Ahora existen diez mil lenguajes.
Cada lenguaje tiene su propósito, aunque sea humilde. Cada lenguaje expresa el Yin y el Yang del software. Cada lenguaje tiene su lugar dentro del Tao.
Pero no programes en COBOL si puedes evitarlo.
Geoffrey James (1987). El tao de la programación
Compilador (traductor)
¿Cómo se comunica entre sí los programas?
Mediante APIs
Application
Program
Interface
La interfaz de usuario del desarrollador.
En la web se utiliza un caso particular llamada API REST
Capas en software
Cinco capas de software:
Esta es una de las formas de esquematizar en capas
el software, datos y su interacción con el usuario,
con Internet como contexto.
Ejercicios
Responda si es verdadero o falso: I
- Es posible guardar archivos en una unidad de disco sin formato.
- En las computadoras modernas la pila de la configuración CMOS sigue siendo necesaria.
- Es posible el proceso de inicio de una computadora sin la utilización de una memoria no volátil.
- El usuario interactúa directamente con el kernel del sistema operativo.
- Un archivo de Microsoft Word (.doc o .docx) es de texto plano.
Responda si es verdadero o falso: II
- Sólo es posible virtualizar sistemas operativos huésped del mismo tipo que el anfitrión.
- Existen archivos de texto plano que no requieren ser interpretados con una codificación de caracteres.
- Siendo estrictos todos los archivos son binarios, dado que contienen datos binarios.
- Utilizando ASCII, ¿cuál será el tamaño de un archivo que contiene la palabra "HOLA"?
- En la puerta del departamento de Bender figura el número en binario 0010 0100. Expreselo en decimal y hexadecimal. ¿Qué caracter ASCII le corresponde? ¿Qué código URI?
Problemas: I
- Abra su editor de texto plano favorito. Escriba unas palabras usando caracteres no pertenecientes a la tabla ASCII estándar. Guarde el archivo utilizando diferentes codificaciones, como ser ISO-8859-1 (alias latin1), CP850 y UTF-8.
Abra estos mismos archivos indicándole al editor de texto plano una codificación distinta de la utilizada al guardar. ¿Qué caracteres se visualizan correctamente? ¿Cuales no? ¿Por qué cree sucede esto? ¿Por qué algunos caracteres se ven siempre correctamente?
Problemas: II
Bibliografía y recursos
- Adrian Paenza, "Números binarios"
- Javier Santaolalla, "Hoy sí vas a entender la entropía"
- Bettina Bair; "Inside your computer: Subtítulos en español
- John L. Hennessy, David A. Patterson; "Arquitectura de Computadores: Un enfoque cuantitativo", McGraw-Hill. Capítulos 1, 8.1 y 9.1.
- Quiroga, Patricia; "Arquitectura de computadoras", Alfaomega
- Proakis, John G.; "Procesamiento digital de señales", Pearson Prentice Hall. Capítulo 1.
- W3C, "Character encodings for beginners"
- W3C, "Codificación de caracteres: conceptos básicos"
-
Lightbot : Code Hour: Aprender a programar jugando
Ejercicios: Respuestas
-
Analógico / Digital
-
V/F
- F, F, F, V
-
V/F
-
Bases numéricas
-
V/F
- F, F, V, F, V
-
Problemas
- 2, 4, 8, 2ⁿ
- 0x00FF00==65280₁₀==1111 1111 0000 0000₂
- 0x0A==10₁₀==1010₂
- 0xFF==255₁₀==1111 1111₂
- 0xFFFF==65535₁₀==1111 1111 1111 1111₂
-
V/F
-
Hardware
-
V/F
- F, F, V, F, F
-
V/F
-
Software
-
V/F I
- F, V, V, F, F
-
V/F II
- F, F, V
-
Problemas
- 0x4B, 2410, "$", %24
-
V/F I
¿Sugerencias?¿Comentarios?
Escribinos un email
Conceptos básicos de computación
By Pablo Bianchi
Conceptos básicos de computación
Breve introducción a conceptos básicos de computación
- 1,225