Significado do epigrama de Perlis #22
-
22-09-2019 - |
Pergunta
A partir de Epigramas em programação Por Alan J. Perlis:
22. Um bom sistema não pode ter uma linguagem de comando fraca.
O que isto significa? Quais são os bons exemplos desse princípio?
Onde posso aprender mais sobre como implementar um comando Langauge que atenda a esses critérios?
Solução
Você precisa conhecer parte do contexto em que isso foi formulado. O artigo vinculado foi publicado apenas em 1982 e qualquer um desses epigramas pode ser décadas mais velhas. No entanto, até 1982 era antes do meu tempo, e minhas impressões relevantes de então são:
- Os sistemas de computador eram mais altamente especializados em uma tarefa específica.
- Os sistemas tinham operadores dedicados (que não eram programadores) treinados em sistemas específicos.
- O conhecimento de um sistema não transferiu facilmente para outro sistema. (Hoje você treina operadores em específicos programas, mas raramente em combinações específicas de hardware+sistema operacional. Em outras palavras, os sistemas se tornaram padrões e convenções mais semelhantes e adotados.)
A "linguagem de comando" significa apenas script de shell hoje. Lembre -se de que, em um prompt de shell, você insere "comandos".
Esses princípios estão fora do caminho, isso está falando comigo sobre o Unix Way ™.
Compare como os programas do Windows podem ter muito mais dificuldade com a automação e muitos programas (e até o sistema operacional) exigem que uma GUI altere algumas configurações. (A atitude em relação a isso está mudando com o Microsoft PowerShell, mas ainda está faltando o décadas de experiência em seguir esse princípio que outros sistemas operacionais têm.)
FutHermore, quando o modo básico de operação para qualquer usuário é O idioma de comando do seu sistema (como era para o UNIX em 1982), então o idioma do seu comando é forte de outra maneira: todos os usuários sabem como usá -lo e não precisam aprender ferramentas separadas. Nessa situação, não há nada que o sistema possa fazer o que a linguagem de comando não pode realizar, porque a linguagem de comando efetivamente é o sistema.
Conheço nenhum recurso único que explique todas essas idéias e que você pode usar como um roteiro para implementar seu próprio idioma de comando. O conceito é mais etéreo do que escrito em pedra, pois os outros epigramas também são em geral. Encorajo você a ler sobre o Unix em geral, conchas (por exemplo, o padrão de Posix para SH e outros como Bash), outras linguagens de script de concha (qualquer coisa com uma linha de Shebang, como Perl e Python) e assim por diante.