Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pédagogie : C++ ou Java ?

133 réponses
Avatar
Gilles
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

10 réponses

1 2 3 4 5
Avatar
Fabien LE LEZ
On Fri, 6 Feb 2009 06:22:00 +0100, "Gilles" :

Il est fortement question de changer ce choix
dans notre IUT pour remplacer C++



Est-ce que tu as identifié des problèmes avec le choix du C++ ?

par Java



Mais pourquoi Java ? Pourquoi tant de haine envers des étudiants qui
ne t'ont encore rien fait ?

Si tu cherches un langage plus simple que C++, ça ne manque pas. Les
plus populaires étant Javascript, Python et Ruby.
Note d'ailleurs que Javascript a un modèle objet assez différent du
modèle "classique" (les classes de C++) ; il me semble donc utile de
l'aborder en cours.

(Je laisse bien sûr PHP de côté : c'est un langage mal conçu, et de
toute façon facile à apprendre quand on en connaît un autre.)

- est-il raisonnable de lâcher sur le marché du travail des informaticiens
"Bac+2" qui n'aient jamais programmé en C++ ?



AMHA, ce n'est pas choquant. D'autant qu'un type qui connaît un
langage de haut niveau (mettons, Python), mais pas le C, n'aura guère
de mal à prendre le C++ par le bon bout s'il en a besoin.
Avatar
Marc Boyer
On 2009-02-06, Fabien LE LEZ wrote:
On Fri, 6 Feb 2009 08:45:15 +0000 (UTC), Marc Boyer
:

Mais Java sera aussi un bon support pour tout ce qui est
programmation WEB.



Ah ben pourquoi ?



On parlait C++ vs Java.
C'est plus facile de faire un TP de développement Web dans
l'environnement J2EE, JSP, Tomcat, qu'avec du C++.

La programmation web "généraliste", c'est plutôt PHP/Python/Ruby côté
serveur, et HTML/Javascript (voire Flash/Flex) côté client.



Voui, mais c'est encore d'autres langages.
Et des étudiants (contexte de la discution), ça leur
demande un effort de changer de langage. Les principes
de la prog WEB, tu peux les illustrer avec Java facilement
(et le passage PHP/Python devrait se faire pas trop mal).
En C++, c'est bien sur théoriquement possible (j'ai vu
les docs pour le faire en C), mais bon...

Marc Boyer
--
Au XXIème siècle, notre projet de société s'est réduit
à un projet économique...
Avatar
Fabien LE LEZ
On Fri, 6 Feb 2009 13:04:05 +0000 (UTC), (Marc Espie):

Après tout JavaScript n'est pas un mauvais langage.





Mais très très méconnu, même de ceux qui l'utilisent tous les jours.

Graves soucis de portabilite d'un navigateur a l'autre...



Peux-tu préciser ?

Honnêtement, les principaux problèmes que j'ai pu rencontrer venaient
d'erreurs dans mon code que Firefox n'avait pas su détecter, et qui
bloquaient IE.

Bien sûr, je parle là du langage Javascript en lui-même. Le DOM est
une autre histoire, qui concerne autant HTML que Javascript.

Par ailleurs, Javascript ne tourne pas forcément dans un navigateur.
http://ejohn.org/blog/server-side-javascript-with-jaxer/
http://en.wikipedia.org/wiki/Server-side_JavaScript

De plus, depuis quelques mois, grâce à Firefox 3 et surtout Chromium,
la vitesse d'exécution de Javascript a été considérablement augmentée
(J'ai vu un facteur 10 entre FF2 et FF3/Chromium sur une fonction que
j'avais codée pour un produit réel.)
Avatar
Fabien LE LEZ
On Fri, 06 Feb 2009 13:21:40 +0100, Wykaaa :

Bof, bof, bof. ruby possede aujourd'hui de graves problemes de performance.
Ils seront peut-etre regles dans un avenir proche, mais ca n'est pas encore
le cas.



Et alors, l'enseignement ne doit-il pas (un peu) anticiper ?



Oué mé bon... l'avenir est-il dans l'amélioration de Ruby, ou dans sa
disparition du devant de la scène ?
Avatar
Fabien LE LEZ
On Fri, 6 Feb 2009 10:58:01 +0000 (UTC), (Marc Espie):

le passage a Java soit inevitable, et constitue
une bonne chose pour l'avenir professionnel de tes etudiants... et soit une
catastrophe vis-a-vis de la qualite du code produit a terme, mais on ne
peut pas tout avoir.



Je pense que tu as mis le doigt sur le noeud du problème : Gilles doit
choisir entre une formation professionnelle (i.e. les élèves sont tout
de suite productifs dans le marché actuel) ou une formation plus
ouverte, qui ouvre des horizons mais ne permet pas d'être tout de
suite productif.

Les deux possibilités sont envisageables, mais sont bien sûr
radicalement différentes.

La première est acceptable parce que Java semble être le nouveau
COBOL : on aura encore besoin de programmeurs Java dans trente ans,
pour entretenir des logiciels créés aujourd'hui. Pas forcément
agréable, mais ça remplit le ventre.

La seconde est plus "universitaire" : les élèves ont une vision
d'ensemble des différents paradigmes de programmation, et devraient
être capables d'acquérir rapidement les bases de n'importe quel
langage.
Avatar
Fabien LE LEZ
On Fri, 06 Feb 2009 13:38:33 +0100, Wykaaa :

mais la gestion mémoire,
par exemple, me semble venir dans un deuxième temps du point de vue de
la pédagogie de l'apprentissage.



Certes. Ça vient dans un deuxième temps dans l'apprentissage du C++.
Avatar
Fabien LE LEZ
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.
Avatar
Marc Boyer
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.

Marc Boyer
--
Au XXIème siècle, notre projet de société s'est réduit
à un projet économique...
Avatar
espie
In article ,
Fabien LE LEZ wrote:
On Fri, 6 Feb 2009 13:04:05 +0000 (UTC), (Marc Espie):

Après tout JavaScript n'est pas un mauvais langage.





Mais très très méconnu, même de ceux qui l'utilisent tous les jours.

Graves soucis de portabilite d'un navigateur a l'autre...



Peux-tu préciser ?



Confere Acid3, par exemple.

Honnêtement, les principaux problèmes que j'ai pu rencontrer venaient
d'erreurs dans mon code que Firefox n'avait pas su détecter, et qui
bloquaient IE.



J'ai regulierement des soucis de trucs qui ne fonctionnent pas sur firefox,
ou IE, ou opera, ou safari...

Il suffit de voir la tete d'une bibliotheque telle que prototype ou jquery
des qu'elle essaie de faire des choses un peu subtiles: il y a des tests
dependant du navigateur.

Et les performances sont aussi un probleme de portabilite dans l'immediat:
le paysage des navigateurs web est tout sauf unifie, donc tu peux tres
bien faire un truc acceptable sur Chrome, qui va se trainer sur IE.
Avatar
pjb
Fabien LE LEZ writes:

On Fri, 06 Feb 2009 10:17:35 +0100, (Pascal J.
Bourguignon):

Avant d'attaquer C++, il faudrait avoir été formé à
différents langages, du C au Lisp,



Non. Le C est le pire moyen d'arriver au C++.



Oui. Je n'ai pas dit d'aller du C au C++. J'ai dit d'avoir une large
connaissance des langages (et même de la conception des langages),
avant d'attaquer le C++, car pour l'utiliser, il faudra le finir.


--
__Pascal Bourguignon__
1 2 3 4 5