Aguarde...

3 de dezembro de 2023

Por que todos deveriam aprender um pouco de programação

Por que todos deveriam aprender um pouco de programação

“Quando você diz aos computadores o que fazer, não é tão diferente de como você explicaria a outra pessoa como realizar uma tarefa específica.”

Michael Littman é professor universitário de ciência da computação na Brown University e diretor da divisão de informação e sistemas inteligentes da National Science Foundation. Littman é membro da Association for the Advancement of Artificial Intelligence e da Association for Computing Machinery. Ele foi selecionado pela Associação Americana para o Avanço da Ciência como Leadership Fellow for Public Engagement with Science in Artificial Intelligence.

EXISTEM APENAS ALGUNS TIPOS DE TIJOLOS

Um fato surpreendente sobre os computadores é que eles são “universais”. A mesma caixa de circuitos pode funcionar como calculadora, câmera, telefone, TV, livro e ferramenta para criar equações, imagens, sons, animações e texto. Como eles fizeram isso? Programabilidade. A principal tarefa que um computador realiza é seguir as instruções que você fornece e que indicam qual tarefa executar. Muito meta.

Normalmente, você fornece instruções ao computador apontando-o para instruções escritas por outra pessoa. Isso é o que você faz quando baixa o software e clica nele para executá-lo. Mas os computadores oferecem um controle mais refinado do que isso. Você mesmo pode escrever as instruções específicas. Dado que os computadores podem fazer praticamente qualquer coisa, parece que você teria que aprender muitas instruções. Mas na verdade existem apenas alguns. Assim como um LEGO Master Model Builder pode criar qualquer coisa usando um pequeno conjunto de peças, você só precisa de alguns conceitos de programação para construir programas simples ou complexos.

Os blocos de construção são comandos, condicionais, variáveis, loops e funções. Cada um é importante porque cada um é útil e poderoso por si só. Mas o verdadeiro superpoder surge quando você aprende como combinar essas unidades de maneira criativa. Ao aprender sobre cada uma dessas peças isoladamente, você terá uma base fabulosa para construir.

VOCÊ JÁ ESTÁ MERGULHADO NISSO

Os blocos de construção são suficientes para compor qualquer programa já escrito e expressar qualquer tarefa imaginável. Então, você pensaria que eles seriam bastante de alta tecnologia. Mas o fato é que usamos essas ideias o tempo todo. Eles entraram na cultura humana muito antes da invenção dos computadores. Quando você diz aos computadores o que fazer, não é tão diferente de como você explicaria a outra pessoa como realizar uma tarefa específica.

Os comandos são apenas etapas individuais que podem ser agrupadas em uma sequência. Você vê essa ideia no roteiro de um filme, que é uma sequência de falas para ler; ou uma peça de música para piano, que é uma sequência de notas para tocar.

Condicionais são pontos de ramificação que especificam quando é apropriado seguir comandos específicos. Freqüentemente transmitimos essa ideia uns aos outros usando a palavra “se”. Por exemplo, a Segurança Interna insiste: “Se você vir alguma coisa, diga alguma coisa”. Tony Orlando cantou: “Bata três vezes no teto se me quiser”. E Winston, em  Ghostbusters , disse: “Quando alguém te pergunta se você é um deus, você diz SIM!”

Variáveis ​​são substitutas para outros valores. Voltando à  citação dos Caça-Fantasmas  , a palavra “alguém” desempenha o papel de uma variável. Ele pode substituir quem quer que esteja fazendo a pergunta. No filme, era Gozer, o Gozeriano. Mas a instrução diz que o mesmo comportamento deve ser adotado, independentemente de quem faz a pergunta. As palavras atuam como variáveis ​​o tempo todo. Se eu desafiar você para um concurso e disser: “O vencedor leva tudo”, a quem se refere “o vencedor”? É quem ganha, claro. Então, “vencedor” é substituir aquela pessoa e, portanto, agir como uma variável.

Os loops nos dizem para seguir o mesmo conjunto de instruções várias vezes. “Solte e me dê vinte!” é uma maneira sucinta de dizer “solte”, “faça uma flexão”, “faça uma flexão”, “faça uma flexão”, “faça uma flexão”. A palavra “vinte” atua como uma instrução de loop que nos diz para repetir a atividade implícita vinte vezes.

As funções fornecem uma maneira de empacotar um conjunto de instruções e dar-lhes um nome para referência posterior. Lembro-me de levar meus filhos ao Chuck E. Cheese para uma festa de aniversário. Chuck E. diria: “Quando eu digo feliz, você diz ‘boithday’. Feliz . . . Feliz . . . ” Ele fazia uma pausa após cada “Feliz” para nos dar a chance de gritar “Boithday!” Aqui, “feliz” atua como uma função, dizendo-nos para gritar “boithday”. Se funções soam um pouco como variáveis, é porque são. São essencialmente variáveis ​​que representam instruções.

VOCÊ PODE COMEÇAR HOJE

Dado que os blocos básicos de programação já são familiares, nada o impede de experimentá-los. É claro que é preciso muita prática para escrever programas grandes e complicados, mas há muitos exemplos de sistemas simples que permitem fazer coisas práticas com apenas um bloco de construção de programação por vez, quase imediatamente. Usar os blocos em conjunto é um superpoder que aumentará significativamente suas capacidades.

Criar questionários online e definir macros de teclado no editor de texto Emacs pode ajudá-lo a praticar comandos de sequenciamento.

A ferramenta interativa de autoria de ficção Twine e a programação de ação de gatilho usando if-this-then-that ou Alexa Routine são boas maneiras de se sentir confortável pensando em dividir em comportamentos diferentes usando condicionais.

Definir fórmulas em uma planilha ou criar seu próprio questionário do BuzzFeed oferece exposição ao armazenamento de informações em variáveis.

Experimentando eventos de calendário repetidos no Google Calendar, Apple Calendar, Yahoo! Calendário e similares, ou projetar seus próprios videogames com ferramentas on-line de baixo código, oferecem um caminho para você entender a consolidação de instruções em loops.

Por fim, a funcionalidade de agrupamento no desenho de programas e na construção de novos comportamentos no Google Apps Script pode revelar o valor da definição de funções.

AI É UM PRODUTOR DE TIJOLOS

Há um ditado que diz: “O professor medíocre conta. O bom professor explica. O professor superior demonstra. O grande professor inspira.”

Esses quatro verbos – contar, explicar, demonstrar e inspirar – mapeiam perfeitamente as quatro maneiras principais que temos para transmitir tarefas aos computadores. “Contar” corresponde à codificação, às ideias como loops e variáveis ​​mencionadas anteriormente. Mas os outros três são todos tipos de aprendizagem automática que têm produzido avanços fantásticos na inteligência artificial e mantêm a promessa de expandir enormemente a capacidade de todas as pessoas para tornarem os computadores mais poderosos e úteis para si próprias.

A ideia de explicar envolve explicar ao computador qual é o seu objetivo, em vez das etapas específicas necessárias para cumprir esse objetivo. Essencialmente, eles ajudam as pessoas a construir ciclos para resolver uma tarefa. Esse tipo de aprendizado de máquina é conhecido como “aprendizado por reforço” porque geralmente envolve decidir sobre recompensas e punições para a máquina e deixá-la ajustar seu comportamento para corresponder. Programas de última geração para jogar jogos de tabuleiro e videogames usam essa ideia, assim como algumas aplicações comerciais, como manter os data centers refrigerados enquanto minimizam a eletricidade e maximizam o rendimento. Estão também a negociar ações e a otimizar cadeias de abastecimento, problemas em que é mais fácil para as pessoas explicar o que significa o sucesso do que decidir sobre os passos específicos a tomar para o alcançar.

A demonstração também desempenha um papel fundamental nos sistemas de computador modernos. O ramo do aprendizado de máquina, conhecido como “aprendizado supervisionado”, produz software de alto desempenho por meio de exemplos. Programas que decodificam a fala e traduzem entre idiomas são agora criados regularmente, fornecendo ao gigante da computação coleções de entradas e suas saídas correspondentes. As abordagens de aprendizado de máquina supervisionado criam as sequências de instruções para que isso aconteça. Um tipo de aprendizagem supervisionada resolve problemas produzindo coleções de ramos condicionais conhecidos como “árvores de decisão”. Outro organiza cálculos intermediários em valores de um conjunto de variáveis ​​conhecido como “rede neural”. Estas variáveis ​​podem elas próprias ser organizadas em unidades análogas às definições de funções.

Dizer a uma máquina o que fazer através da “inspiração” é muito menos comum, mas estão a surgir uma série de aplicações importantes da ideia. Um exemplo recente é a geração de instruções de direção. É difícil dizer a um computador qual rota escolher para cada local e destino possível. É até difícil explicar qual é o objetivo – a maioria das pessoas prefere rotas mais curtas, mas às vezes irão um pouco mais longe se uma rota tiver menos curvas. Quantos a menos? Não sei. Você pode demonstrar rotas para o computador, mas como elas podem ser generalizadas para pares locais-destino novos ou raros?

O que os engenheiros estão começando a fazer é usar uma combinação de demonstração e explicação: basicamente, usar demonstrações de rotas que as pessoas selecionam para extrair uma regra que explique por que elas escolheram essas rotas em detrimento de outras possibilidades. Depois que o computador tiver extraído essa regra, ele poderá aplicar a explicação aprendida a novas rotas. Acho isso uma inspiração porque nossos exemplos servem como fonte para a máquina fazer coisas novas e emocionantes.

MASHUPS SÃO O CAMINHO A SEGUIR

Chatbots são muito legais e podem até nos ajudar a programar. Mas no final das contas, ainda cabe a nós entender o que queremos que a máquina faça e transmitir essa mensagem. A programação futura pode ser muito mais fácil, mas ainda envolve o mesmo conjunto de habilidades que usamos hoje. Já usamos essas habilidades ao lidar com outras pessoas, então é um grande avanço. Mas o desenvolvimento activo destas competências continuará a ser essencial, talvez ainda mais, na era da IA.

O aprendizado de máquina está tornando mais fácil para as pessoas dizerem às máquinas o que fazer. Mas, normalmente, os sistemas funcionam contando, explicando, demonstrando ou inspirando. Em contraste, quando pedimos a outras pessoas que façam algo por nós, geralmente transmitimos a tarefa utilizando uma combinação destas ideias, especialmente descrições e exemplos. Isso porque descrições sem exemplos podem ser abstratas e ambíguas. E exemplos sem descrições deixam você adivinhar a intenção. Ambos são propensos a erros.

Por exemplo, Carl Sagan disse: “O nitrogênio em nosso DNA, o cálcio em nossos dentes, o ferro em nosso sangue, o carbono em nossas tortas de maçã foram produzidos no interior de estrelas em colapso. Somos feitos de matéria estelar.”

Ele nos disse que somos feitos de matéria estelar. Mas ele também deu alguns exemplos para garantir que realmente entendemos o que ele estava transmitindo. Da mesma forma, no contexto de dizer às máquinas o que queremos que elas façam, combinar regras e exemplos mudará o jogo. Tornar mais fácil e confiável guiar os computadores para realizar nossos desejos é onde realmente vemos a IA atingindo todo o seu potencial.

Espero que você se sinta inspirado a usar os computadores de forma mais deliberada e com um senso de autoeficácia e capacitação. Afinal, os computadores são máquinas às quais podemos delegar a nossa vontade. Delegar a nossa vontade parece algo profundo e penso que Carl Sagan ficaria orgulhoso.

Este artigo foi publicado originalmente na revista Next Big Idea Club

Postado em BlogTags:
Escreva um comentário