Inteligência Artificial: Programe
um botão que se pareça com uma melancia.
É... Massinha. Assim, até que ficou
parecendo uma melancia cortada de cima,
as cores de melancia pelo menos.
Agora, faça um texto grande que
diga seja bem-vindo à minha newsletter,
e um botão azul
que diz: "inscreva-se".
Putz, espera aí... O texto
ficou em branco, mas espera...
Texto em vermelho.
Agora sim!
Um outro teste...
Faça um botão para 
cada cor do arco-íris.
Eita! E não é que fez mesmo?
Delicinha!
Tem mais exemplos que eu quero
mostrar aqui que são muito interessantes,
inclusive um que vai reproduzindo
a tela do Google, é sensacional!
E também eu quero, no final
deste vídeo, dar a minha opinião,
se vale a pena ou não continuar
aprendendo programação.
Mas antes, o que diabos está
acontecendo aqui?
E a história é o seguinte...
Faz umas duas semanas mais ou menos
que eu publiquei um vídeo aqui no canal
mostrando um modelo de
inteligência artificial, chamado GPT-3,
que sem ser criado
especificamente para programar
ou gerar qualquer tipo de
código, ao ser treinado com código,
ele conseguiu devolver
implementações feitas em Python.
Um dos exemplos foi pedir para
programar um verificador de palíndromo,
que são palavras que
são a mesma coisa,
independente da ordem que
você lê, tipo: Ana, ovo, salas, etc.
E aí, o modelo dessa
inteligência artificial foi lá
e programou o código sozinho.
Depois, o desafio foi pedir
para programar uma função
que retornasse uma lista de
índices, que são palíndromos,
e que no mínimo, 
possuem sete caracteres.
E pimba! O treco foi lá e programou
com um detalhe mega especial:
ele soube reaproveitar a função passada que
verifica que uma string é um palíndromo.
E para complicar um pouco mais,
foi colocado como requisito
computar o valor total
de uma lista de pedidos,
e dos pedidos que eram palíndromos,
aplicar um desconto de 10%,
o que gerou um bug interessante
que através de um pair programming,
o autor e a inteligência artificial
chegaram na implementação final.
Isso em específico, com certeza
não vai substituir programadores,
mas abre uma série de questões...
E talvez, a última questão não é
mais saber se vai substituir ou não,
mas em quais situações e quando.
E antes de bater o desespero, deixa
eu trazer mais algumas informações
que vão ou não fazer a gente
entender se isso vai acontecer de fato...
E se acontecer, tentar
entender quem pode ser afetado.
Por exemplo, eu vi muita
gente comentando que o GPT-3
serviria mais para back-end e
que passaria longe de um front-end,
webdesign ou layouts...
E em tão pouco tempo, o Sharif Shameem
recebeu acesso a API desse modelo
e implementou essa demonstração
que a gente acabou de ver,
e que tem mais exemplos 
e eu já vou mostrar.
Eu não sei como ele recebeu
acesso a essa API em versão beta,
mas eu estou indo atrás e qualquer
novidade sobre esse assunto,
eu vou repassar para
vocês com máxima urgência.
Inclusive, ele falou que quer
disponibilizar esse demo numa URL pública.
Então, verifica se você
está inscrito no canal,
para eu também passar para você
essas coisas através da aba Comunidade
aqui do YouTube, fechado?
E de qualquer forma, segundo as
palavras dele, isso é de explodir a cabeça:
"Com o GPT-3, eu construí
um gerador de layout,
onde você só descreve
qualquer layout que quiser
e ele gera o código
e JSX para você... Quê?!".
O JSX é o código que você declara
os componentes no framework React,
e apesar que tecnicamente
não pode se falar que é HTML,
no final das contas você
usa todas as tags do HTML.
Mas o mais interessante
é que, no final das contas,
o modelo está escrevendo em
código de framework front-end.
Muito massa!
Mas mais massa que isso
é a quantidade de dados
que o Sharif teve que
passar para treinar o modelo
ao ponto de ele conseguir
fazer essa tarefa...
E talvez, essa é a parte 
mais assustadora.
Vocês vão cair duros para trás e
eu, pelo menos, tomei um baita susto.
Só que para entender
o porquê desse susto,
é importante antes
entender que o GPT-3
é meio que um modelo
genérico de inteligência artificial
voltada para processamento 
de linguagem natural.
Ele é "task-agnostic". Ou seja, ele não
necessariamente foi feito para uma tarefa
em específico nesse campo.
Então, os autores
iniciais desse modelo
o alimentaram com toneladas e
toneladas de texto de tudo quanto é lugar,
e isso criou uma rede neural
que começa a ficar capaz
de prever a sequência
natural das palavras.
Então, dado uma palavra, qual é a
probabilidade da próxima palavra?
Por exemplo, neste contexto aqui,
se eu falar a frase: "Meu nome é...",
vocês completariam com o quê?
Qual é a próxima palavra?
É óbvio que é Mich... é Filipe!
Filipe!
Entende a sacada?
E aí, o que me deixa pensando...
Será que a nossa comunicação
trabalha dessa forma?
A gente nessa parte é uma máquina que fica
tentando encaixar uma palavra na outra,
e isso se torna uma
questão de probabilidade,
porque até a outra ponta
começa a tentar antecipar
quais são as palavras mais prováveis
a serem escolhidas pelo locutor?
Bom, de qualquer forma, o
resultado final é determinado,
dentre outros fatores também,
pela quantidade de conexões
dessa rede neural, 
que são os parâmetros.
Quanto mais parâmetros,
maior nuance o modelo vai ter e
entender o que está acontecendo,
qual é o contexto ao redor.
Para você entender a
evolução nesse assunto,
a primeira versão desse modelo,
o GPT, foi lançada em 2018
e tinha 0.1 bilhão 
de parâmetros.
Em 2019, o GPT-2 
tinha 1.5 bilhões...
E agora, o GPT-3 tem
180 bilhões de parâmetros.
Chega a deformar o gráfico quando
comparado a qualquer outro modelo
já criado na história.
Bom, disso é gerado o modelo, e
depois, você pode ensinar coisas como:
se eu pedir isso aqui, 
entrega isso...
E ele começa a se
virar sozinho dali para frente,
ele entende a semântica da pergunta,
calibra sozinho o seu contexto interno
e consegue sintetizar
algo novo como resultado.
E sabe com quantos
exemplos de HTML ou JSX
o rapaz teve que 
ensinar o modelo?
Olha que bizarro...
Cabe na sua tela!
Foram somente 
com dois exemplos.
DOIS!
No primeiro exemplo, ele coloca a descrição
como um botão vermelho escrito "pare"
e com o código que representa isso,
ele escreveu JSX contendo um button
e algumas estilizações
com color e backgroundColor.
No exemplo dois, a
descrição foi: uma caixa azul
que contém três círculos amarelos 
com bordas vermelhas.
E o código de baixo, usa divs
com, novamente, backgroundColor,
mas agora com padding,
borderRadius, width e height.
Ou seja, ele ensinou o básico do
básico de HTML e CSS dentro do JSX.
Assim... Foi praticamente 
nada, na verdade.
E um ponto importante: ele não
correlacionou as coisas.
Ele não disse que a borda vermelha é o
borderRadius red, ele não fez nada disso.
Ele jogou um pedaço de texto 
e um pedaço de código.
E ele falou que caso quisesse
que o modelo gerasse HTML puro,
era só trocar os dois exemplos de
cima também para HTML puro e pronto!
Ele ia começar a cuspir 
HTML normalmente.
Daí, eu me pego perguntando:
e se alguém ensinar a esse
modelo várias correlações
entre o que a pessoa quer, através
dos pedidos em linguagem natural,
em como isso deve ser implementado
usando um framework CSS,
tipo Bootstrap, TailwindCSS
ou qualquer coisa assim,
incluindo aspectos
estéticos de layout.
Mas isso não foi
feito por enquanto,
e o que a gente tem até agora é o modelo
entendendo que a pessoa quer como resultado
um JSX meio tosco, só
com o básico do básico...
Mas tem mais algumas 
demonstrações aqui.
Olha que legal, a gente
vai pedir o seguinte:
uma tabela com os
países mais ricos do mundo
que seja formada pelas
colunas nome e PIB.
Aí o massa é que, de
novo, o autor se encontra
na situação de pair
programming com o modelo,
porque ele gerou um 
JSX inválido.
Ele se embaralhou numas tags 
lá no fim, mas tudo bem.
Depois de consertar, aparece 
a tabela bonitona.
Turma...
Extremamente importante destacar
que não houve trabalho algum
de coletar e organizar os dados.
Com quanto mais coisas
já dá para fazer isso,
principalmente com o Google retornando
cada vez mais os dados mastigados?
E falando nele, a gente
já vai chegar no exemplo
que o autor reproduz a tela
inicial do Google, é muito massa...
Mas antes, outros exemplos 
mais simples.
O emoji mais feio 
de todos os tempos.
E ele retorna uma bola com um
emoji rindo no meio.
Bom, eu não sei o que
pensar do resultado,
muito menos do pedido que 
foi feito pelo autor.
Outro exemplo: cinco botões,
cada um com uma cor diferente
e com os números entre 1 e 10.
E depois de pensar, ele só retornou 
uma lista de botões de 1 a 5.
Estranho...
Outro exemplo: uma landing page
simples. E esse, turma, eu gelei!
Mas é um pedido muito abstrato
e ele retornou apenas uma caixa
com o texto "Isso é uma landing
page simples". Bom, de fato é.
Mais um exemplo: um cabeçalho que diz 
"Eu amo AI", que é Artificial Intelligence,
e um botão com o
emoji do cérebro...
E pimba! Está meio borrado ali, 
mas é isso mesmo.
E como último exemplo: um botão
com a cor do cabelo do Donald Trump...
E dito e feito!
O interessante desse
último exemplo foi:
o modelo está dentro
do contexto de código,
mas ter conseguido buscar algo de
outro contexto completamente diferente
e, de fato, entender 
a semântica do pedido.
E eu digo isso porque eu não
sei se existe em algum lugar
uma cor hexadecimal 
fixa do cabelo dele.
É uma cor abstrata amarela que eu
e você temos na cabeça.
Se eu tivesse que executar essa
tarefa, eu escolheria uma cor com um tom,
você possivelmente
escolheria um outro tom.
E assim como nós dois, o modelo
fez a escolha dele, ele fez sozinho.
Agora, o exemplo que o
negócio começa a ficar sério
e o cara até se
atrapalha para digitar.
Mas ele descreve que
quer o logo do Google,
uma caixa de busca e dois botões
de cor cinza claro, que dizem:
"Procurar no Google" e
"Estou me sentindo com sorte".
E nota uma coisa interessante...
O modelo de forma sozinha
divide o layout em três partes
e começa a retornar os
resultados de forma assíncrona,
inclusive colocando o código
comentado na esquerda para cada sessão.
Detalhe importante também: a URL
da imagem do Google é funcional, tá?
Mas agora, o mais massa...
Nota que os botões cinza estão
meio grudados um no outro, está bizarro...
Sem problemas, ele
complementa a descrição do layout,
pedindo que seja adicionado 
um padding entre eles.
E o modelo só reconstrói aquela
parte em específico.
E como exemplo final, ele pede para trocar
aquela caixa de busca por uma mais larga.
E o modelo vai lá 
e faz isso sem problemas.
E dito tudo isso, eu vou soltar
mais um "raduken" de perguntas,
incertezas e inseguranças para
vocês me ajudarem a responder.
Eu não estou aqui para
definir o que vai acontecer
e qual é a verdade sobre
o futuro do programador.
Eu estou aqui para pensar com vocês, que
é o que a gente faz de melhor neste canal.
Então, partiu raduken!
Primeiro de tudo, colocando o dedo
numa ferida nossa, tá?
Por que que quando a
gente vê outras profissões
sendo substituídas
pela nossa programação,
a gente fica todo
pomposo e otimista,
mas quando essa exata
mesma programação
mostra simples fagulhas
que ameaçam a gente,
a postura e previsões 
mudam completamente?
Então, se a programação está
ameaçada, imagina os youtubers?
Se você acredita que esse tipo de
solução não é capaz de gerar nada novo,
não consegue sintetizar nada
que não seja fruto somente das
informações que já constam no modelo
ou uma mistura disso...
Eu me pergunto, quantas vezes eu
inovei algo na humanidade?
Sinceramente, eu não consigo
lembrar de nenhuma.
Sempre foi uma mistura multidimensional
de várias outras informações
que eu tinha visto
ou apreendido.
E você? Quantas vezes você 
inovou a humanidade?
Outro ponto a se considerar é que talvez
você não sabia o que era um palíndromo
que a gente viu
no vídeo passado.
Eu, pelo menos, não lembrava.
Mas o modelo lembrava.
E aí, isso me deixa pensando...
O que será que ele lembra
que nós dois não lembramos,
e que isso pode se tornar 
uma vantagem?
Por exemplo, conseguir lembrar
simultaneamente de vários assuntos
completamente não relacionados,
ou supostamente não relacionados,
que podem gerar uma combinação
nova não pensada antes,
que a gente não tem capacidade de
encaixar tanta coisa ao mesmo tempo?
A respeito da capacidade dessas coisas, a
capacidade com que elas podem chegar...
Eu toco nesse ponto porque eu
sinto que a gente sempre compara
a potência de uma inteligência artificial,
brigando com as mentes mais brilhantes,
os programadores mais 
capacitados.
E os intermediários? 
Ou os piores até?
O que vai acontecer com eles?
Será que tudo isso, na verdade, por algum
momento, vai melhorar o nosso aprendizado?
Porque você vai pedir
para o modelo, por exemplo:
"Me ensina a programar
aquele tópico, mas com slides,
porque eu aprendo melhor
dessa forma..."
Ou: "Me ensina aquele outro
tópico que tem em vídeo,
mas em formato de podcast, porque eu
preciso desse formato nesse momento"...
e por aí vai.
Ou até esse tipo de coisa ser
inserida em ferramentas de layout
que a base é código, e depois de
montar o layout você falar:
"Realinha as coisas e deixa o tom
das cores de uma forma agradável,
harmônica e com o contraste certo.
Inclusive, deixa 
esteticamente bonito, vai!".
E se ao invés de os pedidos serem
engatados somente na estética das coisas,
eles serem engatados com o
resultado de negócio ou usabilidade?
Por exemplo: "Monta essa tela de
cadastro que peça esses dados aqui,
mas que tenha uma 
alta taxa de conversão".
E se grandes empresas começarem a
adotar isso em plataformas tipo o Wix,
em que você conversa com ela,
e ela consegue entender a semântica
do seu negócio, do seu problema...
E se não for algo alienígena, ela vai
achar alguém na base que deu certo
e vai replicar isso 
para o seu negócio?
Mas se tudo isso estiver sendo feito
através de um grande cérebro central
que consegue assimilar e distribuir
informações de uma forma infinita
para todos os cantos do mundo,
o que vai acontecer
com a concorrência?
Será que só pessoas que vão estar
fora dessa bolha vão ter vantagens reais?
Será que só o ser humano
consegue ser empático
para conseguir entender o
problema de um outro ser humano,
sentir o que ele está sentindo para
daí conseguir criar soluções para ele?
Ou, na verdade, talvez o
modelo consiga ser mais empático
no sentido de que ele consegue, ao
mesmo tempo, colocar na memória
todos os possíveis problemas
que um ser humano possa ter
em todos os sentidos?
Problemas que talvez você não
consiga nem imaginar?
Mas que ele consegue criar soluções
que respeitam todas essas regras,
novamente, ao mesmo tempo?
O que me deixou pensando aqui...
O ser humano é 
realmente empático?
Eu me peguei lembrando aqui...
Quantas vezes na minha vida, as
pessoas foram genuinamente
e profundamente
empáticas comigo (que teve)
versus pessoas que tanto faz, ou
que me trataram de forma negativa?
E com você?
Ainda mais relacionado aos problemas
que a gente está vivendo no mundo hoje.
O que é empatia?
É conhecer e entender o calo de
outra pessoa e fazer algo a respeito,
ou se comportar de uma
forma específica?
Será que tem algo mágico nisso?
Então, quer dizer que agora
todos os programadores
vão ser substituídos por 
inteligência artificial?
Então, não vale nem mais a pena
estudar esse assunto, não é mesmo?
Não, muito pelo contrário!
Não estudar e não treinar
nunca foi uma boa escolha
em nenhuma situação e em nenhum
momento da história da humanidade.
Eu, pelo menos, com todos esses
avanços, vou estudar ainda mais,
porque eu quero estar colado nisso
para estar o mais preparado possível
para o que der e vier.
Não me interessa o que vai ser,
mas eu sei que se eu estiver próximo
e conseguir ler e
entender a situação,
eu sei que vou conseguir saber reagir de
uma forma muito mais racional e inteligente
do que se eu tivesse
largado o assunto.
E Isso vale para qualquer 
coisa se você pensar!
E como você não
saiu do vídeo até agora,
isso significa que você não vai largar
o assunto também. Você é massa!
Então, eu sugiro que
você veja agora um vídeo
em que eu falo dos "4 hábitos que
tornam você um programador ineficiente".
E para vê-lo é só clicar aqui.
E depois, para fechar com chave de
ouro, vê o "Checklist do Programador Sênior",
e o vídeo serve para qualquer
pessoa de qualquer nível,
mas que quer evoluir nessa
carreira. É muito massa!
Fechado? Valeu!
