Tenho programado nos ambientes Unix e Windows. Trabalhei principalmente no Unix, onde aprendi a filosofia do Unix , que pode ser resumida como
- Escreva programas que fazem uma coisa e fazem bem.
- Escreva programas para trabalhar juntos.
- Escreva programas para lidar com fluxos de texto, porque essa é uma interface universal.
Parece haver uma clara diferença nas culturas de programação entre os mundos Unix e Windows, por exemplo:
- GUI vs CLI
- Registro vs arquivos de configuração
- Muitas ferramentas especializadas para qualquer necessidade específica versus grupo de ferramentas ortogonais genéricas que podem ser combinadas
Existe equivalente à "filosofia Unix" no mundo do Windows? O que o programador Unix pode aprender com o Windows ou deve estar ciente ao passar para a programação no Windows?
Gostaria que as respostas se concentrassem nas melhores práticas de programação do Windows (e não em uma briga entre o Windows e o Unix).
windows
philosophy
unix
Maglob
fonte
fonte
Respostas:
Na verdade, existe algo como "filosofia do Windows". Principalmente, trata-se do conceito de composição e dos programas de design de peças da interface do usuário para usuários e não para outros programadores.
Que significa:
Aqui está uma boa leitura:
Biculturalismo
Com a proliferação do Windows, a abordagem hacker da codificação começou a se tornar desfavorecida. Primeiro, escrevia programas C / C ++ da maneira mais complexa e ofuscada, para que apenas os cérebros mais difíceis pudessem entendê-los, como uma espécie de rito de passagem. No Windows, as coisas começaram a mudar e esse "estilo de código" agora é altamente desfavorecido. Não tenho certeza se o Windows direto influencia ou melhor o novo nível de entendimento da qualidade do código, mas pelo menos oportuno eles coincidem.
fonte
Eu acho que as diferenças que você alude na sua pergunta são mais sobre os usuários desses sistemas do que sobre os estilos de programação de seus desenvolvedores. Durante muito tempo, * nix tem sido o campo do programador ou do entusiasta da computação. Havia muito pouco em termos de uso "casual". Onde, como o Windows, o usuário [doméstico] numera ordens de magnitude maiores.
Usuários casuais não querem se lembrar de uma dúzia de sinalizadores de linha de comando diferentes para executar um programa. Eles querem clicar em um botão.
Usuários casuais não querem se preocupar com os arquivos de configuração do sistema ou com o modo como o Fluffy Kitties se lembra de sua raça favorita de felinos.
Usuários casuais geralmente usam algo contanto que façam o que desejam, mesmo que haja produtos "melhores" disponíveis.
Eu acho que meu ponto principal aqui é ... O Windows tem muito a ver com criar para o usuário e não para o criador . Não vá contra os paradigmas de longa data existentes no desenvolvimento do Windows. Não polua os usuários com Meus documentos, nem se insira na inicialização deles sem motivo.
Talvez de uma importância semelhante: escreva a documentação do usuário.
fonte
O blog de Raymond Chen, The Old New Thing , e seu livro com o mesmo nome são uma ótima visão da filosofia, história e práticas recomendadas da programação nativa do Windows.
fonte
Comprometer e personalizar
Não é o melhor em nada, mas se você estiver disposto a dedicar tempo e tomar algumas decisões desagradáveis em alguns lugares, há pouco que não poderá fazer. Se você não gostar do que está fazendo no momento, provavelmente poderá alterá-lo. Existem poucos lugares onde existe apenas uma maneira ou mesmo uma maneira sempre melhor.
Bom o suficiente para o usuário iniciar
Muito poucas coisas são fenomenais, mas a maioria das coisas é utilizável. O Unix tende a ir na direção em que nada funciona até você configurá-lo e a Apple torna tudo bem polido, mas ao custo de alguma configurabilidade / flexibilidade.
Esperar uma cauda de suporte de log
Os usuários do Windows não atualizam apenas porque há uma versão mais recente. Eles nem sempre atualizam por causa de uma vulnerabilidade ou correção de bug. Os usuários do Windows geralmente precisam ser forçados a atualizar, mas se você forçá-los a atualizar rapidamente, eles procurarão produtos alternativos
Os usuários têm uma vasta gama de níveis de habilidade
O Unix possui uma alta barreira percebida à entrada de um nível técnico do ponto de vista de um usuário doméstico casual. A Apple tinha um nível de habilidade necessário percebido muito baixo, mas não incentiva o usuário casual a fazer muito na maneira de personalizar seu sistema operacional. O Windows está no meio. É apenas um pouco mais difícil de começar a usar do que os produtos Apple, mas há muitas informações simples disponíveis, às vezes na própria instalação, sobre como proceder para alterar algumas configurações bastante detalhadas do sistema. Isso leva a um nível de habilidade bastante aleatório na camada intermediária dos usuários, porque, se estiverem confiantes o suficiente para tentar algo, há uma boa chance de descobrir como fazê-lo. Isso também deixa os usuários mais tímidos sem experiência em alguns casos, porque eles são cautelosos com os avisos de que as coisas podem dar errado.
fonte
O Windows foi construído com suporte explícito ao padrão CUA (Common User Access) da IBM para orientar o desenvolvimento de aplicativos.
O que, é claro, foi uma tentativa de criar uma experiência semelhante ao Mac para o usuário.
fonte
Há muito tempo, o UNIX era para programadores e pessoas assim, e o Windows sempre era para usuários que não sabem escrever scripts bash. Portanto, no Windows, você deve se preocupar com os usuários, o que significa criar uma ferramenta para todas as tarefas que o usuário não precisa se preocupar com quem configurar alguns programas para trabalharem juntos.
fonte
Não tenho certeza se é uma filosofia, mas IMHO há um tipo de densidade de pensamento que acompanha a programação do Windows. Também há uma sensação de surpresa em como as coisas funcionam às vezes.
Recomendaria paciência se você estiver adotando o desenvolvimento do Windows e se preocupando um pouco mais com suas suposições.
fonte