A propos du choix du langage de programmation : Différence entre versions

De Sciencinfolycee
Aller à : navigation, rechercher
m (Page créée avec « = A propos du choix du langage de programmation = «'''Quel[s] langage[s] les profs vont utiliser pour les TP de programmation ?'''» voila peut-être la 1ère et la plus fr... »)
 
m
 
(18 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
= A propos du choix du langage de programmation =
 
= A propos du choix du langage de programmation =
  
«'''Quel[s] langage[s] les profs vont utiliser pour les TP de programmation ?'''» voila peut-être la 1ère et la plus fréquente question que nous nous posons, voir même de  manière "passionnelle", et le sujet qui alimente les plus longs débats.
+
« '''Quel[s] langage[s] les profs vont utiliser pour les TP de programmation ?''' » voilà peut-être la première et la plus fréquente question que nous nous posons y compris sur notre [http://science-info-lycee.fr/le-forum/?mingleforumaction=viewtopic&t=10 forum] et c'est un sujet qui peut alimenter de longs débats (à juste titre).
  
Paradoxalement, il y une réponse assez simple à cette question: «Nous devons rester agnostique et choisir un langage «[http://fr.wikipedia.org/wiki//Programmation_impérative impétarif
+
Paradoxalement, il y une réponse assez simple à cette question: <br>« '''Nous pouvons rester ''agnostiques'' (position de ceux qui affirment ne pas savoir quelle est la bonne réponse) mais choisir un langage standard et ouvert, bien supporté et avec une base [http://fr.wikipedia.org/wiki//Programmation_impérative impérative]''' »:
 +
* Choisir un langage avec une base impérative, c'est à dire avec les [http://interstices.info/ingredients-algorithmes ingrédients usuels des algorithmes] (séquence d'instruction, instruction conditionnelle, affectation de variables et boucles).
 +
* Choisir un langage standard, ouvert et bien supporté (ex: [http://fr.wikipedia.org/wiki/Java Java] ou [http://fr.wikipedia.org/wiki/Python_%28langage%29 Python] ou [http://fr.wikipedia.org/wiki/Ruby Ruby] ou encore [http://fr.wikipedia.org/wiki/Javascript JavaScript]), quitte à utiliser une version simplifiée de ces langages pour démarrer.
 +
* Donner aux élèves quelque chose qui pourra leur servir par la suite (études, univers professionnels, loisirs, etc.).
  
 +
Un autre point clé est '''Avec quel-le logiciel/plateforme travailler ?''': Au delà du langage c'est bien évidemment le choix de l'outil qui permet de l'utiliser qui fait levier. Tandis que Python vient avec son utilitaire de développement et que [http://javascool.gforge.inria.fr Java'sCool] permet de programmer en Java, la plateforme [http://www.france-ioi.org/ IOI] est un bel exemple d'agnosticisme (mais nécessite de ''tout'' faire en ligne). Le confort, cela compte énormément !
  
http://science-info-lycee.fr/le-forum/?mingleforumaction=viewtopic&t=10
+
Que faut-il éviter alors au niveau de l'ISN ?
 +
# Les langages non impératifs, par exemple les [http://fr.wikipedia.org/wiki/Programmation_fonctionnelle langages fonctionnels] (LISP, Scheme, CAML etc.) qui correspondent à des abstractions vraiment fondamentales, mais scientifiquement différentes des fondements algorithmiques qui sont à faire partager.
 +
# D'autres outils logiciels (calculateurs symboliques, calculettes programmables, environnement graphiques de programmation, etc.) qui certes permettent de programmer et d'apprendre à programmer mais
 +
#*&ndash; comportent des bizarreries (ex: la sémantique de l'affectation n'est pas la même dans un calculateur symbolique puisqu'il a d'autres fins; une affectation du genre <tt>x:=x+1</tt> produit des effets assez étranges suivant le contexte, ce qui est un obstacle conceptuel important pour les débutants).
 +
#*&ndash; ne permettent pas de relier la notion de ''langage'' à celle de ''programmation'' (ex: dans le cas d'outils de programmation graphique, la syntaxe est "gommée" donc ne peut être appréhendée)
 +
# Les langages "exotiques" et les "bricolages géniaux" : on va trouver sur le Web beaucoup de plateformes artisanales qui n'ont que de petites communautés d'utilisateurs et risquent de ne pas survivre, donc risquent de faire perdre beaucoup de temps.
 +
 
 +
Voir aussi :
 +
* [[Pour préparer, illustrer des cours :Langages et programmation]]
 +
 
 +
En savoir plus:
 +
* [http://www.canal-u.tv/producteurs/fuscia/dossier_programmes/science_info_lycee_profs_conferences_de_formation_des_professeurs_du_secondaire_en_science_informatique/premiers_principes_des_langages_de_programmation Premiers principes des langages de programmation, Gilles Dowek]
 +
* [http://www.epi.asso.fr/revue/itic23som.htm Algorithmique, programmation, langages] catalogues de belles ressources sur le sujet.

Version actuelle datée du 11 février 2012 à 15:45

A propos du choix du langage de programmation

« Quel[s] langage[s] les profs vont utiliser pour les TP de programmation ? » voilà peut-être la première et la plus fréquente question que nous nous posons y compris sur notre forum et c'est un sujet qui peut alimenter de longs débats (à juste titre).

Paradoxalement, il y une réponse assez simple à cette question:
« Nous pouvons rester agnostiques (position de ceux qui affirment ne pas savoir quelle est la bonne réponse) mais choisir un langage standard et ouvert, bien supporté et avec une base impérative »:

  • Choisir un langage avec une base impérative, c'est à dire avec les ingrédients usuels des algorithmes (séquence d'instruction, instruction conditionnelle, affectation de variables et boucles).
  • Choisir un langage standard, ouvert et bien supporté (ex: Java ou Python ou Ruby ou encore JavaScript), quitte à utiliser une version simplifiée de ces langages pour démarrer.
  • Donner aux élèves quelque chose qui pourra leur servir par la suite (études, univers professionnels, loisirs, etc.).

Un autre point clé est Avec quel-le logiciel/plateforme travailler ?: Au delà du langage c'est bien évidemment le choix de l'outil qui permet de l'utiliser qui fait levier. Tandis que Python vient avec son utilitaire de développement et que Java'sCool permet de programmer en Java, la plateforme IOI est un bel exemple d'agnosticisme (mais nécessite de tout faire en ligne). Le confort, cela compte énormément !

Que faut-il éviter alors au niveau de l'ISN ?

  1. Les langages non impératifs, par exemple les langages fonctionnels (LISP, Scheme, CAML etc.) qui correspondent à des abstractions vraiment fondamentales, mais scientifiquement différentes des fondements algorithmiques qui sont à faire partager.
  2. D'autres outils logiciels (calculateurs symboliques, calculettes programmables, environnement graphiques de programmation, etc.) qui certes permettent de programmer et d'apprendre à programmer mais
    • – comportent des bizarreries (ex: la sémantique de l'affectation n'est pas la même dans un calculateur symbolique puisqu'il a d'autres fins; une affectation du genre x:=x+1 produit des effets assez étranges suivant le contexte, ce qui est un obstacle conceptuel important pour les débutants).
    • – ne permettent pas de relier la notion de langage à celle de programmation (ex: dans le cas d'outils de programmation graphique, la syntaxe est "gommée" donc ne peut être appréhendée)
  3. Les langages "exotiques" et les "bricolages géniaux" : on va trouver sur le Web beaucoup de plateformes artisanales qui n'ont que de petites communautés d'utilisateurs et risquent de ne pas survivre, donc risquent de faire perdre beaucoup de temps.

Voir aussi :

En savoir plus: