Journal Le smartphone comme vecteur d'initiation à la programmation

Posté par  (site web personnel) . Licence CC By‑SA.
24
27
avr.
2022

La plupart des gens, en particuliers les plus jeunes, sont très attachés à leur smartphone. D'où l'idée de se servir de cet attachement pour les intéresser à la programmation.

Grâce à un IDE en ligne comme Replit, ou, pour les plus motivés, en installant Termux, (ou iSH pour les appareils sous iOS), on dispose de la possibilité d'exécuter des programmes en Python avec son smartphone.

Certes, un smartphone, ce n'est pas vraiment confortable pour programmer, mais est-ce vraiment pire que de programmer avec un ZX81 et son clavier à membrane, pourtant à l'origine de nombreuses carrières dans l'informatique ?

Sinclair ZX-81

Par ailleurs, que ne ferait-on pas pour pouvoir profiter de son trajet en bus pour écrire du code ou corriger un bug avec son smartphone plutôt que d'être réduit à aller pour la énième fois de la journée sur Facebook, Twitter, Youtube… ?

Pour ce qui est de donner du grain à moudre à nos aspirants développeurs, il y a, par exemple, un livre comme The Big Book of Small Python Projects de Al Sweigart. Bon, c'est en anglais, mais pour quiconque envisage la programmation de manière un tant soit peu sérieuse, l'anglais est incontournable.

Ce livre propose un certain nombre de programmes relativement courts et simples, accompagnés de commentaires explicatifs, et, pour la plupart, ne nécessitant pas l'installation de modules supplémentaires.

Pour arriver à ce résultat, l'auteur de ce livre s'est volontairement limité à une interface texte, comme il s'en justifie dans l'introduction. Néanmoins, ce choix a un impact, et sur l'apparence, et sur l'ergonomie des programmes.

La plupart des gens sont, notamment de par l'utilisation des smartphones, habitués aux interfaces graphiques, et au confort d'utilisation qu'elles apportent. Des programmes avec une interface texte peut les rebuter.

Pour éviter cet écueil, j'ai entrepris de modifier les programmes de ce livre pour leur ajouter une interface graphique. Pour rester dans l'esprit du livre, j'utilise, pour ce faire, le toolkit Atlas.

En effet, le toolkit Atlas est léger et ne nécessite pas l'installation d'autres modules, ce qui lui permet d'être fourni sous forme d'archive ZIP. En outre, sa mise en œuvre est peu intrusive, permettant de faire passer la programmation de l'interface graphique au second plan.

Je n'ai, pour l'instant, que modifié deux des programmes du livre, mais ils sont emblématiques. Ils s'agit de deux jeux se jouant à deux. Voici l'apparence de ces deux jeux, successivement la version originale, et la version modifiée.

Apparence de la version originale du jeu Four in a row :

'Four in a row' avec une interface texte

Apparence de la version modifiée du jeu Four in a row :

'Four in a row' avec une interface graphique

Apparence de la version originale du jeu Mancala :

'Mancala' avec une interface texte

Apparence de la version modifiée du jeu Mancala :

'Mancala' avec une interface graphique

L'apparence du jeu modifié reste assez rustique pour ne pas trop complexifier le code, mais l'ensemble est quand même nettement plus ergonomique que la version originale. L'interface étant en HTML/CSS, il est très facile d'en modifier l'apparence.

En outre, là où, avec la version originale, les joueurs sont obligés de se passer l'appareil sur lequel tourne le jeu à chaque tour, la version modifiée leur permet de s'affronter en utilisant chacun son smartphone.

Tout comme avec la version originale, un joueur peut jouer à la place de l'autre ; il n'y a pas de contrôle à ce niveau-là, toujours pour ne pas complexifier le code. Mais il est tout à fait possible d'implémenter des garde-fous, comme c'est la cas avec ce jeu : https://replit.com/@AtlasTK/PigGame-python.

Il est également possible de créer une version qui permette de gérer plusieurs parties en même temps, comme c'est le cas ici pour ce même jeu (sélectionner k (PigGame)) : https://replit.com/@AtlasTK/atlas-python.

On le voit, les développeurs en herbe ont tout loisir d'améliorer, à titre d'exercice, les programmes fournis dés lors qu'ils maîtriseront les différents concepts afférents.

Les programmes que j'ai modifié jusqu'à présent, ainsi que ceux que je modifierais par la suite, sont (seront) disponibles ici : https://github.com/epeios-q37/AlSweigartTheBigBookPython.

  • # Évangélisme des interfaces texte

    Posté par  . Évalué à 5.

    Je voterai pour https://candybox2.github.io/ pour convaincre les gens qu'on peut faire des trucs chouettes en texte simple.

  • # Alternatives à Replit

    Posté par  (site web personnel) . Évalué à 9. Dernière modification le 28 avril 2022 à 13:14.

    Pour les gens soucieux du respect de la vie privée, il existe des alternatives mises en place par des collègues de et pour l'Éducation Nationale.

    • Basthon (pour bac à sable Python) propose un IDE, mais aussi un carnet Jupyter (donc avec cellules en Markdown), sur le même principe. Tout est transformé en JavaScript via Pyodide. Rien ne transite sur des serveurs inconnus ; rien ne transite depuis le poste élève (téléphone, tablette ou PC). Le comparatif des alternatives à Replit est ici ce qui a motivé l'auteur à écrire Basthon.

    • MkDocs avec Pyodide. Un collègue (Vincent Bouillot), a repris le principe de Pyodide pour proposer un IDE dans un site statique propulsé par MkDocs. Ce qui permet à une bande de collègues d'écrire des cours et/ou des exercices avec un peu de dynamismes. MkDocs étant responsive, on garde le public accro au petits écrans. Le gros du travail collectif récent est là : https://e-nsi.gitlab.io/pratique/N2/ je vous ai mis la section des exos guidés, il y a d'autres sections… Cette alternative, tout comme Basthon, permet un respect maximal de la vie privée. D'autre part, pour le développement, nous n'utilisons que des logiciels libres et nos productions sont sous licences libres, sans utilisation commerciale. C'est un énorme boulot, d'écriture, relecture entre nous, tests… L'objectif de départ est d'aider les élèves de terminale NSI à se préparer à l'épreuve pratique de Python. Nous avons ajouté des exercices plutôt destinés aux élèves qui veulent du contenu plus orienté vers la prépa. J'espère que vous trouverez l'initiative de qualité. Je pense que c'est quelque chose qui manquait cruellement pour les élèves ; si certains se sentent de proposer des idées d'améliorations, des idées d'exos… Ce sera avec plaisir.

    • [^] # Re: Alternatives à Replit

      Posté par  (site web personnel) . Évalué à 2.

      Il faudrait un journal sur Basthon et ce qui tourne autour.
      C'est intéressant, d'autant plus que Basthon respecte la vie privée des utilisateurs.

      Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

  • # Javascript pour débuter ?

    Posté par  (Mastodon) . Évalué à 6.

    En discutant avec un collègue de l'initiation à la programmation, on se demandait si JavaScript n'était pas un bon moyen. En effet, tu as simplement besoin d'un éditeur de texte et d'un browser, ce qui se trouve sur toutes les plateformes sans distinction.

    Niveau accessibilité au néophyte, c'est pas mal.

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: Javascript pour débuter ?

      Posté par  . Évalué à 4.

      En Vanilla JS (avec HTML et CSS) tu fais facilement des choses colorées qui se voient.

      Et lire des fichiers sons dans le navigateur est plutôt simple.

      Une interface avec des boutons colorés qui lit des sons c'est très peu de code et du code simple.

  • # À propos de l'anglais

    Posté par  (site web personnel) . Évalué à 10.

    Bravo pour le projet, c'est une chouette idée. Et c'est vrai qu'utiliser le smartphone comme support à l'apprentissage de code est une bonne idée : même si avoir un clavier physique est plus pratique, c'est moins facile à avoir dans la poche.

    Juste une petite remarque sur ce passage :

    Bon, c'est en anglais, mais pour quiconque envisage la programmation de manière un tant soit peu sérieuse, l'anglais est incontournable.

    Oui, c'est vrai qu'apprendre l'anglais est à un moment ou un autre incontournable pour coder. Cependant, quand on apprend à coder, ajouter la difficulté de la langue est "coûteux". Si l'apprenant est déjà bilingue ou très à l'aise en anglais, ce n'est pas un souci, mais si sa connaissance de la langue est celle d'un français moyen, c'est à dire pas motivé par le fait d'apprendre un truc d'étranger et n'ayant pas eu une formation très bonne sur le sujet, la difficulté ajoutée risque de faire fuir. Cela conduit pas mal de gens à n'apprendre ni l'anglais, ni à coder, alors que l'un et l'autre sont dans leurs capacités et pourrait les amuser.

    Aujourd'hui, les outils de traduction automatique rendent la barrière de la langue moins pénible, mais ça reste quand même une difficulté de plus dans l'apprentissage.

    N'avoir une ressource qu'en anglais exclue de l'initiation tout un public, pas si petit que ça, et il vaut mieux en être conscient, plutôt que de croire que l'anglais pour le code n'est pas un obstacle. Dans le cadre des initiations, c'est un obstacle qui doit être levé, soit en apprenant l'anglais avant de coder, soit en ayant des ressources et exercices dans une langue avec laquelle on est à l'aise.

    Au-delà de l'initiation, par contre, le code peut devenir une vraie motivation à apprendre l'anglais. Quand on commence à bidouiller, qu'on a compris les bases, et qu'on veut arriver à faire "un truc", on se frotte forcément à l'anglais, mais avec la motivation de résoudre le problème et donc l'obstacle de la langue étrangère devient secondaire. Et petit à petit, ça rentre… j'ai quelques exemples dans mon entourage de ce genre, où l'apprentissage de l'anglais (plutôt technique et à l'écrit) s'est fait suite aux bidouillages en tout genre :)

    • [^] # Re: À propos de l'anglais

      Posté par  (site web personnel) . Évalué à 3. Dernière modification le 02 mai 2022 à 19:51.

      La documentation du toolkit Atlas est disponible en français. Le livre dont sont tirés les programmes de ce projet est diffusé sous licence CC-BY-NC-SA, ce qui ouvre la voie à la traduction des commentaires explicatifs accompagnant les programmes, voire du livre entier. Il y a donc possibilité de rendre ce projet plus abordable pour ceux qui ont des difficultés avec l'anglais, sans compter qu'il existe par ailleurs quantité de ressources en français concernant Python, HTML, CSS

      Sauf que je suis personnellement plus attiré par la partie technique du projet, à savoir l'amélioration des outils et le développement de programmes les mettant en œuvre, et que ma remarque concernant l'anglais n'est qu'une pitoyable tentative de me donner bonne conscience de négliger ce genre de problématiques :-) !

      Cyberdépendance, cyberharcèlement, pédocriminalité… : Zelbinium, pour que les smartphones soient la solution, pas le problème !

      • [^] # Re: À propos de l'anglais

        Posté par  (site web personnel) . Évalué à 3.

        Oui, pas de souci, ce n'était pas une injonction à faire : on fait ce qu'on peut et si c'est libre, ça permet d'améliorer au fil du temps et des motivés ! Ça reste un super projet et j'espère que cela intéressera du monde.

  • # Le confort ? Mais il suffit de brancher un clavier

    Posté par  . Évalué à 2. Dernière modification le 04 mai 2022 à 15:06.

    Avec un clavier digne de ce nom, le développement devient tout de suite moins pénible. Surtout si on utilise un éditeur comme vim où il n'y a pas besoin de souris (donc d'aller tapoter l'écran toutes les 2 lignes)

    Le tuto (qui date d'un peu plus d'un an) pour brancher un vrai clavier

  • # Ajouts.

    Posté par  (site web personnel) . Évalué à 2.

    Deux jeux ont été rajoutés, Blackjack et Flooder.

    Contrairement aux précédents, ces jeux-là se jouent seuls. Néanmoins, pour rendre les choses plus fun, on peut y jouer à plusieurs, chacun sur son propre smartphone, en récupérant l'URL de l'application, éventuellement à l'aide du code QR dédié. Les différents protagonistes jouent alors à tour de rôle, ceux ne jouant pas voyant en temps réel, sur leurs smartphones, le déroulé de la partie de celui qui joue.

    Pour essayer en ligne, sans rien installer, cliquez sur ce bouton : Run online on Replit

    Et, dans le même esprit, la tortue du Logo, mais utilisable sur smartphone :Run tortoise online on Replit

    Cyberdépendance, cyberharcèlement, pédocriminalité… : Zelbinium, pour que les smartphones soient la solution, pas le problème !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.