Para definir comandos "poderosos", é preciso primeiro decidir o que isso significa.
O primeiro requisito é universalidade. Algumas ferramentas são muito dedicadas a uma coisa, mas podem resolver uma grande variedade de problemas. gnuplot
é uma ferramenta de plotagem muito básica que é tão boa que, mesmo nos círculos científicos, você quase não precisa de mais nada. E uma única ferramenta que pode processar expressões regulares, pode ser usada para quase qualquer coisa, e é por isso que sed
é muito poderoso. Você pode fazer conversões entre formatos, extração de dados, análise, pesquisa, substituição e quase tudo que você possa imaginar. awk
é semelhante, mas também muito diferente: significa mais para dados estruturados, analisados linha por linha, de acordo com padrões, e está mais próximo de linguagens de programação mais convencionais (tem mais fluxo de controle e assim por diante). Uma vez dominadas estas ferramentas, você pode resolver qualquer problema com elas: ambas estão atualizadas e podem, em princípio, resolver qualquer problema, mesmo que não esteja relacionado ao processamento de strings - universalidade é o nível mais alto de poder: você pode fazer qualquer coisa. Mas você tem que "querer" tentar brincar com isso. Daqui segue o próximo requisito.
O segundo componente é legado e tradicional: comandos que existem há 40 anos e têm uma enorme base de código, são também os mais estáveis (desenvolvimento longo), confiáveis (eles não podem parar de desenvolvê-los ou mudar a funcionalidade porque 40 anos de scripts quebrariam), e há um grande número de gurus por aí que podem fazer mágica. Isso significa que uma ferramenta que é amplamente conhecida e uma primeira escolha para o uso de muitas pessoas, não é necessariamente a que foi a melhor no início, mas a que "ficou presa". No entanto, se muitas pessoas o usam, provavelmente não é ruim, mesmo que algumas coisas possam ser feitas melhor. A idade é importante aqui: python
é extremamente poderoso como uma linguagem, mas ainda não alcançou o status dos antigos gnu
toolkits - ainda dá uma sensação de novidade. bash
é um padrão de ouro não apenas porque é intuitivo e poderoso, mas também porque é enviado como padrão em quase todos os lugares e todo mundo o usa.
O status da seita é muito importante aqui: as pessoas sentem orgulho de fazer parte de uma subcultura nerd. Posso dizer em primeira mão que me senti muito bem quando dominei emacs
e latex
, e também adotei o ódio por vi
quase que imediatamente: em parte porque não é uma interface intuitiva para mim, mas sim Claro, isso é reforçado quando você descobre que outras pessoas se sentem assim. O que estou tentando dizer é que uma ferramenta poderosa também é poderosa socialmente: uma ferramenta menos conhecida ou mal projetada não pode despertar emoções tão strongs nas pessoas (nem negativas nem positivas - elas são apenas brandas). Algumas das ferramentas que mencionei têm seguidores que podem ser comparados a trekkies - o que não é uma conquista ruim para um software. awk
pode ser considerado como um predecessor de perl
, e perl
definitivamente tem seguidores: a maioria das pessoas concorda que perl
tem uma legibilidade terrível e muitas peculiaridades desajeitadas. É também a linguagem mais poderosa focada em cordas, mas sem o status de cult, a maioria das pessoas pode desistir dela mais cedo, em vez de brincar e tentar salvar o mundo e preparar o jantar com a mesma ferramenta que deveria ser mastigada um monte de páginas da web.
Finalmente, pessoas como consistência, elegância e caráter ... uma ferramenta pode ser poderosa em termos de capacidades, mas ninguém vai querer usá-la porque não parece certo. Uma ferramenta poderosa deve ser intuitiva, pelo menos, para as pessoas que gostam de usá-la. Eu não estou começando flamewars aqui, mas certamente a maioria dos leitores encontrará seus próprios exemplos de design infeliz e desajeitado.
Em suma: bem concebido para um propósito bem definido, universal, legado e acompanhamento, e ... uma "alma". Essa seria minha definição.