J'ai programmé à la fois dans les environnements Unix et Windows. La plupart du temps, j'ai travaillé sous Unix, où j'ai appris la philosophie Unix , qui peut être résumée comme suit:
- Écrivez des programmes qui font une chose et le font bien.
- Écrivez des programmes pour travailler ensemble.
- Écrivez des programmes pour gérer les flux de texte, car il s'agit d'une interface universelle.
Il semble y avoir une nette différence dans les cultures de programmation entre les mondes Unix et Windows, par exemple:
- GUI vs CLI
- Registre vs fichiers de configuration
- Beaucoup d'outils spécialisés pour un besoin donné vs groupe d'outils orthogonaux génériques qui peuvent être combinés
Existe-t-il un équivalent de la "philosophie Unix" dans le monde Windows? Qu'est-ce qu'un programmeur Unix peut apprendre de Windows ou devrait être au courant lors du passage à la programmation dans Windows?
J'aimerais que les réponses se concentrent sur les meilleures pratiques de programmation Windows (et non sur un combat entre Windows et Unix).
windows
philosophy
unix
Maglob
la source
la source
Réponses:
Il y a en fait quelque chose comme "la philosophie Windows". Il s'agit principalement du concept de composition et de la partie interface utilisateur - des programmes de conception pour les utilisateurs et non pour d'autres programmeurs.
Cela signifie:
Voici une bonne lecture:
Biculturalisme
Avec la prolifération de Windows, l'approche pirate du codage a commencé à devenir défavorable. Il s'agissait d'abord d'écrire des programmes C / C ++ de la manière la plus complexe et la plus obscure, de sorte que seuls les cerveaux les plus durs pouvaient les comprendre, comme une sorte de rite de passage. Sous Windows, les choses ont commencé à changer et ce "style de code" est désormais très défavorable. Je ne sais pas si son influence directe sur Windows ou plutôt le nouveau niveau de compréhension de la qualité du code, mais au moins en temps opportun, ils coïncident.
la source
Je pense que les différences auxquelles vous faites allusion dans votre question concernent davantage les utilisateurs de ces systèmes que les styles de programmation de leurs développeurs. Pendant longtemps, * nix a été le domaine du programmeur ou du passionné d'informatique. Il y avait très peu d'utilisation "décontractée". Où Windows a des nombres d'utilisateurs [domestiques] de l'ordre de grandeur supérieurs.
Les utilisateurs occasionnels ne veulent pas se souvenir d'une douzaine de drapeaux de ligne de commande différents pour exécuter un programme. Ils veulent cliquer sur un bouton.
Les utilisateurs occasionnels ne veulent pas se soucier des fichiers de configuration de leurs systèmes ou de la façon dont Fluffy Kitties se souvient de leur race de félin préférée.
Les utilisateurs occasionnels utiliseront généralement quelque chose tant qu'ils feront ce qu'ils veulent, même s'il existe de «meilleurs» produits.
Je pense que mon point principal ici est ... Windows est beaucoup sur la création pour l' utilisateur , plutôt que pour le créateur . N'allez pas à l'encontre des paradigmes de longue date qui existent dans le développement de Windows. Ne polluez pas les utilisateurs Mes documents avec de la merde, ou ne vous insérez pas dans leur démarrage sans raison.
Peut-être d'une importance similaire: rédiger la documentation utilisateur.
la source
Le blog de Raymond Chen, The Old New Thing , et son livre du même nom sont un excellent aperçu de la philosophie, de l'histoire et des meilleures pratiques de la programmation native de Windows.
la source
Compromis et personnaliser
Ce n'est pas le meilleur du tout, mais si vous êtes prêt à consacrer du temps et à prendre des décisions désagréables à certains endroits, vous ne pouvez pas y arriver. Si vous n'aimez pas ce qu'il fait actuellement, vous pouvez probablement le changer. Il y a peu d'endroits où il n'y a qu'une seule façon ou même une façon qui est toujours la meilleure.
Assez bon pour que l'utilisateur commence
Très peu de choses sont phénoménales, mais la plupart des choses sont utilisables. Unix a tendance à aller dans la direction où rien ne fonctionne jusqu'à ce que vous le configuriez et Apple rend tout assez soigné, mais au prix d'une certaine configurabilité / flexibilité.
Attendez-vous à une queue de support de journal
Les utilisateurs de Windows ne mettent pas à niveau simplement parce qu'il existe une version plus récente. Ils ne sont même pas toujours mis à niveau en raison d'une vulnérabilité ou d'un correctif. Les utilisateurs de Windows doivent souvent être forcés de mettre à niveau, mais si vous les forcez à mettre à niveau rapidement, ils chercheront des produits alternatifs
Les utilisateurs ont une vaste gamme de niveaux de compétence
Unix a une forte barrière perçue à l'entrée d'un niveau technique du point de vue d'un utilisateur domestique occasionnel. Apple avait un niveau de compétence requis très faible, mais n'encourage pas l'utilisateur occasionnel à faire beaucoup dans la manière de personnaliser son système d'exploitation. Windows est entre les deux. Il n'est que légèrement plus difficile à utiliser que les produits Apple, mais il y a beaucoup d'informations simples disponibles, parfois directement dans l'installation elle-même, sur la façon de changer une configuration système assez approfondie. Cela conduit à un niveau de compétence plutôt aléatoire dans le niveau intermédiaire des utilisateurs, car s'ils sont suffisamment confiants pour essayer quelque chose, il y a de fortes chances qu'ils puissent comprendre comment le faire. Cela laisse également les utilisateurs les plus timides sans aucune expérience dans certains cas, car ils se méfient des avertissements que les choses vont mal.
la source
Windows a été conçu avec une prise en charge explicite de la norme Common User Access (CUA) d' IBM pour guider le développement d'applications.
Ce qui, bien sûr, était une tentative de créer une expérience de type Mac pour l'utilisateur.
la source
UNIX était depuis longtemps pour les programmeurs et les gens comme ça et Windows était toujours pour les utilisateurs qui ne savent pas comment écrire des scripts bash. Par conséquent, dans les fenêtres, vous devez vous soucier des utilisateurs, cela signifie faire un seul outil pour toutes les tâches que l'utilisateur n'a pas à se soucier de qui configurer quelques programmes pour fonctionner ensemble.
la source
Je ne sais pas si c'est une philosophie, mais à mon humble avis, il y a une sorte de densité de pensée qui va avec la programmation Windows. Il y a aussi un sentiment de surprise sur la façon dont les choses fonctionnent parfois.
Je recommanderais la patience si vous adoptez le développement Windows et que vous prenez un peu plus soin de vos hypothèses.
la source