En fait, je crois que l'on va ouvrir une discussion concernant la confrontation entre langage fonctionnel et langage impératif.
On pourra se défouler à ce moment, on va essayer de rester sur le débat C C++ jusque là.
Si quelqu'un a un probleme avec les notations, je ne vois pas en quoi l'exposer aux pointeurs beaucoup plus rapidement va resoudre son probleme de comprehension. Si effectivement c'est un gros probleme, mettre une serie de fonctions libres a utiliser au debut (voir ci-dessous) est une solution. Mais bon, tu utiliserais Ada que tu aurais le probleme avec les attributs.
Note que sur ce sujet, s'il y a une chose a faire passer dans un cours d'informatique, c'est la difference entre concept et notation, objet et representation. Ce n'est pas simple mais tant que ce n'est pas compris, il y aura de gros problemes de comprehension et un manque de capacite a trouver ses propres solutions.
C'est une des choses que j'envisagerais serieusement de camoufler dans la bibliotheque utilisee pour le cours. Oui, cela implique d'avoir une bibliotheque a utiliser pour le cours (et naturellement un des objectifs est de comprendre l'implementation de cette bibliotheque au moins pour des choses de ce genre), mais que ce soit en C ou en C++, je ne vois pas comment faire autrement: c'est ca, ou des incantations magiques ou introduire des concepts quand les bases pour les comprendre et en comprendre l'interet ne sont pas la. Une des raisons de ma preference pour le C++, c'est que cette bibliotheque sera beaucoup plus petite.Maintenantest aussi nécessaire si tu veux pouvoir ouvrir un fichier avec un nom mis dans une string, sachant que les tableaux de caractères sont plus une plaie qu'un plaisir. Encore une fois, il faut que tu te mettes au niveau de personne qui viennent de bio par exemple et qui ont un cours obligatoire en C++... la vie n'est pas toujours drôle pour eux dans ce cours
Code : Sélectionner tout - Visualiser dans une fenêtre à part s.c_str()![]()
Je me rappelle en effet de mes debuts en info, vu que je suis tjrs à la fac et je t'assure que je n'ai eu aucun problème pour apprendre le C et le bazar qu'il y'a dedans.
Heure de programmation? En + des heures de TP, ca m'arrive de faire des petits programmes chez moi parce que je crois que les cours,TD et TP ne suffisent pas si on n'apprend pas par soi meme.
C'est pas que je les défends, mais mes prof (Cours/TD/TP) sont pour la plupart tous des chercheurs ou des étudiants en doctorat.
a+!!![]()
Qui a parlé de pointeurs ? On ne fait pas de pointeurs dans mon cours.
Si on faisait du Ada on ferait du pur objet.
Je préfèrerais Pascal, ou comme je l'ai dit (dans l'ordre du programme), du C plutôt que du C++. Au moins ça serait complètement procédural.
C'est clair... Et notes bien que c'est très difficile. Comme je le disais, le but d'un premier cours (souvent à tort appelé « de programmation ») n'est certainement pas de voir à fond un langage. Ceci est assez inintéressant. Surtout pour le prof ^_^.
Tu fais du C sans pointeur? Je serais curieux de voir ton cours et d'avoir aussi plus d'info sur le contexte dans lequel tu le donnes et ce qu'il est sense couvrir.
J'ai du mal a voir ce qui t'empeche du faire du completement procedural en Ada. Et je ne suis pas du tout convaincu par ton unique argument jusqu'a present (la notation, il ne rentre pas en compte pour Ada) en ce qui concerne le C++.Si on faisait du Ada on ferait du pur objet.
Je préfèrerais Pascal, ou comme je l'ai dit (dans l'ordre du programme), du C plutôt que du C++. Au moins ça serait complètement procédural.
J'en suis conscient. C'est le genre de chose que je n'essaye pas d'expliquer par e-mail ou sur des forums. Et que je dois parfois expliquer en face a face lors d'interview d'embauche a des gens qui sont diplomes et qui ont deja une certaine experience professionnelle,...C'est clair... Et notes bien que c'est très difficile.
On fait du C++ sans pointeur oui. Note bien que ce n'est pas moi qui ai fait le programme ni qui ai choisi le contenu du cours.
C'est vrai que si ça avait été moi qui aurait choisi on aurait fait du Scheme au lieu de s'emmerder avec des détails de syntaxes. Mais c'est pas le cas.
Voilà le premier cours :
http://www.usherbrooke.ca/programmes...IFT/ift159.htm
Voilà celui qui enseigne les pointeurs :
http://www.usherbrooke.ca/programmes...IFT/ift339.htm
Mais rien.. tu lis encore entre les lignes des mots qui n'existent pas
Je t'ai dit que si on avait choisi ADA on aurait fait de l'objet.
Je n'ai jamais dit que quelquechose m'empêcherait de faire du procédural.
TU as le droit de ne pas être convaincu de quoi que tu sois. Avant d'enseigner le C++ j'étais de ton avis. Je comprends bien donc. Ça remet les idées en place d'être confrontée aux difficultés au jour le jour des étudiants qui ne sont pas en informatiques tu sais. Tu fais affaire depuis des années avec des gens qui connaissent et pratiquent l'informatique. QUand tu enseignes à des étudiants en première année, qui n'ont jamais fait de programmation ou presque, ça change beaucoup de chose.
Du C++ je veux bien, c'est justement une des raisons qui font que le C++ me semble plus adapté que le C dans ce cadre....
J'ai jamais prétendu que le C++ était le meilleur langage pour débuter, quelles que soient les circonstances, juste qu'il était généralement meilleur que le C.C'est vrai que si ça avait été moi qui aurait choisi on aurait fait du Scheme
C'est trop succins pour avoir une idée de ce que ça recouvre exactement. Je parlais plutôt des supports du cours. Je ne vois même pas la durée du cours (il faut probablement décoder 3-1-5).Voilà le premier cours :
http://www.usherbrooke.ca/programmes...IFT/ift159.htm
Voilà celui qui enseigne les pointeurs :
http://www.usherbrooke.ca/programmes...IFT/ift339.htm
Moins les gens sont familier avec l'informatique, moins le C me semble adapté. Mais bon, on ne va pas ressasser les mêmes arguments indéfiniments.Ça remet les idées en place d'être confrontée aux difficultés au jour le jour des étudiants qui ne sont pas en informatiques tu sais. Tu fais affaire depuis des années avec des gens qui connaissent et pratiquent l'informatique. QUand tu enseignes à des étudiants en première année, qui n'ont jamais fait de programmation ou presque, ça change beaucoup de chose.
Ce qu'on fait est, comme dans la plupart des premiers cours universitaires, du C avec un peu de syntaxe C++... Donc on peut dire qu'on fait du C sans pointeur. Certes il y a les tableaux, mais il n'y a pas de manipulations d'adresses explicites avec.
Mais meilleur par rapport à quoi ?
En général, quand le C++ est le premier langage appris à l'université ou au collège (dans le sens américain), la raison est « c'est le langage le plus utilisé ». C'est d'ailleurs notre argument. Dès qu'on veut autre chose de plus ciblé (apprendre les principes de la programmation-objet, de la programmation-fonctionnel, de la programmation-procédural) on remarque que les choix s'orientent vers un autre langage.
Effectivement ce n'est pas évident. Mais on voit que tu n'as pas l'habitude des codes universitairesCelui-ci est un classique : 3h de cours, 1h de travaux dirigés/lab, 5 heures de travail personnel à la maison, par semaine.
Tu n'as pas complètement tort. En fait, C/C++ pour moi ça se ressemble trop pour que la différence soit fondamental. Si tu veux, on peut le dire ainsi : intuitivement, à force d'enseignement, il me semble que le C est plus approprié que le C++ à l'enseignement pour un débutant. C'est un peu le même genre de choses qui te permettrait de dire, avec énormément de crédibilité vu ton expérience, que par expérience, intuitivement, tu penses que le C++ est le meilleur. Car au final, nous n'avons que des expériences ciblées dans un cadre qui est toujours plus ou moins le même. Personne n'a la sagesse nécessaire pour généraliser de manière exact.
C'est un argument presque sans valeur s'il n'y a pas à courte échéance nécessité d'être compatible avec l'extérieur.
J'ai déjà vu trop de variations dans un même pays pour penser décoder sans aide quelque chose d'un autre.Effectivement ce n'est pas évident. Mais on voit que tu n'as pas l'habitude des codes universitaires![]()
Et il manque le nombre de semaines pour arriver à quelque chose d'utile.Celui-ci est un classique : 3h de cours, 1h de travaux dirigés/lab, 5 heures de travail personnel à la maison, par semaine.
Tu vas pas être content mais je vais remettre en doute ta compétance en C++ si tu ne vois pas de différences pertinentes dans l'enseignement aux débutants.Tu n'as pas complètement tort. En fait, C/C++ pour moi ça se ressemble trop pour que la différence soit fondamental.
Je propose l'ouverture d'un pee-contest pour voir lequel des deux pisse le plus loin.
JE ne te le fais pas dire. Raison pour laquelle je suis contre le C++, car je trouve cet argument douteux.
Mais bon, on m'ostine que c'est demandé par le service des stages -_-
15... ça t'intéresse vraiment on dirait
Et bien remet, remetIl est clair de toute façon que tu es plus expert que moi en C++. Ça ne fait même pas l'ombre d'un doute. Dans ce cas, j'espère que tu ne verras pas de mal que je remette en doute tes compétences à évoluer dans un contexte d'enseignement ? Car je pense que tu ne comprends pas le cadre dans lequel prend place un cours.
Je ne vois pas de différence pertinente par rapport à tout ce que j'ai dit et qui est visé par le programme. Le seul point qui nécessite C++ est qu'on commence à parler d'objet. Mais pour ce qu'on en dit, je pourrais m'astreindre aux types enregistrements.
Disons que je lache difficilement l'affaire, ok, mais là, ça fait 4 pages de "oui mais moi je fais de l'enseignement" "oui mais moi je sais quand même parce que je suis plus fort" "oui mais moi...". Bref, zéro argument, même pas des tout petits ayant déjà servi, juste... rien ! Sérieux, stop quoi !
ostiner? typo -- pour quoi? -- ou canadianisme?
Vouloir qu'il y ait eu une introduction au C ou au C++ avant les stages, ça me semble raisonnable. Mais les stages sont faits quand par rapport à ce cours?
L'enseignement m'intéresse vraiment. Même si ce n'est pas mon métier pour le moment, il l'a été pendant 5 ans dont deux où j'ai enseigné diverses choses dont l'informatique et la programmation à de tout débutants ayant arrêté leur scolarité après les primaires. Mais le contexte de ces deux ans était tellement particulier qu'en extrapoler quelque chose pour d'autres contextes est difficile.15... ça t'intéresse vraiment on dirait![]()
Terme Québecois, pas Canadien
Tu ne sais pas que les Québecois sont sensibles sur cette différence
« s'ostiner » c'est « s'évertuer sans cesse à faire/dire sans bon sens » dirons nous dans notre cas. Il y a un rapport clair avec « s'obstiner » bien sûr.
Si tu veux, vu que c'est très loin du sujet, je vais te donner plus de renseignement par MP... Parce que ça semble déranger certaines personnes qui ne comprennent pas le sens du mot « débattre »
D'ailleurs je ne comprends pas que tu t'ostines à nous lire si tu n'aime pas la discussion Alex_pi... serais tu légèrement maso ?
(notez l'usage du mot « ostiner » encore là)
Ce serait dommage, car ce débat m'intéresse... Je tends à penser que C++ est plus adapté que C pour enseigner les bases de la programmation, notamment parce qu'il permet dans un premier temps de s'abstraire des détails de bas niveau, notamment en valorisant l'usage des types std::string, std::vector, des itérateurs, etc.. J'aime particulièrement l'approche pédagogique utilisée dans l'ouvrage "Accelerated C++", par Andrew Koenig et Barbara E. Moo.
L'utilisation des types de haut niveau du C++ permet de retarder au maximum l'introduction des pointeurs, des tableaux, des tableaux de caractères, de l'allocation dynamique. En débutant par le C, il est inévitable d'avoir à introduire ces notions déjà lors des premières leçons. Je pense également, et vous semblez d'accord sur ce point, que des langages autres que C++ sont plus adapté à un premier contact avec la programmation. Scheme ou Python (entre autres) sont de bons candidats. Même si j'utilises beaucoup le C, je ne pense pas qu'il soit adapté à ce niveau du cursus de formation.
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
J'utilise string. Cependant, ça apporte plein de problème supplémentaire au niveau de la cohérence de l'écriture puisque c'est un objet. Avant, le cours utilisait juste des tableaux (et toujours pas de pointeurs, les tableaux étant statiques dans les exemples). Les changements de syntaxes – o.f() au lieu de f(o) – génèrent incroyablement de problème. Je crois que vous seriez surpris pour la plupart puiqu'en général nous avons tous surmonté ce problème très vite![]()
Un vecteur n'est pas plus simple à comprendre qu'un tableau de toute façon. Le tout s'apparentant à la suite en math. Mais c'est vrai que ça simplifie bien la vie. Lorsque j'ai voulu l'intégrer c'est un autre problème qui s'est posé : si on ne le voit pas dans ce cours, alors le suivant doit le voir entrainant un retard. Comme je l'ai dit, faire un programme cohérent et qui tient dans le temps imparti (« programme » dans le sens les cours formant le cursus) c'est très difficile.
Les itérateurs c'est encore un autre problème : ça demande une bonne compréhension du paradigme impératif. Et beaucoup d'étudiants pensent encore comme en math sans s'en rendre compte. Les structures de données complexes sont vus dans un cours suivant. On s'en tient à des petits type d'enregistrements (struct) et les classes qui correspondent. Pas grand chose donc.
J'en ai déjà parlé sur le forum : nous avions discuté dans notre département de la pertinence de prendre Python en premier langage (et en justifiant que c'était maintenant très utilisé en industrie, puisque c'est ce qui nous fait garder C++).
Puis, on a remarqué le problème de la création d'attribut de manière dynamique. Alors on a oublié. C'est trop gênant hélas. C'est dommage car je l'aurais bien pris moi.
Voir ici
D'ailleurs c'était une réponse à Thierry. Je suppose qu'il s'en rappelle très bien.
Partager