Comment puis-je expliquer à mes parents que j'étudie les langages de programmation?


64

Je suis en train de terminer ma maîtrise en informatique. Je suis intéressé par les langages de programmation, en particulier dans les systèmes de types. Je me suis intéressé à la recherche dans ce domaine et le semestre prochain, je commencerai un doctorat sur le sujet.

Maintenant, voici la vraie question: comment puis-je expliquer ce que je veux (faire) à des personnes qui n’ont aucune connaissance préalable en informatique ou dans des domaines connexes?

Le titre vient des faits que je ne suis même pas capable d'expliquer à mes parents, mes amis, etc., ce que je fais. Oui, je peux dire "le but est d'aider les développeurs de logiciels à écrire de meilleurs logiciels" , mais je ne pense pas que cela soit vraiment utile: ils ne sont pas conscients de la "programmation", ils n'ont aucune idée de ce que cela signifie. C'est comme si je disais que je suis un mécanicien automobile pour quelqu'un du Moyen Âge: ils ne savent tout simplement pas de quoi je parle et encore moins comment l'améliorer.

Est-ce que quelqu'un a de bonnes analogies avec le monde réel? Des exemples éclairants provoquant des moments "a-ha"? Dois-je réellement montrer un extrait de code court et simple à des personnes âgées de plus de 60 ans sans expérience en informatique (ni universitaire)? Si oui, quelle langue devrais-je utiliser? Quelqu'un at-il rencontré ici des problèmes similaires?


Les commentaires ne sont pas pour une discussion prolongée; cette conversation a été déplacée pour discuter .
DW

3
Cette question a reçu un vote négatif et un ou plusieurs indicateurs proches, si je comprends bien le panneau. Pensez à laisser un commentaire pour que je puisse l'améliorer. Bien que je traîne ici depuis un moment, c'est la première fois que je participe activement au site et peut-être que je ne connais pas certaines règles.
Effeffe


1
Je ne comprends tout simplement pas pourquoi cette question est plus votée qu'une question liée à un problème spécifique, qui est plus utile. Cette question est ridicule et a été ridiculement votée. Incroyable!
Nbro

2
@nbro Je ne comprends pas ce qui est ridicule à propos de la question et je ne sais pas comment vous avez décidé qu'une question spécifique est "plus utile" qu'une autre.
Effeffe

Réponses:


59

Si vous avez quelques minutes, la plupart des gens savent comment ajouter et multiplier deux nombres à trois chiffres sur papier. Demandez - leur de le faire, (ou d'admettre qu'ils pouvaient, si elles devaient) et leur demander de reconnaître qu'ils font cette tâche méthodiquement: si ce nombre est supérieur à 9, puis ajouter un report, et ainsi de suite. Cette description qu'ils ont juste donnée sur ce qu'il faut faire est un exemple d' algorithme .

C’est ainsi que j’enseigne aux gens l’algorithme des mots et, selon mon expérience, c’est le meilleur exemple. Vous pouvez ensuite expliquer qu’on peut imaginer que les ordinateurs doivent effectuer des tâches plus complexes et qu’il est donc nécessaire de disposer d’un langage non ambigu pour alimenter ces algorithmes. Il y a donc eu une prolifération de langages de programmation parce que les gens expriment leurs pensées différemment, et vous cherchez des moyens de concevoir ces langages de sorte qu'il soit plus difficile de faire des erreurs.

C'est une situation très reconnaissable. La plupart des gens n'ont aucune idée que les ordinateurs qu'ils utilisent utilisent des programmes, ou que ces programmes sont du code source écrit par l'homme, ou qu'un ordinateur pourrait «lire» le code source, ou que le calcul, qu'ils associent à l'arithmétique, est la seule chose que les ordinateurs faire (et le mouvement des données, et la mise en réseau, peut-être).

Mes recherches portent sur l'informatique quantique, alors quand les gens me demandent ce que je fais, je n'essaye pas de l'expliquer. Au lieu de cela, j'essaie d'expliquer que la physique quantique existe (ils ont généralement entendu parler du chat de Schrödinger et de choses qui se trouvent à deux endroits à la fois), et qu'en raison de cette physique étrange, des calculs plus rapides pourraient être possibles.

Mon objectif est de laisser la personne se sentir un peu plus informée qu'elle ne l’a fait, excitée par un monde qu’elle ne connaissait pas, mais avec laquelle vous la familiarisez maintenant. Je trouve que c'est beaucoup plus utile que d'expliquer mes questions de recherche particulières.


27
Le tri d'un jeu de cartes est également un moyen simple d'introduire la notion d'algorithme.
Morwenn

2
@ Morwenn C'est vrai! Il y a des tas d'algorithmes que nous exécutons dans la vie quotidienne! Le traitement des cartes est algorithmique, le trafic présente de nombreux aspects algorithmiques. Bien qu'ils soient basés sur des événements et non impératifs, la cuisson est un algorithme lorsque vous le faites sur pilote automatique. La raison pour laquelle j’aime bien ajouter c’est que tout le monde a appris le même algorithme au primaire, alors que pour trier une liste de nombres, les stratégies varient et ne sont pas méthodiques: ils essaient de trouver des motifs de nombres proches ou adjacents, et tout le monde ne connaît pas le commander un jeu de cartes est censé avoir de toute façon (est-ce des cœurs avant pique?)
Lieuwe Vinkhuijzen

Personnellement, lorsqu'on m'interroge sur l'informatique quantique, j'ai tendance à éviter complètement la physique, mais j'essaie de donner une idée générale (un ordinateur quantique ne fonctionne pas mieux ni plus rapidement, mais peut tout simplement effectuer des calculs d'une manière qui dépasse le cadre des ordinateurs classiques). S'ils demandent comment, ils ont tendance à préférer une vue simplifiée, essentiellement celle du traitement SIMD (avec des ressources linéaires suffisantes pour accéder à une taille exponentielle de données d'entrée parallèles), ce que sont pour la plupart des algorithmes.
Le Vee

Vous pouvez aller au-delà des cartes; Je me suis récemment retrouvé à utiliser une variante de Quicksort pour trier une pile de documents que je devais organiser sans même y penser car il y en avait trop pour un tri par insertion de base.
JAB

@JAB C'est incroyable! Mais vous connaissez probablement déjà Quicksort dans le fond de votre esprit. L'avantage d'expliquer l'addition par rapport au tri est que tout le monde a le même algorithme d'addition, mais aucun profane n'a un algorithme de tri méthodique. D'un autre côté, cela pourrait être un avantage! Vous obtenez d'expliquer différents algorithmes. C’est la voie que j’ai choisie lorsque j’ai parlé à quelqu'un de mathématique en dehors de cs, et cela a permis de comprendre le concept d’algorithmes différents pour la même tâche avec des délais différents, et pourquoi les limites inférieures sont difficiles.
Lieuwe Vinkhuijzen

18

Je voudrais essayer quelque chose comme ça:

Les programmeurs peuvent dire aux ordinateurs quoi faire. Pour ce faire, ils doivent utiliser un langage de programmation. C'est un langage qui est compris par les ordinateurs et les humains. Par exemple, si vous modifiez un document Word et appuyez sur une touche, l'ordinateur affiche la lettre sur laquelle vous avez appuyé. En effet, un programmeur a écrit un programme disant: Si l'utilisateur appuie sur "A", insère un "A" dans le document. Si l'utilisateur appuie sur "B", insérez un "B" dans le document, etc. L'ordinateur ne fait que suivre les règles du programme écrit par le programmeur.

Maintenant, parfois, les programmeurs écrivent une règle stupide par erreur. L'ordinateur essaiera quand même de suivre la règle stupide, mais si vous suivez une mauvaise règle, quelque chose de mauvais arrivera. Par exemple, parfois, lorsque vous modifiez un document Word, tout se bloque soudainement et l'ordinateur ne réagit plus. C'est peut-être parce que certains programmeurs de Microsoft ont écrit un programme moins que parfait.

Mon travail consiste à inventer des méthodes pour vérifier les programmes de telles erreurs et d'autres, en utilisant d'autres programmes et certaines mathématiques. L'idée de base est de savoir comment prédire ce qui se passera quand un programme sera exécuté, sans l'exécuter réellement.

Bien sûr, comme il s’agit de recherche, je ne travaille que sur un petit aspect, pas tout à la fois, mais c’est la grande image de ce que nous essayons de réaliser.

J'utilise une explication dans un style similaire pour mon domaine (langages spécifiques à un domaine), et je peux dire que cela m'a souvent aidé à surmonter le "oh tu es un informaticien, je ne pourrais jamais le faire qui me laisse partir et arrête de parler à vous "question. La clé semble être de tirer les deux premières phrases jusqu'à ce que l'une d'elles atteigne un exemple auquel l'autre personne peut s'identifier, comme les documents Word dans ce cas. Des points bonus pour cas particuliers à l'exemple, comme Excel pour les comptables ou Powerpoint pour les patrons ou les jeux informatiques pour les joueurs, les navigateurs Web ou autres.

Notez que vous ne devez pas rester à ce niveau superficiel. Si vous (et l'autre personne!) Le souhaitez, vous pouvez vous plonger dans les détails de ce que vous faites exactement à partir de là. Par exemple, "dans mon projet actuel, j'essaie de prouver mathématiquement que ce que j'ai inventé l'année dernière fonctionne réellement. Cela signifie que je dois définir très soigneusement ce que signifie réellement un programme, et ce que mon invention suppose qu'un programme signifie", puis Je peux montrer que la prédiction est en fait juste ".


12

La plupart des gens comprennent les recettes. Si vous suivez les instructions, vous aurez un bon repas. Parfois, cependant, les instructions peuvent être difficiles à suivre. Par exemple, lorsque vous créez des pérogies, vous trouverez des instructions telles que celle-ci, prise mot pour mot des pérogies polonais de grand-mère :

Pour faire cuire des pérogies: Amenez à ébullition une grande casserole d’eau légèrement salée. Déposez les pérogies un à la fois. Ils sont terminés quand ils flottent au sommet. Ne faites pas bouillir trop longtemps, sinon ils seront détrempés! Retirer avec une cuillère à égoutter.

Beurk. Passons en revue les bons conseils de grand-mère à nous. Déposez-les un à la fois ... afin qu'ils aient tous une durée différente dans le pot. Je l'ai. Ils sont terminés quand ils flottent au sommet . Eh bien combien sont-ils? Est-ce que je les attrape au fur et à mesure? Est-ce que j'attends que 80% flottent au sommet et les récupère ensuite? C'est fou imprécis. Ne faites pas bouillir trop longtemps, sinon ils seront détrempés! Comment puis-je mesurer quand ils sont sur le point de devenir détrempés pour qu'ils ne restent pas trop longtemps? Si cinq arrivent au sommet en même temps, aurai-je le temps de les avoir tous?

Et croyez-moi, j'ai gâché beaucoup de pérogies dans ma journée. C'est un problème grave que tout cuisinier au pérogie a déjà rencontré. Malgré ces problèmes, même après l'analyse la plus élémentaire, les gens sont encore capables de faire des pérogies en utilisant exactement la même méthode. Mais pouvons-nous faire quelque chose pour que plus de lots de pérogies soient réussis et que moins de lots de pérogies échouent?

Ne serait-il pas formidable de voir quelqu'un de spécialisé dans la fiabilité des recettes? Quelqu'un qui a dit "nous pouvons canaliser les pérogies afin qu'ils apparaissent et sortent de l'eau!" ou "nous pouvons ajouter un colorant spécial au perogie, sûr à manger, qui leur donne différentes nuances et nous savons comment éliminer les plus sombres en premier, car ils risquent davantage de devenir détrempés". Nous voulons un expert capable de prendre cette recette et d’y remédier. La vie des cuisiniers pérogiés à travers le monde sera plus facile et moins de morceaux de pâtes et de pommes de terre détrempées seront nourris à un chien.

Les programmeurs suivent aussi les recettes tout le temps. Mais parfois, l'équipement qu'ils utilisent, les instructions qu'ils utilisent et les interprétations qu'ils utilisent ne se combinent pas pour préparer le repas somptueux qu'ils voulaient. Heureusement, il y a des gens qui consacrent leur carrière à rendre la vie d'un programmeur plus productive. Dans votre cas, vous vous êtes spécialisé dans l’un des outils utilisés par un programmeur, le langage, pour essayer de les améliorer.


7

Voici comment j'essayerais d'expliquer cela à ma mère:

Les gens utilisent les langages de programmation pour donner des instructions à un ordinateur. Tout ce qu'un ordinateur fait est fait à l'aide d'un code informatique écrit dans un langage de programmation par un programmeur.

Ainsi, si, par exemple, nous souhaitons que la chaîne de télévision change lorsque nous appuyons sur un bouton, il nous faut alors écrire du code dans un langage de programmation. Il en va de même pour tout ce qui se passe avec un ordinateur portable, un smartphone et tout ce dont le fonctionnement implique un ordinateur.

Il pourrait sembler qu'il existe un seul langage de programmation que les programmeurs pourraient utiliser pour écrire tous les programmes. Mais ce n'est tout simplement pas le cas. Différents langages de programmation existent pour tous les types d'applications.

Certains sont utilisés pour créer des sites Web, d'autres pour créer des applications pour ordinateur portable (comme Microsoft Word).

L'une des raisons pour lesquelles il existe de nombreux langages de programmation tient au fait que certains conviennent mieux à certaines tâches qu'à d'autres. Une autre raison est que certaines langues sont conçues pour être utilisées avec différents ordinateurs. Donc, vous ne pouvez pas toujours prendre le code écrit pour un smartphone et l'exécuter sur un ordinateur portable. Et, alors que certains programmeurs peuvent programmer dans de nombreuses langues et que beaucoup sont capables ou apprennent rapidement de nouvelles langues, tout programmeur va connaître certaines langues mieux que d’autres, et certaines pas du tout.

Les langages de programmation sont donc l’une des technologies clés qui font fonctionner les ordinateurs. Des langages de programmation bien conçus peuvent considérablement augmenter la productivité des programmeurs. Ils peuvent également améliorer la sécurité et réduire les erreurs de programmation, les bugs et les défauts.

En gros, voici ce que j’étudie: Comment différentes parties des langages de programmation affectent-elles la productivité des programmeurs? Quelles parties d’une langue en particulier le rendent mieux pour écrire du code pour un site Web? Pourquoi certaines langues sont-elles plus populaires que d'autres?

Bien qu’il puisse sembler que ces questions soient ésotériques et très éloignées de la vie quotidienne du citoyen moyen, l’inverse est vrai. L'étude des langages de programmation est essentielle pour tout produit ou service utilisant un ordinateur. Et aujourd'hui, cela signifie à peu près tout;)


7

Votre meilleur pari peut être de former des analogies avec les langues humaines.

Les langages de programmation sont utilisés pour fournir des instructions aux ordinateurs. Les langues humaines sont utilisées pour communiquer des idées à d'autres personnes et pour aider à former nos propres pensées. L' hypothèse de Sapir-Whorf dit que le langage que vous utilisez influence votre pensée. (On discute du degré auquel l'hypothèse Sapir-Whorf est vraie, mais on peut simplement l'accepter quand on parle de langages de programmation. Autrement, vous pourriez aussi renoncer à votre doctorat.)

Il existe une grande variété de langages humains, certains avec des caractéristiques que nous considérons comme exotiques. Par exemple:

  • Certaines langues exigent que vous indiquiez l' évidence avec chaque déclaration: que la déclaration soit due à votre propre expérience, à votre propre inférence, à des ouï-dire, à des spéculations, etc.
  • Certaines langues forment des mots énormes par agglutination; chaque mot peut être fortement modifié pour coder beaucoup d'informations sur son rôle grammatical. Les autres langues ne modifient presque jamais les mots et font appel à l'ordre des mots ou à des particules pour exprimer cette information.
  • Les langues diffèrent par la taille du vocabulaire . Certaines langues ont des mots qui ne peuvent être traduits que par une circonlocution (par exemple ). Certaines langues ont des expressions brillantes qui sont si bonnes que d’autres les empruntent (par exemple, Schadenfreude).
  • Certaines langues n'ont pas de concept de gauche / droite; vous devez tout exprimer en termes de nord / sud / est / ouest.
  • Certaines langues n'ont pas de chiffres. Les langues varient également dans le nombre de noms de couleurs communs .
  • Les langues varient dans leurs phonotactiques. Par exemple, le taux de syllabes varie, le japonais ayant tendance à utiliser de nombreuses syllabes simples, alors que le chinois est plus lent, mais code les informations par tons.
  • Les langues varient en densité d'information . Si vous regardez une traduction chinois-anglais-français, vous verrez que la version chinoise est très compacte sur le papier et que le français occupera le plus d'espace.
  • Certaines langues, comme l'anglais, sont très proches: n'importe qui peut librement emprunter un mot dans une autre langue et l'anglifier. D'autres langues, comme le français, ont un corps normatif qui résiste au changement. L'islandais, par exemple, est farouchement conservateur par nature.

Existe-t-il une meilleure langue, objectivement? La réponse pourrait dépendre de ce que vous essayez de faire.

  • Si vous essayez de communiquer secrètement à la radio, Navajo serait un bon choix. (Mentionnez votre langue préférée en "écriture seule".)
  • Si vous essayez d'écrire un avertissement aux générations futures et que l'inscription doit être compréhensible d'ici quelques milliers d'années, vous pouvez utiliser le chinois (en raison du grand nombre de locuteurs et de la stabilité de son système d'écriture) ou peut-être Anglais (qui a radicalement changé au cours du dernier millénaire, mais est très largement connu). (C et JavaScript vivront probablement "pour toujours".)
  • Le chinois, qui a beaucoup d’homophones, est excellent pour le jeu de mots . (Poésie Perl)
  • La neutralité est peut-être importante, auquel cas vous pourriez choisir l'espéranto. (Java est conçu pour être portable; C l'est moins.)
  • Peut-être avez-vous besoin d'exprimer une pensée avec une précision absolue, et aucun langage naturel ne suffira. Vous devez recourir à Ithkuil !
  • Il peut s'avérer très difficile de traduire certaines paires de langues (par exemple, l' arabe et l'anglais ) en raison des vastes différences culturelles et des connotations culturelles avec certains mots. De même, certaines idées ne sont pas facilement exprimées dans certains langages informatiques car le concept n’existe tout simplement pas (par exemple, le caractère récursif).

En fin de compte, tout ce qui se trouve sur un ordinateur est traduit en langage machine, mais choisir le bon langage pour le travail peut considérablement affecter la productivité, la fiabilité, les performances et l'agilité de votre logiciel. Nous choisissons des langages de camisole de force tels que Ada ou Java pour les projets "sérieux", et Ruby ou Perl pour un maximum de stabilité . Pour interroger une base de données, SQL est le langage habituel; écrire votre propre code C serait idiot.

Sur la base de ces analogies, je suis sûr que vous pouvez exposer des idées comme la programmation fonctionnelle, la sécurité de type, l’inférence de type, etc. pendant quelques heures.


1
Un problème avec cela est que certaines personnes n’ont jamais vraiment réfléchi à leur propre langage naturel. Ainsi, les exemples de langage peuvent être presque aussi difficiles à comprendre pour certaines personnes que la notion de langage de programmation. Si vous savez que la personne est (au moins) bilingue, les perspectives sont probablement meilleures ...
TextGeek

@TextGeek Même en anglais, il existe des dialectes. Les gens se disputent à propos de règles linguistiques telles que les doubles négatifs et les phrases de fin avec une préposition. La langue évolue tout le temps, parfois de manière controversée. La popularité des textos a conduit à de nouvelles abréviations. En anglais américain, vous pouvez transformer n'importe quel nom en scandale en ajoutant un suffixe "porte". Je ne pense pas qu'il faille être bilingue pour apprécier l'innovation linguistique et la diversité.
200_success

3
  • les langages informatiques se rapportent plus ou moins aux langages humains. ils utilisent des mots standards / communs / partagés. considérez qu'il existe des milliers de langues humaines, certaines disparues, d'autres actives, et que leur vocabulaire et leur usage évoluent continuellement au fil du temps. Certaines personnes créent de nouveaux mots utiles pour exprimer des concepts qui n'étaient auparavant pas exprimables. La grammaire est un autre aspect du langage informatique et du langage humain qui se chevauchent . certaines langues, par exemple l'anglais, ont une grammaire très complexe. considérez tous les temps et les règles complexes qui les régissent. les autres langues n'ont pas le même temps . une autre corrélation est avec des parties du discourscatégories, par exemple nom, verbe, adverbe, adjectif, etc., elles fonctionnent un peu comme des types dans les langages informatiques. imaginez créer de nouvelles langues avec différentes parties des catégories de discours qui n’ont pas encore été considérées, ou avec de nouvelles combinaisons de parties de la parole provenant de langues différentes, etc. Il convient donc de noter que la linguistique a un lien avec l’informatique, par exemple dans la théorie de la langue chomskienne.

  • les logiciels et le matériel sont souvent liés aux moteurs et aux machines et portent même le nom suivant. Il existe une vieille analogie logicielle voulant que modifier un système de production complexe 24 heures sur 24 et 7 jours sur 7 équivaut à changer les moteurs d'un avion en vol . Notez également que les réacteurs sont très complexes et impliquent des spécifications massives et précises de pièces interchangeableset ici il y a une certaine analogie avec les langages informatiques qui contrôlent le matériel. imaginez toute la complexité des documents qui décrivent exactement comment construire des réacteurs: toutes les pièces, comment elles sont construites, comment elles s’assemblent, comment elles sont assemblées, etc. ils sont créés / compilés par des ingénieurs en utilisant un format / structure / règles conventionnelles précis; le logiciel est un peu analogue à cela.

  • re machines, toute personne sans formation scientifique ou mathématique ou même un enfant peut comprendre le concept de base et de nombreux aspects d’une machine de Turing! une création merveilleuse. on soupçonne que Turing a été inspiré par des machines à écrire et / ou des machines de télétype. on pourrait décrire la table d'état et leur montrer un exemple de table d'état qui calcule la multiplication, et quelqu'un regarder une animation youtube d'une machine de Turing calculer un calcul de base comme une multiplication. dites-leur que la table d'état peut calculer ou décider littéralement d' une langue et que les entrées sont littéralement appelées mots . en fait, les machines de Turing acceptent les mots en languesetc. puis dites-leur qu'il existe deux tables d'état qui calculent la multiplication, mais que l'une est beaucoup plus rapide ou plus efficace que l'autre et que votre recherche implique de trouver de meilleurs concepts de table d'état. Pour construire efficacement des tables d'état, utilisez des langages de programmation qui résument le contenu de grandes tables d'état! un compilateur convertit le code écrit dans un langage de programmation en une grande table d'états.

  • Les algorithmes de tri sont une excellente métaphore d’entrée de gamme en informatique. on peut regarder les différentes listes d'instructions aka algorithme pour chaque sorte. on peut apprendre ce qu'est une sorte de bulle par rapport à une sorte d'insertion, on peut utiliser un jeu de cartes. Concentrez-vous maintenant sur les différents ensembles d’instructions et considérez qu’elles doivent être écrites dans un langage très précis, aussi précis que les énoncés mathématiques, dont la syntaxe est stricte , etc. et qui présente des points communs / structures de base: logique conditionnelle, boucles, variables, etc. , et expliquez que l’art de cette spécification précise concerne les langages informatiques, et que certaines langues différentes peuvent donner les mêmes algorithmes, mais qu’il existe de subtiles variations stylistiques dans ces langues qui sont étudiées très en profondeur, etc.


1
Pourquoi voter contre celui-ci? Je pense qu'il y a beaucoup d'idées. On peut ne pas être d'accord sur tous les points, mais il y a beaucoup de possibilités ici. +1
effeffe

3

Vous dites simplement "j'aide les gars qui enseignent l'informatique au travail"

L'idée est que les programmeurs apprennent à l'ordinateur à utiliser des programmes et que vous les aidez. Je pense que cela fonctionnera en supposant qu'ils en savent déjà un peu sur les ordinateurs.


"Je pense que cela fonctionnera en supposant qu'ils connaissent déjà un peu les ordinateurs", voilà le problème: si vous lisez attentivement ma réponse, vous verrez que le principal problème est d'expliquer ce que je fais à ceux qui n'ont aucune idée du fonctionnement réel de l'ordinateur. .
Effeffe

@ Effeffe: mais ils sont conscients qu'il existe des ordinateurs? Et ils ont probablement une idée qu'il y a des choses appelées "programmes", "applications" ou "applications", même s'ils n'ont jamais utilisé sciemment un ordinateur eux-mêmes. Ainsi, par souci de simplicité, la programmation consiste (entre autres) à créer une application en écrivant des instructions que l’ordinateur peut suivre. Naturellement, il leur faudrait beaucoup de temps et d’instructions pour apprécier tous les détails de la programmation ou de la manière de l’améliorer, mais s’ils savent que les ordinateurs et les programmes s’améliorent avec le temps, ils en savent au moins un peu plus sur les ordinateurs.
Steve Jessop

3

Si vous ne voulez pas utiliser de comparaisons, bien que je pense que "l'algorithme" que Lieuwe a évoqué est très agréable à transmettre l'idée, vous pourriez dire que vous voulez réduire les malentendus entre les humains et les ordinateurs. Après tout, vous avez affaire à des langues et c’est quelque chose de très fondamental pour les humains, je suppose. Alors pourquoi ne pas prétendre que l'ordinateur n'est qu'un autre esprit auquel vous voulez parler?

Les humains ont créé des ordinateurs, nous savons donc comment fonctionne leur esprit. Mais l'ordinateur ne sait généralement pas comment fonctionne notre esprit. (Ou ce que notre intention réelle était quand nous écrivons un bogue complexe et finement conçu qui vit heureusement dans les ronces de notre code pendant de nombreux cycles;)) Ainsi, il nous appartient de raffiner le langage que nous utilisons pour communiquer avec eux, et réduire les risques de malentendus. Et c'est ce que tu fais. Des analogies telles que la vérification orthographique ou la grammaire sont évidemment les bienvenues dans ce contexte.


3

Voici deux analogies que vous pourriez trouver utiles:

  • Mon travail est un peu comme explorer de nouvelles approches de la notation musicale. ( exemple ) Bien que les systèmes de notation prédominants soient assez sophistiqués, il est utile d’explorer des solutions de rechange qui réduisent le temps / les efforts / les erreurs pour le compositeur, pour l’interprète ou permettent aux choses qui sont maladroites ou impossibles à exprimer dans le système prédominant, ou même simplement promouvoir différents types de pensée et conduire ainsi à de nouvelles compositions. (Il est donc facile de comprendre que l’un des défis consiste à convaincre les gens d’adopter les nouveaux éléments.)

  • J'aide à concevoir de meilleurs outils pour les personnes de mon secteur. Tout comme les industries manufacturières sont aidées par des innovations telles que les perceuses sans fil, les découpeuses au laser et les imprimantes 3D (qui n'existaient pas il y a 60 ans), les personnes travaillant dans l'industrie du développement logiciel bénéficient de technologies plus puissantes, plus précises, plus robustes ou plus performantes. langages de programmation plus faciles à utiliser et leurs fonctionnalités.


2

Eh bien, très probablement, vous avez une raison pour étudier les langues - utilisez cette raison. Par exemple:

J'essaie de rendre les ordinateurs et leurs applications moins chers, plus faciles à utiliser et plus sûrs.

Si c'est quelque chose qui attire leur attention, n'hésitez pas à aller un peu plus loin, mais n'oubliez pas de distance inférentielle - la plupart des gens ont énormément de difficulté à expliquer quelque chose qui est trop éloigné de l'expérience et des connaissances de l'élève.

Les langues sont au bas de l'échelle informatique. Les personnes à qui vous essayez d'expliquer ne savent probablement pas ce qu'est un algorithme , encore moins qu'il existe différentes manières de représenter ledit algorithme qui sont plus ou moins utiles. Vous pouvez tout expliquer si vous y allez assez doucement, mais préparez-vous à passer par plusieurs couches si vous voulez expliquer quelque chose d'aussi "profond" que de "langage de programmation RnD". Cela aide si les personnes que vous expliquez maîtrisent déjà bien les mathématiques, mais c'est aussi rare que des connaissances en informatique :)

Allez-y doucement sur les analogies. On dirait qu'ils aident, mais d'après mon expérience, ils ajoutent généralement à la confusion, même si vous pensez qu'ils sont d'une grande aide. Les langages de programmation sont un peu comme les juristes parlent ... mais ce n'est pas très utile pour les personnes qui ne comprennent pas déjà la programmation et les avocats, vraiment. Si vous avez vraiment besoin d'aide supplémentaire, les exemples fonctionnent assez bien - mais vous devez les adapter à la personne à qui vous expliquez (et sur quoi vous cherchez exactement)

Vous savez comment vous ne pouvez pas diviser par zéro? J'essaie de faire en sorte que les ordinateurs n'essayent même jamais de diviser par zéro, pour ne pas tomber en panne lorsque quelqu'un commet une erreur.


▲ pour suggérer une approche progressive et douce.
PJTraill

1

Je trouve que les meilleures analogies sont adaptées à la personne à qui vous parlez. Sont-ils un peintre? Expliquez que ce que vous faites équivaut à explorer la théorie de la fabrication de meilleurs pinceaux. Ce domaine n’a que 60 ans au lieu de 600! Les cavaliers? Comparez-le au développement de souliers spécifiques aux tâches au fil des ans.

S'ils veulent vraiment mieux comprendre, ma façon préférée de l'expliquer consiste à parler de la façon de remplir des formulaires d'impôt et des instructions sur chaque ligne. Je trouve que la plupart des personnes de plus de 20 ans ont déjà utilisé le formulaire IRS 1040 et que les cases que vous remplissez correspondent bien à une assignation de variables. Ensuite, je signale que le logiciel en fait l'équivalent d'environ 2 milliards par minute (un chiffre composé, mais il fait passer le message). Si vous étudiez les langages informatiques, il est facile pour les gens de comprendre pourquoi de meilleures instructions seraient réellement importantes =)

S'ils semblent toujours intéressés, c'est à peu près au point où je commence à essayer d'expliquer le contrôle de flux. Habituellement, lorsque je finis de parler du contrôle de flux relatif au formulaire 1040, ils commencent à être très excités et commencent à demander si j'ai déjà vendu certaines de mes idées au gouvernement!

Je parle souvent de systèmes embarqués, alors parfois, je fusionne l'analogie de la formule 1040 avec un robot qui cuit un pain (ou 500). Habituellement, cela fonctionne bien, bien que pour une raison quelconque, allant des formulaires fiscaux de l’IRS à la création de quelque chose qui laisse un goût agréable dans la bouche, ce soit un exercice vraiment difficile pour certaines personnes.


1

Tes parents ont une sorte d'ordinateur. Probablement pas un, mais plusieurs. Ils peuvent avoir un ordinateur de bureau ou un ordinateur portable, un téléphone ou un iPad. Sinon, ils ont une machine à laver, un enregistrement vidéo, un lecteur de DVD ou quelque chose avec un ordinateur à l'intérieur.

Sinon, vous dites: "Désolé, mais vous avez réussi à mener une vie complètement sans ordinateur. Je ne peux donc pas vous expliquer ce que je fais. Mais le monde change. Vous avez juste besoin de me croire Je sais ce que je fais. "

S'ils ont un type d'ordinateur, vous dites: "Ceci est un ordinateur, et cela ne fonctionne pas simplement par magie. Cela fonctionne parce qu'un homme ou une femme intelligent a écrit un programme qui indique à votre ordinateur comment travailler. Et le travail de ces hommes et ces femmes intelligents sont très durs et ce que je fais, c'est les aider à rendre le travail plus facile ".


-1

Il y a quelque temps, j'ai décidé qu'une bonne analogie pour une programmation facile à comprendre pour les personnes peu ou pas expérimentées en informatique consisterait à écrire des recettes à tricoter .

Une bonne recette de tricotage contient plusieurs tailles dans la même liste d'instructions, qui vous donnent des boucles et des instructions if. Il est illisible pour ceux qui ne tricotent pas et, s’il contient des erreurs, vous vous retrouvez avec des motifs mal alignés ou une manche supplémentaire. En tant qu’écrivain de recettes, c’est ensuite à vous de déterminer où la recette a été erronée en vous basant sur les chandails incorrects et de le réparer.

Vous pouvez ensuite utiliser l'exemple de "Je regarde en quoi les recettes sont différentes pour le tricot, le crochet, le Nålebinding et autres" et pour apprendre à utiliser X (où vous devez trouver une analogie pour ce que vous faites réellement ).


Le demandeur n’étudie pas la programmation. Ils étudient la conception des langages de programmation.
David Richerby

@DavidRicherby C'est pourquoi j'ai suggéré d'utiliser l'exemple de OP en regardant comment les recettes se ressemblent pour différents types de travaux manuels. Apparemment, ils sont très différents aussi.
Thorbjørn Ravn Andersen

-1

C'est magique!

Quand des personnes sans formation technique me demandent ce que cela signifie d’écrire des logiciels / programmes / faire de l’ingénierie logicielle, je leur dis simplement ce que c’est vraiment: de la magie. Les magiciens incarnent des sorts dans une langue ésotérique pour effectuer certaines tâches, ils agitent leur baguette et quelque chose de magique se produit. J'introduis certains sorts dans une langue ésotérique, je bouge la souris et il se passe quelque chose de magique (en ce qui les concerne).

S'ils ne sont pas convaincus, je leur ai demandé d'allumer leur téléphone intelligent et de me dire comment ça marche vraiment. Ils disent habituellement: "Je ne sais pas, c'est le cas. J'appuie sur des boutons et tout se passe." Puis je leur dis: "Oui, exactement, mais je sais ce qui se passe réellement, et c'est fondamentalement la même chose qu'Harry Potter agitant sa baguette et disant:" Hocus pocus "" Pour toutes fins utiles, au profane, je pense que c'est une explication parfaitement légitime.

Presque tout le monde sait qui est Harry Potter, ce qu'il fait et ce qui le rend spécial (au moins, il est magicien et peut faire des choses puissantes avec la magie). Vous pouvez simplement expliquer que parfois les magiciens doivent écrire leurs sorts dans une nouvelle langue pour rendre leur magie encore plus puissante, ce qui n’est pas si éloigné de la vérité. Vous pouvez simplement leur dire que vous étudiez le processus de création de cahiers plus puissants pour aider une génération encore plus puissante d'assistants capables de créer encore plus de magie sur leurs appareils grand public préférés. Tout le monde apprécie ça.

Epic Fail

Si cela échoue, je reviens à l'exemple de recette, car la non-uniformité des solutions enseigne au moins qu'il existe plus d'une façon de peauner un chat (ou de faire un gâteau), et cela fait partie de la programmation. rusé. Cela permet également de placer la personne dans la position de processeur et de suivre parfois des instructions qu’elle ne comprend peut-être pas (la plupart des gens ne connaissent probablement pas la différence entre le bicarbonate de soude et la levure chimique, et pourquoi une recette aurait l’une ou l’autre).

Impasses

Je n'aime pas utiliser les mathématiques comme exemple, car pour faire des mathématiques, il faut comprendre à quoi servent les étapes. Vous ne pouvez pas faire beaucoup de maths en suivant aveuglément les instructions (bon, vous pouvez, mais ce n'est pas comme ça que les humains l'apprennent, généralement). Je n'aime pas le tri comme exemple car il est trop technique pour que le non-initié l'apprécie. Si je parle à quelqu'un qui peut apprécier l'exemple de tri, il a probablement déjà une idée de la programmation et l'a probablement essayé lui-même.


1
Je ne vois pas ce que cela a à voir avec la question. Plus précisément, la question est de savoir comment expliquer la théorie des types aux non-spécialistes, et la théorie des types est mathématique.
David Richerby

Malheureusement, peut-être pas, la programmation est un livre fermé pour plus de 99% de la population mondiale. Au fil des ans, j'ai passé pas mal de temps à essayer de faire comprendre la programmation à des non-programmeurs, sans succès. Expliquer les subtilités et les délicatesses de divers systèmes de types revient à expliquer la physique des particules subatomiques à ces mêmes personnes - leurs yeux se rempliront de glace et ils seront probablement polis mais ils ne comprendront pas. Et ce n'est pas grave - ils n'ont PAS BESOIN de le comprendre et, vraisemblablement, ils ne se soucient pas de ne pas le comprendre. C'est assez ce que nous faisons. :-)
Bob Jarvis
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.