Como os conceitos de variáveis e funções são a abstração dos mesmos conceitos na matemática.
O porquê do título
Você, programador, sabia que o conceito matemático de variáveis e funções batem perfeitamente com o conceito das variáveis e funções em linguagens de programação que todos os dias estudamos, praticamos e trabalhamos? Ou nos esquecemos disso, ou nunca soubemos.
A versão original dessa publicação foi feita no LinkedIn, no meu perfil (link no final das explicações).
Mês passado tive um dos insights mais inesperados dos meus últimos anos de estudo. Lendo Essential Math for Data Science pude entender que, algo que faço todos os dias, se trata de "pura matemática" e eu nunca nem sequer pensei dessa forma, nunca cogitei que na verdade os blocos de código que eu implemento são como são, o por quê de serem assim.
Mas como assim?
Na matemática, uma variável é um espaço reservado para um valor ainda não definido ou conhecido, um placeholder de valores abstratos, que estão por vir. E o mesmo acontece na programação, as variáveis que definimos e manipulamos são exatamente esses placeholders, esses espaços reservados na memória à fim de representar algo, como em parâmetros de uma função também, na verdade, principalmente nelas.
E as funções? Na matemática, uma função é uma expressão que define relações entre uma ou mais variáveis a fim de obter um resultado disso, mesmo que não seja "concreto". Mais especificamente, funções pegam input variables (também chamadas de domain variables ou independent variables, ou simplesmente variáveis independentes/de entrada) e as conecta à uma expressão que resulta numa output variable (também chamada de dependent variable, a variável resultante DEPENDE da variável independente, de entrada, por isso se chama variável dependente).
Não entendeu? Vou ilustrar isso com uma função linear.
f(x) = 2x + 1
O "x" seria nossa variável independente, pois ela abstrai o conceito de um número que está por vir; O "f(x)" seria exatamente o que vemos no ensino médio como "y", a variável dependente, pois ela depende da definição de "x" para poder existir. O mesmo acontece nas funções que programamos, para vermos isso melhor é só dar uma olhada na imagem do post, mas antes, vamos traduzir o conceito dessa função para algo menos estranho visualmente (tirando esse "f(x)"):
y = 2x + 1
E então podemos representar essa mesma expressão, agora novamente com o "f(x)", como:
y = f(x)
Pois "2x + 1" é o resultado de "f(x)", logo, nesse exemplo, representam a "mesma coisa".
Veja os trchos de código e entenda essa associação, talvez seja básico para alguns esse entendimento, mas de todos os amigos que conversei, que estão no "mesmo momento" e luta que eu, seja no estudo para Carreira de Dados ou em qualquer outra área que envolva programação, esse insight é valioso e nos mostra o PODER DA MATEMÁTICA em nossas vidas, até naquilo que escolhemos ou simplesmente não conseguimos no momento enxergar.
Implementando nossa função em linguagens de programação:
f(x) = 2x + 1
ou
y = 2x + 1
ou ainda
y = f(x)
def f(x: float) -> float:
return 2 * x + 1
y = f(2) # y = f(x)
print(y) # 5
Que nos da o output:
>>> 5
Assim como substituir o x por 2, como feito na função. O mesmo exemplo pode ser feito em outras linguagens, como em php:
<?php
function f(float|int $x): float
{
return 2 * $x + 1;
}
$y = f(2);
echo $y;
Que nos retornaria na página do browser "5" também.
Considerações finais
Em suma é isto, lembro de ter ficado extasiado com isso, nunca parei pra pensar e enxergar dessa forma, mesmo tendo foco em Back-End por mais de um ano. Como pontuado na postagem original que fiz no meu LinkedIn pelo Ronaldo Lima Faria:
Por isso o curso de computação era, originalmente, uma especialização dentro da matemática.
E sim: computação é matemática. A teoria relacional veio da análise combinatória e teoria de conjuntos. Por isso você consegue explicar joins usando diagramas de Venn, só para citar um exemplo.
Massa demais, né?