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.

Sentry blog image

How I fixed 20 seconds of lag for every user in just 20 minutes.

Our AI agent was running 10-20 seconds slower than it should, impacting both our own developers and our early adopters. See how I used Sentry Profiling to fix it in record time.

Read more

Top comments (2)

Collapse
 
daymannovaes profile image
Dayman Novaes

Obrigado @pedrosalomaodw!

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay