911, ¿emergencias?
911, ¿cuál es su emergencia?
911, emergencias.
Novecientos once...
El 9 de abril de 2014, el servicio de emergencias 911
se detuvo de repente
para millones de personas en todo Estados Unidos.
Estuvo fuera de servicio más de 6 horas.
Más de 6000 llamadas de emergencia no pudieron comunicarse.
El gobierno rastreó el problema a una computadora
en un centro de llamadas en Englewood, Colorado.
Fue un simple error de programación.
La gente a cargo de programar esa computadora
eligió hacerlo con un límite máximo de llamadas que podía registrar,
un límite que los programadores pensaban que la computadora nunca alcanzaría.
Pero esa noche en 2014, lo hizo.
La computadora siguió sus instrucciones a la perfección.
Llegó al límite y dejó de enrutar llamadas.
El problema no fue la computadora, y no fue un error en el código.
Fue la programación, el proceso de toma de decisiones
mediante el cual se comunica la gente con la computadora.
Este tipo de poder viene con una gran responsabilidad ética.
No hay nada igual.
No hay nada que lo sustituya.
De la misma manera en que los constructores de una ciudad
determinan cómo se vive en la ciudad,
creo que los códigos controlan cómo vivimos en línea,
que básicamente es cómo vivimos.
No solo cuando entramos a Internet,
sino cuando contactamos a los servicios de emergencia
o vamos al doctor...
...o nos subimos a un auto.
Todos estamos tan cerca de la programación todos los días.
Pero solo un tercio del uno por ciento de nosotros sabe cómo escribirlo.
Para la abrumadora mayoría, es una caja negra.
Pero no tiene que serlo.
¿Cómo funciona realmente la programación?
¿Y qué mundo nuevo estamos construyendo con ella?
UNA SERIE DOCUMENTAL ORIGINAL DE NETFLIX
La computadora.
Una colección ingeniosa de hardware electrónico
fue creada por el hombre.
No es que no tengamos máquinas para resolver problemas,
carecemos de las descripciones para resolver problemas.
Cuando alguien dice programación, piensas que es muy difícil.
Es muy importante recordar que todo lo que usas en una computadora
fue creado por un ser humano.
LA PROGRAMACIÓN
Un extraterrestre nos dice: "¿Qué importancia tiene la programación?".
Yo diría: "Bueno... vivimos en una tierra física y hace unos 50 años,
un pequeño grupo de personas comenzó a construir otro planeta.
Pero no era físico, sino virtual".
Miren por la calle. ¿Ven a la gente caminando
con la cabeza inclinada y viendo sus teléfonos?
Están en ese otro mundo.
Eso es la programación.
Son los bloques de construcción de ese otro mundo.
Este telar es el ancestro de todas las computadoras
y los teléfonos inteligentes en la Tierra.
Fue inventado en 1804,
y la gran innovación fueron estas tarjetas.
Las perforaciones permitían que solo pasaran ciertos ganchos.
Con miles de perforaciones en cientos de tarjetas,
los tejedores podían hacer patrones más complejos.
Chales elaborados se volvieron la furia de la moda en Europa.
Y los diseños tejidos podían ser tan intrincados que parecían dibujos,
como este del inventor del telar.
Antes de estos telares, los hilos individuales
debían ser seleccionados a mano por "niños dibujantes".
Las matemáticas también se hacían a mano
por las llamadas "computadoras".
Las primeras computadoras eran personas.
Y las mejores máquinas que teníamos
solo podían hacer un tipo de problema matemático,
como el ábaco para sumar y restar.
El matemático británico Charles Babbage quería una máquina
que resolviera cualquier problema matemático que le dieras,
o mejor dicho, le programaras que hiciera.
Propuso una máquina que llamó "la máquina analítica".
La idea de Babbage le haría ganar un lugar en la historia.
Las computadoras fueron inventadas por Babbage,
un inventor británico muy excéntrico.
Babbage tenía inspiración para cómo funcionaría.
Tenía una copia de esta foto colgada en su casa.
El motor analítico de Babbage, como el telar de Jacquard,
tenía partes físicas: "hardware".
Y así como con el telar,
podías darle instrucciones al hardware en forma de tarjetas perforadas.
Los hoyos dejaban pasar pasadores,
y la ausencia de hoyos forzaba a los demás hacia atrás,
activando una cadena de cálculos mecánicos.
Las tarjetas con sus diferentes perforaciones, eso es software.
Babbage nunca terminó su máquina analítica,
pero una joven que trabajaba con él vio su potencial para cambiar al mundo
más allá de las matemáticas.
Ada Byron, condesa de Lovelace, escribió:
"Los límites de la aritmética fueron superados
en cuanto ocurrió la idea de aplicar las tarjetas".
Vio lo mismo que Jacquard:
las perforaciones podían representar más que solo números.
Podían ser patrones, música...
...o frases completas.
Puedes pensarlo como el código Morse.
Cada letra en el alfabeto del código morse
se expresa como un conjunto de solo 2 señales:
O sea...
...es binario.
Y con esos pitidos podemos decir cualquier cosa,
como esta llamada de auxilio enviada por el Titanic en 1912.
Las letras "SOS" no son siglas.
Simplemente es muy fácil enviarlas en código Morse.
También se puede pensar que cada letra se puede expresar como una combinación
de ceros y unos.
¿Te parece familiar?
Esto es el código binario.
Y con él cerramos la brecha entre las máquinas y el lenguaje humano.
Cada uno o cero es un dígito binario o "bit".
Son los átomos de la informática moderna.
Quizá los conozcas con otro nombre:
ocho bits son un byte.
¿Ves esa foto en tu computadora que es de 1,1 megabytes?
Son ocho millones, ochocientos mil unos y ceros.
Así como los puntos y rayas del código morse son la forma de escribir...
...y...
...los unos y ceros del código binario son la forma en la que escribimos
lo que pasa en una computadora moderna:
con carga o sin carga.
Este es un circuito eléctrico simple.
Imagina millones de ellos trabajando juntos.
Eso hoy es una computadora.
En un circuito eléctrico, esto es un bit.
¿La bombilla está apagada? Cero.
¿Encendida? Uno.
Las computadoras solo entienden la electricidad,
así que todo lo que hacen los programadores con ellas,
al final,
solo es una serie de cargas encendidas o apagadas.
Todo funciona porque, conectadas de la manera correcta,
esas cargas pueden representar lógica.
Básicamente, la lógica es una serie predecible de hechos o eventos,
tales como cerrar este interruptor...
...y este para tocar la campana.
De hecho, los informáticos lo llaman "Lógica Y Circuito".
O una "compuerta" lógica.
Veamos si puedo hacerlo sin agujerear la mesa.
En una compuerta "Y", ambos circuitos deben estar cerrados
para encender la luz.
Y hay compuertas "O",
donde la luz se enciende si solo uno de los circuitos está cerrado.
Se puede explicar de otra manera.
"Si" uno de estos circuitos está cerrado, "entonces" enciende la luz.
Ese tipo de declaración "SI... ENTONCES",
es un algoritmo.
En la cultura pop actual, la palabra "algoritmo" causa mucha confusión.
Ya vimos esto, donde los algoritmos se descontrolan.
La forma en que funcionan es un misterio para la mayoría de la gente.
¿Qué demonios es un algoritmo?
Pero un algoritmo solo es un conjunto de instrucciones.
Imagínate caminando a la tienda.
Puedes girar a la izquierda y luego a la derecha.
O puedes girar a la derecha y luego a la izquierda.
O girar a la izquierda 4 veces,
dar la vuelta al parque, cruzar una carretera
y girar 4 veces a la derecha otra vez.
Como hay diferentes instrucciones para llegar al mismo lugar,
puede haber muchos algoritmos diferentes para resolver el mismo problema.
El objetivo es encontrar el más elegante y eficiente.
La programación hermosa no se repite.
Es muy elegante, es poderosa.
Las computadoras de algoritmos solo hacían lo que les ordenábamos,
pero mucho más rápido,
lo que hizo a la gente mucho más poderosa.
Cuando los científicos empezaron a desarrollar la bomba de fusión,
usaron principalmente computadoras humanas.
Pero luego recurrieron a esta:
la computadora ENIAC hizo cálculos termonucleares durante seis semanas.
Sus resultados contribuyeron directamente a esto,
la primera prueba exitosa en 1952
de una bomba cientos de veces más potente que las bombas de fisión atómica
lanzadas en Hiroshima y Nagasaki en la II Guerra Mundial.
El poder de codificar amplificaba la capacidad de las personas
de hacer lo que eligieran hacer.
Pero en la década de 1940, aún era mucho trabajo.
Escribir programas en ceros y unos claramente no escala.
La gente quería más del poder que daba la programación.
Pero quería una manera más fácil de programar.
Desde entonces, la historia de la programación
ha sido la historia de acercarla más y más al lenguaje humano
inventando lo que hoy usan casi todos los programadores:
los lenguajes de programación.
Comparados con unos y ceros, estos lenguajes son muy abstractos.
La abstracción es una palabra difícil.
Los lenguajes más abstractos se reducen a los mismos unos y ceros,
solo que encontramos mejores formas de organizarlos.
Se puede pensar en términos de biología.
Los humanos son increíblemente complejos,
pero el 99 % de nuestros cuerpos está compuesto de solo 6 elementos.
Y puedes escalar hasta las grandes moléculas.
Entre esa capa de organización
y la del ser vivo más sencillo hay una enorme distancia.
Y los humanos tienen cerebros que hacen cosas tan avanzadas,
que es difícil creer que estén hechos de las mismas cosas.
Las computadoras son así, pero mucho más sencillas.
Esa es la buena noticia.
La historia de la programación es la historia de subir esta caja,
alejándonos del binario para darnos formas más fáciles,
rápidas y potentes de programar,
sin tener que lidiar, o siquiera entender,
las compuertas binarias y lógicas de abajo.
Es lo que permite a los programadores hacer los productos que conocemos.
El primer paso para llegar allí fue...
El "lenguaje ensamblador", que es mucho más fácil de leer y escribir,
donde en vez de decir 0-1-0-0-0-1-1-1,
lo podemos llamar "sumar",
y luego tenemos un programa llamado el ensamblador
que traduce las letras S-U-M-A-R
a los ceros y unos equivalentes correspondientes.
A este nivel, el binario está organizado en letras y números,
así como los átomos están organizados en moléculas.
Pero programar en lenguaje ensamblador no era exactamente fácil
porque todas estas computadoras usaban lenguajes ensambladores distintos.
Si escribías un programa para una computadora,
no funcionaba para ninguna de las demás.
Rápidamente, la gente empezó a pensar
que lo que realmente quería darle a la computadora
son elementos en términos que usamos todos los días.
Tenemos lenguajes de programación
que construimos usando el lenguaje ensamblador,
y de esos lenguajes construimos más lenguajes de programación.
Quizá los hayan escuchado.
- LISP. - BASIC.
- Java. - C ++.
- Python 3. - HTML 5.
PEARL, PHP, un poco de C...
Así como las lenguas habladas son formas diferentes
de expresarle la misma idea a otras personas,
los lenguajes de programación son formas diferentes
de expresarle la misma idea a las computadoras.
Tenemos más de un lenguaje de alto nivel
porque, en primer lugar, diferentes lenguajes
abordan necesidades distintas.
Mira estos dos.
Este, COBOL, se creó a finales de los años 50
para facilitarle a las empresas el uso de la programación.
Se parece mucho al inglés, excepto si cada conversación
terminara con "STOP RUN".
Este, CPL, se desarrolló en la década de 1960
e incluía más computación científica.
Es como la evolución biológica.
Al volverse más complejos, los organismos
desarrollaron características mejor adaptadas a sus ambientes específicos.
Y francamente, también es cuestión de gustos.
A la gente le gustan distintas herramientas para expresarse.
Por ejemplo, el lenguaje C ++...
Elon Musk no es fanático.
Tú podrías inventar uno.
Este es un lenguaje de alto nivel hecho enteramente de la palabra "moo".
En serio. Se llama COW.
Este está hecho de citas de películas de Arnold Schwarzenegger.
Cada vez que pienso: "Bien, seguramente ya terminamos",
alguien inventa un nuevo lenguaje y desarrolla un grupo de devotos.
Así que no veo ningún fin a la invención de nuevos idiomas.
Y todos estos lenguajes aún se basan en la lógica.
Por ejemplo, un programador en Netflix podría decir:
"Si has estado mirando más de dos horas, entonces muestra esto en pantalla".
Pero para que la programación afectara la vida de la gente,
la mayoría tenía que usar computadoras.
Lo que significaba que tenían que ser más fáciles y amigables,
y eso requería otro gran salto.
Que comenzó aquí,
en una demostración de Doug Englebart en 1968.
En un segundo, veremos la pantalla
y cómo se mueve el punto de rastreo junto con los movimientos de ese ratón.
La gente de hoy en día no programa escribiendo declaraciones en un papel
y entregándoselas a alguien que las escribe.
Te sientas frente a una pantalla, tienes una interfaz gráfica de usuario.
Hoy las llamamos GUIs.
Con las GUIs, la gente puede codificar sin escribir nada.
O simplemente usar código más fácilmente.
Típicamente, operas en un entorno de programación
del tipo que Alan y sus compañeros crearon tan maravillosamente
en el Centro de Investigación Xerox Palo Alto a principios de los 70.
"Alan".
Este Alan.
Lo considero el padre de la computación personal
porque fue el primero en articular esa visión.
Y debo confesar que en ese momento pensé que era ciencia ficción.
Cuando se hacen cosas grandes,
generalmente hay toda una comunidad.
Y Park fue fantástico.
Era como magia.
La interfaz gráfica de usuario permitió que millones de personas más
usaran las computadoras de forma natural.
Cuando Xerox anunció las GUIs por primera vez en 1979,
mostraron cómo el código podía cambiar la vida diaria.
Llegas a tu oficina
y una máquina Xerox presenta tu correo matutino en una pantalla.
Pronto, sistemas Xerox como este
te ayudarán a administrar tu recurso más valioso: la información.
Había gente como yo y mucha gente en esta comunidad de investigación
quería mejorar al mundo.
Tenían una idea que estaba profundamente relacionada
con el perfeccionamiento humano.
Algo que interactuaría con nosotros,
el público,
la persona normal, y hacernos capaces de hacer más de lo que hacíamos antes.
Sí nos hizo capaces de hacer más.
Las GUIs fueron un gran salto en este espectro.
Y luego llegó la próxima innovación que cambiaría al mundo.
Una nueva forma de distribuir todo lo que pudiéramos hacer con programación.
En la TV, se empezó a predecir
qué significaría el acceso repentino a todo esto.
Imagínense sentados con su café matutino,
encendiendo la computadora para leer el periódico del día.
Imaginen un mundo donde cada palabra escrita,
cada imagen de una pintura,
cada película filmada pueda verse al instante desde su hogar.
Creo que estamos en la cúspide de algo excitante y aterrador.
- Solo es una herramienta, ¿no? - No, no lo es.
Los productos de software más impactantes de hoy
usan todas estas innovaciones.
Un universitario usó un lenguaje de programación de alto nivel, PHP,
para compartir en Internet, para ser usado en computadoras con GUIs.
Lo describió en su primera entrevista televisiva en 2004.
Es un directorio en línea que conecta gente
en colegios y universidades a través de sus redes sociales.
Ahora somos 100 000 personas, quién sabe a dónde llegaremos.
Adonde llegamos fue a más de dos mil millones de personas
en Facebook mensualmente.
Hoy, los programadores dan forma a miles de millones de vidas.
Cómo trabajan, compran, comen, conquistan y se relajan.
¿Qué estás haciendo?
Me estás viendo en un navegador web de Netflix.
Netflix es un código en sí
y se ejecuta en un navegador web conformado de códigos,
en una computadora que fue diseñada usando programación.
Son tortugas hasta abajo, ¿no?
La buena programación es como ser el arquitecto de un museo
en el que millones de personas piensan, caminan y usan todos los días.
No hay nada como programar, porque se siente como creación pura.
Tienes una idea de cómo debe funcionar algo
y luego intentas sentarte frente a una computadora
y hacerlo realidad.
Creo que esa función conlleva mucha responsabilidad.
Ya saben, hay un límite de velocidad,
no más de 100 km por hora.
Bien.
¿Y si tuvieras un auto y la computadora dijera:
"Este auto no va a ir a más de 95 km por hora"?
Es otra forma de controlar tu conducta.
A menudo, al controlar nuestras decisiones,
la programación en nuestras vidas
ejerce un efecto regulador casi más profundo
de lo que la ley puede esperar.
Y eso podría ser algo genial.
Hay 6 millones de accidentes de auto en los Estados Unidos cada año,
y un análisis descubrió que el 94 % son causados por el conductor.
Los avances en la programación podrían salvar millones de vidas.
Pero también pueden poner vidas en peligro de nuevas maneras.
Tengo algo llamado cardiomiopatía hipertrófica,
que es el término médico de tener un corazón agrandado.
Literalmente tengo un corazón enorme.
Es 3 veces más grande que el de una persona normal.
Me enteré cuando tenía 30 años,
así que el riesgo de muerte súbita antes de los 40 era muy grande.
El electrofisiólogo dijo: "No es ningún problema,
puedo ponerte un desfibrilador de marcapasos".
Este dispositivo funciona con programación.
Hace un par de años, estaba embarazada y mi corazón palpitaba.
Casi una cuarta parte de las mujeres tienen palpitaciones, es normal.
Pero mi dispositivo pensó que tenía un ritmo peligroso
y me dio una descarga.
A los fabricantes no les interesa que embarazadas reciban descargas.
Literalmente es lo último que quieren.
Solo que no lo habían considerado.
Hay un gran conjunto de decisiones
y la gente que hace la programación será quien las tome.
E inevitablemente,
habrá una combinación de circunstancias que no habrá anticipado.
Lo que tratamos de enseñar
cuando enseñamos el arte de la programación
es cómo pensar
todas estas distintas condiciones.
Cómo intentar ser exhaustivo
sin paralizarte
por la cantidad de cosas que debes considerar.
Y eso solo será aún más cierto,
porque empezamos a programar de una forma completamente nueva.
En la programación tradicional, escribes instrucciones para una computadora.
Pero ahora podemos darle a una computadora un montón de entradas y salidas,
y hacer que escriba sus propias instrucciones.
Lo que haces es darle a la computadora
muchos ejemplos
y le dices: "Esto es una fiesta".
Y luego tienes otras cosas.
Un consultorio de dentista: no una fiesta.
Un salón de clases: no una fiesta.
Entonces, la computadora los ve
y trata de construir un sistema de clasificación.
Esto es aprendizaje computacional.
Hoy, si alguien dice inteligencia artificial,
a esto se refiere.
Es una forma totalmente diferente de abstracción y de hacer las cosas,
porque no encaja en la forma en que apilamos estas cosas.
Los llamamos algoritmos de aprendizaje automático
porque la computadora crea su propio conjunto de instrucciones.
Pero claro, al final, también se traducen en pequeñas instrucciones.
Google Translate solía ser más de un millón de líneas de código.
Es gente escribiendo un millón de pequeñas instrucciones.
Actualmente, Google Translate tiene unas 500 líneas de código
que usan el aprendizaje automático.
Supongamos que, por un descuido, ninguna de las fotos de fiestas ingresadas
incluyó a gente negra o hispana.
La computadora podría decidir que una regla de las fiestas
es que solo blancos y asiáticos están invitados.
Hay muchos blancos y asiáticos que programan.
Deberíamos expandir
quién está en esa sala de diseño por un millón de razones.
Harán preguntas mejores si hay más experiencia.
Pero, al final, si alimentas datos a tu sistema de aprendizaje automático,
digamos del sistema de justicia criminal, con un racismo estructural incorporado,
y digamos que tus programadores parecen un anuncio de Benetton,
de diferentes razas, diferentes caras, diferentes niveles sociales,
el sistema automático aún aprenderá de los datos.
Sin gente que los corrija activamente,
los datos históricos nos llevarán a repetir los errores del pasado.
La historia de la programación es la de la ambición y creatividad humana.
Despegue del cohete Falcon 9.
Hemos visto lo que creíamos invisible...
...un agujero negro.
Estamos construyendo un mundo nuevo con herramientas cada vez más intuitivas
que más personas pueden usar
para ayudar a asegurar que ese mundo sea mejor.
Ha sido todo un recorrido que las computadoras sean más accesibles
a los humanos y para un mayor número de humanos.
Vimos a esta revolución desarrollarse ante nuestros ojos en los últimos 50 años.
Por eso es tan emocionante estar vivo hoy.
Es muy importante recordar que todo lo que usas en tu computadora
fue creado por un ser humano.
Puedes ser una de esas personas,
y es muy importante que te conviertas en una de ellas.
Puedes cambiar al mundo de una manera fundamental.
Hay un mundo que se controlará usando aprendizaje automático,
datos y programación tradicional de más y más maneras.
Y lo que tenemos que hacer como sociedad es decir:
"Bien. Tenemos esta nueva tecnología potente.
En cierto sentido, podría ser genial, pero no será genial por sí sola".
Subtítulos: Fernanda Avalos B.