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.
>
> 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.
L'algo c'est plutôt leur utilisation.
Et d'ailleurs, c'est très difficile pour les TP du cours programmation
car rapidement ils peuvent devenir des TP d'algo (ce qu'il faut éviter).
Pour cette raison, quand on donne un exo de programmation, sa conception
(détaillée) doit être fournie avec l'énoncé sinon, ça devient un TP d'algo.
Par contre, dans ce que j'ai décrit, il faut évidemment distinguer les
variables scalaires, les structures homogènes (tableau) et structures
hétérogènes (record, struct à la C, etc.).
Les types construits par le programmeur comme les listes chaînées, les
arbres, les collections en général, etc. font partie d'un cours de base
en algo.