Você pode usar GPT-3 para estudar programação.

Estou testando o chat GPT-3 para gerar conteúdos de explicação de algum assunto de estudo. Este foi como aplicar funções puras com javascript.

O objetivo é fazer o chat gerar explicações diversas sobre um ponto, isso pode ajudar iniciantes a terem explicações bem diferentes sobre algo, auxiliando o entendimento:

Início do chat

Eu: O que é uma função pura?


GPT: Uma função pura é uma função que, dado os mesmos parâmetros de entrada, sempre retorna o mesmo resultado e não tem efeitos colaterais. Isso significa que a execução da função não afeta o estado do programa de nenhuma outra maneira, além de retornar um valor.

Uma função pura é útil porque é mais fácil de testar e depurar, pois seu comportamento é previsível e determinista. Além disso, ela é mais fácil de entender e de se rastrear a fonte de erros, pois não depende de nenhum estado externo ou de eventos ocorrendo em outras partes do programa.


Eu: O que seriam os efeitos colaterais?


GPT: Efeitos colaterais são modificações em algum estado externo ou em qualquer coisa além dos seus parâmetros de entrada e o seu resultado de saída. Por exemplo, uma função que lê ou escreve em um arquivo no disco rígido está produzindo um efeito colateral, pois está modificando o estado do sistema de arquivos do computador. Outro exemplo de efeito colateral é uma função que modifica uma variável global, pois essa variável existe fora da função e pode ser acessada e modificada por outras partes do código. Em geral, é desejável evitar efeitos colaterais, pois eles podem tornar o código mais difícil de entender e testar.


Eu: pode me dar um exemplo de função pura em javascript?


GPT: Aqui está um exemplo de uma função pura em JavaScript:

function add(x, y) {
  return x + y;
}

Esta função add é pura porque ela não depende de nenhum estado externo e não produz nenhum efeito colateral. Ela simplesmente aceita dois números como entrada e retorna a soma deles como saída. Se você chamar a função add com os mesmos dois números, ela sempre retornará o mesmo resultado.

Aqui está outro exemplo de uma função pura que utiliza um array como entrada:

function getFirstElement(array) {
  return array[0];
}

Essa função getFirstElement é pura porque ela não modifica o array de entrada e sempre retorna o mesmo elemento quando chamada com o mesmo array.


Eu: Me mostre uma função que não seja pura


GPT: Aqui está um exemplo de uma função que não é pura em JavaScript:

let counter = 0;

function incrementCounter() {
  counter++;
}

Esta função incrementCounter não é pura porque ela depende da variável global counter e produz um efeito colateral ao modificá-la. Se você chamar a função incrementCounter várias vezes, ela modificará o valor da variável counter e o resultado da próxima chamada da função será diferente da chamada anterior.

Aqui está outro exemplo de uma função que não é pura:

function getCurrentTime() {
  return new Date();
}

Essa função getCurrentTime não é pura porque ela depende do estado atual do sistema (a hora atual) e retorna um novo objeto Date toda vez que é chamada. Se você chamar a função duas vezes seguidas, ela retornará objetos Date diferentes, pois a hora atual terá avançado desde a primeira chamada.


Eu: Pode me explicar de uma outra forma o que é uma função pura? Acho que não entendi.


GPT: Claro, vou tentar explicar de outra forma.

Uma função pura é uma função que:

  • Aceita um conjunto de entrada (parâmetros) e retorna um resultado.
  • Não depende de nenhum estado externo ou variável global.
  • Não produz efeitos colaterais, ou seja, não modifica nenhum estado externo ou variável global.

Isso significa que, dado o mesmo conjunto de entrada, uma função pura sempre produzirá o mesmo resultado e não afetará nada além dos seus parâmetros de entrada e o seu resultado de saída.

Exemplo de função pura:

function add(x, y) {
  return x + y;
}

Essa função add é pura porque ela simplesmente aceita dois números como entrada e retorna a soma deles como saída. Ela não depende de nenhum estado externo ou variável global e não produz nenhum efeito colateral. Se você chamar a função add com os mesmos dois números, ela sempre retornará o mesmo resultado.

Espero que isso tenha esclarecido um pouco mais o conceito de função pura.


Eu: ok. Então esta minha função seria uma função pura? const a = (x) => x*2


GPT: Sim, sua função a é uma função pura. Ela é uma função de uma única linha que aceita um número como entrada e retorna o número multiplicado por 2. Ela não depende de nenhum estado externo ou variável global e não produz nenhum efeito colateral.

Aqui está como a função a ficaria escrita de forma mais tradicional:

function a(x) {
  return x * 2;
}

Ambas as versões são equivalentes e são consideradas funções puras.


Fim do chat

Percebi que em algumas outras tentativas, se você formar mais, consegue que o chat te retorne explicações bem diferêntes, isso pode auxiliar no entendimento de um assunto. Porém tbm existe uma clara chance do chat errar conteúdos. Já vimos isso em outras situações.

Mas pode ser uma boa ferramenta de reforço para alguns iniciantes sobre alguns assuntos.

Recentemente estou estudando react native, programo em PhP a anos, buscando entrar no mercado de desenvolvimento mobile, em diversos casos tive dúvidas de códigos e funções como já estava com o chat aberto acabei pedindo alguns códigos, porem vi que isso não me ensinava nada estava apenas copiando e colando então comecei a pedir explicações e exemplos de como usar e não usar e com isso consegui evoluir bastante. Então sim, definitivamente esses chats podem ser usados buscando estudo e aprendizado em diversas áreas não apenas na programação.

Boa Enzo, tbm acho que não vai ser apenas para programação, ouvi rumores de uso do gpt no bing. A junção dos links com este tipo de chat pode ser uma boa.

Quando estou estudando matemática e não escontro o nome de algum tópico uso o Chat-GPT para descorbrir o nome e ainda recebo de forma sintetizada e clara como o conceito se aplica, realmente uma ferramenta interessante para estudar não só programação, mas qualquer área em geral.