$ pwd
Índice
Premissas Fundamentais
TL:DR (Não quero ler tudo, mas quero entender o básico)
- Programas devem fazer apenas uma coisa, e devem fazê-la bem.
- Programas devem funcionar bem com outros programas.
- Programas devem ser estupidamente simples.
- Um único programa deve ter pouquíssimas features.
- Escreva programas que manuseiem fluxo de texto(text streams), porque esta é a interface universal.
Filosofia Unix
Não existe uma afirmação padrão que defina a filosofia unix. Mas se for para escolher uma palavra, ela deveria ser modularidade, que se refere a um sistema composto por vários componentes (modulos), que trabalham juntos, e podem também ser substituídos por outros módulos mais simples ou mais complexos dependendo da necessidade.
A modularidade é comum por natureza, e sua aplicação a produtos feitos pelo homem (bens e serviços) é um fator-chave no desenvolvimento e avanço das sociedades industriais. No entanto, era relativamente pouco usado para software de computador antes do desenvolvimento do UNIX, e ainda hoje seus grandes benefícios não são totalmente explorados por outros sistemas operacionais, principalmente os sistemas (Microsoft) Windows.
Uma declaração um pouco mais longa e mais convencional da filosofia Unix, mas que diz essencialmente a mesma coisa, seria: projetar programas para fazer apenas uma coisa, mas fazê-la bem, e para trabalhar bem em conjunto com outros programas.
Filosofia Suckless
Muitos programadores se sentem orgulhosos quando seus códigos chegam a muitas linhas de código, porque eles acreditam que quanto mais linhas de código eles escrevem, mais progresso eles fizeram. Logo, quanto maior o progresso, mais habilidosos eles ficam.
Muitos programadores não se importam com qualidade de código. Portanto, se eles conseguem fazer algo funcionar e pareça resolver o problema, eles ficam com essa solução.
Se esta linha de pensamento for utilizada em um mesmo projeto em todo o seu ciclo de desenvolvimento, nós ficaremos com uma quantidade enorme de código, um código ferrado, e um sistema completamente vulnerável.
Isto se dá pela total falta de clareza conceitual e consistência no durante o processo de desenvolvimento.
Simplicidade é o coração da filosofia UNIX. Quanto menos linhas de código seu código tem, mais habilidoso você se tornou, e menos o seu código é uma merda ruim.