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

Tout ce qui concerne par exemple les outils de calcul numérique, de calcul formel ou de géométrie.
[participation réservée aux membres 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

Garulfo

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

Message non lu par Garulfo »

projetmbc a écrit :
Garulfo a écrit :

Code : Tout sélectionner

>>> class UneClasse:
...     """exemple d'une classe"""
...     champ1 = "abc"
...     def f (self):
...             return champ1
... 
>>> a = UneClasse()
>>> a.champ1
'abc'
>>> a.chmap1 = "bcd"
>>> 
Il n'y a pas de souci du point de vue de Python car il accepte l'ajout de nouveau attribut à une classe. Si je reprends ton code, on a :
[...]
C'est parce que Python l'autorise que c'est un soucis. J'enseigne l'informatique... et faire une faute de frappe aussi simple est une erreur permanente. Un langage comme python est un calvaire pour l'apprentissage. Le langage devrait punir se genre d'erreur et ne pas l'enterrer sous une possible volonté de l'étudiant.
projetmbc a écrit :
Garulfo a écrit :De plus le paradigme OO est loin d'être aussi intuitif qu'on veut le dire. Les étudiants connaissent par contre les mathématiques car ils en font depuis longtemps.
Python peut être utilisé soit via de la programmation OO, soit via la définition de fonctions. C'est au choix. On peut même mélanger les deux. Donc utiliser Python ne signifie pas faire de la POO !
Bien faire du python signifie faire de l'OO sinon mieux vaut prendre autre chose. L'OO est trop profondément ancré dans le langage pour utiliser python sans connaître la philosophie OO. C'est notamment le cas pour les messages d'erreur. C'est un point fondamental pour un étudiant. La lisibilité et l'expressivité d'un message d'erreur permet de retrouver ces erreurs : or c'est la base de l'enseignement en programmation.

Mélanger les deux paradigmes OO et procédural est l'idéal pour tromper l'étudiant. Là encore c'est l'expérience qui me dicte ça. Avant d'enseigner, je pensais comme toi.
Garulfo

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

Message non lu par Garulfo »

projetmbc a écrit :
Garulfo a écrit :En réponse à ceux qui pensent qu'on a pas besoin d'un langage de programmation pour apprendre la programmation, je dirais que pour être plombier, il faut avoir des outils pour essayer ce qu'on apprend...
Je modèrerais tes propos. Jettes un oeil sur ce superbe projet pour faire de l'informatique sans ordinateur : http://csunplugged.org/home. L'idée est de faire faire aux enfants une suite d'instructions simples dans un cadre concret pour leur présenter des algorithmes plus ou moins simples à faire si on doit réellement les programmer.
Un programme exécuté est la matérialisation d'un algorithme. Or on peut aussi matérialiser un algorithme concrètement. Par exemple un algo. de coloration d'un graphe peut très bien être testé à la main avec feuille et crayons de couleur.
Mais ce n'est que le haut de l'iceberg. Apprendre la programmation c'est aussi réaliser le projet. Sinon je suis d'avis à rester dans le domaine des mathématiques. Je ne dénigre pas les mathématiques : mes études et mon coeur est du côté des maths.
J'aimerais préciser aussi que j'apprécie beaucoup python... je ne le dénigre pas du tout. Mais l'enseignement ne fait pas parti de ses qualités pour moi. C'est un langage pour des gens qui s'y connaissent déjà : des hackers — dans le sens pur du terme — qui aiment explorer et qui sont suffisamment doués pour éviter des erreurs communes.
projetmbc a écrit : Pour les autres langages de programmation, il serait pas mal de donner, par exemple, une méthode pour calculer un PGCD. Histoire de voir ce qui change. En Python, on peut faire :

Code : Tout sélectionner

def pgcd(a,b):
    if a<b :
        a,b = b,a
    while(b<>0):
        a,b = b,a%b
    return a
J'espère qu'on est d'accord que le choix d'un langage ne peut reposer sur l'écriture de petite fonction... enfin, cela pourrait permettre de rejeter un langage mais pas l'accepter. Sinon, pour le sujet, disons en ocaml :

Code : Tout sélectionner

let rec pgcd a b = 
    if (a<b)              
    then pgcd b a
    else if (b=0)
         then a
         else pgcd b (a mod b) 
en Haskell

Code : Tout sélectionner

pgcd a 0 = a
pgcd a b | a < b = pgcd b a
pgcd a b = pgcd b (mod a b)
en Scheme

Code : Tout sélectionner

(define (pgcd a b) 
   (cond ([= b 0] a)
         ([< a b] (pgcd b a))
         (else (pgcd a (modulo a b)) )))
en C

Code : Tout sélectionner

long pgcd (a:long, b:long) 
{
  if (a < b)
  {
    int tmp ;
    tmp = b ;
    b = a ;
    a = tmp ;
  } else {
    while ( b != 0 )
    { 
      a = b ;
      b = a%b ;
    }
  }
  return a ;
}
Alors ? La version haskell n'est-elle pas d'une élégance à toute épreuve ? Haskell est par nature très mathématique : fonctionnel, paresseux, sans effet de bord... c'est un plaisir pour les mathématiciens. Le maîtriser est complexe je pense. Mais la base est très simple à saisir et les programmes simples à écrire pour un niveau secondaire.
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1982
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 »

Garulfo a écrit :La version haskell n'est-elle pas d'une élégance à toute épreuve ? Haskell est par nature très mathématique : fonctionnel, paresseux, sans effet de bord... c'est un plaisir pour les mathématiciens. Le maîtriser est complexe je pense. Mais la base est très simple à saisir et les programmes simples à écrire pour un niveau secondaire.
Effectivement mais pour débuter je trouve cela un peu technique. Par contre à utiliser cela doit être rapide. Encore faudrait-il voir comment sont gérés les modules, les fonctions, les classes,...etc. Sans parler des bibliothèques utilisables en haskell mais cela est en dehors de la discussion en cours.

Pour Python, je trouve que pour des algorithmes de base il est très bien adapté. Maintenant s'il on souhaite aller plus loin, il est vrai qu'il y a des petites astuces techniques à connaître (la pire pour un débutant français étant le problème de l'encodage du texte), mais cela reste "simple" contrairement au jargon à utiliser en C++ par exemple.
Arnaud
Modérateur général
Modérateur général
Messages : 7095
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne

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

Message non lu par Arnaud »

Chacun fait ses propres choix, c'est sûr ( et c'est aussi un problème d'ailleurs... ), mais je ne trouve pas la syntaxe haskell facile à aborder pour un lycéen.
L'indentation obligatoire, la non-obligation d'utiliser des accolades à outrance, une hiérarchie bien établie et des mots-clés clairs font que python est assez proche du pseudo-code. D'ailleurs python commence à faire sa place dans l'enseignement.

Bon, on peut en discuter pendant des heures je pense, on a tous nos préférences.
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
Tonn83
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 886
Inscription : mercredi 05 novembre 2008, 01:19
Localisation : Paris, France

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

Message non lu par Tonn83 »

Conseil pédagogique :

Pour montrer comment s'exécute un programme implanté, il est possible de prendre des volontaires et de les inviter chacun à effectuer une tache différente. Par exemple, pour reprendre l'exemple du pgcd :

Elève A : reçoit deux nombres entiers écrits a et b sur un papier. Il réécrit les nombres sur une nouvelle feuille de sorte que a<b et transmet le papier à l'élève B

Elève B : Quand il reçoit une feuille avec deux nombres a<b, si a=0 alors il écrit sur une feuille de papier le nombre b et transmet la nouvelle feuille à l'élève D. Sinon il transmet la feuille à l'élève B

Elève C : Quand il reçoit une feuille avec deux nombres a<b, il effectue la division euclidienne de b par a : a=bq+r, et écrit sur une nouvelle feuille de papier les deux nombres r<b. Il transmet la feuille à l'élève B

Elève D : Quand il reçoit une feuille avec un seul nombre, alors il annonce oralement le nombre écrit.

Chaque élève ignore les taches exécutées par les autres élèves. S'il n'arrive pas à exécuter sa tache, il annonce oralement "ERREUR SYSTEME". Les autres élèves fournissent, chacun leur tour, deux nombres entiers écrits sur une feuille, et reçoivent une réponse de l'élève D. Ils doivent deviner à quoi cette réponse correspond, sans connaitre les taches qui ont été exécutées. Par ailleurs, il y a une comparaison intéressante entre les algorithmes et la lecture des romans dont vous êtes le héros ... à ceci près que les algorithmes ne laissent aucune place aux choix.
Tonn83
projetmbc
Utilisateur chevronné
Utilisateur chevronné
Messages : 1982
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 »

C'est tout à fait dans l'esprit de ce projet : http://csunplugged.org/home . Je vais tester ton idée en introduction à l'algorithmique.
Garulfo

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

Message non lu par Garulfo »

Arnaud a écrit :Chacun fait ses propres choix, c'est sûr ( et c'est aussi un problème d'ailleurs... ), mais je ne trouve pas la syntaxe haskell facile à aborder pour un lycéen.
L'indentation obligatoire, la non-obligation d'utiliser des accolades à outrance, une hiérarchie bien établie et des mots-clés clairs font que python est assez proche du pseudo-code. D'ailleurs python commence à faire sa place dans l'enseignement.

Bon, on peut en discuter pendant des heures je pense, on a tous nos préférences.
Qu'est-ce tu reproches à la syntaxe pour des expressions simples ?
C'est très proche d'une définition mathématique. Ça le rend extrêmement accessible à un étudiant de lycée...
Et puis ce que tu cites comme avantages pour python l'est aussi pour haskell en fait. L'indentation est contraignante, il n'y a pas d'accolades à outrance, la hiérarchie est très bien établie, les mots-clés sont clairs...

Par expérience, les étudiants qui connaissent les maths et s'essayent à la programmation impératif ont plusieurs difficultés. Les boucles itératives ont leur lot de problème. Si, comme je le comprends, le but de ce qui est demandé en France est une initiation à la programmation dans un but d'illustration mathématique, alors Haskell est formidable. La paresse est particulièrement adaptée puisqu'elle revient au principe d'évaluation en math. L'absence d'effet de bord est un plus : déjà c'est la cause numéro 1 des erreurs introduites au niveau conceptuel et en plus on se rapproche des maths. Et on a enfin un langage (la famille fonctionnelle est ainsi normalement) qui donne au = son sens mathématique. J'aurais apprécié du concepteur de python un meilleur choix pour l'affectation que = . Ce choix m'a toujours outré. Si vous saviez le nombre de (2+x = x) que je rencontre chaque année !!!

Encore une fois, je ne crache pas sur python. Je dis juste qu'il n'est pas adapté pour l'enseignement d'un premier cours. C'est comme le C++ en fait : trop de liberté, trop de danger pour un débutant, trop de mauvais réflexe. Un étudiant qui commence à besoin de sévère barrière pour lui apprendre les bons réflexes. Pascal, ADA, ocaml, Haskell sont tous des bons choix.
Garulfo

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

Message non lu par Garulfo »

Voici une alternative pour la syntaxe du PGCD en haskell, qui utilise un produit cartésien au lieu d'une forme curryfiée

Code : Tout sélectionner

pgcd (a, 0) = a
pgcd (a, b) | a < b = pgcd (b, a)
pgcd (a, b) = pgcd (b, mod(a, b))
Encore une fois, c'est une définition on ne peut plus mathématique

$$\begin{cases}
pgcd(a,0) = a & \\
pgcd(a,b) = pgcd(b,a) & \text{ si } a < b \\
pgcd(a,b) = pgcd(b, modulo(a,b)) & \text{ sinon} \\
\end{cases}$$
oleanet
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 257
Inscription : dimanche 24 décembre 2006, 15:17

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

Message non lu par oleanet »

Garulfo a écrit :Voici une alternative pour la syntaxe du PGCD en haskell, qui utilise un produit cartésien au lieu d'une forme curryfiée

Code : Tout sélectionner

pgcd (a, 0) = a
pgcd (a, b) | a < b = pgcd (b, a)
pgcd (a, b) = pgcd (b, mod(a, b))
Encore une fois, c'est une définition on ne peut plus mathématique
$$\begin{cases}
pgcd(a,0) = a & \\
pgcd(a,b) = pgcd(b,a) & \text{ si } a < b \\
pgcd(a,b) = pgcd(b, modulo(a,b)) & \text{ sinon} \\
\end{cases}$$
Pfffff!
C'est ni plus ni moins qu'une récursivité comme tous les langages savent faire, à la syntaxe près. Et qui plus est, tous les (bons) programmeurs vous diront que la récursivité c'est qu'il y a de plus mauvais, à éviter à tout prix, sauf dans quelques rares cas où on ne sait pas faire autrement (et encore, il existe des techniques de dérécursification depuis très longtemps).

Franchement il faudrait des exemples plus convaincants! Cet exemple aurait plutôt tendance à me faire dire que ça ne sert à rien!
Garulfo

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

Message non lu par Garulfo »

oleanet a écrit :[...]
Pfffff!
C'est ni plus ni moins qu'une récursivité comme tous les langages savent faire, à la syntaxe près. Et qui plus est, tous les (bons) programmeurs vous diront que la récursivité c'est qu'il y a de plus mauvais, à éviter à tout prix, sauf dans quelques rares cas où on ne sait pas faire autrement (et encore, il existe des techniques de dérécursification depuis très longtemps).

Franchement il faudrait des exemples plus convaincants! Cet exemple aurait plutôt tendance à me faire dire que ça ne sert à rien!
Si on te dit ça, ce ne sont pas des bons programmeurs. Ce sont certainement des gens qui croient savoir et qui ne sont pas du tout au niveau en informatique. La récursivité n'est pas à éviter à tout prix. Tous les langages fonctionnels optimisent le code ci-dessus pour le rendre aussi efficace en mémoire qu'une boucle itérative, puisque c'est ce qu'est le processus résultant. Tous les bons développeurs devraient le savoir et donc développeur leurs fonctions récursives en tail-recursive. Je suppose que tous les cours d'assembleur et de compilation aborde ce sujet, sans compter tous les cours de programmation fonctionnel bien sûr. Le C, le C++, le python ne font pas ces optimisations.

Par contre, oui c'est purement syntaxique. Comme je l'ai dit dans un message précedent, on ne peut certainement pas choisir un langage pour l'enseignement uniquement sur ce genre d'exemples...

Merci de ne pas me prendre pour un débile et de ne pas balancer des propositions fausses. Je croyais avoir à faire à des gens avec un certain savoir-vivre ?
Arnaud
Modérateur général
Modérateur général
Messages : 7095
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne

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

Message non lu par Arnaud »

Garulfo a écrit : Encore une fois, je ne crache pas sur python. Je dis juste qu'il n'est pas adapté pour l'enseignement d'un premier cours. C'est comme le C++ en fait : trop de liberté, trop de danger pour un débutant, trop de mauvais réflexe. Un étudiant qui commence à besoin de sévère barrière pour lui apprendre les bons réflexes. Pascal, ADA, ocaml, Haskell sont tous des bons choix.
Je ne crache pas sur haskell non plus.
Après plusieurs années d'enseignement de la programmation et de l'informatique en général, étant passé par quelques langages ( dont pascal que j'ai vite écarté... ), python s'est avéré la plus rassurant pour les lycées, et c'est donc le choix dans lequel je me suis conforté ( également pour mon petit travail de développement privé ).
Le fait de pouvoir utiliser une console est un avantage indéniable.

Il y a des points qui me chagrinent un peu, certes, comme le manque de transparence quand au types de variables utilisées par exemple.
Mais il permet de gérer facilement un public ayant des niveaux très hétérogènes : au bout de quelques séances les meilleurs peuvent construire de véritables utilitaires avec interface graphique. Il y tant de modules disponibles que les possibilités sont énormes.

Est-ce que tu pourrais donner l'écriture du pgcd sous forme de boucle ?
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
oleanet
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 257
Inscription : dimanche 24 décembre 2006, 15:17

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

Message non lu par oleanet »

Garulfo a écrit : Si on te dit ça, ce ne sont pas des bons programmeurs. Ce sont certainement des gens qui croient savoir et qui ne sont pas du tout au niveau en informatique. La récursivité n'est pas à éviter à tout prix. Tous les langages fonctionnels optimisent le code ci-dessus pour le rendre aussi efficace en mémoire qu'une boucle itérative, ...
Fibo(n)
si n=0 ou n=1 alors 1 sinon Fibo(n-1)+F(n-2)
fin
Un grand classique, efficacité nulle.
Merci de ne pas me prendre pour un débile et de ne pas balancer des propositions fausses. Je croyais avoir à faire à des gens avec un certain savoir-vivre ?
Je ne prend personne pour un débile! Et vous n'avez pas le monopole des propositions vraies :D D'ailleurs y a pas besoin d'être débile pour dire n'importe quoi: Dieudonné (le matheux, pas le clown) disait de Grothendieck qu'il n'arriverait jamais à rien avec sa manie de généraliser à tout va...
Arnaud a écrit : Est-ce que tu pourrais donner l'écriture du pgcd sous forme de boucle ?
Algorithme d'Euclide.
Arnaud
Modérateur général
Modérateur général
Messages : 7095
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne

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

Message non lu par Arnaud »

oleanet a écrit :
Arnaud a écrit : Est-ce que tu pourrais donner l'écriture du pgcd sous forme de boucle ?
Algorithme d'Euclide.
Je voulais dire avec haskell...
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 »

oleanet a écrit :
Garulfo a écrit : Si on te dit ça, ce ne sont pas des bons programmeurs. Ce sont certainement des gens qui croient savoir et qui ne sont pas du tout au niveau en informatique. La récursivité n'est pas à éviter à tout prix. Tous les langages fonctionnels optimisent le code ci-dessus pour le rendre aussi efficace en mémoire qu'une boucle itérative, ...
Fibo(n)
si n=0 ou n=1 alors 1 sinon Fibo(n-1)+F(n-2)
fin
Un grand classique, efficacité nulle.
Oui mais ce n'est pas du tout le cas de ce que j'ai écrit.
Si tu es capable d'écrire fibonacci de manière itérative, tu es capable de l'écrire de manière tail-recursive.
C'est presque le même code. De manière général chaque fois que tu peux écrire un while, tu as de façon directe la forme récursive efficace.
C'est donc faux de dire qu'il ne faut jamais en écrire. Tous les bons informaticiens devraient savoir comment les utiliser et quand. Ce n'est pas toujours le cas à cause de légende qui tourne dans le genre de ce que tu viens de lancer gratuitement.

Finalement, l'écriture naïve que tu utilises ici est efficace en utilisant la mémoization.
Voici un fibonacci au moins aussi efficace que celui que tu obtiendras avec une boucle itérative :

Code : Tout sélectionner

fibonacci n =
   let fib 0 = 0
       fib 1 = 1
       fib n = fibonacci (n-2) + fibonacci (n-1)
   in  (map fib [0 ..] !! n)
Ok, il y a des points peu évidents à la lecture a priori, mais la définition interne de fibonacci est la naïve. Pourtant c'est optimisée en vitesse.

Et demandes à des étudiants qui commencent de trouver la forme itérative de fibonacci... on verra combien de temps ça va leur prendre.
oleanet a écrit :
Merci de ne pas me prendre pour un débile et de ne pas balancer des propositions fausses. Je croyais avoir à faire à des gens avec un certain savoir-vivre ?
Je ne prend personne pour un débile! Et vous n'avez pas le monopole des propositions vraies :D D'ailleurs y a pas besoin d'être débile pour dire n'importe quoi: Dieudonné (le matheux, pas le clown) disait de Grothendieck qu'il n'arriverait jamais à rien avec sa manie de généraliser à tout va...
Je suis content de ne pas être pris pour un débile alors. Ce qui est certain c'est qu'une proposition de la forme « tous les (bons) programmeurs savent que ... » tient du troll. De facto tu me plaçais dans les mauvais. Un « tous les bons programmeurs devraient savoir ... » seraient moins insultants. De plus, c'était faux.
oleanet a écrit :
Arnaud a écrit : Est-ce que tu pourrais donner l'écriture du pgcd sous forme de boucle ?
Algorithme d'Euclide.
L'algorithme d'Euclide original n'utilisait pas de boucle itérative. Ce n'est venu que lorsqu'on a inventé la programmation pas avant.
Pour répondre à Arnaud, ça se fait... mais Haskell cherche à éviter autant que possible les effets de bord et donc les affectations. Or pas de boucle itératives sans affectation. Ça reste efficace cependant. Bien plus que tous ce que tu obtiendras avec Python qui est plutôt lent. Mais je ne crois pas que les besoins de performances soient une priorité dans l'éducation (enfin détrompez moi si vous pensez le contraire). C'est contre-nature en Haskell d'utiliser les boucles itératives, de la même manière qu'il est contre-nature en Java ou en python de faire du procédural par exemple : c'est faisable, mais c'est une mauvaise idée.
Les langages ne sont pas tous destinés à tout faire de la même manière.

En ocaml, c'est plus imaginable... mais ça serait « moche » selon les standards du langage. Cela donnerait ça

Code : Tout sélectionner

let pgcd a b =
  let a = ref a
  and b = ref b
  in
    if (a < b)
    then let tmp = b in
         b := !a ;
         a := !tmp
    else () ;
    while (!b <> 0) do
        let tmp = a in
            a := !b ;
            b := !tmp mod !b
    done ;
    !a
On retrouve ici l'usage explicite de pointeur (les opérateurs ref et !) C'est moche quoi -_-
Garulfo

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

Message non lu par Garulfo »

Arnaud a écrit :[...]
Le fait de pouvoir utiliser une console est un avantage indéniable.

Il y a des points qui me chagrinent un peu, certes, comme le manque de transparence quand au types de variables utilisées par exemple.
Mais il permet de gérer facilement un public ayant des niveaux très hétérogènes : au bout de quelques séances les meilleurs peuvent construire de véritables utilitaires avec interface graphique. Il y tant de modules disponibles que les possibilités sont énormes.

Est-ce que tu pourrais donner l'écriture du pgcd sous forme de boucle ?
La console (langage interprété dans une boucle REP) est vraiment agréable je trouve.
Pour Haskell il y a hugs qui fonctionne ainsi... mais je n'ai jamais apprécié pleinement l'interface.
Pour Scheme, Dr Scheme marche ainsi.
Pour ocaml, il y a aussi un interpréteur... mais il lui manque des petites fonctions sympa qu'on retrouve dans les autres.

Si on ne vise pas que les mathématiques et qu'on s'intéresse à introduire du multimédia, il existe deux formidables outils développés dans des universités américaines : Scratch et Alice. Je préfère Scratch pour la facilité d'accés et le côté fun en moins de deux minutes : http://scratch.mit.edu/
Alice est un peu plus sérieux, tout en restant un superbe outil : http://www.alice.org/

Le choix d'un langage est effectivement dépendant des besoins, mais aussi de la formation de l'enseignant ;) Ainsi, si le prof maîtrise pleinement Python, il me semble compréhensible que ce soit son choix. Mais ultimement pour les matheux, Haskell est parfait. Pour les futures informaticiens, c'est le moment de sortir du carcan Java/C/C++ de manière réel et d'apprendre qu'il y a une vie en dehors de l'OO !
Arnaud
Modérateur général
Modérateur général
Messages : 7095
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne

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

Message non lu par Arnaud »

Effectivement, la rapidité d'exécution est loin d'être une priorité.
Concernant la formation, j'ai été formé avec caml et pascal lorsque j'étais étudiant, et évidemment un peu de maple & co lors de la prépa agreg.

Le reste je l'ai appris sur le tas.

Si tu enseignes haskell, c'est que tu dois avoir des cours/exercices à ce sujet sous forme numérique.
Serait-il possible d'y jeter un coup d'oeil ?
Le but est simplement d'en savoir un peu plus sur haskell, rien d'autre ;)
Arnaud
Un peu d'info - Pyromaths - Pas d'aide en MP (non plus)
oleanet
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 257
Inscription : dimanche 24 décembre 2006, 15:17

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

Message non lu par oleanet »

Garulfo a écrit : Tous les langages fonctionnels optimisent le code ci-dessus pour le rendre aussi efficace en mémoire qu'une boucle itérative, puisque c'est ce qu'est le processus résultant.
Garulfo a écrit : Si tu es capable d'écrire fibonacci de manière itérative, tu es capable de l'écrire de manière tail-recursive.
C'est presque le même code. De manière général chaque fois que tu peux écrire un while, tu as de façon directe la forme récursive efficace.
Que le vouliez ou non, vous confirmez ce que je disais dès le départ. La récursivité est une certes une forme d'écriture naturelle et élégante, mais elle est inéfficace telle quelle, d'où la nécessité d'optimiser en interne (voire dérécursifier pour mettre en itératif) ce que les langages modernes font apparemment d'après ce que vous dites.
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. »

@Arnaud : pourquoi avoir écarté Pascal ?

Je pensais au contraire que ce langage réalisait un des meilleurs compromis entre rigueur syntaxique et éventail de possibilités programmatives (boucles, récursivité, usage des pointeurs au moins pour une initiation, etc.).

Alors ?
Arnaud
Modérateur général
Modérateur général
Messages : 7095
Inscription : lundi 28 août 2006, 13:18
Localisation : Allemagne

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

Message non lu par Arnaud »

Je l'ai dit plus haut : les meilleurs en ont fait le tour très rapidement et vont s'ennuyer.
Autant bénéficier de modules et d'extensions dans tous les domaines et permettre de travailler avec un langage récent et d'actualité.
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. »

OK, j'avais raté cet argument.

Cela dit, je ne me résigne pas encore à le rejeter définitivement, en ce sens qu'il fait prendre d'assez bonnes habitudes à un débutant. Par après, on peut espérer que quelqu'un qui a appris en Pascal gardera ces bonnes habitudes avec d'autres langages, tout en s'adaptant aux spécificités de ceux-ci.