Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Tout ce qui concerne notamment les outils de calcul numérique, de calcul formel ou de géométrie.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.

Quel langage pour l'enseignement de la programmation ?

C, C++, C#
2
12%
Java
0
Aucun vote
Php
3
18%
Basic, Visual Basic
1
6%
Python
5
29%
XCas
2
12%
Linotte
0
Aucun vote
Pascal, Delphi
0
Aucun vote
Caml
2
12%
Scheme
2
12%
Lisp
0
Aucun vote
 
Nombre total de votes : 17

gigiair
Utilisateur chevronné
Utilisateur chevronné
Messages : 2804
Inscription : samedi 08 juillet 2006, 20:56
Localisation : Saint Bonnet Elvert

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par gigiair »

Pour moi, tout enseignement de la l'algorithmique devrait se baser sur lisp, plus précisément sur Scheme. Ce n'est pas moi qui ait inventé cette idée, c'est le langage d'initiation du MIT.
La syntaxe est très simple et ça permet de se concentrer tout de suite sur les vrais problèmes de conception de très gros programmes. Il permet tout de suite de prendre de bonnes habitudes et de pratiquer l'analyse descendante. Quelqu'un qui aura été initié à l'informatique à partir de langage de type Pascal perd beaucoup de ses chances de devenir un jour un programmeur innovant et productif. Or, dans cette profession, si on n'est pas innovant, on ne fait pas une grande carrière.
(Je ne vote pas, évidemment. À la limite je voterai pour Caml pour ce que j'en ai entendu dire, mais je ne connais pas). Scheme est non seulement un excellent langage d'initiation, mais c'est aussi un langage de développement utilisé par de grands projets.( lui ou les différents dialectes lisp : clisp elisp, guile, etc.)
JJR.
LaTeXien migrateur.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2238
Inscription : samedi 29 décembre 2007, 00:58

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par projetmbc »

J'ai mis Scheme et Lisp dans la liste mais en bon boulet :chair: j'ai effacé les votes précédents, donc désolé pour ceux qui avaient voté. :oops:
Arnaud
Modérateur honoraire
Modérateur honoraire
Messages : 7097
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne
Contact :

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Arnaud »

Bon voilà, allez, tout le monde recommence. Je vais attendre un petit mois et parler un peu de javascript tiens :D
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
François D.
Utilisateur chevronné
Utilisateur chevronné
Messages : 1367
Inscription : dimanche 30 juillet 2006, 10:04
Localisation : Alsace

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par François D. »

:mrgreen: Si rien n'est cadré, on va finir par avoir presque autant de langages que de profs chargés de cet enseignement :twisted: ...

Plus sérieusement, si on raisonnait dans l'autre sens : définissons un « cahier des charges » du langage idéal pour cette initiaition à l'algorithmique, et voyons ensuite lequel s'en rapproche le plus :) .
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2238
Inscription : samedi 29 décembre 2007, 00:58

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par projetmbc »

François D. a écrit :Plus sérieusement, si on raisonnait dans l'autre sens : définissons un « cahier des charges » du langage idéal pour cette initiaition à l'algorithmique, et voyons ensuite lequel s'en rapproche le plus :) .
Pas bête du tout. Je me suis un peu posé la question et j'attends de voir avec mes secondes ce qui va être utile et manquant. Mais c'est une bonne question.

Pour commencer, je dirais qu'il faudrait avoir différents signes EGAL :
  • := pour définir une variable
  • == pour tester une égalité entre deux quantités
  • <- pour changer la valeur d'une variable (pour éviter des choses comme a=a+2)
Arnaud
Modérateur honoraire
Modérateur honoraire
Messages : 7097
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne
Contact :

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Arnaud »

François D. a écrit ::mrgreen: Si rien n'est cadré, on va finir par avoir presque autant de langages que de profs chargés de cet enseignement :twisted: ...
Est ce qu'il est précisé quelque part que l'enseignement doit absolument utiliser un ordinateur ?
Je ne crois pas.
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 2238
Inscription : samedi 29 décembre 2007, 00:58

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par projetmbc »

Deuxième bonne remarque. Pour ma part mon 1er TD d'algorithmique a été faite sans ordinateur...
Garulfo

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Garulfo »

projetmbc a écrit :J'ai mis Scheme et Lisp dans la liste mais en bon boulet :chair: j'ai effacé les votes précédents, donc désolé pour ceux qui avaient voté. :oops:
Ah bin non... ce n'est pas un problème... j'adore le Scheme. Je l'utilise pour l'instant pour les mathématiciens du secondaire qui veulent un cours d'initiation à l'informatique. Je ne peux donc que voter pour lui ^_^ J'aurais hésité avec Haskell...

Encore une fois, je pense que le choix d'un langage dépend d'un nombre important de paramètre : formation de l'enseignant; disponibilité d'une ressource; disponibilité de documentation de valeur en français (puisque l'enseignement est en France); public cible (dans ce cas, étudiants et étudiantes en science au secondaire); le but; le contenu pédagogique prévu... il me semble vraiment qu'Haskell colle dans le cadre à une exception près : le contenu d'une documentation en français. Scheme pêche par la liberté d'action du langage. Python est de même, mais en pire encore. Au moins Scheme offre des outils pédagogiques pour un cadre académique d'une formidable efficacité, ce qui corrige partiellement le problème. Mais il me semble que c'est plus un langage pour futur informaticien, qu'un langage pour étudiants et étudiantes au secondaire en voie de découverte. Python est lui un langage pour informaticien averti et qui savent déjà développer avec une grande discipline; pas du tout un langage de découverte.

J'ai connu l'informatique avec le Logo à 11 ans. Mais il est plus là pour donner du plaisir et amener à l'exploration que pour développer de petits algorithmes...

Je reste sur l'idée d'Haskell ^_^
Garulfo

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Garulfo »

gigiair a écrit :Pour moi, tout enseignement de la l'algorithmique devrait se baser sur lisp, plus précisément sur Scheme. Ce n'est pas moi qui ait inventé cette idée, c'est le langage d'initiation du MIT.
La syntaxe est très simple et ça permet de se concentrer tout de suite sur les vrais problèmes de conception de très gros programmes. Il permet tout de suite de prendre de bonnes habitudes et de pratiquer l'analyse descendante. Quelqu'un qui aura été initié à l'informatique à partir de langage de type Pascal perd beaucoup de ses chances de devenir un jour un programmeur innovant et productif. Or, dans cette profession, si on n'est pas innovant, on ne fait pas une grande carrière.
(Je ne vote pas, évidemment. À la limite je voterai pour Caml pour ce que j'en ai entendu dire, mais je ne connais pas). Scheme est non seulement un excellent langage d'initiation, mais c'est aussi un langage de développement utilisé par de grands projets.( lui ou les différents dialectes lisp : clisp elisp, guile, etc.)
Ce n'est plus le langage d'initiation du MIT... l'ère Sussman/Abelson est finie -_- Hélas selon moi.
Mais bon reste que les étudiants du MIT étaient universitaires et étaient tous (ou presque) très bon. Ils sont à comparer avec des très bons étudiants de prépa M' ou P' (désolé si les noms ont changé) et non des étudiants de secondaire... pourtant Dieu sait que j'adore le Scheme et ne manque pas une possibilité de le défendre.
Garulfo

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Garulfo »

projetmbc a écrit :
  • := pour définir une variable
  • == pour tester une égalité entre deux quantités
  • <- pour changer la valeur d'une variable (pour éviter des choses comme a=a+2)
Pourquoi == pour l'égalité ? À priori ça devrait être uniquement =... comme c'est le cas en math. Réservons == pour les égalités réelles de pointeur (et donc évitons le dans un enseignement de base).
Arnaud
Modérateur honoraire
Modérateur honoraire
Messages : 7097
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne
Contact :

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Arnaud »

Garulfo a écrit :Python est lui un langage pour informaticien averti et qui savent déjà développer avec une grande discipline; pas du tout un langage de découverte.
Correction : tu penses que python n'est pas....etc...et il y en a beaucoup d'autres qui pensent le contraire, dont moi.
Garulfo a écrit :À priori ça devrait être uniquement =... comme c'est le cas en math.
C'est sûr que c'est bien pratique d'homogénéiser les notations, mais les maths et l'informatique, ce n'est pas la même chose.
De même, dans différentes langues, un même caractère peut avoir des sonorités très différentes.
Alors pourquoi faudrait-il s'imposer la même notation ?
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
Garulfo

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Garulfo »

Arnaud a écrit :
Garulfo a écrit :Python est lui un langage pour informaticien averti et qui savent déjà développer avec une grande discipline; pas du tout un langage de découverte.
Correction : tu penses que python n'est pas....etc...et il y en a beaucoup d'autres qui pensent le contraire, dont moi.
C'est vrai que c'est mon avis. Mais c'était sous-entendu dans mon intervention ;)
De plus, je ne suis pas seul à penser ça. L'erreur que j'ai montré sur ce forum convainc la grande majorité des profs en informatique que ce n'est pas un langage pour débutant. En fait, je n'ai jamais vu aucun professeur d'informatique qui me disent le contraire en voyant le problème mentionné.

Python part du principe qu'on sait développer correctement. D'où la possibilité de faire du hot plug par exemple. Formidable outil pour un hacker (dans le bon sens du terme) mais terrible fatalité pour un débutant. Bien sûr pour des raisons « commerciales » il faut que Python soit enseigné le plus tôt... et de manière la plus répandue possible. C'est pourquoi beaucoup le présente comme un langage de débutant y compris van Rossum. Il est dommage aussi que dans Python les abstractions fonctionnelles (les $\lambda$) ne soient pas mieux faites. Je crois que les fermetures ne sont toujours pas implémenté... faudrait que je reregarde. En tout cas, ça ça ne serait pas une raison pour ne pas l'adopter je l'admet.
Arnaud a écrit :
Garulfo a écrit :À priori ça devrait être uniquement =... comme c'est le cas en math.
C'est sûr que c'est bien pratique d'homogénéiser les notations, mais les maths et l'informatique, ce n'est pas la même chose.
De même, dans différentes langues, un même caractère peut avoir des sonorités très différentes.
Alors pourquoi faudrait-il s'imposer la même notation ?
Parce que le « = » dont je parle est le même qu'en mathématique : un prédicat dénotant une relation symétrique, réflexive, transitive etc. Il est d'ailleurs implémenté en ocaml/haskell/scheme/small talk. On évalue chaque opérande et on vérifie que c'est le même. C'est très différent du « == » qui vérifie que le pointeur est le même. Donc « == » et « := » sont bien distincts du « = » qui a le même sens qu'en math.
Garulfo

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Garulfo »

Tiens, pour ne pas paraître être uniquement une mauvaise langue, je vais me faire le défenseur de Python un instant :
— de la très très nombreuses documentations de qualité, y compris en français
— un duck typing somme toute efficace qui évite de trop se préoccuper du typage
— des bibliothèques abondantes et en général bien faite
— peu de contrainte, ce qui permet une approche par prototypage rapide
— une philosophie OO bien mieux intégré que Java
— une syntaxe légère
— l'indentation obligatoire
— les itérateurs (foreach)

Tout ceci est intéressant pour un enseignement à des débutants.

Par rapport à Scheme, je dirais que les trois points différents sont l'OO, la présence de bibliothèques et l'indentation... est-ce un problème pour un enseignement au secondaire ? Pour les deux premiers, je ne crois pas. Pour le troisième ça pourrait l'être. Mais un IDE de qualité (Dr Scheme) résoud adéquatement ce problème. Le reste se ressemble beaucoup, avec un meilleur système de macro et bien sûr des fermetures dans Scheme... mais ce c'est pas non plus un plus pour l'enseignement au secondaire (je me vois mal expliqué un syntax-case à des lycéens -_-)
Arnaud
Modérateur honoraire
Modérateur honoraire
Messages : 7097
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne
Contact :

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Arnaud »

Je me suis permis la correction ci-dessus pour éviter qu'un avis devienne une vérité absolue ;)

Les points délicats dont tu fais mention ( POO, fonction lambda, ... ) à propos du langage python sont des points que je n'aborde pas au lycée, et donc ne posent pas les soucis que tu soulèves.
Les premiers éléments à maitriser sont l'affection, l'affichage des données, les types de variables ( int, float, listes, strings ), les structures conditionnelles et répétitives ( je ne fais pas le "case" en général, mais ça passe bien pour ceux que ça intéressent ), puis les fonctions et un peu d'interface graphique.
Je suppose que tu as déjà jeté un coup d'oeil à mes "cours" ( toujours en travaux, hein ! ;) ).
Cela constitue déjà un bon panel de problèmes à faire.

Et le ( mon ) cours d'informatique ne se borne pas à cela, puisqu'on fait des généralités sur les OS, un peu de réseaux, du hardware, de la programmation web. Donc on ne s'ennuie pas.
Garulfo a écrit : Par rapport à Scheme, je dirais que les trois points différents sont l'OO, la présence de bibliothèques et l'indentation... est-ce un problème pour un enseignement au secondaire ?
Voilà, là tu poses la bonne question : selon les niveaux d'enseignement, le choix du langage se fait différemment, et donc il m'est tout à fait clair que python ne convienne pas à toutes les situations.
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
Garulfo

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Garulfo »

Arnaud a écrit :Je me suis permis la correction ci-dessus pour éviter qu'un avis devienne une vérité absolue ;)
Tu as raison. Je ne voulais pas sous-entendre autre chose.
Arnaud a écrit : Les points délicats dont tu fais mention ( POO, fonction lambda, ... ) à propos du langage python sont des points que je n'aborde pas au lycée, et donc ne posent pas les soucis que tu soulèves. [...] selon les niveaux d'enseignement, le choix du langage se fait différemment, et donc il m'est tout à fait clair que python ne convienne pas à toutes les situations.
Je pense que le choix d'un langage ne vient qu'après une longue liste d'exigence pour le cours. C'est les exigences et les ressources qui permettent de sélectionner le langage. J'ai un avantage de ce côté : j'en connais et en teste beaucoup puisque cela va avec mes fonctions. Cependant, je ne vois pas comment monter un cours et être pédagogue lorsqu'on ne connait que peu le langage. C'est pourquoi je pense qu'effectivement Python est la solution pour tout ceux qui s'y sentent à l'aise.
Garulfo

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par Garulfo »

J'ai déjà fait acte du fait que je ne crois pas que Python soit un bon candidat pour une initiation à l'informatique (c'est comme commencer à enseigner l'analyse avec de la topologie abstraite -_-)
Cependant pour ceux et celles que ça intéresse, un de mes collèges a fait ce petit cours pour scientifique et ingénieur : http://software-carpentry.org/
More software carpentry than software engineering comme il le stipule ^_^ Mais il est bien fait et son objectif est clair.
loïc67

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par loïc67 »

Bonjour à tous et bonne année.
Petite question de néophyte, quelle est l'idée qui a guidé les personnes qui ont introduit l'algo au lycée?
Est-ce pour apprendre à programmer ou est-ce pour apprendre les élèves à mettre en place des raisonnements structurés?
Parce que si c'est pour la deuxième raison, il est claire qu'il serait peut-être mieux de ne pas choisir de langage particulier.
d'avance merci.
rebouxo
Modérateur honoraire
Modérateur honoraire
Messages : 6962
Inscription : mercredi 15 février 2006, 13:18
Localisation : le havre
Contact :

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par rebouxo »

loïc67 a écrit :Bonjour à tous et bonne année.
Petite question de néophyte, quelle est l'idée qui a guidé les personnes qui ont introduit l'algo au lycée?
Si seulement ce genres de questions étaient débattues un peu plus clairement...
loïc67 a écrit : Est-ce pour apprendre à programmer ou est-ce pour apprendre les élèves à mettre en place des raisonnements structurés?
Parce que si c'est pour la deuxième raison, il est claire qu'il serait peut-être mieux de ne pas choisir de langage particulier.
d'avance merci.
Bon on enlève le "apprendre à programmer", cela me semble clair que ce n'est pas LE but de l'algorithmique. Je n'ai pas l'impression que cela ne soit QUE pour structurer son raisonnement (dans ce cas là, la géométrie, le latin ou les échecs sont certainement aussi efficaces). Il me semble que l'idée principale est que l'algorithmique est une aide précieuse pour résoudre des problèmes (ça c'est LA Grande Idée du programme de seconde, d'après mon IPR). Sauf que : pour résoudre des problèmes il faut mettre en place des raisonnements structurés et il faut savoir programmé un p'tit chouia quand même. Donc, la réponse est moins binaire que ta question. D'autant plus qu'il me semble qu'il y a un problème de temps (sauf à penser que 80 % d'une classe d'âge au niveau du master 2 :mrgreen: ) et d'efficacité. Donc si au passage une bonne partie des élèves (par exemple ceux qui se destinent à faire des sciences) connaissaient un peu la programmation, cela ne serait pas inutile, il me semble. Et dans ce cas là, je pense qu'il faut que le langage appris soit un langage qui soit vraiment utilisé (donc pas algobox, rien que de l'écrire et j'ai de l'eczéma).

Personnellement, je pense que l'on peut envisager qu'une partie des maths peut se traiter dans les termes de problèmes à résoudre, et des problèmes assez concrets (ou qui devraient l'être) : au hasard de la mécanique, de la topographie, du dessin industriel, des problèmes de finances, de stats, d'élection (il y a plein de problème assez sympa avec les élections, pas trop compliqués conceptuellement c'est souvent de la proportionnalité et qui se traitent bien avec l'info, parce que les nombres sont rapidement grands)... Bref ce qu'au XVIIIe siècle on appelle les maths mixtes (et non appliquées, vocabulaire dévalorisant qui laisse supposer que ce n'est plus un problème une fois que la théorie mathématique fonctionne).

Parce que les mathématiques c'est aussi utile. Est-ce le seul point de vue sur les maths : non ! Il ne faudrait pas évacuer que les maths ce n'est plus de la physique (au XVIIIe siècle on n'est pas matheux ou physicien, on est géomètre, celui qui mesure la Terre). Donc il faut aussi parler des maths pures : géométrie et arithmétique à la Euclide, au moins comme élément de culture. Mais aussi en étudiant et en faisant des démonstrations. Cela marquera au moins les limites des réponses obtenues avec l'informatique.

Olivier
A line is a point that went for a walk. Paul Klee.
Par solidarité, pas de MP.
loïc67

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par loïc67 »

Je me suis permis de poser cette question parce que je viens de me remettre au développement et j'ai vu à quel point l'algorithmique ne suffisait pas pour programmer correctement. Voici quelques exemples :

1. Une notion purement informatique comme par exemple les passages des paramètres dans un appel de fonction est différente d'un langage à l'autre. De plus même au sein de la communauté des programmeur, les confusions sont innombrables. Pour ma part, j'ai du y passer des heures et sans le soutien d'ami expert en informatique, je me demande si j'y serais encore à l'heure qu'il est.

2. Une suite d'affectations comme

Code : Tout sélectionner

a=1
b=2
a=b
b = 3
et ensuite question que vaut a?
Et bien cela dépend du langage utilisé et pour certains langages cela dépend du type d'objet que représentent les deux variables au sein d'un même language.

3. Un autre exemple pour différentier l'algo de son implémentation, immaginons qu'à un moment dans un algo, l'élève doive comprendre qu'il doit inverser les paramètres, la plupart du temps une bonne partie des élèves implémentent de cette inversion de la façon suivante :

Code : Tout sélectionner

a=b
b=a
ce qui malheureusement n'inverse pas le contenu des variables mais fait que a et b valent la même chose (l'ancienne valeur de b).
Or cette erreur est très fréquente chez les personnes qui débutent. Bref, un élève qui maitriserait parfaitement l'algorithme avec un papier et un crayon peut tout-à-fait écrire un code faux qu'il croit équivalent. Donc, qu'est-ce qu'on va évaluer si l'on se fie au code (qui ne marche pas)?

De plus, Il ne faut pas prendre en compte uniquement le langage mais également regarder quels genre d'outils et surtout quelles fonctionnalités ces outils nous proposent. En ce qui me concerne, j'avais choisi (comme beaucoup d'entre vous) le langage Python pour commencer à programmer en 2002. Or les outils de développement ainsi que la traduction de la documentation de l'époque n'étaient vraiment prêts (quoi qu'en disaient les aficionados de l'époque). Donc, j'ai énormément perdu de temps avec ce langage alors que je lisais ci ou là qu'il était merveilleux etc.

C'est donc pour toutes ces raisons (et bien d'autres) que je me demande si la méthode papier crayon n'est pas à recommander sauf bien sur pour les élèves qui veulent s'orienter vers des études où ils devront programmer un jour où l'autre.

Sinon, pour les inconditionnels de la programmation, voici deux petits exemples dans un langage qui a toutes les qualités de python avec plein d'autres avantages (ceux de java) que je vous donnerais une autre fois car il est bien tard.

Code : Tout sélectionner

def pgcd(a,b) {

    while (b != 0) {
        tmp = a % b
        a = b
        b = tmp
    }
    return a
}
    
def pgcdRec(a,b) {

    if (b == 0) {
        res = a
    } else {
        pgcdRec(b, a % b)
    }
    return res
}
Dernière modification par loïc67 le vendredi 15 janvier 2010, 18:01, modifié 2 fois.
loïc67

Re: Quel(s) langage(s) utiliserez-vous pour l'algo. au Lycée ?

Message non lu par loïc67 »

En ce qui concerne le langage Python,
Garulfo a écrit : — peu de contrainte, ce qui permet une approche par prototypage rapide
— une philosophie OO bien mieux intégré que Java
Peux-tu déveleopper ces deux points s'il te plait.
D'avance merci.
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message