tite fractale

Questions forcées et mes réponses

Le jeudi 17 septembre 2015.

1. Introduction

Comme de coutume, j’ai demandé à mes étudiants de première année en Section de Technicien Supérieur SIO (un des « BTS informatique » que l’Éducation Nationale propose) de me poser au moins une question. Suite à quelques discussions sur Twitter et pour faciliter la communication des réponses, que ce soit aux étudiants ou à d’autres, j’ai décidé de publier le tout sur mon site pro.

La « question forcée » est une technique que je trouve très puissante, par exemple en TP. Elle révèle beaucoup de petites choses qui jusque là n’auraient pas pointé le bout de leur nez.

2. Questions et réponses

Note 1 : J’ai corrigé tant que j’ai pu les fautes d’orthographe et de typographie.

Note 2 : Les questions sont classées par thème, et de la plus sympa à la moins intéressante. Si vous vous ennuyez, passez à la section suivante plutôt que de quitter la page !

2.1. MicroAlg

Notez bien que c’est la deuxième promo à apprendre l’algorithmique avec MicroAlg. Voir ici un rapport concernant l’utilisation avec la première promo. Passons à la première question :

Avec quel langage a été développé MicroAlg ?

Principalement PicoLisp (pour développer le langage MicroAlg), sinon divers langages annexes pour les outils, comme JavaScript ou Lua… Voir :

À quoi sert vraiment Microalg ? Dans quel contexte est-t-il le plus souvent utilisé ?
[et]
Quel et le but de votre langage de programmation ?

Faire démarrer les grands débutants. Je suis le seul à l’utiliser. Ça va changer cette année.

Pouvons nous faire de long programmes avec MicroAlg comme par exemple avec Java ?

Le plus long programme est pour l’instant celui-ci (encodage et décodage en binaire, en base64, conversion in bitmap puis affichage dans une balise <img...>).

La seule vraie limitation est l’éditeur. Par exemple la version web de l’éditeur avec les parenthèses commence à bien ramer avec le programme ci-dessus.

Mais c’est une étrange (surtout la citation de Java) et bonne question, qui mériterait un approfondissement :

Est ce que Microalg à subis des modifications de syntaxe depuis la fin de l'année dernière ? [un doublant]

Oui. Voir la suite des changement ici : https://github.com/Microalg/microalg/releases/.

Sert t'il dans le monde l'entreprise ?

Non, pas les entreprises qui produisent des logiciels. Peut-être un jour dans certaines entreprises qui proposent des formations. J’ai des contacts dans ce genre d’entreprise, qui sait…

Peut-on utiliser des logiciels comme MicroAlg dans la vie professionnelle ?

Non. Pas pour coder un vrai projet. Mais elle pourra peut-être vous aider à rédiger un algorithme, pour vous et/ou pour le communiquer à un collègue. Ce sera à vous de me le dire plus tard !

Que pouvons-nous faire ensuite [après le BTS] avec des programmes MicroAlg ?

Rien directement avec ce langage, il est fait pour passer à un autre langage plus complexe une fois les bases maîtrisées.

Je voudrais savoir comment sont choisis les nombres au hasard qui reviennent toujours avec la commande " Initialiser@ " ?

Ils reviennent toujours de la même façon, avec ou sans Initialiser@. Initialiser@ donne juste la valeur de départ. Si Initialiser@ n’est pas utilisé, c’est l’horloge qui donne la valeur de départ (à la milliseconde ou à la microseconde près).

Une variable garde, modulo 2 puissance 32, l’état du générateur. Pour passer d’un état à un autre, on multiplie par 1664525 et on ajoute 1013904223 (c’est une recette classique). Pour tirer une valeur, on regarde le quotient par 5 de l’état (ça c’est moi qui l’ai ajouté, sinon les tirages avaient dans certains cas toujours la même parité) et on applique un modulo pour rester dans l’espace des valeurs possibles. Voir :

Existe-t-il un moyen de corriger une faute d'orthographe [dans l’adresse d’une de ses pages de la galerie] sans avoir à recommencer toute la page ?

Non, pas en très peu de clics. J’ai rédigé des instructions pour déménager une page. Ça reste très faisable.

S’il y a deux blocs « Somme » reliés par exemple, cela est-il comme une parenthèse c'est a dire qu'on calcule d'abord le deuxième bloc ?

Ça dépend du type de la jonction. Si l’un est attaché à droite d’un autre, c’est celui de droite qui est exécuté en premier. Avec le code textuel, c’est peut-être plus facile à comprendre.

Je n’ai pas encore trouvé un moyen très efficace d’expliquer l’ordre de l’évaluation. Quelques pistes :

postorder DFS

postorder DFS svg

2.2. Langages

Comment développer un langage quel qu'il soit ?

Beaucoup de façons sont disponibles ! Ce qui est sûr, c’est que c’est comme pour la fabrication des outils, il faut avoir fabriqué des outils avant pour les fabriquer (problème classique de la poule et de l’œuf).

On en reparlera autour de l’évènement Tire ton langage de programmation, qui se greffe sur Tire ta Langue (voir d’autres images).

Quel est le langage informatique le plus utilisé ?

Ça dépend pour quoi faire. De toutes façons c’est très difficile de mesurer cela correctement. Sur Internet, des gens publient des articles pour répondre à cette question.

Quelle est la majeure différence entre le C++ et le C# ?

Mais quel rapport avec les cours d’algo ?!?

C# fait partie de .NET, et donc du monde Microsoft. C’est un peu le Java de Microsoft. Ils n’ont pas la même utilisation : grossièrement, C# est pour fabriquer des progiciels de type client lourd, et C++ est plutôt utilisé dans la programmation système, les jeux et la finance.
Aussi, C++ est beaucoup plus difficile à maîtriser.

J’attends qu’on me corrige si j’ai dit des bêtises.

2.3. Pédagogie

Quel est le langage le plus simple à apprendre pour commencer la programmation ?
[et]
Quel est le langage de programmation le plus "simple" à maîtriser ?
[et]
Que conseillez-vous en premier langage de programmation ?

MicroAlg bien sûr. Il est fait pour cela. Si vous en trouvez un autre, dîtes-moi. Après MicroAlg, ça dépend de beaucoup de choses. Je conseille d’en voir au moins trois différents en même temps.

Est-ce qu'il y a des difficultés en programmation?

Oui, beaucoup. C’est très abstrait. La principale difficulté est de se mettre à la place de la machine, pour comprendre qu’elle est froide et pour savoir être aussi rigoureux qu’elle. Ensuite, il faut avoir de l’imagination et savoir découper un problème en sous-problèmes.

Quelles sont les principales difficultés rencontrées généralement les élèves ?

Le vide, le manque d’idées.

Comment va se dérouler le programme de l'année en algorithmique ?

Plutôt bien.

Sans rire, je ne préfère pas tout dévoiler, sinon des petits malins vont regarder la fin et s’ennuyer en cours.

Mais bon, comme j’ai confiance en mes étudiants, je ne pense pas qu’ils chercheront des informations sur le site officiel ou sur la galerie. Si vous n’êtes pas étudiant et que vous voulez savoir, vous pouvez m’envoyer un email.

Que pouvons-nous faire ensuite [au cours de l’année] avec des programmes MicroAlg ?

Des choses sympathiques comme des dessins et des jeux, mais aussi des choses encore plus sympathiques comme illustrer le cours de maths (numération binaire et hexadécimale, suites, matrices, calcul sur des booléens…)

Comment faire pour être "bon" en programmation ? Car selon moi il faut connaître énormément de fonctions, de variables etc.. dans plusieurs langages et je trouve cela difficile à retenir car en dehors des cours je ne programme pas et donc j'ai du mal a appendre.

Il faut avoir bien compris les concepts et savoir chercher dans la documentation. Attention, des concepts, il y en a beaucoup. La programmation essaie tout simplement de modéliser toute l’activité humaine, même si c’est par morceaux à chaque fois. Il y a donc pas mal de travail.

Ensuite, la pratique vous permettra de mémoriser ce dont vous avez besoin. Si votre mémoire n’est pas performante, vous pouvez vous faire des fiches, ou utiliser un système de mémorisation par répétition espacée. Voici quelques articles intéressants en anglais. Personnellement, je vais essayer d’utiliser Anki. On en reparlera en cours.

Connaissez-vous des sites pour apprendre quelques bases de la programmation ?

Oui, il y en a des millions. Mais vous avez la chance d’avoir une dizaine de bon professeurs qui ne veulent que votre réussite ! Profitez-en !

Quel site permet une meilleure compréhension des langages, peu importe le langage ?

Vous voulez mieux connaître l’esprit des langages ou savoir coder avec ? Attention, les deux sont complémentaires !

Essayez Wikipedia ou c2.com (commencez par cette page, en anglais).

Allons-nous utiliser d'autres outils mis à part MicroAlg ?

Peut-être Python, pour ceux qui auront fait tout ce que je propose. Ça ne devrait pas arriver.

2.4. Orientation

Je souhaite par la suite réaliser des applications mobiles sur iOS après mon bts

Patience. En deuxième année, vous verrez le développement sur Android.

Quel était votre métier avant d'être professeur ?

C’est mon premier métier. Mais j’ai fait et je fais deux ou trois trucs à côté.

Quel est votre parcours professionnel ?

Bac C (l’ancien bac S), puis prépa technique (anciennes PTSI), puis retour à la fac en maths (admis à l’ENSAM, mais ça ne me tentait pas), puis obtention d’un concours pour enseigner les maths en 1999.

J’ai commencé à enseigner l’algorithmique en 2009 à des élèves de seconde générale, puis en SIO à la rentrée 2012.

J’ai donné 4h de SLAM par semaine (développement) en SIO pendant deux ans avec l’accord de la direction et des collègues (je n’ai pas le diplôme pour).

2.5. Industrie

Combien de personnes sont nécessaires à l'élaboration d'un programme dans une entreprise ?

Cela dépend de beaucoup de choses. Vous en aurez une idée plus précise en sortant de votre premier stage, et en écoutant les autres vous raconter le leur.

La commande "concaténer" est-elle réellement utile ou peut-on s'en passée généralement?

Elle est utile. Mais il y a aussi l’interpolation. MicroAlg n’a pas de tel mécanisme, mais ici par exemple avec Python :

>>> nom = "chers étudiants"
>>> "Bonjour %s !" % nom
'Bonjour chers étudiants !'
>>>

2.6. Spéciales

J'aimerais savoir quelle est la meilleure façon de programmer ?

Je réponds par une autre question : « Quelle est la meilleure façon de faire de la musique ? ».

Comment faire pour être "bon" en programmation? […]

Un camarade de Twitter a répondu :

  1. Lire le code des autres.
  2. Rendre son code testable.
  3. KISS.
  4. Ne jamais penser qu'on l'est.

Un autre camarade de Twitter ma proposé la réponse :
« Qu'est-ce qu'être "bon" en programmation ? ».

Une autre a répondu à la réponse de ce camarade : « Qu’est-ce qu’être "bon" ? ».

Je répondrais : Orthographe !!! Ponctuation !!! Majuscules !!! Parce dans les questions que j’ai reçues, ça n’a pas été globalement très bon de ce côté-ci…

3. Conclusion

Merci à toutes et tous de m’avoir posé vos questions. Continuez comme ça, vous avez été sérieux, actifs et curieux lors des premiers TPs.

Le mot de la fin :

C’est vraiment trop mignon un étudiant de première année en septembre.




Christophe Gragnic, le 30/11/2020, 10h48'08".






Page générée le 27/05/2021, 09h06'59" (source).
historique global