J'ai lu ici sur P.SE plus de questions dans lesquelles les programmeurs débutants sont invités à choisir Python comme premier langage de programmation.
Ne vous méprenez pas, j'aime Python. Je l'aime beaucoup! Mais sa philosophie tourne autour de "Nous sommes tous des adultes consentants ici".
D'un point de vue expérience / connaissance, un programmeur débutant n'est pas un adulte. Ce qui signifie alors qu'il est plus facile de se tirer une balle dans le pied et de reprendre de mauvaises habitudes même si vous survivez à la blessure.
Je pense que dans un langage "plus statique" il serait plus difficile de se tirer une balle dans le pied car ce sera plus contraignant.
Revenons à ma question. Pourquoi Python est-il recommandé comme langage de programmation d'entrée de gamme?
Quels sont les points qui le rendent bon pour l'enseignement d'un langage de programmation. Ou ... est-ce la préférence personnelle du conseiller?
I'm thinking that in a "more static" language it would be harder to shoot yourself in the foot
- eh bien, le C et le C ++ sont typés statiquement et vous seriez très, très mal surpris de voir combien de façons différentes vous pouvez souffler votre pied en les utilisant ...Réponses:
IMO, les points les plus importants qui parlent de Python en tant que langage d'entrée de gamme sont les suivants:
la source
Le monde bonjour en python:
bonjour le monde à Java:
bonjour le monde en C:
Ajoutez à cela la nécessité de parler de compilation pour les deux autres, et python est beaucoup plus simple. Je n'ai qu'à parler de la seule idée qui m'intéresse, toutes les machines qui compliquent le problème disparaissent simplement en python. Je peux attendre qu'ils soient prêts à parler des modules, pas besoin de se précipiter pour obtenir stdio.h pour des programmes simples. Je peux attendre qu'ils soient prêts pour des sujets comme les cours, pas besoin de les précipiter pour leurs premiers programmes. Il a un REPL pour tromper sur la ligne de commande. Python est très bon pour être conceptuellement minimal. C'est une bonne chose car cela aide les débutants à se concentrer sur la tâche à accomplir.
la source
C'est un point de vue inhabituel.
La chose des adultes consentants n'est qu'une très petite partie de la philosophie de Python. Cela ne tourne certainement pas autour de cela. Cela ne fait même pas partie du "Zen of Python" que vous obtenez si vous le faites
import this
dans l'interpréteur.D'autres choses, comme "explicite vaut mieux qu'implicite", "simple vaut mieux que complexe" et "les chiffres de lisibilité" sont beaucoup plus centrales à Python et montrent pourquoi Python est une bonne première langue.
Quoi qu'il en soit, les «adultes consentants» ne concernent vraiment que le manque d'objets privés en Python. Ce qui en soi est, à mon avis, une autre indication de pourquoi c'est bon pour les débutants: vous n'avez pas besoin de vous soucier de choses comme les interfaces lorsque vous débutez.
la source
private
champspublic
en hack around? BTW, en Python, vous pouvez préfixer la propriété avec un trait de soulignement pour la rendre privée (mais pas vraiment cachée)Il y a deux points différents. Lorsque vous élevez un enfant, devez-vous le placer dans une bulle qui ne contient que des objets sûrs ou le laisser jouer dans la cour où il risque de trébucher et de tomber?
Être à l'intérieur de la bulle est très restrictif. Vous devez écrire votre code d'une manière très spécifique pour qu'il s'exécute. Lorsque les gens commencent, tout ce qui n'est pas là pour faire ce que la personne veut est considéré comme du gaspillage. Cela peut également conduire à "Je ne sais pas pourquoi cela existe, mais quelqu'un m'a dit que c'était nécessaire."
En Python, cela n'existe pas. Si vous voulez dire "Hello World", vous venez de
print "Hello World"
. L'utilisation de Python comme point d'entrée permet à quelqu'un de démarrer et d'écrire simplement le code dont il a besoin pour que ce qu'il souhaite se produise. Un programmeur débutant ne peut pas comprendre la valeur de l'encapsulation avant d'avoir compris les bases de la programmation.De plus, dans les petits programmes, la sécurité des types n'est pas un gros problème. Tout code écrit par un développeur débutant sera petit et contenu. Ce n'est que lorsque vous avez une base de code plus grande, avec de nombreuses sections que vous utilisez comme couches d'abstraction et auxquelles vous ne pensez pas activement, que la sécurité des types montre qu'il est avantageux de vous assurer de faire ce dont vous avez besoin. Lorsque tout le code est dans le même fichier, il est plus facile de simplement regarder la fonction et de voir ce que vous avez fait de mal.
Autres bénéfices:
la source
Python est un excellent langage pour les débutants car il rend les choses simples simples tout en rendant suffisamment de choses compliquées possibles pour qu'il ne soit pas considéré comme un langage de jouet inutile et même les programmeurs avancés trouvent que c'est le bon outil pour certains travaux. Plus précisément, les choses simples comprennent:
Un minimum absolu de code passe-partout pour les programmes simples.
Collecte des ordures.
Saisie dynamique.
Syntaxe propre et simple.
Comparez cela par exemple à Java ou C ++ et à la difficulté d'expliquer tous les concepts impliqués dans un programme "Hello, world". Les choses compliquées comprennent:
Introspection (l'équivalent de Python à la réflexion).
Patch de singe.
Les choses qui peuvent être faites avec l'immense bibliothèque standard.
Cela dit, personne qui ne connaît que Python est un bon programmeur parce que personne qui ne connaît qu'une seule langue ou un seul style de langage est un bon programmeur. Toute personne sérieuse à propos de la programmation devrait éventuellement apprendre quelque chose de niveau inférieur, mais pas tant qu'il / elle essaie toujours de contrôler le contrôle de flux, la récursivité et d'autres bases.
la source
Je considère Python comme un bon choix. Généralement, pour une programmation de niveau "entrée", vous voulez quelque chose de simple mais productif. Recevoir des retours rapides soutient à la fois la motivation et la vitesse d'apprentissage. J'ose dire qu'il ne s'agit pas d'apprendre la «bonne façon» mais plutôt de «devenir accro et de tomber amoureux de la programmation pour la vie». Le reste arrivera bien plus tard par l'expérience, l'enseignement secondaire, peu importe.
la source
À mon humble avis, apprendre aux gens à coder dans des langues "sûres" est une très mauvaise idée. Les gens supposent que tout est facile et ne pensent qu'à ajouter des couches et des couches de code. Et perdre toute chance de pouvoir déboguer / résoudre les problèmes lorsqu'ils surviennent.
Les bons programmeurs doivent absolument connaître le C / C ++ ou même l'assemblage. Et leur état d'esprit doit également venir de ce côté. Et pas - "Oh, GC, ça fait Magic (tm), nous sommes cool, et pourquoi C ++ n'a pas GC, c'est stupide." attitude.
la source
Pour un programmeur débutant, le manque de types statiques est une fonctionnalité, pas un bug!
Lorsque vous apprenez à programmer, même les choses les plus évidentes peuvent être difficiles à comprendre. Les systèmes de type dynamique sont très simples et échappent aux sujets les plus urgents dans un cours d'introduction, comme la modularisation, le flux de contrôle, etc.
Le typage dynamique présente également certains avantages conceptuels:
Les types sont associés à des valeurs, pas à des variables. C'est sans doute plus intuitif car cela reflète la raison pour laquelle les programmes se bloquent.
Les messages d'erreur sont beaucoup plus immédiats et concrets. En Python, vous obtenez une belle trace de pile et un message indiquant ce qui s'est réellement passé. Dans un langage de type statique, vous obtenez un avertissement du compilateur indiquant ce qui ne va pas.
Les étudiants travaillant avec un compilateur ne peuvent travailler que sur des programmes qu'ils comprennent parfaitement, de peur qu'ils ne soient confrontés à une erreur de compilation qu'ils ne peuvent pas résoudre.
La vérification des erreurs d'exécution vous permet d'exécuter des programmes incomplets. Cela permet des programmes plus progressifs où l'étudiant peut d'abord s'inquiéter de faire le début du programme correct et ensuite seulement voir ce qui se passe.
Certains concepts importants, comme le polymorphisme paramétrique et le typage canard, sont gratuits dans un langage dynamique mais nécessitent des systèmes de types plus complexes dans un langage statique.
Enfin, bien que vous ayez encore à gérer la même complexité, vous n'obtenez pas tous les avantages de la frappe statique lorsque vous commencez à programmer:
Les programmes débutants sont petits et n'ont pas beaucoup de chemins de code (vous n'avez donc pas à vous soucier autant des bogues de type dans les bits de code rarement consultés)
Les programmes pour débutants n'utilisent pas autant d'interfaces et de fonctions de haut niveau, il n'y a donc pas grand-chose à gagner dans le département "utiliser le système de type pour concevoir le programme".
la source
Il y a une chose très, très , très importante à propos de Python pour les programmeurs débutants que tout le monde semble avoir ignoré: Forcer une indentation valide.
Comme certains des autres commentateurs, j'ai enseigné aux débutants pendant quelques années. Il était anormalement courant de voir des trucs comme ça:
Imaginez maintenant cette horrible incohérence sur une centaine de lignes de code. Pour certains étudiants, l'intégralité de tous leurs projets ressemblait à ceci.
Je ne sais pas comment ils ont réussi à le faire, et cela ne les a jamais dérangés. Chaque fois que je demandais, leur réponse était quelque chose comme "Eh bien, cela n'a pas d'importance parce que le compilateur le comprendra." Même lorsque je leur montre un bug évident en corrigeant l'indentation, ils n'ont toujours aucun indice.
En Python, ce type d'indentation est tout simplement invalide. Ils sont obligés d'utiliser quelque chose qui est au moins lisible, même si c'est un peu incohérent. Cela leur donne une habitude qui, espérons-le, continuera quand ils finiront par apprendre une autre langue.
la source
Python est une excellente première langue pour la plupart des raisons indiquées ci-dessus. En particulier, une exigence d'une première langue est une courbe d'apprentissage douce, que Python a. Vous n'avez pas besoin de tout savoir sur les classes, par exemple, pour commencer. À cet égard, c'est un peu comme le Basic que beaucoup d'entre nous ont commencé.
Une chose qui n'a pas été soulignée jusqu'à présent est que de nombreuses langues ont une courbe d'apprentissage douce, mais se heurtent rapidement à un mur de briques lorsque vous essayez de faire des choses plus avancées. Old-school Basic en est un bon exemple. Avec Python, vous pouvez entrer dans des choses très avancées avant de penser qu'un autre langage pourrait être un meilleur choix.
À ce moment-là, un débutant est capable de mieux comprendre les choix et les compromis, et est prêt pour C / C ++, Java, Assembler, Prolog, Lisp, etc. !
la source
Le problème clé avec Python comme première langue est le typage dynamique et le manque de déclaration de variable. À mon humble avis, ils sont le seul problème majeur avec la langue.
Le simple ajout d'une ligne disant que je ne vais stocker qu'une chaîne dans la variable foo permet au programmeur, à l'environnement de développement, au langage (et pour le "code professionnel" le pauvre fou qui doit venir à froid et le supporter par la suite) pour travailler ensemble. Pour les développeurs et les débutants normaux en particulier, il n'est pas logique d'utiliser une variable pour plus d'un type. Il est tout à fait correct dans les rares occasions où il est logique d'utiliser un type var / object explicite qui permet un typage dynamique.
la source