DEV Community

Cover image for Afinal, o que é Stack Overflow?
Hiago Brenha
Hiago Brenha

Posted on

Afinal, o que é Stack Overflow?

Se você ta lendo isso aqui, eu tenho 99,9% de certeza que em algum momento o StackOverflow acabou salvando sua manhã, tarde ou madrugada e tudo que eu posso dizer pra você sobre isso é: Seja muito bem vindo ao clube.

Mas você já se questionou de onde veio o nome StackOverflow ou o que ele significa? Eu já, nos primórdios dos meus estudos com programação aonde eu gastava mais tempo lendo e relendo tópicos nesta plataforma do que realmente escrevendo código.

Esse questionamento me voltou a mente em uma conversa com alguns amigos que utilizam o site todo santo dia, sendo até mesmo muito ativos dentro da comunidade mas que não fazem ideia do que é um Stack Overflow.

Call Stack

O Call Stack tem um trabalho simples e extremamente importante, orientando em aonde estamos no código para que possamos rodar aquelas instruções na ordem correta para que tudo funcione como o planejado.

De uma outra forma, pense nele como literalmente uma pilha com a ordem de chamada das funções do seu código. Um espaço na memória que vai armazenar as funções que você chama no seu código, adicionando um novo item ao topo da pilha sempre que você chama uma nova função e removendo este ao término da sua execução.

Demonstração de uma Call Stack em JavaScript

E agora, o questionamento que talvez você esteja se fazendo é o que acontece no caso de uma função chamar outra. Isso é bem simples se seguirmos o que já foi explicado, a função que foi chamada vai novamente para o topo da pilha e passa a ser executada, sendo retirada e dando lugar a próxima assim que terminar e assim sucessivamente. Acho que já deu pra entender né?

Stack Overflow

Podemos resumir ele como sendo um problema causado por chamar várias e várias funções uma dentro da outra, aumentando em muito o tamanho da nossa Call Stack, até o momento em que o nosso código acaba por se quebrar.

Acredite ou não, isso é surpreendentemente fácil de se fazer com uma recursão não muito bem pensada ou coisas parecidas, como exemplicado a seguir:

function inception(){
    inception()
}

incepetion()
Enter fullscreen mode Exit fullscreen mode

Como da pra imaginar, essa função vai ficar se chamando infinitamente, aumentando o tamanho da Call Stack até essa acabar quebrando e nos retornando um Uncaught RangeError: Maximum call stack size exceeded.

Uma coisa interessante é que antigamente os navegadores não tinham esse erro, eles simplesmente rodavam o código infinitamente até eventualmente crashar completamente, muitas vezes até mesmo travando o computador do usuário. Esse erro surgiu para evitar esse tipo de problema.


Resumindo, o Stack Overflow nada mais é do que colocar carga demais em uma Call Stack, fazendo com que a mesma acabe quebrando.

E com essa leitura você acabou de adquirir um conhecimento para puxar aleatoriamente em uma call com seus colegas enquanto espera o ambiente de desenvolvimento carregar ou quando fica um silêncio na hora do build.

Top comments (0)