74 votes

Qu'est-ce qu'un bon exemple à montrer à un non-programmeur pour lui expliquer à quoi ressemble la programmation?

Un de mes amis m'a demandé l'autre jour si je suis juste à la recherche à des listes de numéros, quand je suis à la programmation, ou comment il fonctionne. J'ai essayé d'expliquer qu'il est généralement plus que les mathématiques formules, avec l'étrange mot anglais jeté, et que c'est généralement surtout lisible. Mais c'est une très vague explication, et il n'a pas vraiment d'expliquer à un non-programmeur.

Mais ça m'a fait penser à ce que ferait un bon exemple. Pas parce que je veux lui apprendre la programmation ou quoi que ce soit, mais simplement de lui donner une idée de ce que le code de programme "ressemble".

Et qui m'a amené à s'interroger sur ce qui fonctionne réellement comme un bon exemple. Et c'est en train d'être étonnamment difficile.

Ma première pensée a été de toute évidence un simple "Hello World" du programme. Mais il n'a vraiment pas de montrer quelque chose d'utile. Il n'a pas vraiment montrer comment nous les utilisons des fonctions ou des variables, ou le contrôle de flux de structures comme if ou while de faire un programme qui fait quelque chose. Il n'y a pas de logique. Le programme ne semble pas réagir à quoi que ce soit.

Donc peut-être quelque chose comme le calcul de nombres premiers serait un meilleur exemple. Mais là encore, c'est peut-être trop théorique et peu pratique... (à Quoi bon? Que faut-il avoir à faire avec l'écriture de "vrais" programmes?) Et encore une fois, il n'y a pas de contrôle important logique de flux. C'est une grosse séquence de mathématiques.

Et aussi, quelle langue doit-elle être utilisée?

Idéalement, je ne pense pas que c'est très "propre" de la langue. Mais plutôt, il devrait probablement faire une structure claire. Si il le fait, puis une certaine quantité de bruit et de désordre peut-être bien. Peut-être quelque chose comme C++ serait un meilleur exemple que le Python pour cette raison. Explicite des accolades et des spécificateurs de type sont évidentes "crochets" pour aider à expliquer comment le programme est structuré, ou pour mettre en évidence qu'il n'est pas juste de simples déclarations qui peut presque être lue comme l'anglais.

Mais avec le C++ nous avons aussi dans certains carrément bizarre de la syntaxe. Pourquoi est - std::cout << x utilisé pour imprimer x? Pourquoi pas une fonction "normale" la syntaxe d'appel? Et printf n'est pas beaucoup mieux, avec ses arcanes chaîne de format, et le manque d'extensibilité (je ne veux compliquer le programme en utilisant char* pour les chaînes? Ou dois-je utiliser std::string et contenter d'appeler apparemment inutiles s.c_str() pour obtenir une chaîne de caractères qui peuvent être imprimés avec printf?

Peut-être un langage de plus haut niveau serait mieux, après tout. Mais lequel? Et pourquoi?

Je sais qu'il ya beaucoup de questions similaires ici à propos de la langue/exemple de programme à utiliser pour enseigner la programmation. Mais je pense que les conditions ici sont différents. Lors de l'enseignement de la programmation, nous voulons simplicité plus que tout. Nous voulons éviter tout ce qui n'a pas été enseigné encore. Nous voulons faire en sorte que l'étudiant peut comprendre tout sur l'écran.

Je ne suis pas intéressé dans la simplicité en soi. Mais plutôt dans le fait de donner un "outsider", une idée de "ce qu'est un programme qui ressemble à des". Et les programmes ne sont pas simples. Mais ils ne présentent généralement une certaine structure et une méthode à la folie. Quel langage/programme permettrait de mieux mettre en évidence?

Modifier
Merci pour toutes les suggestions à ce jour. Certains d'entre vous ont eu un peu différent de l'angle que j'avais prévu.

Peut-être un exemple en est, dans l'ordre. Je ne peux pas voler un avion, mais j'ai une compréhension de base de ce que le cockpit ressemble, et ce qu'un pilote "ne" alors qu'il volait.

Et je ne suis pas une formation de charpentier, mais je sais une scie, un marteau quand j'en vois un.

Mais quand vous voyez quelque chose à voir avec de la programmation dans les films, par exemple, il est généralement juste des écrans remplis d'ordures (comme dans le texte en vert dans le tableau). Il ne ressemble pas à quelque chose d'un être humain normal peut réellement faire. Il n'y a rien de reconnaissable. Quelqu'un qui n'est pas un programmeur simplement pense que c'est de la magie noire.

Je ne veux pas lui apprendre à voler, ou à un logiciel. Mais j'aimerais lui donner un cadre de référence de base. Juste une idée des "ah, c'est ce que vous travaillez avec. Il n'est donc pas un simple hasard des symboles et des chiffres sur l'écran". Même il suffit de montrer un simple if-déclaration serait une révélation par rapport à la Matrice de style aléatoire des symboles et des chiffres.

Certains d'entre vous ont suggéré d'expliquer un algorithme, ou à l'aide de pseudo-code, mais c'est ce que je veux éviter. J'aimerais quelque chose qui montre tout simplement ce que réelle à quoi ressemble le code, de la même manière que vous n'avez pas à être un charpentier à regarder d'une scie et d'obtenir une idée de base de ce qu'il est et comment il fonctionne.

Quand j'étais gamin, nous suis allé une fois en vacances en Italie. Sur le chemin vers le bas, le pilote, laissez-moi dans le cockpit de l'avion. Bien sûr, je n'ai pas appris à voler l'avion. Mais j'ai eu un coup d'oeil dans le pilote du monde. J'ai une idée de comment ils font de l'avion, ce que le pilote ne fait.

C'est vraiment tout ce que je veux faire. Mon ami n'a aucun intérêt dans l'apprentissage de la programmation, et je ne veux pas la forcer à comprendre un code source. Mais elle était curieuse à propos de ce genre d'outils ou d'entités qui travaillent avec moi. C'est la Matrice de style symboles de défilement sur l'écran? Mathématiques pures? L'anglais en prose de la forme?

Tout ce que je suis intéressé dans la transmission de l'est que de très haut niveau en compréhension de "a Quoi ça ressemble quand je travaille".

51voto

Nick Dandoulakis Points 26809

De BASE

10 PRINT "Sara is the best"
20 GOTO 10

Mise à jour: quand j'avais 12 ans, mon cousin (il a 14 ans) a introduit, en Turbo Pascal 7.0 et installé dans mon ordinateur.
Il a programmé un jeu de tic tac toe à partir de zéro (BGI mode, pour ceux qui connaissent).
J'ai regardé et observé étape par étape comment un programme évolue jusqu'à ce qu'il devient d'une demande complète.
Jusqu'alors, je ne savais pas comment faire pour imprimer des chaînes de caractères dans la BASE: B

Vous pouvez faire une chose semblable. La programmation en binôme. Bien, en fait, votre ami sera un observateur, mais elle va vous faire une idée ;)

42voto

Amadiere Points 5606

Pourquoi ne pas envisager une langue qui n'existe pas (ou n', si vous le croyez) et l'utilisation de Pseudo-Code? Je pense, en fonction de ce que vous voulez réaliser - je voudrais examiner l'exemple de la tâche familier à la personne, mais découpé en un pseudo-code d'exemple.

En général, je trouve l'idée de la "cuisine" ou des "recettes" pour être un grand ajustement pour expliquer des choses à des non-programmeurs.

Je demande à la personne d'imaginer qu'ils avaient une recette qui était assez complexe - par exemple, un curry & plat de riz. Je puis dire qu'ils devraient essayer de l'écrire pour quelqu'un qui n'a absolument aucune idée de ce qu'ils font, afin qu'ils puissent le faire cuire.

Il y a très clairement quelques étapes:

  • Rassembler les ingrédients et outils de travail.
  • Préparer les ingrédients. C'est complexe. par exemple
    • obtenez 3 Petits Poivrons Rouges.
    • pour chaque poivron rouge que vous avez, le couper en morceaux d'environ 1cm carré.
    • placez le poivron rouge morceaux dans un bol pour plus tard.
  • Séparément pour cela, appelez le préparer le riz de la fonction et avoir ce travail de manière asynchrone en arrière-plan pendant que vous continuez la cuisson.

Je suis sûr que vous pouvez voir où cela va... ;)

Il y a beaucoup de similitudes avec la Cuisine et de Programmation (comme il y a beaucoup de choses, mais plus de gens ont une compréhension de la cuisine que de la construction d'une maison). Il y a des étapes / similitudes (comme je le vois) sont:

  • Rassemblement: (déclaration de ce qui est nécessaire pour atteindre le but et les réunir).
  • Préparation: Hacher les ingrédients et la préparation de la connexion de données des objets etc pour la première utilisation.
  • Asynchrone: La possibilité d'avoir une chose qui se passe tout autre chose.
  • Fonctions: Le riz faire, la cuisine de poulet et le curry de cuisson nécessitent tous des processus distincts et seulement à la fin que vous pouvez avoir la makeCurry(chickenMeat, riz) de la fonction.
  • Test: Veiller à ce que, comme vous allez le long, vous ne vous manque pas les bits et que tout se passe pour le mieux - par exemple, assurer que le poulet est cuit avant de passer à l'étape suivante.
  • Déchets: une Fois que vous avez fait, vous devez vous assurer que vous mettre de l'ordre. ;)
  • Les directeurs de bonnes Pratiques: Il existe des moyens efficaces de faire les choses, comme la cuisine, les programmeurs débutants doivent apprendre en plus du code, il peut être parfois difficile à obtenir autour de votre tête. par exemple, D. R. Y, comment couper efficacement avec un couteau et ne pas manger du poulet cru ;)

Fondamentalement, je pense que pour l'enseignement de la programmation comme un sujet d'ordre général - je n'aurais pas forcément enseigner dans une langue , à moins d'avoir une raison impérieuse de le faire. Au lieu de cela, enseigner d'abord à partir de l'abstrait jusqu'à ce qu'ils comprennent au moins les principes fondamentaux de la façon dont les choses pourraient tomber ensemble. Ensuite, ils peuvent trouver plus facile quand assis devant un clavier et un moniteur.

Je pense qu'il y a peut-être pas un "droit de réponse" pour celui-ci. Mais je pense que peut-être quelques bonnes idées, vous pourriez peut-être prendre des bits de tous.

36voto

jbochi Points 12280

Je voudrais expliquer que la programmation donne des instructions détaillées afin que l'ordinateur puisse effectuer des tâches complexes.

Comment faire deux tasses de café?

  1. Remplir la bouilloire
  2. Faire bouillir l'eau

  3. Café dans une tasse

  4. Verser sur l'eau
  5. Ajoutez du sucre
  6. Ajouter du lait

  7. Faites encore 3 à 6

26voto

Stephen C Points 255558

Un codeur junior au travail

Ça ressemble un peu à ça. Parfois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X