Entretien de la communauté Python avec David Amos – Real Python

By | septembre 23, 2020

Cours Python en ligne

Cette semaine, je suis accompagné de David Amos, responsable technique du contenu ici à Vrai Python.

Dans cette interview, nous parlons de l’amour de David pour LEGO et les mathématiques. Nous parlons également de la Principes de base de Python livre, qui ne sera bientôt plus accessible, et son implication avec Hebdomadaire de PyCoder. Alors, sans plus tarder, commençons.

Ricky: Merci de vous joindre à moi, David. Beaucoup de nos lecteurs et membres connaissent peut-être déjà votre parcours, mais pour ceux qui ne le savent pas, posons les inévitables questions: comment êtes-vous entré dans la programmation et quand avez-vous commencé à utiliser Python?

David Amos

David: J'ai découvert la programmation par accident lorsque je suis tombé sur le code source du jeu Gorillas sur l'ordinateur IBM 386 PS / 2 de mes parents. J'imagine que j'avais environ sept ou huit ans. J'ai trouvé quelque chose qui s'appelle un .BAS fichier qui a ouvert un programme appelé QBasic et contenait toutes sortes de texte étrange. J'ai été instantanément intrigué!

Il y avait une note en haut du fichier qui expliquait comment régler la vitesse du jeu. J'ai changé la valeur et j'ai lancé le jeu. L'effet était immédiatement perceptible. C'était une expérience passionnante.

J'étais obsédé par l'apprentissage de la programmation en QBasic. J'ai créé mes propres jeux d'aventure textuels. J'ai même réalisé quelques animations en utilisant des formes géométriques simples. C'était très amusant!

QBasic était une langue fantastique à apprendre pour un enfant de huit ans. C'était assez difficile pour me garder intéressé mais assez facile pour obtenir des résultats rapides, ce qui est vraiment important pour un enfant.

Quand j'avais environ dix ans, j'ai essayé de m'apprendre le C ++. Les idées étaient trop complexes et les résultats arrivaient trop lentement. Après quelques mois de lutte, j'ai arrêté. Mais l'idée de programmer des ordinateurs est restée attrayante pour moi – assez pour que j'ai suivi un cours de technologie Web au lycée et appris les bases de HTML, CSS et JavaScript.

Au collège, j'ai décidé de me spécialiser en mathématiques, mais j'avais besoin d'une mineure. J'ai choisi l'informatique parce que je pensais qu'avoir une certaine expérience de la programmation faciliterait la réalisation des exigences du diplôme.

J'ai appris les structures de données avec C ++. J'ai suivi un cours de programmation orienté objet avec Java. J'ai étudié les systèmes d'exploitation et l'informatique parallèle avec C. Mes horizons de programmation se sont considérablement élargis, et j'ai trouvé l'ensemble du sujet plaisant tant sur le plan pratique qu'intellectuel.

À cette époque, je considérais la programmation comme un outil pour m'aider dans la recherche en mathématiques. Au troisième cycle, j'ai écrit des programmes pour générer des exemples et tester des idées pour mes projets de recherche.

C'est pendant mes études supérieures, vers 2013, que j'ai trouvé Python et que je suis tombé amoureux presque instantanément. J'utilisais C ++, MATLAB et Mathematica comme principaux outils de recherche, mais Python m'a permis de me concentrer sur le problème de recherche sans me laisser prendre par le code.

Et avec le formidable écosystème d'outils de Python pour le calcul scientifique, comme NumPy, SciPy, PuLP et NetworkX, j'avais tout ce dont j'avais besoin pour résoudre les problèmes comme je le ferais avec MATLAB mais d'une manière beaucoup plus expressive!

Ricky: Vous entendez souvent le mythe selon lequel une solide formation en mathématiques est une condition préalable pour être programmeur. Bien que je pense que vous conviendrez qu'il n'est pas toujours nécessaire pour les programmeurs de connaître les mathématiques avancées, je suis curieux de savoir comment votre expérience en mathématiques et en science des données vous a aidé à écrire du code.

David: Si vous voulez devenir informaticien, vous avez besoin d'une solide formation en mathématiques. Cependant, tous les programmeurs ne sont pas des informaticiens, et tous les informaticiens ne sont pas des programmeurs.

Le travail d’un programmeur consiste à écrire du code, mais je n’ai jamais eu de travail en tant que programmeur dans lequel quelqu'un vous remet un programme écrit dans un anglais simple et vous demande de le traduire en Python. Le travail du programmeur n’est donc pas de traduire un langage humain en langage informatique.

Là où les mathématiques, l'informatique et la programmation se croisent, résolution de problème. Cela dit, les mathématiciens, les informaticiens et les programmeurs ne résolvent pas les mêmes types de problèmes.

Les mathématiciens résolvent des problèmes sur les structures mathématiques. Les informaticiens, que je considère comme des mathématiciens appliqués, résolvent des problèmes mathématiques concernant les structures qui découlent de l'étude du calcul.

D'un autre côté, les programmeurs sont plutôt des constructeurs et des ingénieurs. Un programmeur reçoit généralement une conception et est chargé de mettre en œuvre cette conception aussi efficacement et efficacement que possible.

Malgré ces différences, il existe un cadre universel pour résoudre les problèmes qui fonctionne quelle que soit la discipline. Je pense que ce cadre est le plus élégamment présenté dans le traité classique de George Pólya Comment le résoudre: un nouvel aspect de la méthode mathématique.

Le cadre comporte quatre étapes, accompagnées de questions que vous devez vous poser à chaque étape:

  1. Comprenez le problème: Quelle est l'inconnu? Quelles sont les conditions?
  2. Concevez un plan: Quels outils sont à votre disposition? Avez-vous déjà résolu un problème similaire et la solution de ce problème peut-elle vous aider?
  3. Réalisez le plan: Pouvez-vous vérifier que chaque partie du plan est correcte?
  4. Regarde en arrière: Pouvez-vous prouver que votre solution fonctionne? Pouvez-vous penser à une autre façon de résoudre le problème? Pourriez-vous utiliser cette solution pour un autre problème?

La méthode de résolution de problèmes de Pólya est incroyablement puissante, et bien que le livre soit écrit pour des étudiants en mathématiques, tout le monde peut apprendre beaucoup de sa lecture. Tous les exemples du livre s'appuient sur les mathématiques que l'on rencontrerait dans un programme typique de collège ou de lycée aux États-Unis.

L'idée la plus puissante que j'ai apprise en tant que mathématicien – qui s'applique aussi bien à la programmation qu'à la vie de tous les jours – est que peu de problèmes sont insolubles. Souvent, la clé pour résoudre un problème est de poser la bonne question à son sujet. (En fait, il y a beaucoup problèmes qui ne peuvent pas être résolus, mais vous n’êtes pas susceptible de rencontrer ces problèmes en tant que programmeur!)

Si vous ne parvenez pas à résoudre un problème au premier coup d'œil, alors proposez un problème connexe que vous pouvez résoudre. En fait, c'est un mantra répété à maintes reprises dans Comment le résoudre:

Vous ne méprisez pas les petits succès, au contraire, vous les recherchez: Si vous ne pouvez pas résoudre le problème proposé, essayez de résoudre un problème connexe.

George Pólya

Ricky: Vous avez joué un rôle important dans la réécriture et la modernisation de l’original Cours de vrai Python et le transformer en ce qui est maintenant le Principes de base de Python livre. Pourriez-vous parler un peu du nouveau livre? À qui profiterait-il de le lire et à quoi le lecteur peut-il s'attendre en achevant le livre?

David: Travailler avec Dan Bader, Joanna Jablonski et Jacob Schmitt sur Principes de base de Python: une introduction pratique à Python 3 a été à la fois stimulant et gratifiant.

Merci à Fletcher Heisler, l'auteur du premier Cours de vrai Python, J'avais une base solide sur laquelle bâtir. J'ai réécrit de grandes parties du livre avec deux objectifs principaux en tête:

  1. Mettez à jour le contenu des versions plus récentes de Python.
  2. S'assurer que l'écriture respecte ou dépasse les mêmes normes que les autres Vrai Python contenu écrit.

Le livre de Fletcher est fantastique, mais le style est sensiblement différent du style typique Vrai Python article. Je voulais que le livre soit aussi accueillant que possible pour les nouveaux lecteurs mais aussi familier avec l'existant Vrai Python public.

Le public cible pour Principes de base de Python est des programmeurs débutants intéressés par l'apprentissage de Python. Vous n'avez besoin d'aucune expérience de programmation préalable pour tirer le meilleur parti de Principes de base de Python.

Le livre vous guide tout au long du processus d'installation de Python sur Windows, macOS ou Ubuntu Linux. Mais vous pouvez suivre n'importe quel système que vous aimez et qui a accès à Python 3.6 ou supérieur.

Vous n’avez même pas besoin de savoir comment utiliser un éditeur de code! Python est livré avec un éditeur léger appelé IDLE, idéal pour les débutants. Si vous avez un éditeur que vous aimez utiliser, vous pouvez également l'utiliser avec le livre. Il n'y a qu'un seul chapitre dans le livre qui nécessite IDLE, et il concerne l'utilisation de la fenêtre de débogage d'IDLE.

Principes de base de Python couvre tout ce que vous devez savoir pour démarrer avec Python, notamment:

  • Créer des variables
  • Travailler avec des nombres et faire des opérations mathématiques de base
  • Utilisation de structures de données telles que des chaînes, des listes, des tuples et des dictionnaires
  • Écriture d'instructions conditionnelles, de fonctions et de boucles
  • Création de classes et d'objets définis par l'utilisateur

Mais ce n’est vraiment que le début. Une fois que vous avez appris les bases de la langue, des chapitres vous apprennent à:

  • Travailler avec des fichiers
  • Installer et utiliser des bibliothèques tierces
  • Créer et modifier des fichiers PDF
  • Grattez les données d'Internet
  • Créer des graphiques et des graphiques à partir de données
  • Créer des interfaces utilisateur graphiques

Presque chaque chapitre contient des exercices avec des solutions, des défis pour vous encourager à faire passer vos compétences au niveau supérieur et des quiz interactifs pour vous aider à valider tout ce que vous avez appris.

Ricky: Comment avez-vous trouvé le processus d'écriture d'un livre aussi complet? Cela a-t-il changé la façon dont vous écrivez vos tutoriels et articles techniques? Et qu'avez-vous appris qui vous a surpris ou que vous utilisez maintenant tout le temps?

David: L'écriture du livre a été une leçon d'endurance et de persévérance. Il a fallu un peu plus de deux ans pour être complètement assemblé.

Pendant ce temps, j'ai changé d'emploi et j'ai commencé à travailler à temps plein pendant Vrai Python. J'ai également vécu plusieurs épreuves personnelles. Ma maison a été inondée deux fois, et ma famille a passé plus de sept mois déplacés en 2019. C'était un vrai défi.

La rédaction du livre m'a obligé à réfléchir longuement à l'organisation des chapitres et des sections. C'est quelque chose qui a définitivement repris dans les articles techniques. J'ai toujours été fan de la mise en valeur, mais maintenant je ne peux pas imaginer écrire quoi que ce soit sans d'abord concevoir un plan.

Je suis également devenu un grand partisan des listes verticales, ce que vous voyez partout Vrai Python. Je dois rendre hommage au rédacteur en chef de Vrai Python, Joanna Jablonski, pour m'avoir encouragé à les utiliser davantage et m'avoir aidé à voir leur valeur.

Au début, j'étais un peu opposé à eux. C'est-à-dire que je sentais que Joanna voulait que j'en abuse. Rétrospectivement, les premières ébauches avec moins de listes verticales me semblent maintenant laides et difficiles à lire.

Ricky: Parmi toutes les autres choses que vous faites, vous êtes également le cocurator de PyCoder’s Weekly. Vous avez la possibilité de lire et d'analyser des centaines d'articles liés à Python chaque semaine, il est donc difficile d'imaginer que cela ne profiterait pas à votre propre apprentissage. Y a-t-il eu des moments où le sou a chuté ou vous avez lu un didacticiel qui a eu un impact significatif sur votre propre programmation?

David: PyCoder m'a absolument profité en tant que programmeur et en tant qu'écrivain.

Probablement le plus gros avantage de la conservation d'articles pour Hebdomadaire de PyCoder est l'ampleur du sujet de la programmation Python. Certains de mes articles préférés traitent de choses exotiques comme la création de packages Python entièrement écrits en Rust ou de modèles de conception dont je n’aurais jamais entendu parler, comme sans I / O.

Je me suis également attaché à plusieurs auteurs, au point que je suis enthousiasmé quand je vois un nouvel article publié par eux. J'apprécie vraiment les nouvelles dépêches écrites par Jake Edge chez LWN. J'attends également avec impatience les articles de Brett Cannon.

Parfois, ce sont les choses simples que vous redécouvrez ou que vous avez ratées toutes ensemble qui ont le plus d'impact. L'un des articles récents de Brett m'a rappelé comment exécuter une commande Python à partir du terminal à l'aide de -c flag, que j'avais complètement oublié et que j'ai commencé à utiliser beaucoup plus régulièrement maintenant pour vérifier de petits exemples de code.

J'adore garder un œil sur tous les merveilleux packages de l'écosystème Python. J'ai trouvé toutes sortes de choses étonnantes, y compris des bibliothèques pour travailler avec des données spatiales de la NASA, des simulateurs de robots autonomes et un microscope alimenté par Python construit avec LEGO.

Les pythonistes sont un groupe créatif!

Ricky: Passons maintenant à mes dernières questions. Que faites-vous d'autre pendant votre temps libre? Quels autres loisirs et intérêts avez-vous en dehors de Python et de la programmation?

David: J'ai deux enfants, dont un de quatre ans. De quoi parlez-vous de «temps libre»?

Si je ne travaille pas et que je ne suis pas occupé à devenir adulte, j'aime vraiment construire des LEGO, en particulier les décors sur le thème de l'espace. Ma fille aînée et moi aimons observer les étoiles et regarder les lancements de fusées de la NASA et de SpaceX ensemble.

Je suis aussi un grand fan de Star Trek et je consomme beaucoup du contenu Star Trek. Spock a toujours été l'un de mes personnages préférés. J'admire sa capacité à équilibrer l'émotion et la logique.

Bien que je ne m'efforce pas d'être aussi impassible que le Vulcain typique, la capacité de prendre des décisions basées sur la raison et les meilleures données disponibles sans laisser les émotions brouiller votre jugement est une compétence précieuse. J'aurais aimé que ce soit une chose facile à développer, cependant!

Ricky: Merci, David. C’est toujours un plaisir de vous parler.


Si vous souhaitez entrer en contact avec David, vous pouvez le trouver sur Twitter, ou vous pouvez vous arrêter sur son site Web personnel. Si vous êtes nouveau dans Python et que vous souhaitez ajouter une structure à votre apprentissage, alors Principes de base de Python: une introduction pratique à Python 3 peut vous aider à améliorer votre Python.

S'il y a quelqu'un dans la communauté Python que vous aimeriez que je interviewe, laissez un commentaire ci-dessous ou contactez-moi sur Twitter. Bon codage!