O Laboratório de Compiladores do Departamento de Ciência da Computação da Universidade Federal de MInas Gerais (LaC – DCC/UFMG) recebeu em 2021, por meio do criador da linguagem de programação Elixir e diretor de Adoção da Dashbit, José Valim, o financiamento para uma bolsa de mestrado e três de iniciação científica. A Dashbit trabalha junto às startups e instituições, auxiliando-as a adotar e executar o Elixir. Além disso, a empresa é grande incentivadora da qualificação dos alunos e da pesquisa junto às universidades.
Para financiar os jovens cientistas que trabalham no Laboratório, o LaC também tem a parceria para mais três bolsas de iniciação científica com a Cyral. No passado, houve outras parcerias semelhantes, com empresas como a Google, a Intel, a LG Electronics e a AMD. Para o professor do DCC e coordenador do LaC, Fernando Magno Quintão Pereira, esse tipo de parceria é muito importante para o Laboratório e para o DCC por três razões. “Primeiro porque vivemos em um período de escassez de recursos para a pesquisa. Assim, cada bolsa que recebemos da iniciativa privada ajuda o Departamento a cumprir o papel de formador de recursos humanos qualificados. Segundo, esse tipo de bolsa aproxima a pesquisa acadêmica das necessidades da comunidade de software livre. Hoje, muito da infraestrutura usada em desenvolvimento de software é aberta. Logo, ao participarmos da construção dessa comunidade, estamos contribuindo para o progresso da ciência da computação em geral. E, finalmente, parcerias como esta aproximam a universidade de grandes nomes dentro da ciência da computação. José Valim, em particular, é uma figura icônica no campo da informática, tendo criado sozinho o Elixir, uma das linguagens de programação mais populares do mundo”, contou.
José Valim é formado em Engenharia Elétrica pela Escola Politécnica da Universidade de São Paulo (USP) e mestre pelo Politécnico di Torino, na Itália. Também é palestrante, autor de três livros técnicos e, além disso, foi co-fundador e diretor de Pesquisa e Desenvolvimento da Plataformatec, onde criou a linguagem de programação Elixir. O Elixir cresceu como tecnologia tanto nos mercados da Web quanto de softwares embarcados e processamentos de dados. A comunidade Elixir também organiza eventos na Europa, América e Ásia. Valim foi membro do Rails Core Team desde o início de 2010 até meados de 2014 e recebeu o Ruby Hero Award como reconhecimento do trabalho em projetos de código aberto. Já em 2015, ganhou o prêmio Erlang User of the Year.
Ao criar a linguagem de programação Elixir, Valim tinha por objetivo aumentar a extensibilidade e produtividade da Máquina Virtual de Erlang (BEAM), mantendo a compatibilidade com ferramentas e ecossistema de Erlang. Elixir é uma linguagem de programação funcional, concorrente, de propósito geral que executa na máquina virtual Erlang. Além disso, compila em cima de Erlang para suportar aplicações distribuídas, em tempo real, tolerante a falhas. Contudo, Elixir estende as capacidades da máquina virtual Erlang para suportar metaprogramação via macros e polimorfismo via protocolos.
Em entrevista à comunicação do DCC, José Valim contou como surgiu a ideia de criar a Elixir, falou do sucesso da linguagem de programação, da parceria da Dashbit com o LaC e os projetos com a universidade, deu dicas para os alunos e falou um pouco de como começou sua paixão pela computação.
Como surgiu a ideia de criar a linguagem de programação Elixir? Vou tentar resumir. Antes de criar o Elixir, eu desenvolvia em Ruby e era membro do time de desenvolvimento do framework web Ruby on Rails. Por volta de 2007/2008, comecei a ouvir bastante sobre concorrência e como no futuro vamos ter máquinas com diversos, até dezenas de núcleos. O problema é que a grande maioria das linguagens de programação mainstream não estavam preparadas, e algumas ainda não estão, para esse futuro que temos hoje. Vou explicar porque.
Quando eu era pequeno, por volta de uns nove anos, tive o primeiro computador em casa. Na época era Pentium 100; me lembro que foi muito caro. Fui privilegiado nesse sentido, minha mãe estudava processamento de dados e por isso tínhamos o computador. Porém, lembro que pouco tempo depois, um amigo me disse que tinha um Pentium 233. Pensei: nossa, pagamos tão caro no nosso computador e agora tem um colega que tem um duas vezes mais rápido?
Esse fenômeno, conhecido como Lei de Moore, aconteceu por muito tempo. Depois veio o Pentium 400, Pentium 900 e assim por diante. Durante esse período, ser desenvolvedor de software era muito conveniente: você poderia escrever um programa, fazer nada por dois anos, e a tecnologia de forma geral ia avançar o suficiente para que tudo executasse duas vezes mais rápido!
Hoje isso não acontece mais. Nós não compramos computadores com 8GHz, 16GHz, etc. Agora compramos computadores com dois, quatro, oito, dezesseis núcleos, etc. Até um relógio de pulso pode ter quatro núcleos! E, infelizmente, muitas das linguagens de programação de hoje não conseguem deixar o nosso software duas vezes mais rápido quando dobramos o número de núcleos na nossa máquina.
De volta há 12 anos atrás, quando ouvi falar que no futuro vamos escrever software que roda de forma concorrente em todos os núcleos da máquina, resolvi me aprofundar neste tópico. Gostaria de me preparar e buscar ferramentas, linguagens de programação e bibliotecas que utilizam todos os núcleos de forma eficiente.
Nessa busca, encontrei o Erlang, que é uma linguagem de programação e uma máquina virtual desenvolvida pela Ericsson. Descobri que a área de telecomunicação resolveu, há três décadas atrás, grande parte dos desafios que temos hoje com o desenvolvimento de sistemas web. Se você trabalha em uma aplicação web, por exemplo, tem que gerenciar diversos usuários utilizando o sistema ao mesmo tempo, com informação indo e voltando sem parar, etc. Esses foram os problemas que a Ericsson teve que resolver na área de telecomunicação. Para isso, eles criaram uma linguagem e uma plataforma.
Digo que esse encontro foi “amor à primeira vista”. A partir desse momento, estava decidido que queria escrever software em cima da máquina virtual do Erlang. Com o tempo, veio a ideia de criar uma nova linguagem de programação para essa máquina virtual, e aí nasceu o Elixir.
No levantamento do Stackoverflow de 2021, Elixir aparece como a terceira linguagem de programação com os melhores salários, dentre as 38 linguagens consideradas. De onde vem esse sucesso da linguagem? Eu diria que o sucesso da linguagem é exatamente a máquina virtual do Erlang, pelos motivos ditos acima. Então, quando alguém manifesta interesse no Elixir e eles aprendem mais sobre a máquina virtual Erlang, eles veem que tem “pedigree”. Creio que diversos desenvolvedores passam por uma jornada parecida com a minha. Eles olham para a máquina virtual e falam: “se eu tivesse utilizado essa plataforma, ela teria resolvido diversos problemas que enfrentei no passado”.
Outra coisa que ajudou bastante com o crescimento da linguagem foi a comunidade ser acolhedora. Queremos que todo mundo se sinta bem-vindo e isso é muito importante. O Elixir segue o paradigma de uma linguagem funcional e é usada para escrever software concorrente e tolerante a falhas. Essas ideias são diferentes da forma que a maioria da indústria trabalha hoje. Também é diferente das linguagens que o pessoal aprende nas universidades. Como têm paradigmas novos, queremos fazer com que esse processo de aprendizado seja uma experiência prazerosa, onde as pessoas se sintam produtivas, acessem a comunidade, façam perguntas e todos aprendam juntos. Logo, focar na experiência de aprender a linguagem até colocar o primeiro sistema em Elixir em produção é bastante importante.
A Dashbit vem doando bolsas de mestrado e iniciação científica para o Laboratório de Compiladores do DCC/UFMG. Você poderia falar um pouco sobre os projetos que são feitos junto à universidade? A Dashbit, na verdade, é uma empresa pequena, de oito a cinco pessoas, com o foco em investir no ecossistema de Elixir. Isso acontece de diversas formas: ajudamos empresas a adotar e colocar o sistema em produção, contribuímos para o software aberto e, recentemente, iniciamos junto ao LaC/DCC projetos de iniciação científica e bolsas de mestrado. Temos o objetivo duplo: continuar investindo e explorando novas ideias no Elixir e trazer mais pesquisa e interesse acadêmico para a plataforma. Um dos projetos, o eBPF – que compila código do Elixir para rodar em eBPF, dentro do kernel do Linux – é interessante porque ele explora a capacidade da linguagem em ser flexível e extensível. Hoje temos um subset do Elixir que compila para GPU, talvez podemos ter um que compila para o kernel do Linux. Sobre a iniciação científica, o foco é trazer melhorias diretamente à máquina virtual do Erlang.
O que você poderia dizer para nossos alunos que têm vontade de contribuir com a comunidade de software livre? E com o Elixir em particular? É um pouco difícil dar sugestões hoje, já que a minha primeira experiência foi há bastante tempo e, com certeza, mudou muito. Mas o que fiz foi tentar, tentar e tentar! Como o código é aberto, tem a vantagem de poder ir lá e olhar. Então eu sempre analisava o código dos projetos, das bibliotecas e frameworks que eu usava. Às vezes eu achava algo para melhorar. No começo, eram detalhes, documentação, etc, que são bastante úteis e um ótimo começo. Depois você ganha desenvoltura para corrigir um bug, contribuir com uma feature e por aí vai!
Se eu for resumir, eu diria: tenha curiosidade de olhar o código que está disponível e, se tiver alguma ideia, veja como é o processo do projeto e tente contribuir. Mesmo se a contribuição não for aceita, o processo de mexer no código, fazer os testes rodarem, já vai ser um bom aprendizado. Com o Elixir não é diferente, é brincar, explorar, e ver o que acontece.
Hoje você vive na Polônia, mas sempre vem contribuindo com o crescimento da comunidade de programação do Brasil, seja via palestras, com as bolsas de pesquisa ou com as muitas entrevistas. Como é a sua relação com essa comunidade de programadores do Brasil? Embora ainda tenha muitos laços no Brasil, a minha forma de gerenciar a comunidade é descentralizada. Todos têm espaço para começar um meetup, organizar um evento, e por aí vai. Logo, todo sucesso do Elixir no Brasil é graças à comunidade brasileira. Eles organizam meetups, buscam palestrantes, promovem a linguagem dentro das empresas, etc. Eu não estou envolvido em nada, nem no Brasil, nem fora. Todo mundo que se apaixona pela tecnologia e pela comunidade tem a oportunidade de fazer a contribuição da forma que achar melhor.
Nos conte um pouco da sua história? Nasci em Porto Alegre e cresci em Goiás, em uma cidade chamada Inhumas. Mudei para São Paulo quando passei no vestibular da USP, na Escola Politécnica, onde fiz Engenharia Elétrica com ênfase em Automação e Controle. No quarto ano, fiz o programa de diploma duplo da Escola Politécnica e mudei para Itália, onde terminei a graduação e fiz o mestrado. Foi quando conheci minha esposa, que é polonesa, e mudei para Polônia. Mesmo morando aqui, fui co-fundador e diretor da Plataformatec, uma consultoria renomada baseada em São Paulo, onde criei o Elixir. Depois que a Plataformatec foi adquirida pela Nubank, criei a Dashbit. Ainda mantenho laços fortes com o Brasil e agora tenho esse novo laço acadêmico, que estou bastante feliz em poder participar, dada a importância que o ensino brasileiro e a universidade pública teve para a minha vida.
Sobre a programação, comecei a programar depois que entrei na universidade. Durante o primeiro ano, tive introdução à programação com a linguagem C e gostei muito. Também tive uma banda no primeiro ano da universidade e aprendi a programar fazendo o site para divulgá-la. Na época usei ActionScript e Flash, porém, hoje são basicamente tecnologias mortas. Depois aprendi PHP, SQL e fui aprendendo… é parte do processo. Até encontrar o Erlang e criar o Elixir.