it-swarm-fr.com

Qu'est-ce qu'une bonne métaphore de programmation?

Je parle d'expliquer au non-programmeur quelle est la programmation. Je me suis assuré de rechercher des questions similaires avant de créer celui-ci, mais les rares que j'ai trouvés semblaient esquiver la question et je voudrais spécifiquement voir des métaphores ou des analogies. Je trouve personnellement qu'il est plus facile d'expliquer quelque chose de technique à une personne grâce à l'utilisation de métaphores ou d'analogies.

La raison pour laquelle je suis intéressé est parce que beaucoup de gens rencontrent le travail d'un programmeur quotidiennement, mais si vous demandez à la personne moyenne ce qu'un programmeur est ou fait, ils ne savent pas vraiment. Cela conduit à certaines situations de malentendus (ex. "[...] mais je pensais que tu étais bon avec des ordinateurs!")

J'aimerais vraiment trouver le meilleur là-bas. J'aimerais pouvoir expliquer facilement à quelqu'un quel est mon choix de carrière. Bien sûr, au moins l'idée générale.

Personnellement, je n'en ai pas de solide, mais j'ai longtemps pensé à ce sujet et j'ai généralement gravité la métaphore de la langue "Langue", où nous connaissons une langue que les ordinateurs comprennent et que nous sommes donc en mesure de dire aux ordinateurs. faire, ou "enseigner" eux, pour résoudre nos problèmes.

Par exemple:

Imaginez que dans une réalité alternative, des robots humanoïdes avec une intelligence artificielle existent et certaines personnes sont capables de communiquer avec eux à travers une langue commune, ce qui est une variation de l'anglais. Ces personnes qui peuvent communiquer avec les robots sont en mesure de leur apprendre à résoudre certains problèmes ou à faire certaines tâches, comme faire nos tâches ménagères.

Eh bien, bien que des robots comme celui-ci n'existent pas encore, les programmeurs de notre temps sont comme ces personnes, mais au lieu de communiquer avec les robots, ils communiquent avec des ordinateurs. Les programmeurs "enseignent" les ordinateurs comment effectuer certaines tâches ou résoudre certains problèmes au moyen de logiciel qu'ils créent en utilisant ce "langage commun".

Les programmeurs et cette "langue commune" sont ce qui nous donne des choses comme des courriels, des sites Web, des jeux vidéo, des processeurs de mots, des téléphones intelligents (pour le mettre simplement) et de nombreuses autres choses que nous utilisons quotidiennement .

Je ne veux pas mettre la programmation sur le trône ou quoi que ce soit, c'est juste la meilleure métaphore que je pourrais venir.

Je suis sûr que quelqu'un trouvera un problème avec celui-ci, c'est probablement un peu artificiel, mais là encore, c'est pourquoi je pose cette question.

30
Jorge Israel Peña

C'est comme avoir à écrire des directions détaillées étape par étape pour savoir comment conduire quelque part. Mais vous devez généralement ajouter des plans d'urgence pour des choses comme "Et si vous y êtes un embouteillage", ou "Et si un camion tombe dans la voie de virage".

Et parfois, vous devez plonger encore plus profondément et expliquer les règles de la route comme quel côté pour conduire ou quoi faire à un feu rouge. Et parfois, vous avez même besoin d'expliquer précisément comment le volant ou la pédale de gaz fonctionne.

Et généralement, une fois que vous avez tous décrit dans des détails exigeants, le client dit "c'est parfait, sauf qu'il doit travailler pour une personne qui a conduit un aéroglisseur"

43
AShelly

J'écris des instructions très détaillées pour une machine très stupide.

20
Shog9

J'utilise la métaphore "Nous écrivons recettes à tricoter" qui est grand-mère conviviale.

Raisonnement:

  • Le tricot est un processus mécanique assez simple où vous devez essentiellement suivre des instructions détaillées pour obtenir quelque chose.
  • La plupart des instructions de tricot sont pour plusieurs tailles. Cela vous donne if- déclarations et mathématiques et boucles.
  • Vous pouvez trouver l'erreur dans la recette lorsque l'armée de grand-mères en colère viennent avec leurs chandails de buggy!
17
user1249

Pas très bonne analogie, mais quand les gens me disent de réparer leur machine, je dis "Je suis le gars qui conçoit les voitures. Je ne suis pas le mécanicien!"

14
JD Frias

La programmation est comme une boîte de chocolats. Parfois, vous trouvez ce que vous recherchez tout de suite, mais la plupart du temps, cela prend beaucoup d'essais et d'erreurs. Parfois, vous obtenez de la noix de coco.

feux de circulation. Les voitures se déplacent ou s'arrêtent. Un feu de circulation est facile à imaginer la mise en place, mais que se passe-t-il si vous en ajoutez une autre? Que diriez-vous d'un tiers? Qu'en est-il de toute une ville? Un système de transit est composé de milliers de feux d'arrêt, chacun d'eux-mêmes en soi, mais lorsqu'il est pris dans son ensemble, il devient un système complexe. Si l'un de ces feux de signalisation est dysfonctionnement ou éteint en quelques secondes, il jette tout le système dans le chaos. Si tout est en synchronisation, vous profitez de la balade.

A -Motivational Speaker Trouve les clés pour déverrouiller le puzzle des motivations, des rêves et des idées des gens. Chaque situation, chaque personne est différente. Ce qui a fonctionné dans le passé peut ne pas être approprié maintenant. Parfois, une clé peut être réutilisée, mais doit être adaptée à l'individu. D'autres fois, la clé doit être façonnée. Ce qui est le plus enrichissant, c'est quand la personne a été déverrouillée et que vous les voyez sortir et conquérir le monde. Le plus dévastateur est lorsque vous vous sentez proches, mais vous ne pouvez tout simplement pas déverrouiller le potentiel.

A histoire de détective, lorsque le détective construit lentement son cas en recherchant des indices et en rassemblant des preuves. Méthode, intelligente et précise gagnera la journée. Bâclé, ignorant et paresseux aura mal le cas. Finalement, le travail se tiendra ou tombera devant un jury de pairs.

A machine à sous. Vous mettez toutes vos pièces de monnaie dans et tirez le levier. Parfois, vous gagnez gros, parfois vous êtes assis là pendant des heures et rien ne se passe. Parfois, quelqu'un d'autre ne fait que marcher avec désinvolture, tire le levier une fois et gagne le jackpot.

musique. Une note est assez simple, mais une mesure est plus complexe. Une chanson complète a de nombreuses mesures avec de nombreuses notes. Si une note est éteinte, elle peut ruiner toute la performance. Si chaque note est parfaitement livrée, la performance s'estompe dans l'arrière-plan et seule la musique existe.

10
VirtuosiMedia

La meilleure métaphore de tout est lui-même. Quelque chose de différent perdra une certaine précision. En tant que tel, choisir la meilleure métaphore dépend de quoi, en particulier, vous souhaitez capturer sur la programmation. Comme il y aura beaucoup de réponses données ici sur le codage des métaphores, je vais répondre à la métaphore classique du processus de développement dans son ensemble:

Construction de bâtiments

L'aspect le plus courant de cette métaphore est qu'un architecte physique est quelque peu analogue à un architecte logiciel. Voici quelques autres parallèles:

  • Les changements sont moins chers et moins chers les premiers que vous les faites. C'est-à-dire que vous pouvez déplacer une ligne sur papier maintenant ou 10 tonnes en ciment plus tard.
  • Un bâtiment sans plan approprié aura tendance à s'effondrer
  • Les constructeurs tentent de mettre en œuvre ce que veut le client. Si le client ne décrit pas avec précision ce qu'ils veulent que le bâtiment ressemble à (ou il y a un autre échec de la communication), il sera coûteux de changer.
  • Certaines lois de la physique ne peuvent être pliées. Tout comme une 2ème histoire de trois cents de large ne peut pas être construite sur une histoire de 100 pieds de large, la fonction X ne peut pas être construite sans un sous-système robuste Y.

Bien sûr, comme toute métaphore, il a ses limites. Quelques défauts avec elle:

  • Les bâtiments sont une utilisation de 1 fois; Vous le construisez quelque part et il reste. Vous ne pouvez pas le copier un million de fois pour un million d'utilisateurs différents avec un million de besoins différents à zéro coût incrémentiel.
  • Les bâtiments sont considérablement plus immuables que les logiciels.
  • Il n'y a pas d'analogie claire pour renforcer les coûts matériels. Une ligne de code ne coûte rien, seul le temps nécessaire pour le produire coûte de l'argent.
  • L'architecture incrémentielle qui est (selon lesquelles vous demandez) est possible avec le logiciel n'est pas possible avec la construction, où vous le conçoit une fois, puis la construire.

Donc, comme n'importe quelle analogie, cela dépend de ce que vous essayez d'expliquer. Méfiez-vous de sur-contropier sur une métaphore, ou votre client commencera à se demander ce que seront les taxes foncières sur son nouveau système de paie.

6
Fishtoaster

J'aime Chris McMahon analogie du développement de logiciels étant comme la création de musique, en particulier de la musique jazz.

C'est Ella Fitzgerald et comptez Basie faire la chanson à une heure de saut. La chanson est un blues de douze barres, ce qui est l'équivalent de jazz d'une application de base de données avec une interface utilisateur. Par lequel je veux dire: tout comme chaque programmeur a construit une application de base de données avec une interface utilisateur, chaque musicien américain a joué de douze blues de Bar. C'est un cadre sur lequel de nombreuses chansons sont suspendues, du comte Basie à Jimi Hendrix aux Ramones.

Cette vidéo particulière est un excellent exemple de pratique agile. Écoutez comment la voix et le piano s'influencent mutuellement. C'est beaucoup comme une programmation par paire, et c'est beaucoup comme TDD: la voix fait quelque chose; Le piano répond; piano fait quelque chose; la voix répond. Et remarquez le contact visuel. Ces personnes sont intensément conscientes de ce qui se passe instantané à instant. Ils n'ont pas de partitions (BDUF). Ils sont impliqués dans une activité qui prend une concentration intense et une compétence, tout comme un bon développement logiciel. Ils sont également clairement conscients qu'il existe un public, tout comme un bon développement logiciel devrait être conscient des besoins des personnes payant les factures.

Voici le lien vers la publication du blog dans lequel il en discute: http://chrismcmahonsblog.blogspot.com/2007/05/example-of-analogy-monks-vs-music.html

6
Paddyslacker

La programmation est comme la construction de choses avec LEGO:

  • Vous collez beaucoup de petits morceaux ensemble pour faire des choses plus grandes
  • Les petits bits sont situés dans un nombre limité de formes et de tailles
  • Les petites choses ne peuvent s'adapter que de certaines manières
  • Jouer avec ce truc peut être très amusant
5
Kramii

Parfois, je me réfère à la programmation de Contrôle des zombies stupides . Somme à la résumé mon article de blog À ce sujet:

  • Comme les zombies, les ordinateurs que nous opérons sont très stupides. Il est difficile de les instruire de faire quoi que ce soit à moins que les instructions soient détaillées
  • Le zombie est agressif et si nous manquons de minuscule détail dans les instructions, laissez la créature non heurtée, elle peut tout écraser autour de lui-même. La même chose avec les ordinateurs: un manque de détails dans les instructions peut rendre votre programme de programme et détruire vos données.
  • Vous devez connaître la magie si vous voulez contrôler un zombie. La même chose avec la programmation.
  • Plus les personnes atteintes de cerveaux se rassemblent au même endroit, plus les ordinateurs sont susceptibles d'avoir des ordinateurs. Il semble que les cerveaux attirent les ordinateurs - de la même manière qu'ils attirent des zombies.
5
P Shved

La programmation d'un ordinateur est comme élever un enfant ...

  • Tout le monde n'est pas d'accord sur la bonne façon de le faire
  • Ça te garde la nuit
  • Ça ne fait jamais ce que tu le dis à
  • Peu importe combien de livres que vous avez lu sur le sujet, lorsque vous allez le faire, vous vous sentez d'avoir aucune idée de ce que vous faites
  • Après un moment, vous avez tendance à devenir paresseux
  • Vous vous attendez à ce qu'il ait de grands rendements dans le futur, mais vous finissez par devoir le maintenir jusqu'à sa fin de vie
  • Ce n'est jamais aussi propre, intelligent ou sécurisé comme vous le souhaitez
  • Lorsque vous le regardez plus tard, vous vous demandez ce que vous pensiez.
  • Malgré tout le stress, il vous a causé, vous l'aimez de toute façon.

La principale différence est que nous nous énervons si quelqu'un vole notre code source, mais nous sommes souvent heureux d'avoir quelqu'un de sortir de nos enfants.

5
2rs2ts

La programmation est comme créer une usine ou une chaîne de montage.

Automated Production Line

Pensez au logiciel en tant que machine de machine ou de montage qui existe à l'intérieur de l'ordinateur. Certaines matières premières et certains composants sont introduits dans la machine et il suit un ensemble de procédures pour les traiter dans un produit final. Les procédures sont configurées pour effectuer une opération spécifique sur une matière première ou une composante à un ensemble spécifique de paramètres (par exemple, temps, température, distance, etc.) dans un ordre particulier. Si les détails de l'opération à effectuer étaient incorrects ou que les capteurs de la machine ne sont pas correctement calibrés, ni si des matières premières ou un composant n'étaient pas dans des normes de qualité attendues, cela pourrait modifier le résultat de l'opération et le produit ne se révélerait pas. comme prévu.

Une telle machine est très rigide dans son fonctionnement et ses intrants acceptables. Les machines ne remettent pas en question l'intelligence des concepteurs ni son environnement d'exploitation actuel. Il continuera de suivre les procédures tant que cela est dirigé vers. Même si une modification des matières premières ou des composants pourrait avoir un effet drastique sur ce qui s'est passé dans des opérations ultérieures, la machine exécuterait toujours ses procédures. Le processus devra être examiné pour voir les modifications apportées aux procédures nécessaires pour compenser et produire le résultat souhaité. Une modification de la conception ou de la configuration du produit peut également nécessiter une modification significative des opérations effectuées ou de leur commande. Bien que les responsables de la production ont rapidement appris l'importance d'isoler les opérations autant que possible de réduire les effets indésirables entre eux, de nombreuses hypothèses sont fabriquées à partir des composantes de la condition, car elles subissent une transformation; hypothèses qui pourraient ne pas être détectées avant que le produit final soit entre les mains de l'utilisateur dans un environnement d'exploitation différent.

4
Huperniketes

Aider un idiot rapide passer une classe de mathématiques nécessitant un essai écrit.

3
JeffO

La programmation informatique est comme la lecture d'une partie d'échecs dans laquelle la taille de la carte, la quantité de pièces en jeu et les règles qui régissent ces pièces grandissent en taille et à la complexité de la taille.

2
Ami
2
Tamara Wijsman

Les nouveaux étudiants à C.S./Les classes de programmation sont pratiquement comme des utilisateurs non programmés. L'exemple de robot est bon.

De retour, dans les années 80, en utilisant le logo, Karel, (ou des envioments de programmation similaires), où l'utilisateur apprend à programmer, surveille l'ordinateur comme un robot, à la place, d'un T.V. Set avec une machine à écrire, a beaucoup aidé. Ces outils qui sont couramment utilisés dans l'école secondaire junior et le lycée.

Cette programmation pratique a aidé les étudiants à adquirer des compétences en résolution de problèmes, même s'ils n'étaient pas liés à l'ordinateur !!!

Ou, même si les étudiants ne sont pas devenus des programmeurs.

Certaines collègues et universités ont également appliqué ces outils dans des cours de première année.

Je me demande pourquoi de nombreuses écoles secondaires abandonnent le logo et Karel ...

1
umlcat

J'aime l'analogie de Fred Brooks, du mois mythique de l'homme, cette programmation est comme la magie.

(The) la construction de programmes, contrairement aux mots du poète, est réel en ce sens qu'elle déplace et fonctionne, produisant une sortie visible séparée de la construction elle-même. Il imprime des résultats, dessine des images, produit des sons, déplace les bras. La magie du mythe et de la légende est devenue réalité à notre époque. On tape l'incantation correcte sur un clavier et un écran d'affichage vient de la vie, montrant des choses qui ne pouvaient pas non plus être. ...

(Un) doit fonctionner correctement. L'ordinateur ressemble également à la magie du mythe et de la légende à cet égard. Si un personnage, une pause de l'incantation n'est pas strictement sous forme correcte, la magie ne fonctionne pas. Les êtres humains ne sont pas habitués à être parfaits et peu de zones d'activité humaine la demandent. Je pense que l'adaptation à l'exigence de perfection est la partie la plus difficile d'apprendre à programmer.

1
AlexC

"[...] Mais je pensais que tu étais bon avec des ordinateurs!"

C'est généralement une tentative pour tromper un geek dans la réparation d'un ordinateur (vous sentez que vous sentez envie de les prouver de la fausse?). Ma réponse standard:
[.____] Je suis un programmeur. C'est comme un ingénieur automobile - il ne saura probablement pas comment réparer les freins de vous '72 Trabant et ne le ferait certainement pas s'il savait. Un mécanicien ferait cela!

1
Gipsy King

J'aime le concept de recette de cuisson.

0
Paul Nathan

La programmation est comme brandir des quantités massives de puissance. Vous pouvez rendre l'ordinateur faire tout ce que vous voulez. Vous n'êtes limité que par votre imagination et le temps que vous êtes prêt à investir.

Les programmeurs sont comme les fabricants d'une maison. Nous pouvons tout vous dire sur les maisons que nous avons faites. Pourtant, si vous nous demandez de demander une maison au hasard, nous allons passer sur la route, il y a de fortes chances que nous ne saurions probablement pas beaucoup. Mais si vous avez besoin de quelque chose ajouté ou changé sur cette maison, nous pouvons y arriver, à condition que le propriétaire nous laisse nous.

0
bitsoflogic

Dans l'un des chris Crawford anciens articles sur la programmation Il a comparé un programme complexe à une bureaucratie, avec de multiples agences qui communiquent en passant des mémos de l'avant en avant. J'ai constaté que c'était une métaphore très utile lors de l'explication du développement de logiciels.

0
jhocking

J'étais généralement une programmation à un puzzle de Jigsaw.

Pour créer un nouveau projet - vous avez des tonnes de pièces, dont un couple n'appartient pas à cette image et que vous n'avez pas d'aperçu de ce que le puzzle ressemble quand c'est fait. Mais vous connaissez la taille et les couleurs générales, les estimations sont donc possibles, mais pas nécessairement exactes.

Pour modifier un projet déjà existant - un chat est venu et a renversé une partie du puzzle fini. Cela prendra du temps, mais le cadre est déjà là, il ne devrait donc pas être dommage (en fonction de la nécessité de la modification de la quantité).

Cela aide également à décrire les progrès. Un de mes projets récents, à un moment donné, je me demandais comment la décrire afin qu'une personne non technique comprenne pourquoi je ne sais pas combien de temps, et je suis venu avec: Pensez à un puzzle de Jigsaw où tout le monde Les morceaux de bordure sont terminés, de même que moins de moitié si les pièces intérieures. Ceux qui sont partis sont tous séparés les uns des autres, ce que je dois faire maintenant est de remplir les lacunes.

0
Izkata