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