Filosofia Unix

A filosofia Unix é um conjunto de normas culturais e abordagens filosóficas para o desenvolvimento de software, criada com base na experiência de alguns dos principais desenvolvedores dos sistemas operacionais da família Unix.

McIlroy: Um quarto de século de Unix

Doug McIlroy, o inventor da canalização e um dos fundadores da tradição do Unix, resumiu a filosofia da seguinte maneira:

"Esta é a filosofia Unix:
Escreva programas que façam apenas uma coisa, mas que a façam bem feita.
Escreva programas que trabalhem juntos.
Escreva programas que manipulem streams de texto, pois esta é uma interface universal."

Ou, de maneira simples, como: "faça apenas uma coisa e faça bem".

Dos três princípios, apenas o terceiro é específico do Unix, embora os desenvolvedores Unix enfatizem todos os três princípios mais freqüentemente que outros desenvolvedores.

Notas de Pike para programação em C

Rob Pike ofereceu as seguintes "regras" em Notas para programação em C como máximas da programação de computadores, embora possam ser vistas como pontos da filosofia Unix:

As regras 1 e 2 de Pike reforçam a famosa máxima de Tony Hoare: "A otimização prematura é a raiz de todo o mal." Ken Thompson reescreveu as regras 3 e 4 da seguinte forma: "Quando em dúvida, use força bruta." As regras 3 e 4 são exemplos da filosofia de projeto KISS. A regra 5 foi colocada anteriormente por Fred Brooks no livro The Mythical Man-Month. A regra 5 é frequentemente resumida como: "escreva um código burro que use uma estrutura de dados inteligente", e é um exemplo da norma "Se a sua estrutura de dados é boa o bastante, o algoritmo para manipulá-la deverá ser trivial."

Mike Gancarz: The UNIX Philosophy

Em 1994, Mike Gancarz, membro da equipe que projetou o X Window System, combinou a sua experiência com discussões que teve com programadores e pessoas que dependem do Unix para produzir o livro The UNIX Philosophy, que resume os pontos citados acima em 9 princípios supremos:

  1. O pequeno é belo.
  2. Faça cada programa fazer uma coisa bem feita.
  3. Faça um protótipo assim que possível.
  4. Escolha "portabilidade" ao invés de eficiência.
  5. Armazene dados em arquivos no formato texto.
  6. Tire vantagem das funcionalidades do software.
  7. Utilize scripts para incrementar a funcionalidade e portabilidade.
  8. Evite construir interfaces do usuário que sejam engessadas.
  9. Faça de cada programa um filtro.

Os 10 princípios "inferiores" não são aceitos universalmente como parte da filosofia Unix e, em alguns casos, são tema de debates acalorados (com a discussão núcleo monolítico x micronúcleo):

  1. Permita ao usuário definir o ambiente.
  2. Faça o núcleo do sistema operacional pequeno e leve.
  3. Utilize letras minúsculas e faça textos curtos.
  4. Salve as árvores.
  5. O silêncio é ouro.
  6. Pense paralelamente.
  7. A soma de todas as partes é maior que o todo.
  8. Preste atenção na lei do 90% da solução.
  9. O pior é melhor.
  10. Pense de forma hierárquica.

O pior é melhor

Richard P. Gabriel sugere que a vantagem chave do Unix está relacionada a uma filosofia de projeto que ele chamou de "o pior é melhor" (worse is better). No estilo de projeto "pior é melhor", a simplicidade da interface "e" da implementação é mais importante que qualquer outro atributo do sistema — incluindo correção, consistência e inteireza. Gabriel sustenta que este estilo de projeto contém vantagens evolucionárias chave, embora ele questione a qualidade de alguns resultados.

Raymond: A arte da programação Unix

Eric S. Raymond, no seu livro The Art of Unix Programming, resume a filosofia Unix como sendo a filosofia KISS. Ele descreve a sua crença de como esta filosofia é aplicada como uma norma cultural do Unix, apesar de, previsivelmente, não ser difícil encontrar violações severas nas práticas adotadas em projetos Unix atuais:

Muitas destas normas foram aceitas fora da comunidade Unix, mesmo que isso não tenha ocorrido num primeiro momento. Também é preciso dizer que muitas delas não foram criadas pela comunidade Unix. Todavia, os adeptos da programação Unix tendem a aceitar uma combinação destas ideias como a fundação do estilo Unix.

Controvérsia

Existe uma controvérsia sobre até onde os trabalhos do projeto GNU, da Free Software Foundation, seguem os princípios da filosofia do Unix. Muitos poderiam dizer que não, pois as ferramentas GNU são maiores e contém um número maior de funcionalidades, em comparação com as suas equivalentes do Unix.

Já em 1983, Rob Pike escreveu um artigo criticando a expansão de funcionalidades básicas do Unix, como no caso do comando cat, implementada nos sistemas BSD. Esta questão somente se tornou relevante com o surgimento do projeto GNU e de outras variações comerciais do Unix, que concentraram um grande número de funcionalidades em alguns programas.

Frases

Ver também

Referências

  1. 1 2 Eric S. Raymond. «The Art of Unix Programming» (em inglês). Consultado em 13 de abril de 2007
  2. ↑ Richard P. Gabriel. «Worse Is Better» (em inglês). Consultado em 13 de julho de 2007
  3. ↑ Rob Pike. «UNIX Style, or cat -v Considered Harmful» (em inglês). Consultado em 13 de abril de 2007

Bibliografia

Ligações externas