Existe-t-il une philosophie de programmation Windows? [fermé]

30

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

Maglob
la source
15
Doit être au courant? "Les choses vont sucer, sucer mal."
Orbling
3
Une seule philosophie qui, il n'y a pas de philosophie. ;)
Mudassir
6
En fait, Powershell a introduit une partie de la philosophie Unix dans Windows, en particulier en écrivant de petits programmes (en fait des applets de commande dans Powershell) qui ne font qu'une chose, et en les combinant avec d'autres applets de commande qui font d'autres choses. Bien sûr, la plupart des utilisateurs occasionnels ne savent toujours pas comment utiliser Powershell, mais cela dépend du type de logiciel que vous écrivez.
JohnL
4
Nous réussirons la troisième fois.
aufather
7
La philosophie de Windows est de générer des revenus pour Microsoft.
dan04

Réponses:

28

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:

  • Interfaces utilisateur simples et intuitives
  • Flux de travail naturel
  • Devrait fonctionner hors de la boîte
  • Aucune connaissance technique requise là où elle n'est pas requise

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
7
Je ne pense pas que ces puces s'appliquent particulièrement bien à Windows.
Tom Hawtin - tackline
4
@Tom: C'est une philosophie; il ne doit s'appliquer à rien. Néanmoins, je pense que cela s'applique très bien à la plupart des choses dans le monde Windows.
Allon Guralnek
@Tom Je suis plus d'accord avec @Allon car il me semble que la question de l'OP est davantage la programmation console vs GUI.
gideon
6
Quoi?!? Jetez un oeil à de bonnes vieilles sources BSD et AT&T. Propre, simple, élégant. Et je n'ai jamais rien vu de plus obscur qu'un code MFC gonflé typique.
SK-logic
Même difficile, il n'y a pas de réponse correcte unique, j'ai préféré celle-ci. Le blog de Joel était super.
Maglob
8

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.

TZHX
la source
7
Documentation utilisateur? Les utilisateurs de programmes réussis n'auront jamais à toucher à aucune documentation.
@Developer Art - cela est vrai jusqu'à un certain point, mais lorsque vous écrivez des logiciels pour, disons, la physique des particules qui doit être comprise par des personnes de différentes nationalités, la possibilité de dire "cliquez ici pour une description de ce que nous faisons avec vos données ici "si plus facile que d'écrire un ordinateur télépathique qui pourra extraire les attentes des utilisateurs de leur esprit.
TZHX
3
"Ne pollue pas l'utilisateur avec de la merde." - assez ironique.
ocodo
1
comment ça, Slomojo?
TZHX
8

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.

Andreas Rejbrand
la source
4

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.

Facture
la source
3

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.

Steven A. Lowe
la source
2

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.

Dainius
la source
1

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.

John Bickers
la source