Por que algumas linguagens ou bibliotecas são mais rápidas do que outras?

Leonardo Gerheim
gb.tech
Published in
3 min readOct 6, 2023
ônibus espacial prestes a entrar em um buraco negro

Muitos já se questionaram o por quê de alguma linguagem de programação, biblioteca ou módulo se tornarem mais rápidos após uma atualização. Claro que há vários fatores pelos quais isso pode ser alcançado, especialmente, tratando-se de computação em nuvem e serviços SAAS onde as formas mais fáceis seriam, por exemplo, paralelismo ou ferramentas de cache. Mas vamos tratar, especificamente, de bibliotecas e linguagens de programação

Em seu seu podcast, Lex Fridman entrevistou Guido van Rossum, que dispensa apresentações onde discutiram sobre a grande melhora de performance da linguagem Python em sua versão 3.11

Em certo ponto Guido assumiu que ele não era um especialista em alguns dos assuntos nos quais ele desenvolveu as bibliotecas. Dessa forma, o que foi codificado funcionava razoavelmente bem, mas poderia ser otimizado por alguém com conhecimento mais profundo sobre o assunto.

Vamos considerar um módulo para resolução de equações do segundo grau. Para isso, precisamos pensar com a mente de um estudante de ensino fundamental, que ainda possui conhecimento muito incompleto sobre os rudimentos matemáticos.

Voltando hipoteticamente para a sala de aula do 9º ano, nosso professor senhor João Carlos Frederico Gauss 😂 propôs a seguinte função:

figura 1 — Equação do segundo grau

Após nos deixar pensando algum tempo, ele nos provocou a raciocinar que os dois primeiros termos pareciam um produto notável, um trinômio quadrado perfeito para ser mais específico.

Figura 2 — trinômio quadrado perfeito

Agora é possível substituir na equação inicial para seguirmos os passos abaixo e encontrarmos suas raízes.

resolução de equação do 2º grau pelo método de completar quadrados
Figura 3 — Resolução de função do segundo grau por dedução

No passo 2 observamos a adição e subtração do mesmo valor, isso garante a igualdade, uma vez que é o mesmo que zero. Assim, após 6 passos chegamos ao resultado, ou seja, encontramos as duas raízes da função.

Nosso querido professor, senhor Gauss passou uma lista de 30 exercícios como tarefa para casa. Após uma tarde inteira e uma boa parte da noite finalizamos a lista para entregá-lo no dia seguinte.

Ao iniciar a aula, antes de começar a correção da lista, senhor Gauss volta no primeiro exemplo e o resolve "magicamente" em apenas 2 passos.

meme do Jackie Chan confuso
Figura 4 — What
Figura 5 — Resolução pela fórmula de Bhaskara

A partir da análise das figuras 3 e 5, podemos ver que houve uma redução tanto do número de passos quanto da complexidade dos mesmos. Isso foi possível a partir da aplicação de uma formula, onde manipulamos diretamente os termos da função.

Nesse exemplo específico o conhecimento avançado de matemática foi a chave 🔑 para reduzir a quantidade de passos e a complexidade.

Assim como Guido Van Rossum mencionou no podcast, quando pessoas com maior conhecimento assumiram o desenvolvimento de uma biblioteca, elas foram otimizadas. A chave então é o conhecimento avançado do tópico em questão.

Para quem ficou curioso, abaixo segue a dedução da fórmula de Bhaskara.

dedução da fórmula de Bhaskara
Figura 6 — Dedução da fórmula de Bhaskara

Até o próxima…

--

--