O historiador alemão Oswald Spengler considerou a nossa época a era da abstração. Em nenhum lugar isso é mais aparente do que na programação, onde a abstração não é apenas uma conveniência conceitual, mas uma necessidade absoluta. Os programadores gostam de falar sobre suas ferramentas (de forma bastante abstrata) como uma “pilha”. No topo da pilha – a superfície que a maioria de nós encontra primeiro – estão as linguagens de marcação simples, sendo o HTML a mais conhecida. Na parte inferior estão as linguagens “bare metal” da máquina. Portanto, há uma hierarquia e, quanto mais abaixo você desce na pilha, menos abstrata — e, de certa forma, mais difícil — fica a programação.
Não é realmente metal lá embaixo, é claro. É areia – camadas incrivelmente finas de dióxido de silício que conduzem impulsos elétricos em padrões ordenados que experimentamos como uma tela que nos mostra um retângulo com texto, imagens tremeluzentes e assim por diante. Ainda assim, você pode ver como Spengler, embora tenha morrido antes da era da computação digital, estava no caminho certo. Nenhum de nós mantém 1s e 0s gravados na areia em nossas cabeças e, ainda assim, todos nós os manipulamos todos os dias usando abstrações amigáveis e de alto nível.
O perigo de viver neste momento spengleriano é que é fácil confundir tais abstrações com o mundo tal como ele realmente é. Acho que é por isso que os programadores muitas vezes se aprofundam na pilha à medida que progridem em suas carreiras. Achamos que talvez quando chegarmos ao bare metal nosso mundo finalmente será real.
Comecei, como a maioria, no topo da pilha. HTML. 1995. Geocidades. Anjo de Fogo. Etiquetas piscantes. Marquesa. Admito: adorei uma marca de letreiro, que rolava o texto pela tela. Eu adorei tanto o marquee que saí do HTML e caí nos braços acolhedores do Flash. A culpa é Matriz local na rede Internet. A animação mais legal de todos os tempos.
O Flash não estava realmente programando. Ou não começou assim. Era um aplicativo de animação. Você desenhava formas em um palco, arrastava-as e definia quadros-chave como um filme de animação. Uma abstração de UI descendente de Looney Toons. Mas então alguém colocou uma linguagem de script lá, e a próxima coisa que você sabe é que eu estava escrevendo equações de atenuação quadrática para controlar as formas. (Acontece que meu professor de trigonometria do ensino médio estava certo – eu realmente usaria essas coisas um dia.)
Fiquei atraído pela elegância e simplicidade de escrever código em um arquivo de texto, em vez de clicar e arrastar coisas. Parecia que deveria ser: escrever código; coisas acontecem. Mas com o Flash havia uma quantidade muito limitada de coisas que poderiam acontecer. Eu queria descer na pilha. Eu queria menos abstrações.
Naquela época, minha fuga do mundo da programação era um trabalho diurno administrando a cozinha de um restaurante. Não há nada de abstrato na correria da sexta à noite. Curiosamente, era onde eu estava quando descobri como me aproximar da máquina.
Foi em 2004 quando meu melhor lavador de pratos, Aaron, um jovem que gostava de resolver teoremas matemáticos não resolvidos em seu tempo livre (sim, era muito parecido com trabalhar com Gênio Indomável), me disse: “Se você quiser se aprofundar no pilha, aprenda Python.” Ele era mais esperto do que eu, então anotei. Aprenda Python.
A dificuldade com qualquer nova linguagem de programação é a curva de aprendizado acentuada, todo aquele trabalho penoso e bater a testa no teclado. Não havia Codecademy ou Stack Overflow naquela época. Compramos livros de empresas como O’Reilly e No Starch Press. Eu comprei Aprendendo Python e folheei os primeiros capítulos, mas não tinha nenhum projeto que me motivasse. Sem algo que o obceque, você nunca aprenderá a programar.
Eu também não tive muito tempo. Administrar a cozinha de um restaurante é algo que consome muito e que suga a vida. Depois de mais um ano, eu queimei. Juntei todo o dinheiro que tinha, comprei uma passagem de avião e parti para me perder na Ásia. Ei, funcionou para os Beatles. Tipo de.
Um dia decidi que precisava de mais músicas do grande guitarrista de jazz Django Reinhardt. Fui até o cibercafé abaixo da minha casa de hóspedes em Bangkok para procurá-lo. O problema era que o teclado, naturalmente, era tailandês. Eu poderia alterar o layout nas configurações do Windows, mas os símbolos nas teclas ainda eram tailandeses. Achei que “Django” era um nome distinto o suficiente para que fosse tudo que eu precisava. (Isso foi antes do filme de Tarantino existir.) Eu digitei e, com certeza, Reinhardt estava lá nos primeiros resultados.
Mas o que me chamou a atenção foi um site chamado Django, “o framework web para perfeccionistas com prazos”. Não tinha prazos, mas perfeccionista? Não sei dizer quantas vezes mexi com tabulações e espaços para ter certeza de que meu HTML manuscrito estava recuado corretamente quando você visualizou a fonte. Existia, possivelmente, uma estrutura web para pessoas como eu? Me diga mais.
Descobriu-se que o Django era um framework Python. Se isso fosse um filme, teria havido uma sequência mal animada aqui, onde o rosto de Aaron cortava uma nuvem de névoa de viajante do Sudeste Asiático, dizendo: Aprenda Python. Aprenda Python. Seis meses depois, de volta a Los Angeles, um amigo me pediu para criar um site para uma instituição de caridade para ciclistas, a Wheels4Life. Eu concordei em fazer isso, com a condição de usar o Django. Eu tinha um projeto.
Esse site deu certo. Isso levou a outro. E outro. Eventualmente, eu tinha uma pequena empresa construindo sites baseados em Django. Demorou alguns anos, mas comecei a pensar em Python e cheguei ao ponto em que, diante de um problema, poderia descobrir uma maneira de resolvê-lo.
Mas eis o que me surpreendeu: nunca fui mais fundo. Nunca quis. Python fica na metade da pilha, mas é único em sua capacidade de se mover em qualquer direção. Você pode trabalhar nos mais altos níveis de abstração e criar sites HTML (especialidade do Django), mas também pode se aproximar da máquina por meio de uma API que permite importar módulos C. Trabalhando em Python, eu poderia construir qualquer coisa que quisesse. A certa altura, percebi que nem estava mais pensando na pilha. Eu estava pensando nas possibilidades.
Fui à primeira conferência Django, aparentemente cobrindo-a para a WIRED, mas também estive lá para conhecer os fundadores e aprender com a comunidade. O que descobri foi um grupo acolhedor de colegas nerds e programadores trabalhando juntos para resolver problemas e construir coisas legais. Foi tudo muito concreto. Tangível. Mesmo que surja de abstrações.
Dizer que vivemos numa era de abstração pode ser pejorativo. A palavra implica uma distância excessiva da verdade fundamental das coisas, e tendemos a ver isso – muitas vezes com razão – com suspeita. Mas parece-me, agora, que a busca por desabstrair tudo, por chegar ao fundo da pilha, é um impulso nascido de tempos passados. O bare metal pode estar onde você estiver, no idioma de sua escolha, na sua comunidade. É aí que você constrói seu mundo.