Faut-il enseigner le C et le C++ ensemble ou séparément ?

Le , par r0d, Expert éminent
Bonjour à tous,

je commence a avoir un peu d'expérience en c++, et récemment j'ai eu des développeurs juniors sous ma responsabilité, qui devaient implémenter ce que j'avais conçu. Rien d'impressionnant, c'étaient des petits projets, mais je me suis un peu énervé car leur code était très instable à cause des char* et autres int[] - sans parler des void* - qu'il y avait dans leur code. Je n'ai pas voulu faire l'intégriste dès le début et je les ai laissé faire. Du coup on a perdu beaucoup de temps en debug.

Du coup j'en ai discuté avec pas mal de collègues, et mon point de vue est: "lors de la formation, il faut absolument insister sur le fait que C et C++ sont des langages différents et insister sur ces différences". Mais ici, en Espagne, peu de gens sont d'accord avec moi. Pour eux, puisque ces deux langages sont quasiment pareil, il n'est pas nécessaire de l'enseigner séparément, ce serait une perte de temps etc.

Et du coup, je suis un peu à cours d'arguments. Sauriez-vous m'aider à répandre la bonne parole?

J'insiste sur le fait que la discussion porte sur la formation (universitaire ou professionnelle).


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de metagoto metagoto - Membre éclairé https://www.developpez.com
le 13/11/2009 à 22:11
Surtout que depuis 2005 avec VS8, les versions gratuites (express) ne sont limitées qu'au niveau de l'IDE. Si je ne dis pas de conneries, le compilo, le linker etc sont les mêmes que ceux des versions payantes. Bref, pour zero anciens francs, on a le meilleur de la tech de microsoft
Avatar de Médinoc Médinoc - Expert éminent sénior https://www.developpez.com
le 13/11/2009 à 23:26
Les versions Express n'ont pas les bibliothèques MFC et ATL non plus.
Avatar de akirira akirira - Membre du Club https://www.developpez.com
le 14/11/2009 à 0:13
Citation Envoyé par koala01  Voir le message
Je sais digresse énormément, et je m'en voudrais le lancer un troll

Trop tard....

Citation Envoyé par koala01  Voir le message
Et, quand on voit son prix, on se dit que, sans *forcément* racheter chaque année la nouvelle version, l'école pourrait quand même envisager de se mettre à jour de temps en temps

Et même faire bien mieux : balancer toutes les applis MS de ses postes pédagogiques, et installer du libre ;-).

Code::Blocks s'installe en 2 minutes, et permet de faire tout ce qu'on demande à des étudiants en C++, pour un prix... modique ;-)

Après, ne connaissant pas les version récentes de VS, je ne peux pas (trop) en dire du mal. Si autant de gens l'utilisent, c'est qu'il doit quand même y avoir des "plus". Mais dans un contexte d'apprentissage C/C++ (retour au topic...), l'achat de licences MS est, d'une part, parfaitement inutile, d'autre part, néfaste, en ce sens qu'il contribue à diffuser l'idée de l'omniprésence de MS sur l'informatique.

My two cents....
Avatar de koala01 koala01 - Expert éminent sénior https://www.developpez.com
le 14/11/2009 à 0:25
Citation Envoyé par akirira  Voir le message
Trop tard....

Et même faire bien mieux : balancer toutes les applis MS de ses postes pédagogiques, et installer du libre ;-).

Code::Blocks s'installe en 2 minutes, et permet de faire tout ce qu'on demande à des étudiants en C++, pour un prix... modique ;-)

Après, ne connaissant pas les version récentes de VS, je ne peux pas (trop) en dire du mal. Si autant de gens l'utilisent, c'est qu'il doit quand même y avoir des "plus". Mais dans un contexte d'apprentissage C/C++ (retour au topic...), l'achat de licences MS est, d'une part, parfaitement inutile, d'autre part, néfaste, en ce sens qu'il contribue à diffuser l'idée de l'omniprésence de MS sur l'informatique.

My two cents....

Je ne veux pas rentrer dans ce genre de débat (au sujet duquel je suis d'ailleurs de ton avis), car je dois reconnaitre ne pas faire partie de ceux qui tiennent microsoft dans une très haute estime sur ce point...

Mais, quitte à les utiliser, qu'au moins ce ne soit pas ceux qui méritent une place au musée...

D'autant plus que j'ai la conviction que les machines sur lesquelles ils sont installés ne sont pas aussi vieilles...
Avatar de - https://www.developpez.com
le 14/11/2009 à 1:07
Citation Envoyé par akirira  Voir le message
Mais dans un contexte d'apprentissage C/C++ (retour au topic...), l'achat de licences MS est, d'une part, parfaitement inutile, d'autre part, néfaste, en ce sens qu'il contribue à diffuser l'idée de l'omniprésence de MS sur l'informatique.

Ca permet aux étudiants d'avoir l'habitude de l'IDE qu'ils auront le plus de chance d'utiliser dans la 'vraie vie'. A mon avis c'est assez judicieux, sauf à vouloir que les cours d'informatique ne donnent qu'une formation théorique (je connais des universitaires qui pensent cela...), mais dans ce cas, il vaudrait mieux éviter le C++, trop utile dans la vraie vie, et préférer un langage qui n'est à peu près jamais utilisé.

Et puis, l'omniprésence de Microsoft sur les poste utilisateurs en entreprise, ce n'est pas une idée, mais une réalité.

Pour revenir à l'exemple cité. J'avoue ne pas très bien comprendre le problème. Un exemple qui ne compile pas "direct", on trouve ca dans les livres aussi, ce n'est pas bien grave. Voire, si cela permet d'apprendre des choses utiles sur les headers et les namespaces...

Francois
Avatar de JolyLoic JolyLoic - Rédacteur/Modérateur https://www.developpez.com
le 14/11/2009 à 1:28
Citation Envoyé par akirira  Voir le message
Après, ne connaissant pas les version récentes de VS, je ne peux pas (trop) en dire du mal. Si autant de gens l'utilisent, c'est qu'il doit quand même y avoir des "plus". Mais dans un contexte d'apprentissage C/C++ (retour au topic...

Dans un contexte d'apprentissage, l'utilisation d'un debogueur pas à pas pour montrer ce qui se passe dans un programme peut être un avantage non négligeable. C'est un des points où le compilateur Microsoft brille.
Avatar de akirira akirira - Membre du Club https://www.developpez.com
le 14/11/2009 à 9:58
Citation Envoyé par JolyLoic  Voir le message
Dans un contexte d'apprentissage, l'utilisation d'un debogueur pas à pas pour montrer ce qui se passe dans un programme peut être un avantage non négligeable. C'est un des points où le compilateur Microsoft brille.

Je veux bien te croire. Personnellement, j'ai jamais trouvé gdb très facile d'accès, et au final je débogue autrement.

Citation Envoyé par fcharton  Voir le message
Et puis, l'omniprésence de Microsoft sur les poste utilisateurs en entreprise, ce n'est pas une idée, mais une réalité.

Justement ! Si c'est pas au cours de leurs études qu'on leur explique qu'il y a "autre chose" que le logiciel propriétaire, ils risquent de ne jamais le voir, et beaucoup retiendrons que "pour les trucs sérieux, c'est MS", alors que le modèle libre a quand même montré (me semble-t-il...) qu'il pouvait en sortir des choses intéressantes.
Et puis quand on est habitué à une IDE, on s'adapte sans problème à une autre.
Mais je reconnais qu'on s'éloigne, là...
Avatar de Mac LAK Mac LAK - Inactif https://www.developpez.com
le 16/11/2009 à 9:53
Citation Envoyé par akirira  Voir le message
Justement ! Si c'est pas au cours de leurs études qu'on leur explique qu'il y a "autre chose" que le logiciel propriétaire, ils risquent de ne jamais le voir, et beaucoup retiendrons que "pour les trucs sérieux, c'est MS", alors que le modèle libre a quand même montré (me semble-t-il...) qu'il pouvait en sortir des choses intéressantes.
Et puis quand on est habitué à une IDE, on s'adapte sans problème à une autre.
Mais je reconnais qu'on s'éloigne, là...

J'utilise quotidiennement VS2008 ET GCC, mais pas pour les mêmes cibles...
De façon générale, j'utilise l'IDE VS, et le compilateur VS pour les cibles Win32. Je n'utilise GCC que pour mes cibles embarquées, sur les mêmes sources.

GCC est peut-être gratuit, mais côté vitesse de compilation, la copie est très nettement à revoir je trouve par rapport à VS. De plus, le debug via GDB est juste infâme, et les surcouches graphiques ne sont pas applicables sur les cibles sans écran. Quant au remote debug, c'est tellement pénible à mettre en place (et en pratique) qu'au final, on ne l'utilise jamais.
Pour finir, côté IDE, je suis désolé mais pour l'instant je n'ai pas vu un seul IDE gratuit lui arriver à la cheville. On s'adapte peut-être aux IDE, certes, mais les fonctionnalités manquantes deviennent vite horriblement gênantes.

Si MS est omniprésent sur les postes de dév, il y a une bonne raison, et ce n'est pas d'aimer payer des licences, crois-moi.
Avatar de Syl_20 Syl_20 - Membre actif https://www.developpez.com
le 16/11/2009 à 14:11
Ayant utilisé de manière professionnelle et privée plusieurs IDE: VS6, VS2003, VS2005 et aussi du libre: CodeBlocks et d'autres trucs sous Linux notement en ligne de commande je trouve Visual studio bien meilleurs notamment le debuggeur et d'autres fonctionnalités variées facilitant la vie

Pour revenir au sujet: l'apprentissage du C++, je pense qu'une école doit apprendre aux étudiants le C++ standard avec les trucs modernes qui vont avec mais sans oublier d'enseigner ce qu'il faut pour que l'étudiant qui va travailler sur un projet de plus de 10 ans puisse travailler avec le code ancien qu'il va trouver.
Le tout sur au moins 2 IDE genre VS et codeblocks par exemple pour que l'étudiant apprenne la variété des IDE et compilateurs possibles.

J'ai bossé en 2007 chez un client, grosse boite française très connue, sur un logiciel de près de 10 ans d'age des centaines de millier de lignes de code et 2 heures de compilations le tout sur VS6 comme IDE.
Avatar de (Be) Peter (Be) Peter - Futur Membre du Club https://www.developpez.com
le 16/11/2009 à 15:38
Citation Envoyé par Médinoc  Voir le message
Salut,
Déjà, je suis parfaitement d'accord avec toi. Un des arguments, c'est que le C est extrêmement limité par rapport au C++: Beaucoup de choses "propres" en C ne paraissent propres que parce qu'on n'a pas le choix, mais horriblement sales dans les autres langages.

Avec le C, on met les mains dans le cambouis. Avec le C++, on a droit à des gants, et ne pas les utiliser relève d'un manque de compétence.


Le C est un langage de bas niveau pour se passer de l'assembleur. Il faut tout faire. mais rien n'empèche de créer ses propres librairies pour se facilité la tâche.
Le C++ est un langage pour gagner du temps.
Il est déjà très fournis et très dirigé.

Je suis un fan du C. J'adorais ce langage qui me laissait libre de ma programmation. Je n'ai appris que le Pascal par la suite à l'école et parce qu'il fallait bien. J'ai refuse le basic.
J'ai appris l'assembleur aussi qui est la base de la programmation.

Ce qui sème la confusion est le concept d'interface à la 'windows'.

Quand il fallait tout faire soit-même sous 640k et avec un dos peu serviable, c'était de la programmation et le C était le meilleur pour la tâche.

Ce sont deux langages de leur époque.

Le C sans rien qu'un Dos et le C++ avec le frontal 'windows'.

Avatar de Médinoc Médinoc - Expert éminent sénior https://www.developpez.com
le 16/11/2009 à 22:10
Citation Envoyé par (Be) Peter  Voir le message
Le C est un langage de bas niveau pour se passer de l'assembleur. Il faut tout faire. mais rien n'empèche de créer ses propres librairies pour se facilité la tâche.
Le C++ est un langage pour gagner du temps.
Il est déjà très fournis et très dirigé.

Je suis un fan du C. J'adorais ce langage qui me laissait libre de ma programmation. Je n'ai appris que le Pascal par la suite à l'école et parce qu'il fallait bien. J'ai refuse le basic.
J'ai appris l'assembleur aussi qui est la base de la programmation.

Ce qui sème la confusion est le concept d'interface à la 'windows'.

Quand il fallait tout faire soit-même sous 640k et avec un dos peu serviable, c'était de la programmation et le C était le meilleur pour la tâche.

Ce sont deux langages de leur époque.

Le C sans rien qu'un Dos et le C++ avec le frontal 'windows'.


Il n'est pas question ici de front-end contre back-end, mais de conteneur fortement typé contre void*, et RRIF contre marcher sur la corde raide avec les free()...
Offres d'emploi IT
Technicien informatique H/F
Michael Page - Provence Alpes Côte d'Azur - Monaco
Ingénieur devops h/f
ONE2TEAM - Ile de France - Neuilly-sur-Seine (92200)
CONSEILLER CLIENTELE 78 (H/F) - CDI
HILTI FRANCE - Ile de France - MAGNY-LES-HAMEAUX

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique C