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