911, emergência?
911, qual a emergência?
911, qua...
Em 9 de abril de 2014, o serviço de emergência de repente parou
para milhões de pessoas nos Estados Unidos.
Caiu por mais de seis horas.
Mais de 6 mil ligações de emergência não foram atendidas.
O governo rastreou o problema a um computador
num centro de encaminhamento de chamadas em Englewood, Colorado.
Era um simples erro de programação.
O encarregado de programar aquele computador
escolheu um teto para o número de ligações que poderia registrar,
um limite que ele achou que o computador nunca atingiria.
Mas naquela noite em 2014, atingiu.
O computador seguiu perfeitamente as instruções.
Alcançou o limite e parou de encaminhar chamadas.
O problema não era o computador,
e não era um problema no programa.
Foi a programação,
o processo de tomada de decisão pelo qual pessoas se comunicam
com o computador.
Este tipo de poder vem com grandes responsabilidades éticas.
Não há nada parecido.
Nada substitui isso.
Da mesma forma
em que construtores
determinam como sua vida é vivida na cidade,
programação controla como vivemos on-line, o que, basicamente, é como vivemos.
Não só quando entramos na internet,
mas quando ligamos pra serviços de emergência...
ou vamos ao médico...
ou entramos num carro.
Estamos muito próximos da programação, todos os dias.
Mesmo assim, só um terço de um por cento sabe como programar.
Para a imensa maioria, é uma caixa preta.
Mas não precisa ser.
Como programação funciona?
E que mundo novo estamos construindo com ela?
UMA SÉRIE DOCUMENTAL ORIGINAL NETFLIX
O computador.
Uma coleção engenhosa de hardware eletrônico
foi criada pelo homem.
Não é que não tenhamos máquinas adequadas pra resolver problemas,
mas não temos descrições adequadas de como resolvê-los.
Quando se fala em programação, parece muito difícil.
É muito importante lembrar que tudo o que você usa em um computador
foi criado por um ser humano.
CÓDIGO DE PROGRAMAÇÃO
Imagine um alienígena perguntando: "Qual a importância da programação?"
Eu diria: "Sabe,
vivemos nesta terra física e, uns 50 anos atrás,
um pequeno grupo de pessoas começou a construir outro planeta.
Mas não era físico. Um planeta virtual.
Olhe pelas ruas, você vê pessoas andando
com a cabeça abaixada e olhando o celular?
Na verdade, estão em outro mundo.
Programação é isso.
São os alicerces deste outro mundo.
Este tear é o ancestral de todos os computadores e smartphones
do mundo.
Foi inventado em 1804,
e a grande inovação eram estes cartões.
Os buracos neles permitiam que só alguns pinos passassem.
Com milhares de buracos em centenas de cartões,
tecelões podiam fazer padrões mais complexos que antes.
Xales elaborados ficaram muito populares na Europa.
E o design dos tecidos podia ser tão intricado que parecia desenhos,
como este, do inventor do tear.
Antes desses teares, fios individuais precisavam ser selecionados à mão
por "puxadores".
As contas também eram feitas à mão,
pelos chamados "computadores".
Os primeiros computadores eram pessoas.
E as melhores máquinas que tínhamos
só faziam um tipo de conta,
como o ábaco, para somar e subtrair.
O matemático britânico Charles Babbage queria algo
que pudesse fazer qualquer conta que você quisesse,
ou melhor, que você programasse.
Ele propôs uma máquina que chamou de "Máquina Analítica".
A ideia de Babbage daria a ele um lugar na História.
Os computadores foram inventados primeiro por Babbage,
um inventor muito excêntrico.
Babbage teve uma inspiração pro funcionamento.
Ele tinha uma cópia desta imagem na parede de casa.
A Máquina Analítica de Babbage, como o tear de Jacquard,
tinha partes físicas: "hardware."
E, também como no tear,
podia-se dar instruções ao hardware na forma de cartões com buracos.
Os pinos entravam,
e a ausência de buracos forçava outros pinos pra trás,
criando uma cadeia de cálculos mecânicos.
Cartões com buracos diferentes:
são o software.
Babbage nunca terminou sua Máquina Analítica,
mas uma jovem mulher trabalhando com ele viu que seu potencial transformador
estava além da Matemática.
Ada Byron, condessa de Lovelace, escreveu:
"Os limites da aritmética foram ultrapassados quando a ideia
de aplicar os cartões surgiu..."
Ela viu o que Jacquard viu:
os buracos podiam representar mais que apenas números.
Podiam ser padrões,
música...
ou frases completas.
Você pode pensar nisso como um código Morse.
Cada letra em código Morse é feita com apenas dois sinais:
... ou ...
É binário.
E só com esses bipes, podemos dizer qualquer coisa,
como este pedido de socorro enviado pelo Titanic em 1912.
"SOS" não significa nada.
É só muito simples de enviar em código Morse.
Também podemos pensar em cada letra como uma combinação
de zeros e uns.
Parece familiar?
Isso é código binário.
E é com ele que transpomos a distância entre a linguagem das máquinas e a humana.
Cada um ou zero é um dígito binário ou "bit".
São os átomos da computação moderna.
Talvez você conheça por outro nome:
oito bits é um byte.
Sabe aquela imagem no seu computador que tem 1,1 megabytes?
São oito milhões e oitocentos uns e zeros.
Como os pontos e traços do código Morse são só um jeito de escrever... e...
os uns e zeros do código binário são só um jeito de escrever
o que está acontecendo num computador moderno:
carga ou não carga.
Este é um circuito elétrico simples.
Imagine milhões deles trabalhando juntos.
Um computador hoje é assim.
Em um circuito elétrico, isso é um bit.
A lâmpada está apagada? Zero.
Ligada? Um.
Computadores só entendem eletricidade,
então o que programadores fazem é,
no fim das contas,
só uma série de cargas ligadas ou desligadas.
Tudo funciona porque, junto, do jeito certo,
essas cargas podem representar lógica.
Basicamente, lógica é uma série previsível de fatos ou eventos,
como fechar este interruptor...
e este para tocar um sino.
Na verdade, na computação, chamamos isto de "Circuito AND Lógico".
Ou "porta" lógica.
Vamos ver se consigo fazer isso sem queimar a mesa toda.
Em uma porta AND, ambos os circuitos precisam ser fechados
para a luz acender.
E há portas OR,
em que a luz acende se apenas um deles estiver fechado.
Expliquemos de outra forma.
Se um desses circuitos estiver fechado, então, a luz liga.
Esse tipo de frase "se... então"
é um algoritmo.
Na cultura popular de hoje, a palavra "algoritmo" causa confusão.
Já vimos isso antes, esses algoritmos enlouquecerem!
A forma como algoritmos funcionam é um mistério para a maioria.
O que raios é um algoritmo?
Mas um algoritmo é só um conjunto de orientações.
Imagine ir à loja.
Você pode virar à esquerda, depois à direita.
Ou só virar à direita e depois à esquerda.
Ou virar à esquerda quatro vezes,
dar a volta no parque,
cruzar a avenida
e virar quatro vezes à direita.
Assim como há orientações diferentes pra chegar a um lugar,
em programação, pode haver algoritmos diferentes
pra resolver um problema.
O objetivo é encontrar o mais elegante e eficiente.
Belos códigos não se repetem.
É muito elegante. Poderoso.
Computadores usando algoritmos só fizeram o que pedimos,
mas muito mais rápido,
o que deixou as pessoas muito mais poderosas.
Quando cientistas começaram a desenvolver a bomba de hidrogênio,
primeiro usaram computadores humanos.
Mas depois usaram este:
o computador ENIAC realizou cálculos termonucleares por seis semanas.
Os resultados contribuíram diretamente com isto,
o primeiro teste bem-sucedido em 1952
de uma bomba mil vezes mais poderosa que as bombas atômicas
jogadas em Hiroshima e Nagasaki durante a Segunda Guerra.
O poder da programação amplificou a habilidade de as pessoas
fazerem o que quisessem.
Mas... nos anos 1940, ainda dava muito trabalho.
Escrever programas em zeros e uns claramente não avança.
As pessoas queriam mais do poder que a programação deu.
Mas queriam formas mais fáceis de programar.
A história desta ciência tem sido a história de aproximar a programação
da linguagem humana
inventando o que quase todos os programadores usam hoje:
linguagens de programação.
Comparadas a uns e zeros, essas linguagens são bem abstratas.
Abstração é algo difícil pra muita gente.
Linguagens mais abstratas resumem-se aos mesmos zeros e uns,
mas achamos jeitos melhores de organizá-los.
Você pode pensar em termos de Biologia.
Humanos são muito complexos,
mas 99% de nossos corpos é feito de apenas seis elementos.
E você pode formar moléculas grandes.
Entre essa camada da organização
e a da forma viva mais simples,
há um grande salto.
E humanos têm cérebros,
que fazem coisas tão avançadas
que é difícil acreditar que são feitos da mesma coisa.
Computadores são meio assim, mas muito mais simples.
Essa é a boa notícia.
A história da programação é a história de subir esta caixa,
afastando-se do binário para nos dar
formas mais fáceis, rápidas e poderosas de programar,
sem ter de lidar, ou mesmo entender,
as portas lógicas e binárias por trás.
É isso que permite programadores fazerem produtos que conhecemos bem.
O primeiro passo para isso foi...
"Linguagem assembly", muito mais fácil de ler e escrever,
em que, em vez de 0-1-0-0-0-1-1-1, você diz:
"Vamos chamar de 'add'",
e há um programa chamado assembler que traduz as letras.
A-D-D para o equivalente apropriado em zeros e uns.
Neste nível, o binário está organizado em letras e números,
assim como átomos se organizam em moléculas.
Mas programar em linguagem assembly ainda não era exatamente fácil
porque todos esses computadores usavam linguagens assembly diferentes.
Se escrevesse um programa para um, não funcionaria em nenhum dos outros.
Muito rapidamente, começou-se a pensar
que o que realmente queríamos dar ao computador
são coisas baseadas no que usamos todos os dias.
Há linguagens de programação
que construímos usando a linguagem assembly
e, a partir destas linguagens, construímos outras linguagens.
Você provavelmente já ouviu falar.
-LISP... -BASIC...
-Java... -C++...
-Python 3... -HTML 5...
PEARL, PHP, um pouco de C...
Assim como linguagens faladas são formas diferentes
de expressar a mesma ideia a outras pessoas,
linguagens de programação são formas diferentes de expressar
a mesma ideia a computadores.
Temos mais de uma linguagem de alto nível
porque, primeiro, linguagens diferentes
respondem a necessidades diferentes.
Olhe essas duas.
Esta, COBOL, foi criada no fim dos anos 1950
para facilitar que negócios usassem programação.
Parece bastante o inglês, mas toda conversação
terminaria em "STOP RUN".
Esta, CPL, foi desenvolvida nos anos 1960 e incluía computação mais científica.
É como evolução biológica.
Um organismo fica mais complexo e desenvolve características
que o tornam mais adaptado a seu ambiente específico.
E, francamente, também é questão de gosto.
Pessoas gostam de ferramentas diferentes para se expressar.
Por exemplo, a linguagem C++...
Elon Musk não é um fã.
Você podia inventar uma.
Esta é uma linguagem de alto nível, feita toda com a palavra "moo".
É sério. Chama COW, vaca em inglês.
Esta é feita de citações de filmes do Arnold Schwarzenegger.
Sempre que penso "Acho que agora já deu",
alguém inventa uma nova linguagem e ela gera um grupo de devotos.
Não vejo fim para a invenção de novas linguagens.
E todas essas linguagens ainda se baseiam em lógica.
Por exemplo, um programador da Netflix poderia dizer:
"Se estiver assistindo há mais de duas horas,
mostre isso."
Mas, para programação impactar a vida da maioria,
a maioria tinha de usar computadores.
Ou seja, eles precisavam ser mais fáceis,
amigáveis,
e, para isso, outro grande salto era necessário.
Que começou aqui,
em uma demonstração feita por Doug Engelbart em 1968.
Veremos a tela na qual ele está trabalhando
e a forma como o ponto se move
em conjunção com o mouse.
Hoje, as pessoas não programam escrevendo frases
em um pedaço de papel e depois entregando a alguém,
que digita.
Você senta em frente a uma tela, há uma interface gráfica do usuário.
Hoje, chamamos de GUIs.
Com GUIs, as pessoas podem programar sem digitar.
Ou podem só usar programação mais facilmente.
Você está tipicamente operando em um ambiente de programação
do tipo que Alan e seus pares
criaram de forma tão bela
no Xerox Palo Alto Reasearch Center no começo dos anos 1970.
"Alan."
Este Alan.
Acho que ele é o pai do computador doméstico,
porque ele foi o primeiro a realmente articular esta visão.
E preciso confessar que, na época, achei que era ficção científica.
Quando algo grande realmente é feito,
há toda uma comunidade por trás.
E, nossa, Park era fantástico nisso.
Parecia mágica.
A interface gráfica de usuário permitiu que outras milhões de pessoas
usassem computadores de um jeito natural para elas.
Quando a Xerox divulgou GUIs em 1979,
mostraram como programação podia mudar a rotina.
Você chega ao escritório e uma máquina Xerox
apresenta uma mensagem de bom dia na tela.
Logo, sistemas Xerox como este
ajudarão a administrar seu recursos mais precioso:
informação.
Havia pessoas como eu, e muitas pessoas
nesta comunidade de pesquisa
queriam melhorar o mundo.
Tiveram uma ideia muito relacionada
a acréscimo humano.
Algo que interagisse conosco,
o público,
a pessoa normal, e nos tornaria capazes
de fazer mais do que antes.
Realmente nos tornou capazes de fazer mais.
GUIs foram um grande salto neste espectro.
Então, veio a próxima inovação que mudou o mundo.
Uma nova forma de distribuir tudo
que podíamos fazer com programação.
Na TV, pessoas começaram a prever o que acesso repentino
a tudo isso significaria.
Imagine sentar-se para o café da manhã,
e ligar seu computador para ler o jornal do dia.
Imagine um mundo em que todas as palavras já escritas, todas as fotos de pinturas,
todos os filmes já gravados pudessem ser vistos na hora, de casa.
Acho que estamos à beira de algo maravilhoso e assustador.
Mas é só uma ferramenta, não é?
Não, não é.
Os produtos de software que mais impactam hoje usam todas essas inovações.
Um estudante de faculdade usou uma linguagem de alto nível, PHP,
para fazer algo ser compartilhado na internet,
para ser usado em computadores com GUIs.
Ele fez uma descrição, em sua primeira entrevista na TV, em 2004.
É um diretório on-line que conecta pessoas
em universidades e faculdades,
através de suas redes sociais.
Agora temos 100 mil pessoas, vai saber aonde chegaremos.
Chegaríamos a mais de dois bilhões de pessoas
mensalmente no Facebook.
Hoje, programadores moldam a vida de bilhões de pessoas.
Como trabalham, compram, comem, namoram e relaxam.
O que está fazendo agora?
Está me vendo em um browser da Netflix.
A própria Netflix é uma programação que está sendo usada em um browser
que é programado,
que está sendo usado em um computador projetado usando programação.
É infinito.
Programar bem é como ser o arquiteto de um museu
em que milhões de pessoas pensam,
e visitam e passeiam e usam todo dia.
Acho que não há nada como programar, porque é como criação pura.
Você tem uma ideia de como algo deveria funcionar
e senta em frente a um computador
e transforma a ideia em realidade.
Acho que há muita responsabilidade nisso.
Você tem um limite de velocidade.
Não mais de 90 km/h.
Ótimo.
Mas e se tivesse um carro e o computador dissesse:
"Este carro não passará de 90 km/h"?
É uma forma diferente de controle.
Muitas vezes, controlando nossas escolhas, a programação cria
um efeito regulatório quase mais profundo que uma lei jamais conseguiria.
E isso pode ser ótimo.
Há por volta de seis milhões de acidentes de carro nos EUA todo ano,
e uma análise descobriu que 94% são causados pelo motorista.
Avanços em programação poderiam salvar milhões de vidas.
Mas também podem colocar vidas em risco de novas formas.
Tenho algo chamado cardiomiopatia hipertrófica
que é um termo médico para o fato de eu ter um coração grande.
Meu coração é literalmente grande.
É umas três vezes maior que um coração normal.
Descobri quando tinha 30 e meu risco de morte súbita aos 40
era muito alto.
O eletrofisiologista disse: "Não é um problema,
porque você pode usar um desfibrilador marcapasso."
Ele funciona com programação.
Alguns anos atrás, quando estava grávida, meu coração estava palpitando.
Um quarto das mulheres têm palpitação, é completamente normal.
Mas meu marcapasso achou que estava em um ritmo perigoso
e me deu choque.
Os produtores não querem grávidas levando choques.
É literalmente o que menos querem.
Mas não consideraram isso.
Há uma enorme gama de decisões
e as pessoas que programam as tomarão.
E, inevitavelmente,
haverá uma combinação de circunstâncias
que eles não anteciparão.
O que tentamos ensinar
quando ensinamos a arte
da programação
é como pensar
em todas essas condições diferentes.
Como tentar ser completo
sem ficar paralisado pelo número de coisas
que pode ter de considerar.
E isso será cada vez mais verdade, porque começamos a programar
de uma forma completamente nova.
Na programação tradicional, você escreve instruções pro computador.
Mas agora somos capazes de dar a um computador muitos inputs
e muitos outputs
e fazê-lo escrever as próprias instruções.
O que você faz é dar ao computador
vários exemplos
e você diz: "Isso é uma festa."
E há outras coisas.
Escritório de dentista: não é festa.
Sala de aula: não é festa.
Então, o computador olha isso e tenta construir
um sistema de classificação.
Isso é aprendizado de máquina.
Hoje, se alguém fala em inteligência artificial,
é isso.
É um tipo totalmente diferente de abstração
e de fazer as coisas,
porque não se enquadra na forma como empilhamos as coisas.
São os algoritmos de aprendizado de máquina, porque o computador cria
as próprias orientações a seguir.
Mas, claro, no fim das contas, também são traduzidas
em pequenas instruções.
Google Tradutor tinha mais de um milhão de linhas de código.
São pessoas escrevendo um milhão de pequenas instruções.
Hoje, ele tem umas quinhentas linhas de código
de aprendizado de máquina.
Imagine que, por um descuido, nenhuma das fotos de festa que você pôs
incluía uma pessoa negra ou latina.
O computador podia decidir como regra para festas
que apenas pessoas brancas ou asiáticas são convidadas.
Há muitos caras brancos e asiáticos que programam.
Precisamos ampliar quem pode estar nesta sala de planejamento,
por milhares de razões.
Haverá perguntas melhores se houver mais experiência de vida.
Mas, no fim das contas, se alimentar os dados do sistema de aprendizado
de um sistema de justiça criminal que tem dados com racismo estrutural,
e digamos que os programadores do aprendizado
têm todo tipo de aparência...
cores de pele, rostos, origem social diferentes...
esse sistema de aprendizado ainda aprenderá com os dados.
Sem pessoas que corrijam isso ativamente,
dados históricos nos levarão a repetir os erros do passado.
A história da programação é a da ambição e criatividade humanas.
Decolagem do foguete Falcon 9.
Vimos o que achamos que nunca veríamos.
Um buraco negro.
Construímos um novo mundo,
com mais ferramentas intuitivas
que um maior número de pessoas pode usar
para garantir que o mundo melhore.
Estamos em uma jornada para tornar computadores mais acessíveis
a seres humanos e para mais seres humanos.
Estamos vendo uma revolução diante dos nossos olhos nos últimos 50 anos.
Por isso é tão empolgante estar vivo hoje.
É muito importante lembrar que tudo o que você usa no computador
foi criado por um ser humano.
Você pode ser um deles, na verdade, e é muito importante
que se torne um deles.
Você pode mudar o mundo de um jeito muito signifcativo.
Há um mundo que será feito usando aprendizado de máquina,
e dados e programação tradicional, cada vez mais.
E o que fazemos como sociedade é dizer:
"Certo! Temos esta nova tecnologia potente
e poder ser ótimo, mas não chegará lá sozinha."
Legendas: Thamires Araujo