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 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...)