Archives de catégorie : python

De bons bouquins pour s’initier à la programmation

J’ai mis à profit la période estivale pour lire pas mal de bouquins, et j’ai découvert quelques pépites dont j’ai envie de vous parler aujourd’hui. Je ne parlerai pas ici des quelques bouquins que j’ai lus pour mes besoins professionnels (ça fera peut être l’objet d’un autre article), mais plutôt des bouquins destinés aux personnes – jeunes ou moins jeunes – qui souhaitent s’initier à la programmation. Oui je sais, c’est une vieille marotte chez moi (j’ai déjà parlé de ce sujet dans de précédents articles), mais en plus de mes activités de développeur, j’enseigne aussi la programmation (essentiellement à des adultes). Je considère que cela fait partie de mon travail d’étudier comment mes confrères abordent cette discipline particulière qu’est l’enseignement de la programmation, cela me permet de m’améliorer en tant que prof.

Je vais donc vous parler de 3 livres, un en français et deux en anglais.

Commençons par le livre en français :

« Apprendre à programmer en Python (pour jeunes débutants de 7 à 97 ans) », de Frédéric Laroche (publié aux éditions Ellipses en 2015).

Je dois dire que j’ai été séduit par certains aspects de ce livre, aux illustrations sympas (de Gilles Macagno), et qui fourmille d’anecdotes. L’auteur a souhaité privilégier un style de programmation procédurale (plutôt qu’objet) pour que les exemples restent accessibles au plus grand nombre. C’est un choix qui se tient, mais j’avoue que j’ai été décontenancé par le premier chapitre, destiné à planter les bases du langage Python. Je trouve que l’auteur va souvent trop vite, et je me disais en lisant ce chapitre qu’un lecteur complètement néophyte pourrait se retrouver assez vite largué. En revanche, une personne ayant déjà quelques bases de programmation, en Python ou sur un autre langage, devrait pouvoir s’en sortir. Attention, le reste du livre est carrément génial. Au travers de jeux connus et moins connus, l’auteur livre un beau travail de pédagogue et j’ai pris un grand plaisir à le lire. C’est vraiment un bouquin généreux et sympa, et malgré le chapitre d’intro que je trouve un peu bancal, je vous le recommande.

Un autre livre, qui m’a procuré un grand plaisir de lecture, c’est celui-ci :

« Get Programming with Javascript« , de John R. Larsen, aux éditions Manning. Il est paru cet été, et j’ai sauté sur l’ebook dès sa parution. Pour le coup, d’un point de vue pédagogique, c’est un sans faute. Je trouve la présentation des fondamentaux de Javascript très progressive et cette progression est très réfléchie. Chapitre après chapitre, l’auteur construit un jeu de rôle au sein d’une page web, et l’enrichit de nouvelles fonctionnalités tout en présentant de nouveaux concepts de programmation. J’ai vraiment pris un grand plaisir à le lire, et je me prends à rêver que ce livre soit traduit en français, pour qu’il puisse toucher un lectorat plus large chez nous.

Le troisième livre que j’ai bien apprécié, c’est celui de Syed Omar et Faruk Towaha, paru chez Packt en janvier 2016 :

« Javascript Projects for Kids »

Le livre propose tout d’abord une intro à Javascript qui est sympa, mais de construction assez classique. Vous y trouverez aussi une introduction à jQuery qui est intéressante, mais les différents projets présentés ensuite ne s’appuient pas nécessairement sur jQuery, ce qui n’est d’ailleurs pas dérangeant. Il faut souligner que les chapitres sont quasiment tous indépendants, et présentent des projets écrits dans des styles souvent très différents. En fait, ce livre c’est un peu « l’auberge espagnole » du Javascript, mais il est généreux, fourmille de bonnes idées et les projets présentés sont sympas à réaliser. Je donnerais une mention spéciale au chapitre 9.3 (Dissecting Hangman) dans lequel les auteurs ont utilisé un graphique SVG pour dessiner leur pendu, et AngularJS pour masquer ou faire apparaître les différentes parties du pendu en fonction des mauvaises réponses (via la directive Angular « ng-show »). J’avoue que je n’avais jamais envisagé jusqu’ici de combiner Angular avec du SVG, et je me mets l’idée « de côté » car je la trouve sacrément futée. Attention, ce livre ne fournit pas d’introduction à Angular, du coup si vous ne connaissez pas ce framework, vous aurez peut être du mal à comprendre le code présenté dans ce chapitre du « pendu », mais ça peut être aussi un bon moyen de découvrir Angular, après tout…

Voilà… trois livres très différents, mais tous passionnants, car tous écrits par des auteurs passionnés, j’espère qu’ils vous procureront autant de plaisir qu’ils m’en ont procuré.

A noter que j’ai découvert un autre bouquin chez Manning qui s’intitule « Hello AppInventor!« , de Paula Beer et Carl Simmons (livre paru en 2014).  Je ne l’ai pas encore lu, faute de temps, mas il est sur le haut de ma pile, j’espère que je vais réussi à le lire rapidement. Pour ceux qui ne connaissant pas, AppInventor est un projet initié par Google et maintenu par le MIT. Cette application reprend les principes de Scratch, mais elle est destinée à développer des applications pour les tablettes et smartphones Androïd. Ca a l’air vraiment cool.

Allez, bonne rentrée à tous !!  😉

 

Pour les followers : mon Tweet

 

 

Apprendre la programmation aux enfants (again…)

Eh oui, en cette rentrée de septembre ensoleillée, je reviens sur un sujet qui me tient particulièrement à coeur, à savoir : enseigner la programmation aux enfants.

Je me demandais notamment s’il existait dans la littérature contemporaine de bons bouquins susceptibles de permettre à des enfants ou à des adolescents de s’initier à la programmation. J’emploie le terme « contemporain » sciemment car dans les années 80, et même au début des années 90, on trouvait de bons livres d’initiation, s’appuyant sur les langages BASIC ou Pascal. Et c’est d’ailleurs avec des ouvrages de ce genre que je me suis formé à la programmation, comme beaucoup de développeurs de ma génération.

Mais aujourd’hui, les langages BASIC et Pascal ne sont plus d’actualité. On peut d’ailleurs le regretter, car il s’agissait de langages particulièrement bien adaptés à l’enseignement. Mais bon, c’est comme ça… Les langages qui ont le vent en poupe aujourd’hui, ce sont des langages comme PHP, Javascript, Python ou Ruby. Et ma foi, ils sont aussi très bien, à condition de savoir adapter l’apprentissage aux capacités des enfants que l’on souhaite initier.

Pour en revenir à mon sujet du jour, j’ai déniché 3 bons bouquins en anglais, chez le même éditeur (NoStarch.com), dont un a été traduit en français et est disponible chez Eyrolles (il s’agit de « Python for Kids« ).

Les 3 ouvrages en question sont les suivants :

J’ai commencé par lire le livre de Bryson Payne, après avoir assisté à l’un de ses webinars. J’ai apprécié les idées proposées dans son livre, notamment son utilisation de la « tortue », une petite librairie Python qui permet de tracer des graphiques très simplement, un peu à la manière d’une ardoise magique (vous savez ce jeu indémodable qui consiste à tracer des formes au moyen de 2 roulettes). Pour la petite histoire, cette « tortue » était à l’origine un des composants d’un langage de programmation de plus haut niveau, le LOGO (cf. Wikipédia pour plus d’infos sur ce sujet).

Ce qui m’a dérangé dans le livre de Bryson Payne, c’est qu’il va très vite (trop vite à mon goût) vers des exemples assez complexes, qui pourraient décourager le lecteur si sa connaissance du langage Python est trop superficielle. En revanche ses exemples sont assez emballants, et il y a beaucoup de bonnes idées à puiser dans ce livre. Comme son sous-titre l’indique, ce livre est destiné à aider des parents qui voudraient enseigner la programmation à leurs enfants. Mais pour tirer pleinement parti de ce livre, les parents ont intérêt à bien maîtriser le langage Python, sinon ils risquent d’être perdus face à certains raccourcis pris par l’auteur.

A l’inverse, le livre de Jason R. Briggs, Python for Kids (livre qui est disponible chez Eyrolles en français), démarre de manière plus progressive. La première partie de son livre est peut être plus rébarbative, du fait qu’il prend le temps de présenter les bases du langage Python (il manquerait peut être de temps en temps un exemple amusant pour casser la monotonie de l’ensemble). En revanche, dès que Jason R. Briggs s’attaque à l’utilisation de la tortue, il m’emballe vraiment car ses explications progressives sont très accessibles, et très pertinentes, et c’est un plaisir de le suivre. Un adulte pourra aider un enfant à piocher dans ce livre les éléments intéressants adaptés à son niveau de compréhension. Un adolescent pourra sans aucun doute se débrouiller seul avec ce livre, s’il se forme en autodidacte.

Voici un exemple de programme Python exploitant la fameuse tortue graphique, pour générer des formes géométriques amusantes (exemple emprunté au livre « Teach your kids to code »).

import turtle
t = turtle.Pen()
for x in range(100):
	t.circle(x)
	t.left(90)

Et voici une prise de cliché de l’environnement Python, avec l’image en cours de réalisation :

turtle_python_exemple

Ces deux livres (« Python for Kids » et « Teach your kids to code ») me semblent très complémentaires. Mais je recommanderais le premier pour les bases solides qu’il apporte au lecteur, et le second comme complément pour le réservoir d’idées amusantes qu’il propose.

Le livre « Javascript for Kids », de Nick Morgan, est lui aussi très emballant. Je suis en train de le lire, mais comme je manque de temps, je risque de mettre encore quelques semaines avant de le terminer. J’aime beaucoup son approche très progressive, ses exemples simples et pertinents, son effort aussi pour – dans certains cas – prendre du recul par rapport au programme à implémenter (en proposant par exemple un pseudo-code en langage naturel décrivant l’objectif à atteindre, avant de le coder réellement en Javascript). Bref c’est un livre qui mérite qu’on s’y attarde, et qui mériterait lui aussi d’être traduit en français (peut être que les éditions Eyrolles sont déjà sur le coup, en tout cas je le souhaite).

Une question vous taraude peut être à l’issue de cet article : « alors… Python ou Javascript ? »

Franchement, j’adore Javascript, mais il me semble que Python a quelques atouts dans sa manche pour l’enseignement de la programmation aux enfants. Avec en premier lieu un shell complet incluant un éditeur avec coloration syntaxique, une librairie graphique intégrée (tkinter) qui permet de générer des graphiques très simplement (animés ou non), une librairie « turtle » intégrée dans la version standard de Python pour jouer avec la tortue… Bref, tout est fait dans Python pour faciliter l’apprentissage.

Avec Javascript, c’est un peu plus compliqué. On peut jouer avec de différentes manières, et en premier lieu on peut commencer par l’utiliser dans la console de son navigateur préféré, mais dès que l’on souhaite développer des choses sophistiquées, il faut ajouter des connaissances sur le HTML, le DOM, l’API Canvas du HTML5 (pour la génération de graphiques), choisir un éditeur de code, etc… Bref, l’écosystème de Javascript est un peu hétéroclite, et du coup un peu plus complexe que celui de Python. Du coup, je recommanderais l’apprentissage de Javascript plutôt à des adolescents (peut être à partir de 12 ans), alors qu’avec Python, il me semble que l’on peut démarrer plus jeune, plus facilement (peut être à partir de 8 ans).

J’ajoute que ces 3 livres me semblent également très bien pour initier des adultes à la programmation.

Voilà, j’espère que ce petit article vous aura intéressé, et surtout qu’il vous donnera envie de découvrir ces livres, ces auteurs, et peut être d’initier des enfants à la programmation au travers de ces très bons langages que sont Python et Javascript.

Sur ces bonnes paroles, je vous souhaite une très bonne rentrée. 🙂