dominando a essência do programação: uma introdução filosófica

RMAG news

Poucos programadores se aprofundam em conceitos filosóficos (especialmente a metafísica aristotélica). Mas eu estou mais do que convencido que vocês precisam.

Um dos conceitos fundamentais pra se entender o mundo é saber a diferença entre Forma e Matéria.

Matéria é aquilo que compõe algo, e Forma é o conjunto de características do algo (unitário e apreensível conceitualmente).

Uma estátua de mármore tem por matéria o mármore (que é cheio de potências para se tornar algo), já a Estátua, como tal, é a atualidade (conceito oposto à potencialidade) da coisa. É a unidade Formal.

são conceitos complexos mas poderosos e pode ser o diferencial para seu progresso na carreira.

Se te pergunto “o que é um pacote node (npm)?”, qual resposta espero? Depende. depende se quero a resposta conceitual (formal) ou material.

Conceitualmente falando, posso dizer que é um código para ser compartilhado e usado em outros projetos Javascript para resolver problemas recorrentes.

Mas materialmente, é qualquer pasta que tem um package.json.
Sim, DE FATO, qualquer pasta com um package.json formatado corretamente é considerado (pelo cli do NPM), um pacote npm passível de ser instalado e interpretado pelo Node.

Eu sei que muitos de vocês não têm o costume de ler documentação, mas saiba que o próprio NPM explica isso:

Um pacote é [materialmente]:

a) uma pasta contendo (…) um arquivo package.json
b) um tarball (…) contendo (a)
c) um URL que resolve para (b)
d) um <nome>@<versão> que é publicado no registro com (c)
(…)
g) um <git remote url> que resolve para (a)

Referência: https://docs.npmjs.com/cli/v8/commands/npm-install#:~:text=A%20package%20is,resolves%20to%20(a)

DO MESMO JEITO que um projeto git é qualquer pasta que tenha uma pasta .git/ dentro dela, formatada corretamente.

Perceba que intuitivamente até usamos a palavra “formatado”, pois indica a Forma, que está intrinsicamente ligada com a matéria da coisa.

Continuando o exemplo:
De fato o git é um “controlador de versão”. De tal forma que quando você roda “git status” ou “git log” ele vai mostrar a diferença dos arquivos atuais com aqueles já versionados ou vai mostrar o histórico de commits, respectivamente.

mas como essas coisas aparecem no terminal? concretamente falando, onde essas informações ficam salvas? e como?

se eu precisasse refazer meu próprio git, que imitasse seu comportamento (forma), como eu faria? quais informações preciso salvar, e onde?

são perguntas que todo programador tem que se fazer o tempo todo.

Do jeito que to falando, parece que “matéria” é só uma outra forma de falar “mais baixo nível” ou “mais concreto”. Mas não é bem isso.

Na minha opinião, são conceitos filosoficamente diferentes. O que você acha?

Por enquanto, esse post é apenas uma introdução. Elaborarei
melhor num próximo post.

Leave a Reply

Your email address will not be published. Required fields are marked *