Le blog d’un libriste qui a la niaque !
La programmation doit-elle être enseignée différemment de nos jours ?
C’est une question qui m’est venue suite à une discussion avec un ami, qui me demandait comment j’avais appris.
Au moment de lui répondre, et pendant que je le faisais, je me suis demandé si la manière dont j’avais appris la programmation était encore adéquate de nos jours, si elle n’était pas devenue obsolète. En effet, de nos jours, tous les langages ou presque sont objets, et il s’agit dans la plupart des cas de prévoir (avec un peu de programmation procédurale il est vrai) des interactions entre objets.
Est-ce donc aussi important de continuer à faire accrocher l’élève à l’algorithmie alors que les objets sont omniprésents dans quaisment tous les langages ?
Prenons l’exemple des langages les plus utilisés dans le logiciel libre.
- C : Bon, pas de support des objets, mais des librairies … Dans ce cas il est très utile d’avoir eu des cours poussés d’algorithmie.
- C++ : Objets, classes, héritage simple ou multiple, templates …. Ici, avoir de bonnes bases d’algorithmie est utile mais avoir des connaissances aussi grandes en objet est encore plus utile pour bien structurer l’application.
- PHP : Ce langage s’axe vers l’objet de plus en plus, même si son côté permissif est peu séduisant. Je ferais, pour PHP4, le même commentaire que pour le C (le support des objets est primaire, utilisable, mais aussi peu performant…). Pour PHP5, par contre, c’est comme pour C++, même si l’algorithmie reste importante pour l’optimisation entre autres.
- Python/Ruby/Java (sisi) : Même combat ! Entièrement orientés objets, il y a toujours du procédural dans ces langages (donc besoin d’avoir des bases d’algorithmie, comme partout), il faut aussi s’y connaitre en programmation orientée objet, si l’on veut profiter de toute la puissance de ces langages. Java est un cas particulier (pas du tout permissif, syntaxe lourde) qui mérite toute une attention, car c’est un langage que j’aime beaucoup (comme les deux précédents, mais un peu plus).
Comme vous le voyez, la Programmation Orientée Objet (POO) est de plus en plus répandue, et pour le moment les formations d’apprentissage à la programmation préconisent encore de commencer par le procédural et l’algorithmie avant de faire de l’objet. Alors pourquoi ne pas introduire plus tôt la notion d’objet dans les formations ? En tenir compte dans l’enseignement de l’algorithmie et de la programmation séquentielle (== procédurale) peut être je pense un gain important.
Si l’on sépare l’apprentissage de ces deux choses, elles seront dans l’esprit de la personne des choses séparées. Il faut bien garder l’apprentissage de l’algorithmie, mais l’améliorer, ne pas l’axer que sur l’utilisation mais aussi sur les relations entre objets. Beaucoup de professeurs ont du le faire, ont du modifier leurs cours. Mais peut-être pas tous. Et vous ? Vous enseigneriez la programmation à quelqu’un de quelle manière ?
about 1 year ago
Petite réaction rapide : effectivement, et pas que pour la programmation, l’enseignement a un sacré train de retard sur la réalité industrielle de tous les jours.
Cependant, compte tenu de mon travail actuel, je dois te dire que la programmation orientée objets n’est pas omni-présente. Sur les applications embarquées dites de sécurité (ferroviaire, aéronautique), les normes recommandent très fortement de ne pas l’utiliser. En effet, en général, la programmation séquentielle est autrement plus prédictible que la POO, ce qui est le B-A-BA de la sécurité.
C’était juste une petite remarque au passage … mais je suis d’accord : il faut revoir le fonctionnement de l’école !
about 1 year ago
La programmation séquentielle est justement plus prédictible que l’objet à mon sens. Enfin, je ne pense pas que niveau sécurité il y ait une différence entre les deux.
Je pense que les habitudes sécurisantes comme ne jamais utiliser telles quelles des données extérieures, les échapper, enlever les choses malveillantes, ça, c’est le B-A-BA.