C'est très difficile de trancher cette question.
Et c'est toujours un sujet de débat fortement disputé dans les comités de programme pour le choix des premiers cours.
Ici nous avons des tenants du :
- il faut faire de l'objet dès le début et il faut employer Smalltalk
- il faut faire de l'objet dès le début et il faut employer Java
- il faut faire de l'objet dès le début et il faut employer C++
- il faut faire du procédural dès le début et il faut employer C
- il faut faire du procédural dès le début et il faut employer C++ réduit
- il faut faire du procédural dès le début et il faut employer Pascal
- il faut faire du procédural dès le début et il faut employer Scheme
- il faut faire un mélange des deux et utiliser C++
- il faut faire un mélange des deux et utiliser Scheme
Je crois que c'est les avis que je connais -_-
Pour info, il y a une vingtaine de profs, et la moitié qui s'intéresse vraiment à cette question. Donc tu vois, ça fait 1 prof = 1 avis quasiment.
Je peux comprendre le désir légitime qu'il y a à utiliser un langage modifié, mais je n'approuve pas. C'est négliger le fait que l'élève n'est pas uniquement confronté à son professeur et à son cours, mais il est aussi au long de son apprentissage amené à échanger avec d'autres sources (autres élèves ayant suivi un cours différent, livres, internet, stages, reprise de code existant...) qui n'utilisent pas les même modifications du langage.
C'est un peu comme si on disait dans un cours de littérature qu'on allait utiliser un français simplifié, sans conjugaison ni lettres muettes, afin de permettre de se concentrer sur l'essence du cours sans être perdu par des détails. Le jour où l'étudiant doit lire un document qui n'aura pas été passé à la moulinette simplificatrice, ou le jour où il devra écrire pour des gens extérieurs au cours, il sera perdu.
Ca ne me choquerait pas qu'un cours d'algorithme ou de génie logiciel soit réalisé dans un langage spécifique orienté enseignement, mais à partir du moment où l'on a choisi d'utiliser un [sous ensemble d'un] langage existant, il me semble important de le respecter.
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Encore une fois, c'est parce que tu pars du principe que ce qu'on voit c'est un cours de C++ par exemple. Et dans ce cas tu aurais raison. Mais ce n'est pas le cas ! Les premiers cours sont des cours où on apprend à réflechir. Le langage n'a en soi aucune importance. On le modèle donc pour qu'il corresponde au besoin du cours. Le fait de changer de source est justement pris en compte et voulu. Car c'est un besoin que de savoir s'adapter vite. Il ne faut pas que tu crois que ce genre de choix est fait sans une réflexion approfondi. Ce n'est pas un désir comme tu le dis mais le résultat d'une réflexion et de regard sur les résultats des années précédentes.
Et je souligne qu'un bacc en informatique (un bacc au Canada est l'équivalent d'une licence en France) n'est pas là pour apprendre un métier. Un bacc en informatique apprend à réflechir en informatique et à résoudre des problèmes. L'accent est mis sur le général pour que l'étudiant ou l'étudiante sachent s'adapter au besoin de sa carrière, quelqu'elle soit. Au Québec, il existe des diplômes techniques formant à devenir technicien en informatique, avec une bonne connaissance des langages et des techniques actuelles.
Donc, le premier cours n'est pas là pour apprendre un langage de programmation dans le détail. Il est là pour poser les bases des autres cours qui eux vont éventuellement apprendre en détail un langage de programmation si cela s'avère pertinent. Le cours que je donne pourrait se faire en Pascal. La vie serait bien plus belle d'ailleurs... et là, je n'aurais pas ou peu besoin de modifier le langage.
Pas du tout. J'ai juste voulu dire qu'à partir du moment où on utilise le langage trucmuche (que ce soit pour apprendre ce langage ou pour servir d'illustration au vrai sujet du cours) il me semble pertinent d'utiliser le vrai langage trucmuche, tel qu'il est aussi parlé par tous les gens à l'extérieur du cours.
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
Je suis tout à fait d'accord.
Quitte à reporter quelques explications à plus tard, il faut le présenter conformément à la norme (beaucoup de cours de C++ commencent pas "#include <iostream.h>"), par exemple.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Donc si on ne disait pas qu'on utilise un sous-ensemble du C++ ça serait correct ? Ça n'a aucune importance. Ce qui compte, par contre, et là je te rejoins probablement, c'est de ne pas dire aux étudiants et aux étudiantes que c'est ça le C++ ! Si on leur annonce clairement qu'on a fait des modifications (ce que je prends soin de signaler à chaque incartade) alors ils sont au courant qu'il y aura des changements et que ce qu'ils ou elles peuvent entendre dans le cours n'est peut être pas comme ça dans tel ou tels livres.
Non c'est stupide de présenter la norme si celle-ci met des batons dans les roues à l'apprentissage. Encore une fois, les premiers cours ne sont pas des cours de C++ mais des cours d'initiation au développement : analyse de problème et conception de solution.
Tu dis « beaucoup » ? combien de cours universitaire as-tu vu à 18 ans ?
Personnellement je n'ai jamais vu UN cours universitaire de première année qui présente du C++ et introduit « #include <iostream.h> » Pourrais-tu me dire qui sont ces nombreux incompétents ?
tout a fait d'accord avec Jean-Marc.Bourguet, JolyLoic et Luc Hermitte.
j'ai toujours preféré en tant qu'étudiant qu'on nous montre la réalité même si elle est dure et longue a apprendre. Au moins on n'a pas de surprise par après.
... et se conformer a la norme exacte me parait plus qu'indispensable.
Petites précisions.
Quitte à utiliser un langage pour supporter l'algorithmie, je ne suis pas favorable au C++. Pascal, Ada, ou OCaml, AMHA, sont de meilleurs choix.
Par contre, quitte à utiliser le C++, et c'est de là qu'est partie la disgression, autant le faire dans son sous-ensemble correct (!= c99) suffisament de haut niveau pour écarter les écueils du C dont on n'a que faire dans un _premier_ cours.
Ce sous-ensemble de haut niveau tend plus à profiter de la SL que des tableaux dynamiques ou même statiques, que cela soit pour gérer des vecteur ou des chaînes.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
"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'en ai vu sur internet de tels cours, et j'ai vu des étudiants poser leurs questions ici disant qu'on leur avait appris comme ça, etc.
Sinon, je ne fais même pas encore d'études d'informatique, qui plus est.
J'aurais par exemple tellement aimé qu'on m'apprenne avec rigueur les maths depuis la seconde au lieu que cela commence en maths sup. C'est seulement à ce moment là qu'on apprend à utiliser correctement la logique, les ensembles & compagnie.
Le C++ c'est le C++. Si on veut que des étudiants l'apprennent, on leur apprend à utiliser les possibilités offertes par le C++, conformément à la norme. Par exemple, voir des void* dans un cours de C++, ça n'a pas tellement de sens, sauf peut-être dans un passage présentant la programmation bas niveau possible grâce au sous-ensemble "C".
Enfin, tout ça n'est que mon avis, qui n'est probablement pas l'avis de tout le monde (encore heureux).
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Je veux pas être mauvaise langue (ni faire de hors sujet), mais les ensembles vu en école préparatoire sont bidons. On y voit même pas la théorie axiomatique des ensembles correctement, notamment avec le fameux axiome du choix qui fait couler beaucoup d'encre (mais ça peut être compris sans trop de soucis par un élève en école préparatoire)
Un forum ne saurait être un cours universitaire. Où vois-tu ça ?
Les forums C++ permettent d'obtenir des diplômes ?
C'est vrai que je n'ai pas vu tous les cours universitaires du monde.
Cependant, je doute qu'une majorité de profs se trompent allègrement sur ce genre de point. Ce qui était la base de mon point.
C'est ton avis. Le conseil de révision des programmes n'est visiblement toujours pas de cet avis. -_- Et encore une fois, un cours se place dans un programme complet.
Internet n'est certainement pas une référence.
Et les étudiants ne sont pas habituellement des plus fiables.
Si j'écoutais ce que mes étudiants et étudiantes disent que que je dis, je ne me reconnaitrais parfois pas. Ils et elles arrivent à lire des choses qui n'existent pas. Quand je leur demande de me montrer où j'ai écris ça, ils découvrent leurs erreurs.
Et comme je le disais ailleurs, les étudiants et étudiantes en informatique sont parfois étrangement présomptueux dans ce qu'ils croient savoir.
Maintenant, je sais que des cours sont parfois mal donnés. Sauf que c'est un peu simple de dire « il suffit de faire ça ».
Je ne crois pas que J.-M. Bourget ait dit qu'il était indispensable de se conformer à la norme. Mais encore une fois, c'est un jugement posé sans grande connaissance du contexte. Quand le cours n'est pas un cours de programmation, on m'expliquera ce qu'apporte un respect stricte à une norme alors qu'on tente d'expliquer la manière de réflechir et une méthode pour résoudre des problèmes. L'apprentissage idiomatique de la norme ne sert à rien.
Je suis d'accord. Mais encore une fois, ce n'est pas une décision entre mes mains.
Je suis tout à fait de cet avis, si le problème est seulement de raisonner en algorithmes, il faut absolument le préciser à l'élève, surtout s'il s'agit d'une formation à débouché professionnel (et en général c'est le but d'une formation).
On pense facilement à inscrire "connaissance du C" sur un CV, mais si le langage utilisé était en réalité un hybride C/C++ avec un compilateur exotique, la mention sur le CV ne sert plus à rien, et pour le coup c'est vraiment dommage car l'élève est induit en erreur sur ses propres connaissances.
Partager