À part peut-être la surcharge de l'opérateur (),
À part peut-être la surcharge de l'opérateur (),
À part peut-être la surcharge de l'opérateur (),
Merwin a écrit :Gilles a écrit :Bonjour à tous.
J'ai beaucoup apprécié le fil "Avis sur les include files" où ont été
abordées entre autres des questions sur l'enseignement du C++ et les
"bonnes habitudes" à enseigner en TP, ce qui m'incite à poster ce
message.
Voici la situation : je suis enseignant en IUT - DUT informatique
(Bac+2 à vocation professionnelle). Jusqu'à maintenant la
programmation était enseignée au travers du C++. Il est fortement
question de changer ce choix dans notre IUT pour remplacer C++ par
Java (actuellement un enseignement de Java existe, mais en seconde
année seulement, donc avec déjà une pratique du C++ et les bases de
la POO).
J'aimerais vos avis sur ces deux questions :
- quels sont les arguments en faveur (ou en défaveur) du C++ (par
rapport à Java) pour enseigner la POO à des débutants complets en
programmation ? (et pour qui, pour reprendre une remarque apparue
dans le fil auquel je faisais référence, il n'y a plus en majorité
"de passion ou de réelle envie de faire de l'informatique"...)
- est-il raisonnable de lâcher sur le marché du travail des
informaticiens "Bac+2" qui n'aient jamais programmé en C++ ?
Note personnelle : je ne suis pas le chargé de cours concerné, j'ai
une tendance à préférer le C++ (par mon parcours et par mon activité
quotidienne en recherche), mais je n'aurai aucune réticence à faire
pratiquer Java si je suis convaincu que c'est un meilleur choix pour
mes étudiants.
Merci d'avance pour vos contributions qui nourriront sûrement le
débat que nous devrions avoir au sein de l'équipe pédagogique.
Gilles
Bonjour,
Je vais donner mon avis d'étudiant, justement en DUT Informatique
(1ère année). Chez nous on commence par le C++ et on fait du Java en
fin de second semestre début de seconde année.
Combien d'heures de cours de C++ ? avec et sans TP. Y a-t-il un projet
ou mini projet en C++ à faire ?
La surcharge des opérateurs est-elle détaillée ?
La dérivation virtuelle et les problèmes liés à l'héritage multiple
sont-ils expliqués ?
La gestion mémoire (new, delete et leur surcharge) est-elle expliquée en
détail ?
Enfin, lorsque le constructeur, dans une classe, fait de l'allocation
dynamique (new) est-il expliqué pourquoi il faut un constructeur de
copie et la surcharge de l'affectation ?
Je pense, de mon point de vue personnel, que la transition C++->Java
est plus simple que l'inverse. Même si C++ est peu être un peu moins
évident à appréhender en début d'année. Un de nos premiers cours de
programmation a été C++, et ce dès le premier semestre.
Il est clair que c'est plus simple d'aller de C++ vers Java que
l'inverse car, en Java, toutes mes questions ci-dessus sur C++ ne se
posent pas en Java.
Ceci dit, est-ce bien nécessaire d'apprendre tout ceci, d'emblée, à des
débutants en programmation ?
En parallèle on avait les cours d'architecture (Assembleur), ce qui
nous permettait de concilier un peu les deux et de comprendre ce que
l'on faisait, notamment au niveau de la gestion de la mémoire.
Il est sûr qu'un cours d'architecture "machine" reste indispensable pour
bien comprendre certains concepts de programmation même dans des
langages de "haut niveau", mais il n'y en a pas forcément dans tous les
cursus informatique :-(
Après, je fais partit de ces "autodidactes têtus" qui ont un PC entre
les mains depuis 13 ans, et je vois d'autres étudiants qui ont
beaucoup plus de mal à assimiler les principes de nases.
Tu voulais dire les bases :-)
Cependant, au premier semestre, l'apprentissage de
l'UML/C++/Assembleur en parallèle est réellement une vrai aide selon
moi pour bien comprendre le C++.
Oui tu as raison. Ma préoccupation est plutôt dans "le bon
apprentissage" de la programmation en général. Là je pense que C++ n'est
pas forcément le meilleur langage pour débuter malgré tes arguments.
Ceci dit je n'ai certainement pas assez d'expérience pour juger !
Et bien justement, c'est justement à des personnes comme toi que j'ai
envie de poser la question :
Ca veut dire quoi bien programmer ? (ou programmer proprement)
Merwin a écrit :
Gilles a écrit :
Bonjour à tous.
J'ai beaucoup apprécié le fil "Avis sur les include files" où ont été
abordées entre autres des questions sur l'enseignement du C++ et les
"bonnes habitudes" à enseigner en TP, ce qui m'incite à poster ce
message.
Voici la situation : je suis enseignant en IUT - DUT informatique
(Bac+2 à vocation professionnelle). Jusqu'à maintenant la
programmation était enseignée au travers du C++. Il est fortement
question de changer ce choix dans notre IUT pour remplacer C++ par
Java (actuellement un enseignement de Java existe, mais en seconde
année seulement, donc avec déjà une pratique du C++ et les bases de
la POO).
J'aimerais vos avis sur ces deux questions :
- quels sont les arguments en faveur (ou en défaveur) du C++ (par
rapport à Java) pour enseigner la POO à des débutants complets en
programmation ? (et pour qui, pour reprendre une remarque apparue
dans le fil auquel je faisais référence, il n'y a plus en majorité
"de passion ou de réelle envie de faire de l'informatique"...)
- est-il raisonnable de lâcher sur le marché du travail des
informaticiens "Bac+2" qui n'aient jamais programmé en C++ ?
Note personnelle : je ne suis pas le chargé de cours concerné, j'ai
une tendance à préférer le C++ (par mon parcours et par mon activité
quotidienne en recherche), mais je n'aurai aucune réticence à faire
pratiquer Java si je suis convaincu que c'est un meilleur choix pour
mes étudiants.
Merci d'avance pour vos contributions qui nourriront sûrement le
débat que nous devrions avoir au sein de l'équipe pédagogique.
Gilles
Bonjour,
Je vais donner mon avis d'étudiant, justement en DUT Informatique
(1ère année). Chez nous on commence par le C++ et on fait du Java en
fin de second semestre début de seconde année.
Combien d'heures de cours de C++ ? avec et sans TP. Y a-t-il un projet
ou mini projet en C++ à faire ?
La surcharge des opérateurs est-elle détaillée ?
La dérivation virtuelle et les problèmes liés à l'héritage multiple
sont-ils expliqués ?
La gestion mémoire (new, delete et leur surcharge) est-elle expliquée en
détail ?
Enfin, lorsque le constructeur, dans une classe, fait de l'allocation
dynamique (new) est-il expliqué pourquoi il faut un constructeur de
copie et la surcharge de l'affectation ?
Je pense, de mon point de vue personnel, que la transition C++->Java
est plus simple que l'inverse. Même si C++ est peu être un peu moins
évident à appréhender en début d'année. Un de nos premiers cours de
programmation a été C++, et ce dès le premier semestre.
Il est clair que c'est plus simple d'aller de C++ vers Java que
l'inverse car, en Java, toutes mes questions ci-dessus sur C++ ne se
posent pas en Java.
Ceci dit, est-ce bien nécessaire d'apprendre tout ceci, d'emblée, à des
débutants en programmation ?
En parallèle on avait les cours d'architecture (Assembleur), ce qui
nous permettait de concilier un peu les deux et de comprendre ce que
l'on faisait, notamment au niveau de la gestion de la mémoire.
Il est sûr qu'un cours d'architecture "machine" reste indispensable pour
bien comprendre certains concepts de programmation même dans des
langages de "haut niveau", mais il n'y en a pas forcément dans tous les
cursus informatique :-(
Après, je fais partit de ces "autodidactes têtus" qui ont un PC entre
les mains depuis 13 ans, et je vois d'autres étudiants qui ont
beaucoup plus de mal à assimiler les principes de nases.
Tu voulais dire les bases :-)
Cependant, au premier semestre, l'apprentissage de
l'UML/C++/Assembleur en parallèle est réellement une vrai aide selon
moi pour bien comprendre le C++.
Oui tu as raison. Ma préoccupation est plutôt dans "le bon
apprentissage" de la programmation en général. Là je pense que C++ n'est
pas forcément le meilleur langage pour débuter malgré tes arguments.
Ceci dit je n'ai certainement pas assez d'expérience pour juger !
Et bien justement, c'est justement à des personnes comme toi que j'ai
envie de poser la question :
Ca veut dire quoi bien programmer ? (ou programmer proprement)
Merwin a écrit :Gilles a écrit :Bonjour à tous.
J'ai beaucoup apprécié le fil "Avis sur les include files" où ont été
abordées entre autres des questions sur l'enseignement du C++ et les
"bonnes habitudes" à enseigner en TP, ce qui m'incite à poster ce
message.
Voici la situation : je suis enseignant en IUT - DUT informatique
(Bac+2 à vocation professionnelle). Jusqu'à maintenant la
programmation était enseignée au travers du C++. Il est fortement
question de changer ce choix dans notre IUT pour remplacer C++ par
Java (actuellement un enseignement de Java existe, mais en seconde
année seulement, donc avec déjà une pratique du C++ et les bases de
la POO).
J'aimerais vos avis sur ces deux questions :
- quels sont les arguments en faveur (ou en défaveur) du C++ (par
rapport à Java) pour enseigner la POO à des débutants complets en
programmation ? (et pour qui, pour reprendre une remarque apparue
dans le fil auquel je faisais référence, il n'y a plus en majorité
"de passion ou de réelle envie de faire de l'informatique"...)
- est-il raisonnable de lâcher sur le marché du travail des
informaticiens "Bac+2" qui n'aient jamais programmé en C++ ?
Note personnelle : je ne suis pas le chargé de cours concerné, j'ai
une tendance à préférer le C++ (par mon parcours et par mon activité
quotidienne en recherche), mais je n'aurai aucune réticence à faire
pratiquer Java si je suis convaincu que c'est un meilleur choix pour
mes étudiants.
Merci d'avance pour vos contributions qui nourriront sûrement le
débat que nous devrions avoir au sein de l'équipe pédagogique.
Gilles
Bonjour,
Je vais donner mon avis d'étudiant, justement en DUT Informatique
(1ère année). Chez nous on commence par le C++ et on fait du Java en
fin de second semestre début de seconde année.
Combien d'heures de cours de C++ ? avec et sans TP. Y a-t-il un projet
ou mini projet en C++ à faire ?
La surcharge des opérateurs est-elle détaillée ?
La dérivation virtuelle et les problèmes liés à l'héritage multiple
sont-ils expliqués ?
La gestion mémoire (new, delete et leur surcharge) est-elle expliquée en
détail ?
Enfin, lorsque le constructeur, dans une classe, fait de l'allocation
dynamique (new) est-il expliqué pourquoi il faut un constructeur de
copie et la surcharge de l'affectation ?
Je pense, de mon point de vue personnel, que la transition C++->Java
est plus simple que l'inverse. Même si C++ est peu être un peu moins
évident à appréhender en début d'année. Un de nos premiers cours de
programmation a été C++, et ce dès le premier semestre.
Il est clair que c'est plus simple d'aller de C++ vers Java que
l'inverse car, en Java, toutes mes questions ci-dessus sur C++ ne se
posent pas en Java.
Ceci dit, est-ce bien nécessaire d'apprendre tout ceci, d'emblée, à des
débutants en programmation ?
En parallèle on avait les cours d'architecture (Assembleur), ce qui
nous permettait de concilier un peu les deux et de comprendre ce que
l'on faisait, notamment au niveau de la gestion de la mémoire.
Il est sûr qu'un cours d'architecture "machine" reste indispensable pour
bien comprendre certains concepts de programmation même dans des
langages de "haut niveau", mais il n'y en a pas forcément dans tous les
cursus informatique :-(
Après, je fais partit de ces "autodidactes têtus" qui ont un PC entre
les mains depuis 13 ans, et je vois d'autres étudiants qui ont
beaucoup plus de mal à assimiler les principes de nases.
Tu voulais dire les bases :-)
Cependant, au premier semestre, l'apprentissage de
l'UML/C++/Assembleur en parallèle est réellement une vrai aide selon
moi pour bien comprendre le C++.
Oui tu as raison. Ma préoccupation est plutôt dans "le bon
apprentissage" de la programmation en général. Là je pense que C++ n'est
pas forcément le meilleur langage pour débuter malgré tes arguments.
Ceci dit je n'ai certainement pas assez d'expérience pour juger !
Et bien justement, c'est justement à des personnes comme toi que j'ai
envie de poser la question :
Ca veut dire quoi bien programmer ? (ou programmer proprement)
Je souhaite juste préciser après relecture, que je ne dis pas que Python
soit ce qu'il y a de plus indiqué pour apprendre le script.
Mais perso ca me rebute d'avoir du CSH alors que je sais que je pourrais
apprendre de 1 du bash beaucoup plus répandu ( oui oui je sais tu en
apprends un tu sais les autres mais les ptites habitudes font souvent
qu'on choisit l'un ou l'autre après ) puis de 2 d'avoir qqs lecons sur
du Python pour voir ô combien c'est extensible.
Je souhaite juste préciser après relecture, que je ne dis pas que Python
soit ce qu'il y a de plus indiqué pour apprendre le script.
Mais perso ca me rebute d'avoir du CSH alors que je sais que je pourrais
apprendre de 1 du bash beaucoup plus répandu ( oui oui je sais tu en
apprends un tu sais les autres mais les ptites habitudes font souvent
qu'on choisit l'un ou l'autre après ) puis de 2 d'avoir qqs lecons sur
du Python pour voir ô combien c'est extensible.
Je souhaite juste préciser après relecture, que je ne dis pas que Python
soit ce qu'il y a de plus indiqué pour apprendre le script.
Mais perso ca me rebute d'avoir du CSH alors que je sais que je pourrais
apprendre de 1 du bash beaucoup plus répandu ( oui oui je sais tu en
apprends un tu sais les autres mais les ptites habitudes font souvent
qu'on choisit l'un ou l'autre après ) puis de 2 d'avoir qqs lecons sur
du Python pour voir ô combien c'est extensible.
C'est dur à expliquer, mais parfois je sens que j'utilise une mauvaise
méthode, que je pourrais "faire autrement",
mais je pense que c'est le
manque de pratique surtout qui fait ça.
C'est dur à expliquer, mais parfois je sens que j'utilise une mauvaise
méthode, que je pourrais "faire autrement",
mais je pense que c'est le
manque de pratique surtout qui fait ça.
C'est dur à expliquer, mais parfois je sens que j'utilise une mauvaise
méthode, que je pourrais "faire autrement",
mais je pense que c'est le
manque de pratique surtout qui fait ça.
Wykaaa a écrit :Merwin a écrit :Gilles a écrit :Bonjour à tous.
J'ai beaucoup apprécié le fil "Avis sur les include files" où ont
été abordées entre autres des questions sur l'enseignement du C++ et
les "bonnes habitudes" à enseigner en TP, ce qui m'incite à poster
ce message.
Voici la situation : je suis enseignant en IUT - DUT informatique
(Bac+2 à vocation professionnelle). Jusqu'à maintenant la
programmation était enseignée au travers du C++. Il est fortement
question de changer ce choix dans notre IUT pour remplacer C++ par
Java (actuellement un enseignement de Java existe, mais en seconde
année seulement, donc avec déjà une pratique du C++ et les bases de
la POO).
J'aimerais vos avis sur ces deux questions :
- quels sont les arguments en faveur (ou en défaveur) du C++ (par
rapport à Java) pour enseigner la POO à des débutants complets en
programmation ? (et pour qui, pour reprendre une remarque apparue
dans le fil auquel je faisais référence, il n'y a plus en majorité
"de passion ou de réelle envie de faire de l'informatique"...)
- est-il raisonnable de lâcher sur le marché du travail des
informaticiens "Bac+2" qui n'aient jamais programmé en C++ ?
Note personnelle : je ne suis pas le chargé de cours concerné, j'ai
une tendance à préférer le C++ (par mon parcours et par mon activité
quotidienne en recherche), mais je n'aurai aucune réticence à faire
pratiquer Java si je suis convaincu que c'est un meilleur choix pour
mes étudiants.
Merci d'avance pour vos contributions qui nourriront sûrement le
débat que nous devrions avoir au sein de l'équipe pédagogique.
Gilles
Bonjour,
Je vais donner mon avis d'étudiant, justement en DUT Informatique
(1ère année). Chez nous on commence par le C++ et on fait du Java en
fin de second semestre début de seconde année.
Combien d'heures de cours de C++ ? avec et sans TP. Y a-t-il un projet
ou mini projet en C++ à faire ?
La surcharge des opérateurs est-elle détaillée ?
La dérivation virtuelle et les problèmes liés à l'héritage multiple
sont-ils expliqués ?
La gestion mémoire (new, delete et leur surcharge) est-elle expliquée
en détail ?
Enfin, lorsque le constructeur, dans une classe, fait de l'allocation
dynamique (new) est-il expliqué pourquoi il faut un constructeur de
copie et la surcharge de l'affectation ?
Alors oui, à la fin du premier semestre on avait déjà vu la surcharge
des opérateurs, ainsi que le début de l'héritage.
Cependant l'héritage multiple n'est pas abordé du tout durant le cursus,
(enfin il me semble, mais je ne veux pas trop m'avancer)
quand au new, delete, constructeur de copie, oui on voit tout ça, on a
même fait des TP pour comprendre l'utilité de redéfinir le constructeur
de copie dans le cas d'un allocation dynamique dans le constructeur.
L'allocation dynamique est bien évidement vue en détail, en seconde
année on travaillera beaucoup avec Qt d'après ce que je sais.
Actuellement on a pas encore eu de projet en C++, mais le "cours" a
proprement parler sera terminé avant la fin du second semestre, l'année
prochaine on utilisera tout ce qu'on a appris sur des projets, et on
appliquera toutes les bases dans des cas concrets (encore une fois si
j'ai tout compris au programme :D)
La dérivation virtuelle je ne sais pas ce que c'est, cependant on est
entrain de voir le polymorphisme actuellement (début de 2nd semestre),
sont à venir prochainement les templates, et autres gadgets.
Honnêtement le cours se compliquer et des notions comme le polymorphisme
sont peut-être un peu complexe, surtout qu'actuellement on n'applique
pas tout cela dans des projets concrets, j'attends donc de voir la suite.
Je pense, de mon point de vue personnel, que la transition C++->Java
est plus simple que l'inverse. Même si C++ est peu être un peu moins
évident à appréhender en début d'année. Un de nos premiers cours de
programmation a été C++, et ce dès le premier semestre.
Il est clair que c'est plus simple d'aller de C++ vers Java que
l'inverse car, en Java, toutes mes questions ci-dessus sur C++ ne se
posent pas en Java.
Ceci dit, est-ce bien nécessaire d'apprendre tout ceci, d'emblée, à
des débutants en programmation ?
Utile je ne pense pas, puisqu'on n'en aura pas l'utilité tout de suite,
et le jour où on en aura besoin on devra certainement retourner lire la
documentation et le cours sur le sujet :D
Mais le fait de l'avoir fais une fois et d'avoir peut-être commencer à
comprendre peut certainement aider.
En parallèle on avait les cours d'architecture (Assembleur), ce qui
nous permettait de concilier un peu les deux et de comprendre ce que
l'on faisait, notamment au niveau de la gestion de la mémoire.
Il est sûr qu'un cours d'architecture "machine" reste indispensable
pour bien comprendre certains concepts de programmation même dans des
langages de "haut niveau", mais il n'y en a pas forcément dans tous
les cursus informatique :-(
Après, je fais partit de ces "autodidactes têtus" qui ont un PC entre
les mains depuis 13 ans, et je vois d'autres étudiants qui ont
beaucoup plus de mal à assimiler les principes de nases.
Tu voulais dire les bases :-)
Euh, oui :D
Cependant, au premier semestre, l'apprentissage de
l'UML/C++/Assembleur en parallèle est réellement une vrai aide selon
moi pour bien comprendre le C++.
Oui tu as raison. Ma préoccupation est plutôt dans "le bon
apprentissage" de la programmation en général. Là je pense que C++
n'est pas forcément le meilleur langage pour débuter malgré tes
arguments.
Ceci dit je n'ai certainement pas assez d'expérience pour juger !
Et bien justement, c'est justement à des personnes comme toi que j'ai
envie de poser la question :
Ca veut dire quoi bien programmer ? (ou programmer proprement)
Curieusement c'est une question vraiment intéressante, puisque étant
particulièrement passionné par la programmation en C++ j'ai déjà
commencer à créer quelques mini projet en C++ à l'aide de Qt, et je sens
parfois que je ne fait pas "comme il faut".
C'est dur à expliquer, mais parfois je sens que j'utilise une mauvaise
méthode, que je pourrais "faire autrement", mais je pense que c'est le
manque de pratique surtout qui fait ça.
On a deux heures de cours en amphi et deux heures de TP par semaine, si
on approfondi pas nous même à la maison, ça fait un peu cour je pense.
Cependant je suis un des meilleurs étudiants de ma promo et C++, et je
ne suis donc peut-être pas représentatif, je sais que certains notions
sont difficiles à comprendre pour des gens qui n'ont jamais programmés
de leurs vies.
Wykaaa a écrit :
Merwin a écrit :
Gilles a écrit :
Bonjour à tous.
J'ai beaucoup apprécié le fil "Avis sur les include files" où ont
été abordées entre autres des questions sur l'enseignement du C++ et
les "bonnes habitudes" à enseigner en TP, ce qui m'incite à poster
ce message.
Voici la situation : je suis enseignant en IUT - DUT informatique
(Bac+2 à vocation professionnelle). Jusqu'à maintenant la
programmation était enseignée au travers du C++. Il est fortement
question de changer ce choix dans notre IUT pour remplacer C++ par
Java (actuellement un enseignement de Java existe, mais en seconde
année seulement, donc avec déjà une pratique du C++ et les bases de
la POO).
J'aimerais vos avis sur ces deux questions :
- quels sont les arguments en faveur (ou en défaveur) du C++ (par
rapport à Java) pour enseigner la POO à des débutants complets en
programmation ? (et pour qui, pour reprendre une remarque apparue
dans le fil auquel je faisais référence, il n'y a plus en majorité
"de passion ou de réelle envie de faire de l'informatique"...)
- est-il raisonnable de lâcher sur le marché du travail des
informaticiens "Bac+2" qui n'aient jamais programmé en C++ ?
Note personnelle : je ne suis pas le chargé de cours concerné, j'ai
une tendance à préférer le C++ (par mon parcours et par mon activité
quotidienne en recherche), mais je n'aurai aucune réticence à faire
pratiquer Java si je suis convaincu que c'est un meilleur choix pour
mes étudiants.
Merci d'avance pour vos contributions qui nourriront sûrement le
débat que nous devrions avoir au sein de l'équipe pédagogique.
Gilles
Bonjour,
Je vais donner mon avis d'étudiant, justement en DUT Informatique
(1ère année). Chez nous on commence par le C++ et on fait du Java en
fin de second semestre début de seconde année.
Combien d'heures de cours de C++ ? avec et sans TP. Y a-t-il un projet
ou mini projet en C++ à faire ?
La surcharge des opérateurs est-elle détaillée ?
La dérivation virtuelle et les problèmes liés à l'héritage multiple
sont-ils expliqués ?
La gestion mémoire (new, delete et leur surcharge) est-elle expliquée
en détail ?
Enfin, lorsque le constructeur, dans une classe, fait de l'allocation
dynamique (new) est-il expliqué pourquoi il faut un constructeur de
copie et la surcharge de l'affectation ?
Alors oui, à la fin du premier semestre on avait déjà vu la surcharge
des opérateurs, ainsi que le début de l'héritage.
Cependant l'héritage multiple n'est pas abordé du tout durant le cursus,
(enfin il me semble, mais je ne veux pas trop m'avancer)
quand au new, delete, constructeur de copie, oui on voit tout ça, on a
même fait des TP pour comprendre l'utilité de redéfinir le constructeur
de copie dans le cas d'un allocation dynamique dans le constructeur.
L'allocation dynamique est bien évidement vue en détail, en seconde
année on travaillera beaucoup avec Qt d'après ce que je sais.
Actuellement on a pas encore eu de projet en C++, mais le "cours" a
proprement parler sera terminé avant la fin du second semestre, l'année
prochaine on utilisera tout ce qu'on a appris sur des projets, et on
appliquera toutes les bases dans des cas concrets (encore une fois si
j'ai tout compris au programme :D)
La dérivation virtuelle je ne sais pas ce que c'est, cependant on est
entrain de voir le polymorphisme actuellement (début de 2nd semestre),
sont à venir prochainement les templates, et autres gadgets.
Honnêtement le cours se compliquer et des notions comme le polymorphisme
sont peut-être un peu complexe, surtout qu'actuellement on n'applique
pas tout cela dans des projets concrets, j'attends donc de voir la suite.
Je pense, de mon point de vue personnel, que la transition C++->Java
est plus simple que l'inverse. Même si C++ est peu être un peu moins
évident à appréhender en début d'année. Un de nos premiers cours de
programmation a été C++, et ce dès le premier semestre.
Il est clair que c'est plus simple d'aller de C++ vers Java que
l'inverse car, en Java, toutes mes questions ci-dessus sur C++ ne se
posent pas en Java.
Ceci dit, est-ce bien nécessaire d'apprendre tout ceci, d'emblée, à
des débutants en programmation ?
Utile je ne pense pas, puisqu'on n'en aura pas l'utilité tout de suite,
et le jour où on en aura besoin on devra certainement retourner lire la
documentation et le cours sur le sujet :D
Mais le fait de l'avoir fais une fois et d'avoir peut-être commencer à
comprendre peut certainement aider.
En parallèle on avait les cours d'architecture (Assembleur), ce qui
nous permettait de concilier un peu les deux et de comprendre ce que
l'on faisait, notamment au niveau de la gestion de la mémoire.
Il est sûr qu'un cours d'architecture "machine" reste indispensable
pour bien comprendre certains concepts de programmation même dans des
langages de "haut niveau", mais il n'y en a pas forcément dans tous
les cursus informatique :-(
Après, je fais partit de ces "autodidactes têtus" qui ont un PC entre
les mains depuis 13 ans, et je vois d'autres étudiants qui ont
beaucoup plus de mal à assimiler les principes de nases.
Tu voulais dire les bases :-)
Euh, oui :D
Cependant, au premier semestre, l'apprentissage de
l'UML/C++/Assembleur en parallèle est réellement une vrai aide selon
moi pour bien comprendre le C++.
Oui tu as raison. Ma préoccupation est plutôt dans "le bon
apprentissage" de la programmation en général. Là je pense que C++
n'est pas forcément le meilleur langage pour débuter malgré tes
arguments.
Ceci dit je n'ai certainement pas assez d'expérience pour juger !
Et bien justement, c'est justement à des personnes comme toi que j'ai
envie de poser la question :
Ca veut dire quoi bien programmer ? (ou programmer proprement)
Curieusement c'est une question vraiment intéressante, puisque étant
particulièrement passionné par la programmation en C++ j'ai déjà
commencer à créer quelques mini projet en C++ à l'aide de Qt, et je sens
parfois que je ne fait pas "comme il faut".
C'est dur à expliquer, mais parfois je sens que j'utilise une mauvaise
méthode, que je pourrais "faire autrement", mais je pense que c'est le
manque de pratique surtout qui fait ça.
On a deux heures de cours en amphi et deux heures de TP par semaine, si
on approfondi pas nous même à la maison, ça fait un peu cour je pense.
Cependant je suis un des meilleurs étudiants de ma promo et C++, et je
ne suis donc peut-être pas représentatif, je sais que certains notions
sont difficiles à comprendre pour des gens qui n'ont jamais programmés
de leurs vies.
Wykaaa a écrit :Merwin a écrit :Gilles a écrit :Bonjour à tous.
J'ai beaucoup apprécié le fil "Avis sur les include files" où ont
été abordées entre autres des questions sur l'enseignement du C++ et
les "bonnes habitudes" à enseigner en TP, ce qui m'incite à poster
ce message.
Voici la situation : je suis enseignant en IUT - DUT informatique
(Bac+2 à vocation professionnelle). Jusqu'à maintenant la
programmation était enseignée au travers du C++. Il est fortement
question de changer ce choix dans notre IUT pour remplacer C++ par
Java (actuellement un enseignement de Java existe, mais en seconde
année seulement, donc avec déjà une pratique du C++ et les bases de
la POO).
J'aimerais vos avis sur ces deux questions :
- quels sont les arguments en faveur (ou en défaveur) du C++ (par
rapport à Java) pour enseigner la POO à des débutants complets en
programmation ? (et pour qui, pour reprendre une remarque apparue
dans le fil auquel je faisais référence, il n'y a plus en majorité
"de passion ou de réelle envie de faire de l'informatique"...)
- est-il raisonnable de lâcher sur le marché du travail des
informaticiens "Bac+2" qui n'aient jamais programmé en C++ ?
Note personnelle : je ne suis pas le chargé de cours concerné, j'ai
une tendance à préférer le C++ (par mon parcours et par mon activité
quotidienne en recherche), mais je n'aurai aucune réticence à faire
pratiquer Java si je suis convaincu que c'est un meilleur choix pour
mes étudiants.
Merci d'avance pour vos contributions qui nourriront sûrement le
débat que nous devrions avoir au sein de l'équipe pédagogique.
Gilles
Bonjour,
Je vais donner mon avis d'étudiant, justement en DUT Informatique
(1ère année). Chez nous on commence par le C++ et on fait du Java en
fin de second semestre début de seconde année.
Combien d'heures de cours de C++ ? avec et sans TP. Y a-t-il un projet
ou mini projet en C++ à faire ?
La surcharge des opérateurs est-elle détaillée ?
La dérivation virtuelle et les problèmes liés à l'héritage multiple
sont-ils expliqués ?
La gestion mémoire (new, delete et leur surcharge) est-elle expliquée
en détail ?
Enfin, lorsque le constructeur, dans une classe, fait de l'allocation
dynamique (new) est-il expliqué pourquoi il faut un constructeur de
copie et la surcharge de l'affectation ?
Alors oui, à la fin du premier semestre on avait déjà vu la surcharge
des opérateurs, ainsi que le début de l'héritage.
Cependant l'héritage multiple n'est pas abordé du tout durant le cursus,
(enfin il me semble, mais je ne veux pas trop m'avancer)
quand au new, delete, constructeur de copie, oui on voit tout ça, on a
même fait des TP pour comprendre l'utilité de redéfinir le constructeur
de copie dans le cas d'un allocation dynamique dans le constructeur.
L'allocation dynamique est bien évidement vue en détail, en seconde
année on travaillera beaucoup avec Qt d'après ce que je sais.
Actuellement on a pas encore eu de projet en C++, mais le "cours" a
proprement parler sera terminé avant la fin du second semestre, l'année
prochaine on utilisera tout ce qu'on a appris sur des projets, et on
appliquera toutes les bases dans des cas concrets (encore une fois si
j'ai tout compris au programme :D)
La dérivation virtuelle je ne sais pas ce que c'est, cependant on est
entrain de voir le polymorphisme actuellement (début de 2nd semestre),
sont à venir prochainement les templates, et autres gadgets.
Honnêtement le cours se compliquer et des notions comme le polymorphisme
sont peut-être un peu complexe, surtout qu'actuellement on n'applique
pas tout cela dans des projets concrets, j'attends donc de voir la suite.
Je pense, de mon point de vue personnel, que la transition C++->Java
est plus simple que l'inverse. Même si C++ est peu être un peu moins
évident à appréhender en début d'année. Un de nos premiers cours de
programmation a été C++, et ce dès le premier semestre.
Il est clair que c'est plus simple d'aller de C++ vers Java que
l'inverse car, en Java, toutes mes questions ci-dessus sur C++ ne se
posent pas en Java.
Ceci dit, est-ce bien nécessaire d'apprendre tout ceci, d'emblée, à
des débutants en programmation ?
Utile je ne pense pas, puisqu'on n'en aura pas l'utilité tout de suite,
et le jour où on en aura besoin on devra certainement retourner lire la
documentation et le cours sur le sujet :D
Mais le fait de l'avoir fais une fois et d'avoir peut-être commencer à
comprendre peut certainement aider.
En parallèle on avait les cours d'architecture (Assembleur), ce qui
nous permettait de concilier un peu les deux et de comprendre ce que
l'on faisait, notamment au niveau de la gestion de la mémoire.
Il est sûr qu'un cours d'architecture "machine" reste indispensable
pour bien comprendre certains concepts de programmation même dans des
langages de "haut niveau", mais il n'y en a pas forcément dans tous
les cursus informatique :-(
Après, je fais partit de ces "autodidactes têtus" qui ont un PC entre
les mains depuis 13 ans, et je vois d'autres étudiants qui ont
beaucoup plus de mal à assimiler les principes de nases.
Tu voulais dire les bases :-)
Euh, oui :D
Cependant, au premier semestre, l'apprentissage de
l'UML/C++/Assembleur en parallèle est réellement une vrai aide selon
moi pour bien comprendre le C++.
Oui tu as raison. Ma préoccupation est plutôt dans "le bon
apprentissage" de la programmation en général. Là je pense que C++
n'est pas forcément le meilleur langage pour débuter malgré tes
arguments.
Ceci dit je n'ai certainement pas assez d'expérience pour juger !
Et bien justement, c'est justement à des personnes comme toi que j'ai
envie de poser la question :
Ca veut dire quoi bien programmer ? (ou programmer proprement)
Curieusement c'est une question vraiment intéressante, puisque étant
particulièrement passionné par la programmation en C++ j'ai déjà
commencer à créer quelques mini projet en C++ à l'aide de Qt, et je sens
parfois que je ne fait pas "comme il faut".
C'est dur à expliquer, mais parfois je sens que j'utilise une mauvaise
méthode, que je pourrais "faire autrement", mais je pense que c'est le
manque de pratique surtout qui fait ça.
On a deux heures de cours en amphi et deux heures de TP par semaine, si
on approfondi pas nous même à la maison, ça fait un peu cour je pense.
Cependant je suis un des meilleurs étudiants de ma promo et C++, et je
ne suis donc peut-être pas représentatif, je sais que certains notions
sont difficiles à comprendre pour des gens qui n'ont jamais programmés
de leurs vies.
C'est bizarre si ce n'est pas abordé car c'est plein de pièges.
personnellement, et je ne suis pas le seul, j'en déconseille l'emploi
sauf dans des cas très particuliers.
C'est bizarre si ce n'est pas abordé car c'est plein de pièges.
personnellement, et je ne suis pas le seul, j'en déconseille l'emploi
sauf dans des cas très particuliers.
C'est bizarre si ce n'est pas abordé car c'est plein de pièges.
personnellement, et je ne suis pas le seul, j'en déconseille l'emploi
sauf dans des cas très particuliers.
Marc Boyer a écrit :On 2009-02-06, Wykaaa wrote:Marc Boyer a écrit :On 2009-02-06, Fabien LE LEZ wrote:On Fri, 6 Feb 2009 15:04:42 +0000 (UTC), Marc Boyer
:Voui, mais c'est encore d'autres langages.
Justement. Je crois que la caractéristique principale de la
programmation web, c'est qu'on jongle avec plusieurs langages.
Oui, et une caractéristique importante des IUT, c'est que
tu as 18 mois pour caser toute ta formation. Et quand on
te donne royalement 10h de TP pour faire toutes tes manips
WEB, ben, tu t'amuses pas à en plus leur donner un
nouveau langage pour illustrer tes trucs.
Donc dans un contexte "IUT", il faut prendre Java comme premier langage ?
Ca permet d'apprendre la programmation de façon assez correcte, de
montrer du développement dans un contexte Web et de faire des
applications (à mon avis aussi fiables qu'avec du C++).
Est-ce ton avis ?
Non, pas forcément.
Je pense que Java est incontournable, et qu'il est extrèmement
polyvalent. Après, il faut montrer plusieurs langages dans une
formation d'informaticien. Où les mettre, comment, ça se discute.
Je pense qu'il faut garder un langage proche de la machine,
AMHA C ou C++.
Je pense qu'il faut présenter un langage fonctionnel: Lisp,
Caml.
Après, je trouve qu'on ne présente en POO que les modèles
objet à base de classe, et qu'illustrer les autres approches
peut être un plus. Est-ce que ça passe dans un volume global ?
Je ne sais pas.
Je suis d'accord que dans un cursus informatique, il faudrait, pour les
langages, faire ce que tu dis. Mais il y a tout le reste : réseaux,
bases de données,systèmes d'exploitation (les concepts),etc.
Je croyais que le temps était non extensible ;-)
Marc Boyer a écrit :
On 2009-02-06, Wykaaa <wykaaa@yahoo.fr> wrote:
Marc Boyer a écrit :
On 2009-02-06, Fabien LE LEZ <gramster@gramster.com> wrote:
On Fri, 6 Feb 2009 15:04:42 +0000 (UTC), Marc Boyer
<Marc.Boyer@cert.onera.fr.invalid>:
Voui, mais c'est encore d'autres langages.
Justement. Je crois que la caractéristique principale de la
programmation web, c'est qu'on jongle avec plusieurs langages.
Oui, et une caractéristique importante des IUT, c'est que
tu as 18 mois pour caser toute ta formation. Et quand on
te donne royalement 10h de TP pour faire toutes tes manips
WEB, ben, tu t'amuses pas à en plus leur donner un
nouveau langage pour illustrer tes trucs.
Donc dans un contexte "IUT", il faut prendre Java comme premier langage ?
Ca permet d'apprendre la programmation de façon assez correcte, de
montrer du développement dans un contexte Web et de faire des
applications (à mon avis aussi fiables qu'avec du C++).
Est-ce ton avis ?
Non, pas forcément.
Je pense que Java est incontournable, et qu'il est extrèmement
polyvalent. Après, il faut montrer plusieurs langages dans une
formation d'informaticien. Où les mettre, comment, ça se discute.
Je pense qu'il faut garder un langage proche de la machine,
AMHA C ou C++.
Je pense qu'il faut présenter un langage fonctionnel: Lisp,
Caml.
Après, je trouve qu'on ne présente en POO que les modèles
objet à base de classe, et qu'illustrer les autres approches
peut être un plus. Est-ce que ça passe dans un volume global ?
Je ne sais pas.
Je suis d'accord que dans un cursus informatique, il faudrait, pour les
langages, faire ce que tu dis. Mais il y a tout le reste : réseaux,
bases de données,systèmes d'exploitation (les concepts),etc.
Je croyais que le temps était non extensible ;-)
Marc Boyer a écrit :On 2009-02-06, Wykaaa wrote:Marc Boyer a écrit :On 2009-02-06, Fabien LE LEZ wrote:On Fri, 6 Feb 2009 15:04:42 +0000 (UTC), Marc Boyer
:Voui, mais c'est encore d'autres langages.
Justement. Je crois que la caractéristique principale de la
programmation web, c'est qu'on jongle avec plusieurs langages.
Oui, et une caractéristique importante des IUT, c'est que
tu as 18 mois pour caser toute ta formation. Et quand on
te donne royalement 10h de TP pour faire toutes tes manips
WEB, ben, tu t'amuses pas à en plus leur donner un
nouveau langage pour illustrer tes trucs.
Donc dans un contexte "IUT", il faut prendre Java comme premier langage ?
Ca permet d'apprendre la programmation de façon assez correcte, de
montrer du développement dans un contexte Web et de faire des
applications (à mon avis aussi fiables qu'avec du C++).
Est-ce ton avis ?
Non, pas forcément.
Je pense que Java est incontournable, et qu'il est extrèmement
polyvalent. Après, il faut montrer plusieurs langages dans une
formation d'informaticien. Où les mettre, comment, ça se discute.
Je pense qu'il faut garder un langage proche de la machine,
AMHA C ou C++.
Je pense qu'il faut présenter un langage fonctionnel: Lisp,
Caml.
Après, je trouve qu'on ne présente en POO que les modèles
objet à base de classe, et qu'illustrer les autres approches
peut être un plus. Est-ce que ça passe dans un volume global ?
Je ne sais pas.
Je suis d'accord que dans un cursus informatique, il faudrait, pour les
langages, faire ce que tu dis. Mais il y a tout le reste : réseaux,
bases de données,systèmes d'exploitation (les concepts),etc.
Je croyais que le temps était non extensible ;-)
On Fri, 6 Feb 2009 20:01:15 +0000 (UTC), Marc Boyer :Je pense que Java est incontournable
Si on veut un job dans une grosse entreprise. J'ai toujours l'image
(peut-être erronnée ?) du programmeur Java comme un minuscule rouage
dans une énorme machine, un peu comme un type qui travaille sur une
chaîne de montage chez Renault.Je pense qu'il faut garder un langage proche de la machine,
AMHA C ou C++.
C est effectivement proche de la machine.
C++ l'est aussi un peu, mais on ne s'en rend pas vraiment compte à
l'usage -- sauf quand on en a besoin.
(Indépendamment de ça, il est vrai qu'il vaut mieux savoir lire le C,
afin d'avoir accès à tout le code déjà écrit. Savoir l'écrire est bien
plus difficile, et moins utile.)
Je pense qu'il faut présenter un langage fonctionnel: Lisp,
Caml.
Ou Haskell. Il a l'air à la mode en ce moment. Va falloir que je m'y
mette un jour...
Après, je trouve qu'on ne présente en POO que les modèles
objet à base de classe, et qu'illustrer les autres approches
peut être un plus.
Yep. En plus, ça peut permettre de rappeler qu'il y a (au moins)
autant de modèles OO que de langages dits OO.
On Fri, 6 Feb 2009 20:01:15 +0000 (UTC), Marc Boyer :
Je pense que Java est incontournable
Si on veut un job dans une grosse entreprise. J'ai toujours l'image
(peut-être erronnée ?) du programmeur Java comme un minuscule rouage
dans une énorme machine, un peu comme un type qui travaille sur une
chaîne de montage chez Renault.
Je pense qu'il faut garder un langage proche de la machine,
AMHA C ou C++.
C est effectivement proche de la machine.
C++ l'est aussi un peu, mais on ne s'en rend pas vraiment compte à
l'usage -- sauf quand on en a besoin.
(Indépendamment de ça, il est vrai qu'il vaut mieux savoir lire le C,
afin d'avoir accès à tout le code déjà écrit. Savoir l'écrire est bien
plus difficile, et moins utile.)
Je pense qu'il faut présenter un langage fonctionnel: Lisp,
Caml.
Ou Haskell. Il a l'air à la mode en ce moment. Va falloir que je m'y
mette un jour...
Après, je trouve qu'on ne présente en POO que les modèles
objet à base de classe, et qu'illustrer les autres approches
peut être un plus.
Yep. En plus, ça peut permettre de rappeler qu'il y a (au moins)
autant de modèles OO que de langages dits OO.
On Fri, 6 Feb 2009 20:01:15 +0000 (UTC), Marc Boyer :Je pense que Java est incontournable
Si on veut un job dans une grosse entreprise. J'ai toujours l'image
(peut-être erronnée ?) du programmeur Java comme un minuscule rouage
dans une énorme machine, un peu comme un type qui travaille sur une
chaîne de montage chez Renault.Je pense qu'il faut garder un langage proche de la machine,
AMHA C ou C++.
C est effectivement proche de la machine.
C++ l'est aussi un peu, mais on ne s'en rend pas vraiment compte à
l'usage -- sauf quand on en a besoin.
(Indépendamment de ça, il est vrai qu'il vaut mieux savoir lire le C,
afin d'avoir accès à tout le code déjà écrit. Savoir l'écrire est bien
plus difficile, et moins utile.)
Je pense qu'il faut présenter un langage fonctionnel: Lisp,
Caml.
Ou Haskell. Il a l'air à la mode en ce moment. Va falloir que je m'y
mette un jour...
Après, je trouve qu'on ne présente en POO que les modèles
objet à base de classe, et qu'illustrer les autres approches
peut être un plus.
Yep. En plus, ça peut permettre de rappeler qu'il y a (au moins)
autant de modèles OO que de langages dits OO.
"Avez-vous au moins des cours de gestion de projet (car ça, c'est
nécessaire !). Vous parle-t-on des facteurs qualité en logiciel :
fiabilité, évolutivité, interopérabilité, maintenabilité,
réutilisabilité, etc. ?
Si oui, de quelle façon ? En tient-on compte lors des TP et des
projets ?"
Non, on a pas de cours de gestion de projet à part entière.
En gros au début du cours de POO avancé on en a parlé en justifiant le
fait qu'on devait essayer d'implémenter le plus possible la POO pke
c'est suite à manque de réusabilité, maintenabilité et tuti quanti
dans les entreprises qu'on a commencé à vouloir la mettre en place.
Mais sinon non.
Sinon pour répondre à toute la discussion, plus que l'apprentissage
que tel ou tel language, le point sur lequel je trouve que les
formateurs devraient vraiment évoluer, c'est les projets en eux-mêmes.
Je pense que les étudiants seraient beaucoup plus impliqués, et
apprendrait en autodidacte et tout et tout, si dès le début de
l'année, on leur proposait de former un petit groupe de développeur de
3-4, qui doivent mener à terme un gros projet faisant appel et au
Java, et au C++, et à du script, voire, si l'étudiant s'en sent la
motivation, d'implémenter d'autres languages !
De 1 parce que ca permettrait de voir tous les langages,
de 2 parce que ca donnerait directement des aspects pratiques aux
trucs appris,
de 3 parce que j'en connais pas tant de développeur freelance tout
seul, en général on répartit les taches en équipe et ceux qui ont
l'habitude de bosser chez eux tout seul à partir de 23h ( moi y
comprit ^^) ont du mal à s'intégrer dans des équipes où on doit tout
le temps communiquer sur l'avancement des projets qui nous ont été
assignés.
Après bien sûr ca fout toujours sa merde les projets, y a tjs des
grands drames, mais ce sont des drames formateurs ^^.
"Avez-vous au moins des cours de gestion de projet (car ça, c'est
nécessaire !). Vous parle-t-on des facteurs qualité en logiciel :
fiabilité, évolutivité, interopérabilité, maintenabilité,
réutilisabilité, etc. ?
Si oui, de quelle façon ? En tient-on compte lors des TP et des
projets ?"
Non, on a pas de cours de gestion de projet à part entière.
En gros au début du cours de POO avancé on en a parlé en justifiant le
fait qu'on devait essayer d'implémenter le plus possible la POO pke
c'est suite à manque de réusabilité, maintenabilité et tuti quanti
dans les entreprises qu'on a commencé à vouloir la mettre en place.
Mais sinon non.
Sinon pour répondre à toute la discussion, plus que l'apprentissage
que tel ou tel language, le point sur lequel je trouve que les
formateurs devraient vraiment évoluer, c'est les projets en eux-mêmes.
Je pense que les étudiants seraient beaucoup plus impliqués, et
apprendrait en autodidacte et tout et tout, si dès le début de
l'année, on leur proposait de former un petit groupe de développeur de
3-4, qui doivent mener à terme un gros projet faisant appel et au
Java, et au C++, et à du script, voire, si l'étudiant s'en sent la
motivation, d'implémenter d'autres languages !
De 1 parce que ca permettrait de voir tous les langages,
de 2 parce que ca donnerait directement des aspects pratiques aux
trucs appris,
de 3 parce que j'en connais pas tant de développeur freelance tout
seul, en général on répartit les taches en équipe et ceux qui ont
l'habitude de bosser chez eux tout seul à partir de 23h ( moi y
comprit ^^) ont du mal à s'intégrer dans des équipes où on doit tout
le temps communiquer sur l'avancement des projets qui nous ont été
assignés.
Après bien sûr ca fout toujours sa merde les projets, y a tjs des
grands drames, mais ce sont des drames formateurs ^^.
"Avez-vous au moins des cours de gestion de projet (car ça, c'est
nécessaire !). Vous parle-t-on des facteurs qualité en logiciel :
fiabilité, évolutivité, interopérabilité, maintenabilité,
réutilisabilité, etc. ?
Si oui, de quelle façon ? En tient-on compte lors des TP et des
projets ?"
Non, on a pas de cours de gestion de projet à part entière.
En gros au début du cours de POO avancé on en a parlé en justifiant le
fait qu'on devait essayer d'implémenter le plus possible la POO pke
c'est suite à manque de réusabilité, maintenabilité et tuti quanti
dans les entreprises qu'on a commencé à vouloir la mettre en place.
Mais sinon non.
Sinon pour répondre à toute la discussion, plus que l'apprentissage
que tel ou tel language, le point sur lequel je trouve que les
formateurs devraient vraiment évoluer, c'est les projets en eux-mêmes.
Je pense que les étudiants seraient beaucoup plus impliqués, et
apprendrait en autodidacte et tout et tout, si dès le début de
l'année, on leur proposait de former un petit groupe de développeur de
3-4, qui doivent mener à terme un gros projet faisant appel et au
Java, et au C++, et à du script, voire, si l'étudiant s'en sent la
motivation, d'implémenter d'autres languages !
De 1 parce que ca permettrait de voir tous les langages,
de 2 parce que ca donnerait directement des aspects pratiques aux
trucs appris,
de 3 parce que j'en connais pas tant de développeur freelance tout
seul, en général on répartit les taches en équipe et ceux qui ont
l'habitude de bosser chez eux tout seul à partir de 23h ( moi y
comprit ^^) ont du mal à s'intégrer dans des équipes où on doit tout
le temps communiquer sur l'avancement des projets qui nous ont été
assignés.
Après bien sûr ca fout toujours sa merde les projets, y a tjs des
grands drames, mais ce sont des drames formateurs ^^.