Bruno Desthuilliers a écrit :
> Wykaaa a écrit :
>> Bruno Desthuilliers a écrit :
>>> Wykaaa a écrit :
>>>> Bruno Desthuilliers a écrit :
>>>>> Wykaaa a écrit :
>>>>> (snip)
>>>>>>
>>>>>> Le débat entame ici le fond du problème pour l'enseignement de la
>>>>>> programmation.
>>>>>> Je vais donner mon point de vue personnel qu'on peut ne pas
>>>>>> partager (mais sans polémique SVP) :
>>>>>> 1) Pour les futurs développeurs (en se cantonnant seulement à la
>>>>>> programmation et pas au reste du cycle de vie ni à la gestion de
>>>>>> projet) :
>>>>>> Apprentissage des bases de la programmation, ce qui veut dire (pas
>>>>>> forcément dans l'ordre):
>>>>>> - notion de variable et de classe d'allocation mémoire (auto,
>>>>>> statique, externe, constante), valeurs littérales
>>>>>> - notion de sous-programme (procédure, fonction, méthode, appelons
>>>>>> tout cela sous ce nom générique) et de passage d'argument (par
>>>>>> valeur, par référence, par valeur d'adresse, par nom. Ce dernier à
>>>>>> cause de certains macro-processeurs principalement)
>>>>>> - notion de typage : types de base, types construits. Le typage
>>>>>> statique, le typage dynamique
>>>>>> - notion de programmation structurée (ce n'est pas parce que
>>>>>> l'objet que, hein ?) : structures itératives et alternatives
>>>>>> - notion de récursivité
>>>>>> - notion de modularité : package, classes (pour préparer les
>>>>>> notions objets)
>>>>>> - Notion de compilation séparée (avec les différentes variantes.
>>>>>> Par exemple, séparation ou non de la spécification d'un module et
>>>>>> de son corps : .h et .c ou .cpp en C et C**, package et package
>>>>>> body en ADA où la notion de package n'est pas liée à la notion de
>>>>>> fichier, package à la Java)
>>>>>> - Comment structurer une application en énonçant les critères
>>>>>> (notion d'abstraction, forte cohésion interne, faible couplage)
>>>>>> - Notion d'héritage et de polymorphisme
>>>>>> - La généricité (les templates)
>>>>>
>>>>> Et rien sur l'approche fonctionnelle ???
>>>>>
>>>> Aïe, j'avais pris mes précautions en disant à la fin "J'ai
>>>> certainement oublié des trucs" mais là, tu frappes où ça fait mal
>>>> car mes langages favoris sont ceux de la famille ML (Caml, OCaml).
>>>> Dans le futur : OCamlDuce ?
>>>> Bien sûr, il faut en parler, c'est, comment dire, incontournable :-)
>>>
>>> Et pas vraiment évident à apprendre avec Java...
>>
>> C'est difficile de trouver un seul langage qui rassemble tous les
>> paradigmes de programmation.
>
> Tu a au moins common lisp, OCaml et Python qui supportent la plupart des
> concepts des approches procédurales, objet et fonctionnelle (avec plus
> ou moins de bonheur - la pf en Python reste assez limitée - mais
> suffisament pour exposer les concepts...)
Je vois mal apprendre la programmation (premier langage) à l'aide de
Common Lisp. Pour OCaml, faut voir (à une époque et peut-être encore
maintenant ?) au CNAM, ils utilisaient ADA et Caml.
Pour le coup, peut-être que Python est le mieux. Tu vois que je ne suis
pas sectaire :-)
Surtout avec l'expérience du MIT.
..
>
>>>
>>> Je ne vois rien non plus concernant les structures de données et
>>> l'algo. Ca te semble tellement secondaire ?-)
>>
>> Bien sur qu'il faut enseigner les structures de données et l'algo mais
>> je ne définissais pas un cursus entier concernant l'informatique mais
>> seulement l'apprentissage des langages de programmation.
>
> Evidemment - au temps pour moi. Ceci étant, peut-on vraiment totalement
> découpler l'algo et les structures de données du (des) langage(s)
> utilisé(s) ? (question ouverte à quelqu'un ayant l'expérience de
> l'enseignement - non, je ne fais pas que troller...)
C'est la partie délicate de l'apprentissage de la programmation...
Il faut, certainement une petite dose d'algo en parallèle mais la plus
minime possible.