web-dev-qa-db-fra.com

Pourquoi =Python recommandé comme langage de programmation de niveau d'entrée?

J'ai lu ici sur P.se plus de questions dans lesquelles les programmeurs de débutants sont conseillés de choisir Python comme premier langage de programmation.

Ne me trompe pas, j'aime Python. Je l'aime beaucoup! Mais sa philosophie tourne autour de "nous sommes tous consentants adultes ici".

D'une expérience/point de vue de la connaissance, un programmeur débutant n'est pas un adulte. Ce qui signifie alors qu'il est plus facile de vous tirer dans le pied et de ramasser de mauvaises habitudes même si vous survivez à la plaie.

Je pense que dans une langue "plus statique", il serait plus difficile de te tirer au pied car il sera plus restrictif.

Retour à ma question. Pourquoi =Python recommandé comme langage de programmation de niveau d'entrée?

Quels sont les points qui rendent bon pour enseigner un langage de programmation. Ou ... est-ce la préférence personnelle du conseiller?

16
JohnDoDo

IMO, les points les plus importants qui parlent Python comme langue d'entrée d'entrée sont-ils:

  • il a une courbe d'apprentissage peu profond - ne va de rien à "Hello World" est beaucoup plus rapide que dans la plupart des autres langues
  • c'est intuitif - La syntaxe a été conçue pour suivre le principe du moindre surprise et il est globalement très cohérent (malheureusement, les bibliothèques standard ne suivent pas toujours cette cohérence)
  • il faut très peu de chariot: un "World Hello" typique est une ligne de code et des programmes simples peuvent être écrits sans aucun bruit de fond supplémentaire qui doit être expliqué (tel que des mots-clés de déclaration de fonction, des relevés d'importation , constructions de classe, directives de préprocesseur, etc.)
  • il existe un excellent, simple outils Pour travailler avec python Code, en particulier l'interprète interactif; vous n'avez pas besoin d'apprendre un système de construction, IDE, Editeur de texte spécial, ou quoi que ce soit d'autre pour commencer à utiliser python - une invite de commande, l'éditeur interactif et un simple éditeur de texte, vous avez tout ce dont vous avez besoin
  • il utilise typing dynamique, mais contrairement à de nombreuses autres langues typées de manière dynamique, les types sont transparents et les pièges liés au type sont rares
30
tdammers

Le monde Hello dans Python:

 print "Hi there"

bonjour World en Java:

 class HelloWorldApp {
  public static void main(String[] args) {
    System.out.println("Hello World!"); // Display the string.
    }
  }

bonjour monde en c:

  #include<stdio.h>
  int main(int argc, char** argv)
  {
    printf("Hello World");
   }

Lancer en devoir parler de compilation des deux autres, et python est beaucoup plus simple. Je n'ai qu'à parler de la seule idée que je suis intéressé à regarder, toutes les machines qui compliquent la la matière disparaît juste en python. Je peux attendre qu'ils soient prêts à parler de modules, pas besoin de le précipiter pour obtenir STDIO.H pour des programmes simples. Je peux attendre qu'ils soient prêts pour des sujets comme des classes non besoin de les précipiter pour leur premiers programmes. Il a un REPL pour vous tromper à la ligne de commande. Python est très bon à être conceptuellement minimal. C'est une bonne chose parce qu'elle aide Les débutants se concentrent sur la tâche à la main.

8
stonemetal

C'est un point de vue inhabituel.

La chose adulte consentante est une très petite partie de la philosophie de Python. Cela ne "tourne certainement pas" autour de cela. Ce n'est même pas une partie du "zen de python" que vous obtenez si vous le faites import this dans l'interprète.

D'autres choses, comme "explicite vaut mieux que implicite", "simple vaut mieux que complexe", et "compte de lisibilité" sont beaucoup plus centraux pour python et montrer pourquoi Python est un bon premier Langue.

Quoi qu'il en soit, les "adultes consentants" ne sont vraiment que du manque d'objets privés dans Python. Ce qui lui-même est, à mon avis, une autre indication de la raison pour laquelle il est bon pour les débutants: vous n'avez pas besoin de vous inquiéter des choses comme des interfaces lorsque vous commencez simplement.

7
Daniel Roseman

Il y a deux quelques points différents. Lors de la levée d'un enfant, devriez-vous les mettre dans une bulle qui ne présente que des choses en sécurité ou les laisser jouer dans la cour où ils pourraient trébucher et tomber?

Être à l'intérieur de la bulle est très restrictif. Vous devez écrire votre code de manière très spécifique pour pouvoir courir. Quand les gens commencent par commencer, tout ce qui n'est pas là pour faire ce que la personne veut être considérée comme un gaspillage. Cela peut également conduire à "Je ne sais pas pourquoi c'est là, mais quelqu'un m'a dit que c'est nécessaire."

En python, cela n'existe pas. Si vous voulez dire "Hello World", vous venez de print "Hello World". En utilisant Python comme point d'entrée permet à une personne de toucher le sol et d'écrire le code dont ils ont besoin pour faire ce qu'ils veulent se produire. Un premier programmeur ne peut comprendre la valeur de l'encapsulation avant de comprendre les bases de la programmation.

En outre, dans de petits programmes, la sécurité du type n'est pas un gros problème. Tout code qu'un développeur de départ écrit va être petit et contenu. Ce n'est qu'à une base de code plus importante, avec de nombreuses sections que vous utilisez comme couches d'abstraction et que vous n'y pensez pas activement, lorsque la sécurité de type indique ses avantages de vous assurer de faire ce que vous devez. Lorsque tout le code est dans le même fichier, il est plus facile d'aller voir la fonction et de voir ce que vous avez mal fait.

Autres bénéfices:

  • Beaucoup de bibliothèques qui font beaucoup de choses
  • Flexibilité pour enseigner à la fois des techniques de programmation orientées et fonctionnelles d'objet sans qu'il semble que l'on ait été forcée d'entrer dans une langue conçue pour faire l'autre.
4
unholysampler

Il y en a un très, très , très chose importante à propos de Python pour les programmeurs débutants que tout le monde semble avoir négligé: forcer l'indentation valable.

Comme certains des autres commentateurs, j'ai enseigné les débutants depuis quelques années. C'était un enthousiasme commun de voir des choses comme ceci:

#include <stdio.h>

int main(char *args[])
                                                                     {
   int A = 1, B = 1, C;
for (int X = 0;X < 20;X++)
{
   printf("%d\n", A);
C = B + A;
      A = B;  B = C;
}
        }

Maintenant, imaginez cette incohérence horrible sur une centaine de lignes de code. Pour certains étudiants, l'intégralité de tous leurs projets ressemblait à ceci.

Je n'ai aucune idée de la façon dont ils ont réussi à le faire, et cela ne les a jamais dérangés. Chaque fois que j'ai demandé, leur réponse était quelque chose comme "Eh bien, peu importe parce que le compilateur va le comprendre." Même lorsque je leur montre un bug évident en corrigeant l'indentation, ils sont toujours n'ont jamais eu d'indice.

En Python, ce type d'indentation est simplement invalide. Ils sont obligés d'utiliser quelque chose qui est au moins lisible, même si c'est un peu incompatible. Cela leur donne une habitude qui va, espérons-le, continuer lorsqu'elles finissent par apprendre une autre langue.

1
Izkata

Pour un programmeur débutant, le manque de types statiques est une fonctionnalité, pas un bogue!

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 sortent du chemin des sujets les plus urgents dans un cours d'introduction, comme la modularisation, le flux de contrôle, etc.

Il existe également des avantages conceptuels à la frappe dynamique dans un cadre éducatif:

  1. Les types sont associés à des valeurs, pas de variables. Cela est sans doute plus intuitif puisqu'il reflète les programmes de la raison.

  2. Les messages d'erreur sont beaucoup plus immédiats et concrets. IN Python Vous obtenez une belle trace de pile et un message indiquant ce qui a mal tourné. Dans une langue typée statique, vous obtenez un avertissement de compilateur disant quoi serait aller mal.

    Les étudiants travaillant avec un compilateur ne peuvent travailler que sur des programmes qu'ils comprennent parfaitement, de peur qu'ils ne soient pas confrontés à une erreur de compilation qu'ils ne peuvent pas résoudre.

  3. La vérification des erreurs d'exécution vous permet d'exécuter des programmes incomplets. Cela permet des programmes plus incrémentiels où l'étudiant peut d'abord s'inquiéter de faire le début du programme correct et que de voir ce qui se passe.

  4. Certains concepts importants, comme le polymorphisme paramétrique et la typage du canard, sont gratuits dans une langue dynamique, mais nécessitent des systèmes de type plus complexes dans une langue statique.

Enfin, pendant que vous devez toujours gérer la même complexité, vous n'obtenez pas tous les avantages de la saisie statique lorsque vous commencez à programmer:

  • Les programmes de débutants sont petits et ne disposent pas de nombreux chemins de code (vous n'avez donc pas à vous inquiéter d'autant de bugs de type dans des bits de code rarement accessibles)

  • Les programmes de beggyer n'utilisent pas d'interfaces de haut niveau et de fonctions qui ne sont donc pas nombreuses à gagner dans le service "Utiliser le système de type pour concevoir le programme".

1
hugomg

IMHO, enseigner aux gens à coder dans des langues "sûres" est une très mauvaise idée. Les gens supposent que tout est facile et ne pense qu'à ajouter des couches et des couches de code. Et perdre toute chance de pouvoir déboguer/résoudre des problèmes quand ils se posent.

Les bons programmeurs doivent absolument connaître C/C++ ou même assemblage. Et leur état d'esprit doit aussi venir de ce côté. Et non - "Oh, gc, il fait magique (TM) que nous sommes cool et pourquoi C++ n'a pas de gc, c'est stupide." attitude.

1
Coder

Python est une excellente langue maternelle pour la plupart des raisons indiquées ci-dessus. En particulier, une exigence d'une première langue est une courbe d'apprentissage douce, laquelle Python a. Vous n'avez pas besoin de savoir tous les cours, par exemple, de commencer. À cet égard c'est Un peu comme la base dont beaucoup d'entre nous ont commencé.

Une chose qui n'a pas été mise en évidence à ce jour est que de nombreuses langues ont une courbe d'apprentissage douce, mais heurtent rapidement un mur de briques lorsque vous essayez de faire des trucs plus avancés. Old-School Basic est un bon exemple de cela. Avec Python Vous pouvez entrer dans des trucs très avancés avant de ressentir qu'une autre langue 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. En fait, LISP pourrait être une bonne langueère aussi, bien que c'est plutôt austère !

0
rzzzwilson