Aguarde...

6 de março de 2022

Codificação e confusão

Codificação e confusão

A leitura do código é confusa. Como engenheiro de software, aceito isso como parte natural do processo; é par para o curso. Embora a leitura de código seja essencial para o meu trabalho, raramente penso nisso. Eu meio que… faço isso. Mas há mais na leitura de código do que aparenta.

Este post explora os processos cognitivos em relação à leitura de código.

Na maioria das vezes estou familiarizado com o código que estou lendo. Conheço bem a linguagem de programação. Tenho contexto suficiente para resolver o problema em questão. Procuro as coisas que preciso. Este é um negócio como de costume.

Muitas vezes não estou tão familiarizado com o código. Eu não tenho uma compreensão sólida da linguagem de programação. Eu poderia usar mais clareza sobre o que exatamente estou tentando resolver. Mesmo depois de procurar coisas, eu preciso juntar tudo.

E de vez em quando, não tenho absolutamente nenhuma ideia do que estou lendo. Tudo é estranho para mim. E é mentalmente exaustivo.

É intuitivo que nem todos os estados de confusão são iguais.


Estados de confusão

Existem 3 grandes estados de confusão.

  1. Confusão baseada no conhecimento.
  2. Confusão baseada no contexto.
  3. Confusão baseada na capacidade.

As seções a seguir explicam cada estado com um bloco de código. Por favor, faça o seu melhor para ler o código e determinar o que ele faz antes de continuar.

Confusão baseada no conhecimento

+[-->-[>>+>-----<<]<--<---]>-.>>>+.>>..+++[.>]<<<<.+++.------.<<-.>>>>+.

Não se preocupe se o seu melhor palpite for um tiro no escuro. Isso é esperado.

Sem conhecimento básico da sintaxe ou semântica deste código. E nenhuma familiaridade com uma linguagem de programação semelhante para esse assunto. É uma língua alienígena.

A falta de conhecimento fundamental causa confusão baseada no conhecimento.

Confusão baseada em contexto

const date = new Date(Date.UTC(96, 1, 2, 3, 4, 5));
console.log(date.toUTCString())

Se você usou alguma documentação – bom trabalho!

Você identificou que este código imprime um carimbo de data/hora. Mas você pode precisar de mais detalhes sobre a  Dateinterface do objeto, por exemplo .UTC().toUTCString(), etc.

Este código é fácil de seguir uma vez que você tenha as informações relevantes no contexto.

A falta de informações relevantes que de outra forma acabariam com a confusão causa confusão baseada no contexto.

Confusão baseada em capacidade

var gcd = function(a, b) {
	if (!b) {
		return a;
	}
	return gcd(b, a % b);
}
console.log(gcd(20, 8));

Isso provavelmente era muito para processar em sua cabeça. Manter o controle das chamadas recursivas, argumentos diferentes, etc. é desgastante.

É como contar em potências de dois. Em algum momento, você fica sem poder cerebral.

A falta de poder cerebral suficiente para processar código em sua cabeça causa confusão baseada em capacidade.


O que está acontecendo dentro do cérebro?

O cérebro armazena e interage com as memórias usando 3 sistemas de memória diferentes:

  1. Memória de longo prazo (LTM)
  2. Memória de curto prazo (STM)
  3. Memória de trabalho (WM)

Esta seção explica cada sistema e como ele se relaciona com estados de confusão.

Memória de longo prazo

LTM envolve memórias profundamente arraigadas. Tem muito espaço para guardar memórias (o valor de uma vida inteira). Memórias como seu número de telefone, citações de filmes favoritos e fundamentos de programação vivem aqui.

Quando o LTM não pode recuperar memórias fundamentais, causa confusão baseada no conhecimento. Como no primeiro bloco de código escrito em uma linguagem de programação esotérica.

Memória de Curto Prazo

STM envolve memórias transitórias. É relativamente limitado em tamanho e é usado para lembranças como o que você comeu no almoço ontem. Ou para acompanhar as referências de variáveis ​​no contexto de um programa.

No segundo bloco de código, seu STM acompanhou a datevariável nas duas primeiras linhas. E também manteve o controle das informações relevantes da documentação.

Se você já esqueceu tudo, é porque o STM limpou as informações agora. Essa informação não é mais relevante no contexto.

Quando o STM não consegue recuperar memórias relevantes, causa confusão baseada no contexto.

Memória de trabalho

WM envolve o processamento de memórias em vez de recuperá-las. É extremamente limitado em tamanho e só pode funcionar com algumas informações de uma só vez. Seja criatividade, aritmética simples ou passando por código em sua cabeça. WM é o responsável.

O WM sobrecarrega quando há muito para lidar e causa confusão com base na capacidade. Como no terceiro bloco de código, onde não há poder cerebral suficiente para circular.


Considerações finais

Agora você tem uma visão muito mais detalhada de como o cérebro funciona quando se trata de ler código!

Estado de confusãoSistema de MemóriaTamanho da memória
ConhecimentoLongo prazoGrande
ContextoCurto prazoPequeno
CapacidadeTrabalhandoMinúsculo

Embora eu tenha simplificado os processos cognitivos como unidades discretas, a realidade é bem diferente. O cérebro é complexo e os processos interagem de maneiras muito além do escopo deste post.

Todos os modelos estão errados, mas alguns são úteis.

Postado em Blog
Escreva um comentário