911. ¿Emergencias?
Emergencias, dígame.
Emergencias, dígame...
El 9 de abril de 2014 Emergencias dejó de estar disponible
para millones de personas en todo Estados Unidos.
Estuvo más de seis horas fuera de servicio.
No se atendieron más de 6000 llamadas de emergencia.
El Gobierno detectó que se debía a un ordenador
de un centro de llamadas de Englewood en Colorado.
Fue un simple error de programación.
Los que programaron el ordenador
pusieron un tope de llamadas que se podían registrar.
Un tope que los programadores consideraron inalcanzable.
Pero que se alcanzó esa noche de 2014.
El ordenador siguió las instrucciones.
Llegó al tope y dejó de enrutar llamadas.
El problema no fue por el ordenador
ni por un error en el código.
Fue por la programación.
El proceso de toma de decisiones con el que las personas se comunican
con el ordenador.
Este tipo de poder conlleva una gran responsabilidad ética.
No hay nada como hacerlo.
No hay nada que pueda ocupar su lugar.
Igual que los que construyen una ciudad
determinan cómo se vive en ella,
la programación controla cómo vivimos en internet, que es nuestra forma de vida.
No solo se usa cuando usamos internet,
sino también cuando llamamos a Emergencias
o vamos al médico
o vamos en coche.
Está en nuestro día a día.
Pero solo un 0.33 % de nosotros sabe programar.
Para la gran mayoría es algo muy complicado.
Pero no tiene por qué serlo.
¿Cómo funciona la programación?
¿Y qué mundo nuevo estamos creando con ella?
UNA SERIE DOCUMENTAL ORIGINAL DE NETFLIX
El ordenador.
Una colección ingeniosa de hardware electrónico
que fue creada por el hombre.
Tenemos las máquinas adecuadas para resolver nuestros problemas,
pero no las descripciones adecuadas de cómo resolverlos.
Cuando te hablan de programación te parece algo muy difícil.
No debes olvidar que todo lo que usas en un ordenador
fue creado por un ser humano.
LA PROGRAMACIÓN EN POCAS PALABRAS
Pon que viene un extraterrestre y dice: "¿Por qué es importante?
¿Qué es?".
Yo le diría que vivimos
en una tierra física y hace unos 50 años
unas cuantas personas empezaron a construir otro planeta.
Pero no uno físico, sino uno virtual.
Solo hay que mirar a la gente andando por la calle
con la cabeza inclinada sin quitarle ojo a sus móviles.
Están en ese otro mundo.
Así que de eso va la programación.
Son los cimientos de ese otro mundo.
Este telar es el predecesor de todo ordenador y smartphone
de la Tierra.
Se inventó en 1804
y la mayor innovación fueron estas tarjetas.
Solo algunos ganchos podían pasar por las perforaciones de cada tarjeta.
Con miles de perforaciones en cientos de tarjetas,
los tejedores podían hacer patrones más complejos que antes.
El chal se puso de moda en Europa.
Y los diseños que se tejían eran tan complejos que parecían dibujos,
como este del inventor del telar.
Antes del telar, había gente encargada de seleccionar a mano cada cuerda.
Las matemáticas también se hacían a mano
con "ordenadores".
Los primeros ordenadores eran personas.
Y las mejores máquinas que había
solo podían resolver un tipo de problema matemático,
como el ábaco para sumar y restar.
El matemático Charles Babbage quería una máquina
que resolviese el problema matemático que quisieses
o que hubieses programado.
Propuso "la máquina analítica".
La idea de Babbage le concedió un lugar en la historia.
Los ordenadores fueron inventados originalmente por Babbage,
un inventor británico muy excéntrico.
A Babbage le motivaba cómo funcionaría.
Tenía una copia de este retrato colgada en su casa.
La máquina analítica de Babbage, al igual que el telar de Jacquard,
contenía partes físicas o "hardware".
Y, al igual que con el telar,
podías dar instrucciones al hardware mediante tarjetas perforadas.
Los ganchos pasan por las perforaciones,
pero si no hay perforaciones, son desviados hacia atrás
creando una cadena de cálculos mecánicos.
Y las tarjetas con perforaciones distintas son "software".
Babbage no llegó a terminar la máquina analítica.
Pero una joven que trabajaba con él vio que su potencial
iba más allá de las matemáticas.
Ada Byron, condesa de Lovelace, escribió:
"Los límites de la aritmética fueron superados en cuanto surgió
la idea de aplicar las tarjetas".
Vio lo que veía Jacquard.
Las perforaciones podían representar algo más que números.
Podían ser patrones,
música o frases enteras.
Se puede considerar como una especie de código Morse.
Cada letra del alfabeto Morse se expresa como un conjunto de dos señales.
...O bien...
Es binario.
Y solo con esos pitidos podemos decir cualquier cosa,
como esa llamada de socorro que envió el Titanic en 1912.
"SOS" no significa nada.
Pero es increíblemente fácil de enviar en código Morse.
Hay que tener presente que cada letra se puede expresar como una combinación
de ceros y unos.
¿Te suena?
Esto es el código binario.
Y es la forma de cerrar la brecha entre las máquinas y el lenguaje humano.
Cada uno o cero es un dígito binario o "bit".
Estos son los átomos de la informática moderna.
Quizá los conozcas de otra forma.
Ocho bits son un byte.
¿Sabes esa foto que tienes en el ordenador de 1,1 megabytes?
Está compuesta por ocho millones y ochocientos mil unos y ceros.
Los puntos y rayas del código Morse son solo una forma de escribir y...
Los unos y ceros del código binario son la forma en que escribimos
lo que está pasando en un ordenador moderno.
Con o sin una orden.
Esto es un circuito eléctrico sencillo.
Imagina millones de estos funcionando juntos.
Así es un ordenador de hoy.
En un circuito eléctrico, esto es un bit.
¿La bombilla está apagada? Cero.
¿Encendida? Uno.
Los ordenadores solo entienden la electricidad.
Así que lo que los programadores hacen con los ordenadores es
dar una serie de órdenes de encendido o apagado.
Todo funciona porque, si se combinan correctamente,
las órdenes son lógicas.
Básicamente, la lógica es una serie predecible de hechos o eventos,
como cerrar este interruptor
o hacer que este haga sonar el timbre.
De hecho, los informáticos lo llaman "circuito lógico Y".
O "puerta lógica".
Veamos si consigo hacerlo sin cargarme la mesa.
En una puerta Y ambos circuitos deben estar cerrados
para que se encienda la luz.
Y hay puertas O.
En este caso, la luz se enciende si solo uno de los circuitos está cerrado.
O pongámoslo de otra forma.
Si uno de estos circuitos está cerrado, entonces enciende la luz.
Ese tipo de petición con "si" y "entonces"
es un algoritmo.
En la cultura pop actual, la palabra "algoritmo" causa confusión.
No es la primera vez que hay un problema con los algoritmos.
Casi nadie sabe cómo funcionan los algoritmos.
Pero ¿qué demonios es un algoritmo?
Pero un algoritmo solo es un conjunto de instrucciones.
Imagina que vas al súper.
Puedes ir por la izquierda y luego girar a la derecha.
O puedes ir por la derecha y luego girar a la izquierda.
O puedes ir cuatro veces por la izquierda,
dar una vuelta al parque, cruzar una autopista,
y luego ir cuatro veces por la derecha.
Hay distintas instrucciones para llegar al mismo sitio.
En programación puede haber distintos algoritmos
para resolver el mismo problema.
El objetivo es encontrar el más elegante y eficiente.
El mejor código no se repite.
Es muy elegante. Es formidable.
Los ordenadores con algoritmos hacían lo que les pedíamos,
pero mucho más rápido.
Esto dio mucho poder a la gente.
Cuando los científicos empezaron a desarrollar la bomba de fusión,
usaron principalmente ordenadores humanos.
Pero luego recurrieron a otro ordenador.
El ordenador ENIAC realizó cálculos termonucleares durante 6 semanas.
Los resultados obtenidos contribuyeron
a realizar en 1952 la primera prueba con éxito
de una bomba muchísimo más potente que las bombas atómicas de fisión
que se usaron en Hiroshima y Nagaski durante la Segunda Guerra Mundial.
Poder programar aumenta la capacidad de la gente de hacer
lo que se proponga.
Pero en los años 40 aún suponía mucho trabajo.
Programar con ceros y unos no era suficiente.
La gente quería sacar más partido a lo que ofrecía la programación.
Pero quería que resultase más fácil programar.
Desde entonces, se ha intentado que la programación se parezca más y más
al lenguaje humano
y eso llevó a inventar lo que los programadores usan actualmente:
los lenguajes de programación.
Estos lenguajes son muy abstractos si los comparamos con los ceros y unos.
Lo abstracto no gusta a la gente.
Los lenguajes abstractos se reducen a los mismos unos y ceros,
solo que están mejor organizados.
Pensemos en la biología.
Los humanos son muy complejos,
pero el 99 % de nuestro cuerpo está compuesto por solo seis elementos.
Y podemos hablar de moléculas grandes.
Entre esa capa de organización y la del ser vivo más simple
hay una gran diferencia.
Y los humanos tienen cerebros que hacen cosas tan avanzadas
que cuesta creer que estén hechos de lo mismo.
Los ordenadores son bastante parecidos, pero son mucho más sencillos.
Eso es lo bueno.
En la programación lo que se intenta es subir este recuadro hacia arriba
y alejarse del sistema binario para poder
programar de una forma más fácil, rápida y potente.
Sin ni siquiera tener que lidiar ni entender
los sistemas binarios ni las puertas lógicas que hay detrás.
Eso permite a los programadores hacer los productos que tanto usamos.
El primer paso para llegar a ese punto fue...
El lenguaje ensamblador, que es mucho más fácil de leer y escribir.
En lugar de 0-1-0-0-0-1-1-1 pongamos que usamos la palabra ""ADD".
Un programa llamado "el ensamblador" traduce las letras
"A-D-D" a sus correspondientes ceros y unos.
A este nivel, el sistema binario está organizado en letras y números,
igual que los átomos se organizan en moléculas.
Pero programar en lenguaje ensamblador no era fácil del todo
porque todos los ordenadores usaban distintos lenguajes ensambladores.
Si hacías un programa para un ordenador, solo funcionaba en ese ordenador.
La gente no tardó en plantearse
que lo que quería que tuviese un ordenador
eran cosas que usamos a diario.
Hay lenguajes de programación
que creamos con el lenguaje ensamblador.
A partir de esos lenguajes creamos otros lenguajes de programación.
Seguro que os suenan.
- LISP. - BASIC.
- Java. - C++.
- Python 3. - HTML 5.
PEARL, PHP, un poco de C...
Igual que los idiomas ofrecen distintas formas
de expresar la misma idea a otras personas,
los lenguajes de programación son formas distintas de expresar
la misma idea a los ordenadores.
Hay más de un lenguaje de alto nivel
porque, para empezar, cada lenguaje
tiene distintas necesidades.
Veamos estos dos.
Este, COBOL, se creó a finales de los 50
para que a las empresas les resultase más fácil programar.
Se parece mucho al inglés si todas las conversaciones
acabasen con "STOP RUN".
Este, CPL, se desarrolló en los 60 e incluía más computación científica.
Es como la evolución biológica.
Los organismos se hacen más complejos y desarrollan características
para adaptarse mejor a su entorno.
Y, a decir verdad, también es una cuestión de gusto.
A cada uno le gusta expresarse de una forma distinta.
Por ejemplo, el lenguaje C++.
A Elon Musk no le gusta.
Tú podrías hacer uno.
Es un lenguaje de alto nivel hecho con la palabra "moo" (mu).
Va en serio, se llama COW (vaca).
Este está formado por citas de Arnold Schwarzenegger.
Cada vez que pienso que ya no se van a hacer más
alguien se inventa uno nuevo y consigue un grupo de admiradores.
Así que dudo que dejen de surgir nuevos lenguajes.
Y todos estos lenguajes se basan en la lógica.
Por ejemplo, un programador de Netflix podría decir:
"Si lleva más de dos horas viendo Netflix,
muestra esto".
Pero para que la programación llegase a la vida de las personas
debían usar ordenadores.
Así que los ordenadores debían ser más sencillos e intuitivos.
Y eso requería pegar otro gran salto.
Uno que empezó aquí,
en una demostración que hizo Doug Englebart en 1968.
Vamos a ver la pantalla en la que trabaja
y cómo se mueve ese punto
respecto al movimiento del ratón.
Hoy en día la gente no programa escribiendo algo
en un trozo de papel y dándoselo a alguien para que lo pase al ordenador.
Hoy, te sientas y tienes una pantalla con una interfaz gráfica de usuario.
Lo que se conoce como "GUI".
Con las GUI, se puede programar sin escribir nada
o programar de una forma más fácil.
Lo normal es trabajar en un entorno de programación
del tipo que Alan y sus compañeros
crearon tan bien
en el Centro de Investigación Xerox de Palo Alto a principios de los 70.
Hablamos de Alan.
De este Alan.
Lo considero el padre de los ordenadores personales
porque fue el primero en forjar esa visión.
Y he de confesar que cuando lo hizo pensé que era ciencia ficción.
Cuando se hacen grandes cosas
suele haber mucha gente detrás.
Y la verdad es que Park lo bordaba.
Parecía que era magia.
La interfaz gráfica de usuario permitió que millones de personas
usaran ordenadores de una forma que les resultara natural.
Cuando Xerox anunció por primera vez las GUI en 1979,
mostró cómo la programación podía cambiar nuestro día a día.
Entras en tu despacho y una máquina Xerox
te muestra tu correo en una pantalla.
Pronto, con un sistema Xerox como este
podrás gestionar tu recurso más valioso.
La información.
Había gente como yo y muchos de los investigadores
que querían hacer un mundo mejor.
Lo que tenían en mente estaba relacionado con el perfeccionamiento humano.
Algo que pudiese interactuar con nosotros,
la gente gente corriente, y permitirnos hacer más cosas que antes.
Sí que nos permitió hacer más cosas.
Las GUI fueron un gran paso en ese sentido.
Y luego llegó la siguiente innovación que cambaría el mundo.
Una nueva forma de distribuir todo lo que podíamos hacer con la programación.
En la tele, empezaron a predecir lo que supondría poder acceder a ello.
Imaginaos que os sentáis con vuestro primer café del día,
y encendéis vuestro ordenador personal para leer el periódico.
Imaginaos un mundo en el que todos los libros, pinturas
y películas se puedan ver de forma instantánea en casa.
Algo realmente increíble está a punto de llegar.
Solo es una máquina, ¿no?
No, qué va.
Los mejores productos de software de hoy usan todas estas innovaciones.
Un estudiante universitario usó PHP, un lenguaje de programación de alto nivel,
para crear algo que se compartiese en internet
y que requería usar ordenadores con GUI.
Lo explicó en 2004 en su primera entrevista en televisión.
Es un directorio en línea que conecta a la gente
de distintas universidades a través de sus redes sociales.
Ahora somos 100 000 personas, así que ya veremos cómo acaba la cosa.
La cosa acabó teniendo a más de 2000 millones de personas
en Facebook cada mes.
Hoy, los programadores cambian la vida de millones de personas.
Cómo trabajan, compran, comen, ligan y se relajan.
¿Qué estás haciendo ahora mismo?
Me estás viendo en un navegador web de Netflix.
Netflix en sí es un código y se ejecuta en un navegador web
que es un código
que se ejecuta en un ordenador diseñado con un código.
Y así sucesivamente.
Un gran código es cuando eres el arquitecto de un museo
en el que millones de personas piensan,
visitan y usan todos los días.
No hay nada como escribir códigos porque estás creando algo.
Tienes una idea de cómo algo debería funcionar,
te sientas delante de un ordenador
y lo haces realidad.
Eso conlleva una gran responsabilidad.
Hay un límite de velocidad.
No puedes ir a más de 100 km/h.
Vale.
Pero ¿y si tuvieras un coche y el ordenador dijera
que el coche no debe superar los 100 km/h"?
Eso es otra forma de controlarte.
Al controlar lo que podemos hacer, un código puede tener
un efecto más reglamentario que lo que la ley puede conseguir.
Y eso podría ser algo bueno.
Hay unos seis millones de accidentes de coche en EE. UU. cada año
y un estudio reveló que el 94 % son por culpa del conductor.
Los avances en la programación podrían salvar millones de vidas.
Pero también podrían poner nuestra vida en peligro de formas nuevas.
Tengo miocardiopatía hipertrófica.
Ese es el término médico y significa que mi corazón es muy grande.
Mi corazón es literalmente grande.
Es tres veces más grande que el de una persona normal.
Me enteré cuando tenía 30 años y la posibilidad de morir a los 40
era muy grande.
El electrofisiólogo me dijo: "No hay ningún problema
porque puedes usar un desfibrilador".
Este dispositivo funciona con un código.
Hace unos años cuando estaba embarazada tuve palpitaciones.
El 25 % de las mujeres tiene palpitaciones y es algo normal.
Pero mi dispositivo pensó que mi ritmo cardíaco era peligroso
y me dejó helada.
A los fabricantes les da igual si una embarazada se queda sorprendida.
Es lo último que quieren.
Ni se les ha pasado por la cabeza.
Hay una gran cantidad de decisiones que tomar
y los programadores son los que las toman.
Y es inevitable
que haya alguna combinación de circunstancias
que no hayan previsto.
Así que lo que intentamos enseñar
cuando enseñemos programación
es cómo puedes tener en cuenta
todas esas condiciones.
Cómo puedes abarcar tanto
sin que te dé algo al ver la cantidad de cosas
que debes tener en cuenta.
Y eso ganará fuerza porque hemos empezado a programar
de una forma completamente nueva.
En la programación tradicional escribimos instrucciones para el ordenador.
Pero ahora podemos darle una serie de entradas
y una serie de salidas
para que escriba sus propias instrucciones.
Lo que haces es darle al ordenador
un montón de ejemplos
y le dices "Esto es una fiesta".
Y luego usas otras cosas.
Esto es un dentista y no una fiesta.
Esto es una clase y no una fiesta.
El ordenador usa esto para tratar de crear
un sistema de clasificación.
Esto se denomina aprendizaje automático.
Hoy en día, cuando se habla de inteligencia artificial
se habla de esto.
Esto es otro concepto y una forma distinta de hacer las cosas
porque no es la manera en la que agrupamos estas cosas.
Son algoritmos de aprendizaje automático porque el ordenador
crea su propio conjunto de instrucciones.
Pero, claro, al final también se traducen
en pequeñas instrucciones.
En Google Translate había más de un millón de líneas de código.
Eso exige escribir un millón de pequeñas instrucciones.
Ahora Google Translate tiene unas 500 líneas de código
que usan el aprendizaje automático.
Supongamos que por un descuido en ninguna de las fotos de fiestas
sale gente negra o hispana.
El ordenador podría establecer una regla
en la que solo se invitase a las fiestas a blancos y asiáticos.
Hay muchos programadores blancos y asiáticos.
Pero hay que meter a más gente en el saco por un millón de razones.
Harán mejores preguntas si se incluyen más experiencias.
Pero si estás añadiendo datos a tu sistema de aprendizaje automático,
pongamos que es un sistema penal que incluye datos racistas
y que los programadores del aprendizaje automático
son partidarios de la diversidad.
Diferentes razas, caras y orígenes.
Ese sistema de aprendizaje seguirá aprendiendo de los datos.
Si no hay gente corrigiendo constantemente estas cosas,
los datos históricos nos llevarán a cometer los errores del pasado.
La programación deriva de la creatividad y ambición humanas.
Se lanza el cohete Falcon 9.
Hemos visto algo que no creíamos que pudiéramos ver.
Un agujero negro.
Estamos construyendo un mundo nuevo con más herramientas intuitivas
que podemos usar para hacer que este mundo sea un lugar mejor.
Hemos intentado que los ordenadores estén al alcance
de todo tipo de personas.
En los últimos 50 años hemos visto el fruto de esta revolución.
Por eso es genial vivir en esta época.
Es muy importante recordar que todo lo que usas en tu ordenador
fue creado por un ser humano.
Tú puedes ser una de esas personas y es muy importante que lo seas.
Puedes cambiar el mundo de una forma fundamental.
Va a haber un mundo que use el aprendizaje automático, la información
y la programación tradicional de muchas maneras.
Y lo que debemos hacer como sociedad es decir:
"Vale, tenemos esta tecnología nueva
que en cierto modo puede ser genial. Pero no lo será por sí sola".