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?

linear
keyboard

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.

Desventajas

Hay una pérdida inherente en el proceso.

Requiere digitalizar (el universo es analógico, ¿cierto??) mediante un conversor analógico-digital
(analog-digital converter ADC).

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

  1. Digitalizar es convertir un libro en un archivo digital.
  2. Digitalizar una señal es tomar muestras de ella de modo que, poco espaciadas, puedan utilizarse para producir una réplica perfecta.
  3. 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

  1. Existen números naturales que pueden ser representados en un sistema numérico (una base) pero no en otro.
  2. El uso de la representación hexadecimal es muy infrecuente en las tecnologías de información.
  3. Solo se puede pasar a binario las potencias de 2 (4, 8, 16...).
  4. No toda forma de representación numérica es alguna variante de la notación posicional.
  5. La menor medida de dato posible es el byte.
  6. La velocidad de datos generalmente se mide en bits por segundo y el tamaño se mide en bytes
  1. ¿Cuántos números puedo representar si dispongo de 1 bit? ¿Y con 2? ¿Con 3? ¿Con n?
  2. Escriba en decimal y en binario los siguientes números representados en hexadecimal.
    1. 0x00FF00
    2. 0x0A
    3. 0xFF
    4. 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

  1. La computadora tiene 3 partes básicas.
  2. Toda computadora tiene una pantalla.
  3. Existen computadoras sin memoria caché.
  4. Los celulares tienen una arquitectura esencialmente distinta a una computadora de escritorio.
  5. 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

  1. 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

  2. Bootloader (por ej GRUB)

  3. 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

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

  1. ASCII
    de American Standard Code for Information Interchange
    1. Code Page 850: CP850



       
  2. Latin 1 (también conocida como ISO 8859-1)
  3. UTF-8
    1. Utiliza Unicode
    2. Ejemplos: U+1F600 😀       , U+1F632 😲

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
.pdf 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

😃 Usuario

🖥️ UI/Presentación: Como son presentados los datos.

🔁 API: Como son accedidos los datos.

🤔 Lógica: Como son procesados los datos.

📦 Base de datos: Como se guardan los datos.

🌎 Hosting: Donde son guardados/persistidos los datos.

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

  1. Es posible guardar archivos en una unidad de disco sin formato.
  2. En las computadoras modernas la pila de la configuración CMOS sigue siendo necesaria.
  3. Es posible el proceso de inicio de una computadora sin la utilización de una memoria no volátil.
  4. El usuario interactúa directamente con el kernel del sistema operativo.
  5. Un archivo de Microsoft Word (.doc o .docx) es de texto plano.

Responda si es verdadero o falso: II

  1. Sólo es posible virtualizar sistemas operativos huésped del mismo tipo que el anfitrión.
  2. Existen archivos de texto plano que no requieren ser interpretados con una codificación de caracteres.
  3. Siendo estrictos todos los archivos son binarios, dado que contienen datos binarios.
  1. Utilizando ASCII, ¿cuál será el tamaño de un archivo que contiene la palabra "HOLA"?
  2. 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

  1. 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

Ejercicios: Respuestas

  • Analógico / Digital
    • V/F
      • F, F, F, V
  • 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₂
  • Hardware
    • ​V/F
      • F, F, V, F, F
  • Software
    • V/F I
      • F, V, V, F, F
    • V/F II
      • F, F, V
    • Problemas
      • 0x4B, 2410, "$", %24

¿Sugerencias?¿Comentarios?

Escribinos un email

o anónimamente

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