Existe uma filosofia de programação do Windows? [fechadas]

30

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).

Maglob
fonte
15
Deve estar ciente? "As coisas vão ser ruins, ruins."
Orbling
3
Apenas uma filosofia que, não há filosofia. ;)
Mudassir
6
Na verdade, o Powershell trouxe um pouco da filosofia do Unix para o Windows, especialmente escrevendo pequenos programas (na verdade cmdlets no Powershell) que fazem apenas uma coisa e combinando-os com outros cmdlets que fazem outras coisas. Obviamente, a maioria dos usuários casuais ainda não sabe como usar o Powershell, mas isso depende do tipo de software que você está escrevendo.
precisa saber é o seguinte
4
Vamos acertar na terceira vez.
aufather
7
A filosofia do Windows é trazer receita para a Microsoft.
81111 dan04

Respostas:

28

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:

  • Interfaces de usuário simples e intuitivas
  • Fluxo de trabalho natural
  • Deve funcionar imediatamente
  • Não é necessário conhecimento técnico lá onde não é necessário

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
7
Eu não acho que nenhum desses pontos se aplique particularmente bem ao Windows.
Tom Hawtin - tackline
4
@ Tom: É uma filosofia; não precisa se aplicar a nada. No entanto, acredito que isso se aplica muito bem à maioria das coisas no mundo Windows.
Allon Guralnek
@ Tom: Eu concordo com o @Allon mais porque, para mim, parece que a pergunta do OP é mais programação Console vs GUI.
Gideon
6
O que?!? Dê uma olhada nas boas fontes antigas de BSD e AT&T. Limpo, simples, elegante. E nunca vi nada mais ofuscado do que um típico código MFC inchado.
SK-logic
Mesmo difícil, não há uma única resposta correta, eu gostei mais dessa. A postagem no blog de Joel foi ótima.
Maglob
8

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.

TZHX
fonte
7
Documentação do usuário? Os usuários de programas de sucesso nunca precisarão tocar em nenhuma documentação.
@Developer Art - isso é verdade até certo ponto, mas quando você está escrevendo um software, por exemplo, a física de partículas que precisa ser entendida por pessoas de várias nacionalidades, a capacidade de dizer "clique aqui para obter uma descrição do que fazemos com seus dados" aqui ", se mais fácil do que escrever um computador telepático capaz de extrair da mente a expectativa dos usuários.
TZHX
3
"Não polua o usuário com porcaria." - bastante irônico.
Ocodo 7/02
1
como assim, Slomojo?
TZHX
4

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.

Conta
fonte
3

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.

Steven A. Lowe
fonte
2

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.

Dainius
fonte
1

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.

John Bickers
fonte