DEV Community

Cover image for dominando a essência do programação: uma introdução filosófica
Dayman Novaes
Dayman Novaes

Posted on

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

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)
Enter fullscreen mode Exit fullscreen mode

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.

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (2)

Collapse
 
daymannovaes profile image
Dayman Novaes

Obrigado @pedrosalomaodw!

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs