Pourquoi le C ++ est-il souvent la première langue enseignée au collège? [fermé]

12

Mon école commence le programme d'informatique avec des cours de programmation C ++, ce qui signifie que c'est la première langue que beaucoup d'étudiants apprennent.

J'ai vu que beaucoup de gens n'aiment pas le C ++, et j'ai lu diverses raisons pour lesquelles. Il semble presque être l'opinion populaire que le C ++ n'est pas un très bon langage. J'ai l'impression que ce n'est pas très apprécié sur la base de certaines questions sur StackExchange ainsi que de messages tels que:
http://damienkatz.net/2004/08/why-c-sucks.html
http://blogs.kde.org/ node / 2298
http://blogs.cio.com/esther_schindler/linus_torvalds_why_c_sucks
http://www.dacris.com/blog/2010/02/16/why-c-sucks-part-2/
etc.

(Remarque: je ne pense pas que le C ++ soit un mauvais langage. En fait, c'est le principal langage que j'utilise. Cependant, Internet ainsi que certains professeurs m'ont donné l'impression que ce n'est pas un langage très apprécié. En fait , l'un de mes professeurs parle constamment de C ++, mais c'est toujours le langage de départ de mon collège!)

Dans cet esprit, pourquoi est-ce la première langue enseignée dans de nombreuses écoles? Quelles sont les raisons de commencer un programme de programmation avec C ++?

Remarque: Cette question est similaire à "Est-ce que C ++ convient comme premier langage", mais est un peu différent car je ne suis pas intéressé à savoir s'il convient, mais pourquoi il a été choisi.

Casey Patton
la source
6
Quelles écoles et où? Tous ceux près de moi (3 en ville et quelques autres à quelques heures de route) enseignent Java comme première langue. Le C ++ arrive au cours de la dernière année ou deux (selon les cours suivis par un étudiant). C'est ainsi depuis au moins 10 ans.
FrustratedWithFormsDesigner
7
Les professeurs sont comme les autres programmeurs en n'ayant que des goûts et des aversions modérément rationnels. En même temps, ils sont comme des étudiants privés d'expérience.
Mike Dunlavey
@Casey Vous rencontrerez probablement des frictions avec d'autres utilisateurs ici, car vous avez uniquement affirmé que C ++ n'est pas apprécié, mais sans aucune justification. Si votre objectif est simplement de savoir pourquoi le C ++ est choisi dans les universités, je vous suggère fortement de supprimer toutes les références qu'il aime ou n'aime pas, car cela est largement hors de propos pour votre question réelle.
Adam Lear
4
La première année, il s'agit de séparer le blé de l'ivraie.
Steven Evers
2
Il serait intéressant d'avoir des statistiques sur le nombre de collèges / universités qui utilisent quelles langues pour leurs cours d'introduction.
Jerry Coffin

Réponses:

25

Chaque langue a un culte à la fois des amoureux et des haineux; cela est vrai pour C ++, Java, C #, Haskell, Objective-C, peu importe.

Il existe de nombreuses raisons valables d'aimer ou de ne pas aimer une langue.

En fin de compte, il y a plusieurs raisons pour lesquelles le C ++ est principalement enseigné dans les universités:

  • Il s'appuie sur C; par conséquent, la transition de C à C ++ n'est pas trop douloureuse. Un bon nombre d'universités enseignent le C avant le C ++ (ce qui fait beaucoup de sens à l'OMI).

  • C'est l'un des langages les plus populaires de l'industrie (qui commence à changer avec Java, le développement mobile, le développement Web, etc. mais il est toujours là-haut)

  • C'est une langue qui a été écrite par un universitaire, à des fins académiques (c'est-à-dire de recherche) ; par conséquent, de nombreux professeurs l'utilisent au jour le jour et le connaissent très bien, ce qui en fait un choix évident pour le contenu de leur cours.

Ne soyez pas trop pressé de le rejeter comme une "mauvaise" langue; Je vous recommande de vous y plonger, de vraiment l'apprendre, de construire des projets de taille moyenne à grande en l'utilisant. Faites de même avec les autres langues; à ce stade, vous aurez suffisamment d'expérience et de perspicacité pour dire "Je pense que C ++ est mauvais parce que X, Y, Z" ou "Je pense que C ++ est bon parce que A, B, C que Java n'a pas".

Vous avez encore beaucoup à apprendre, jeune sauterelle.

Bitgarden
la source
2
Ce n'est peut-être pas un «mauvais» langage si vous montez à la philosophie du «mauvais est subjectif», mais pour pratiquement toutes les combinaisons de préoccupations techniques, il existe un langage plus productif et plus sûr. À mon avis, la raison pour laquelle le C ++ est enseigné est parce que c'est ce que les gens utilisent, et c'est ce que les gens utilisent parce que c'est ce que les gens savent, et c'est ce que les gens savent parce que c'est ce que les universités enseignent. Mis à part la popularité, le C ++ n'a aucun mérite substantiel que je puisse voir, et je le programme professionnellement.
weberc2
13

Autrement dit, c'est une très bonne langue d'enseignement car elle ne tient pas la main. Les personnes qui apprennent à conduire sur une boîte manuelle n'ont presque aucun problème lors de leur première transmission automatique, mais l'inverse n'est pas vrai. Cela prend plus de temps à apprendre, mais au collège, vous avez 4 ans de programmes de jouets à pratiquer avant de devoir faire quoi que ce soit d'utile.

Karl Bielefeldt
la source
9
Je suis préoccupé par le fait que cette fausse analogie a suscité tant de votes positifs. Ce n'est pas ainsi que l'apprentissage fonctionne. L'une des nombreuses idées fausses de la didactique.
Konrad Rudolph
12
C++ isn't that bad. 

Ce qui est enseigné à l'école dépend généralement de ce que les professeurs savent et de ce qui était utilisé dans l'industrie et populaire à l'époque.

Considérez les écoles comme une capsule temporelle du passé. :)

Je souhaite vraiment que ce soit l'inverse.

poussiéreux
la source
un point très sensible! On ne m'a donné aucun exercice sur les pointeurs intelligents ou RTTI ou RAII au collège. WTF!
Chani
12

L'anglais a également été décrit comme une langue très mauvaise, piratée ensemble, incohérente, mais comme tant de gens ici le savent, mes parents et mes enseignants ont décidé que c'était une bonne idée de me l'apprendre.

Je pense que c'est la même chose avec C ++. C'est une langue que beaucoup de gens connaissent, il vaut donc la peine d'avoir une maîtrise de base.

Il a également l'avantage d'être suffisamment bas pour vous donner vraiment une idée de ce qui se passe au niveau matériel.

Enfin, il n'a pas les problèmes "commerciaux" que certains autres langages ont (comme Java-Oracle ou .NET-MS). Je sais que beaucoup d'universités ne voudraient pas être accusées d'enseigner le produit d'une entreprise en particulier par rapport à une autre.

Scott Whitlock
la source
1
+1 pour c ++ n'étant pas un langage commercial. Il est bon d'apprendre une langue sans se soucier de la politique et des tactiques commerciales. <installation de Java7 sur Linux par exemple>
Chani
5

Si C ++ est si mauvais, comment expliquez-vous que la plupart des produits logiciels que vous utilisez dans votre vie quotidienne sont écrits en C ++?

Il peut y avoir plusieurs raisons d'apprendre le C ++ au collège dès la première année:

  • Il est largement utilisé. La base de code existante est juste énorme, et même maintenant qu'il existe des langages comme Ruby, Python ou C #, C ++ est encore beaucoup utilisé même lors de la création d'applications à partir de zéro, y compris pour les sites Web. Dans ce cas, l'apprentissage du C ++ est un bon choix. Au moins une meilleure que de passer deux ans à apprendre Ada, c'est-à-dire quelque chose que vous n'utiliserez jamais dans votre vie, à moins que vous ne développiez des applications pour vaisseau spatial.

  • Ce n'est pas trop abstrait. Par exemple, comment pouvez-vous expliquer aux élèves ce que sont les pointeurs s'ils n'ont appris que C # ou Java?

  • C'est assez difficile par rapport à, disons, PHP. Cela signifie que les étudiants qui ne sont pas faits pour la programmation partiront bientôt, ce qui n'est pas si mal et évite à un étudiant de perdre deux ou trois ans avant de comprendre que le développement de logiciels n'est pas pour lui.

Cela rend C ++ plus approprié que Ada, Java ou PHP.

Arseni Mourzenko
la source
1
Il semble que C serait mieux pour vos deux seconds points. Y a-t-il des écoles qui enseignent Ada? Je prendrais certainement cela sur C ++ mais là encore je suis bizarre!
Jetti
C ++ est sélectionné pour les produits commerciaux parce que c'est ce que plus de gens savent, pas à cause de ses préoccupations techniques. C ++ est un langage dangereux et difficile à utiliser par rapport à de nombreux langages modernes. Les langues ne sont pas sélectionnées en fonction de leurs mérites mais parce qu'elles sont populaires.
weberc2
De plus, je ne peux pas penser à beaucoup de choses qu'Ada fait pire que C ++, et je préfère de loin l'utiliser que C ++ (mon code serait de toute façon plus simple et plus sûr), et je programme en C ++ professionnellement! Et pour enseigner aux élèves les pointeurs, il y a toujours l'ada, le go ou l'une des nombreuses langues sensées. Et en ce qui concerne votre dernier point, C ++ est inutilement difficile. De nombreux problèmes auxquels sont confrontés les programmeurs C ++ n'ont rien à voir avec la programmation, mais avec la maîtrise de C ++. La programmation à n'importe quel niveau est assez simple dans un langage sain.
weberc2
5

De manière générale, si vous pouvez apprendre et maîtriser le C ++, vous pouvez apprendre et maîtriser à peu près n'importe quel autre langage. La raison pour laquelle il n'a pas aimé, c'est parce que, pour être compétent et avoir un temps de sortie rapide, vous devez être très familier avec la langue et sa bibliothèque standard.

Cependant, dans un langage tel que Java, vous pouvez avoir un temps de déploiement rapide avec seulement quelques connaissances avancées des tenants et aboutissants de la bibliothèque de langage / standard. Enfer, je ne connais que cinq choses de la bibliothèque standard Java par cœur (à part les trucs de base comme les collections bien sûr).

Cela étant dit, C ++ est toujours un langage largement utilisé en raison de sa grande combinaison de vitesse et de méthodologies orientées objet. Bien que beaucoup de gens croient que ce n'est pas une POO complète, je crois que cela vous donne la plupart de la flexibilité de la POO sans vous forcer à être un fanatique total. La plupart des compilateurs vous permettent même d'écrire du C. pur

Si j'avais le choix, je prendrais C ++ sur Java n'importe quel jour, mais c'est juste moi qui suis fanboy. D'une manière générale, Java est utile car il fonctionnera sur à peu près n'importe quelle architecture qui a un interpréteur Java construit pour cela. Ainsi, pour les applications clientes qui doivent être prises en charge sur plusieurs plates-formes, il est considéré comme le meilleur outil pour le travail et la plupart des nouvelles applications écrites sont basées sur le Web de toute façon.

user32288
la source
Ce n'est peut-être pas le cas du code objet, mais la promesse des langages C, y compris C ++ à l'époque, était qu'il y avait des compilateurs pour à peu près toutes les plates-formes, de sorte que le même code source pouvait être utilisé pour compiler des applications pour une grande variété de plates-formes.
JohnFx
C'est en fait vrai. La plupart des plates-formes * NIX ont des compilateurs intégrés et cela a tendance à avoir un effet psychologique sur la plupart des gens sous la forme "Bien sûr, je pourrais télécharger CE compilateur, mais celui-ci est venu avec mon système d'exploitation alors il doit sûrement être le meilleur".
Vous devriez essayer d'autres langages que Java - il existe des alternatives qui constituent le meilleur des deux mondes. Go, par exemple, offre rapidité, portabilité et simplicité et facilite l'accès simultané.
weberc2
4

Comme certains de mes professeurs me l'ont dit, il est plus facile de commencer par le bas ou un niveau bas, puis de progresser. Un langage comme C ++ vous donne une excellente introduction à ce qu'est vraiment un informaticien. Ce n'est peut-être pas un langage aussi glamour que Java, Python, Ruby, etc ... mais il vous permet d'acquérir une compréhension de base des fonctionnalités importantes du programme telles que les pointeurs et la gestion de la mémoire. Même si ce n'est pas un langage que vous prévoyez ou souhaitez utiliser pour le reste de votre vie, vous apprécierez dans les années à venir lorsque vous commencerez à trouver le chemin de programmation souhaité.

Mike
la source
Cela ressemble à un argument pour Ada, pas C ++ ...
weberc2
3

C ++ peut être l'un des langages les plus simples pour les programmes de console de niveau débutant. Bien sûr, le langage est complexe, mais vous pouvez vous concentrer sur un sous-ensemble procédural. Vous pouvez ignorer l'existence de pointeurs pendant un certain temps. Vous pouvez commencer par simple, puis construire.

Il y a moins de syntaxe "fluff" pour que ce programme "hello world" initial soit opérationnel par rapport à java ou C #. Un débutant devrait-il voir le mot "statique" pour une application Hello World? En java / C #, ils le font.

jojo
la source
3

Quand j'ai étudié l'informatique, Java a d'abord été enseigné, mais mon université nous enseigne actuellement deux langues pour nous, linguistes computationnels: d'abord Prolog puis C ++.

Le C ++ est enseigné pour (au moins) les raisons suivantes:

  • C'est un langage à usage général, vous pouvez écrire des logiciels pour n'importe quel système d'exploitation avec lui (car il existe de nombreux compilateurs). Il est conçu pour être un bon langage de production, il facilite la réutilisation des parties de programme, l'interopérabilité avec le matériel et les logiciels du monde réel, etc.

  • C'est vraiment rapide. Vous ne pouvez pas utiliser Python ou Scheme ou Prolog pour traiter d' énormes ensembles de données, qui sont courants ces temps-ci. Pensez à des algorithmes graphiques avec des millions de nœuds. (C'est aussi pourquoi les jeux informatiques sont généralement écrits en C ++.)

  • Les élèves peuvent apprendre ce que fait le compilateur. En fait, tant que je n'ai appris que Java (à partir du lycée), le travail du compilateur m'a toujours semblé magique. Vous ne connaissez simplement pas la pile et le tas, tout le lien statique contre la liaison dynamique, etc. en tant que débutant Java. C ++ démystifie tout l'ordinateur.

  • Pour ce qu'il peut faire, c'est correct en temps d'apprentissage (bien que ce soit probablement l'une des langues les plus compliquées si vous y creusez vraiment). Il offre une belle bibliothèque qui aide à une courbe d'apprentissage fluide. (Cependant, il existe différentes approches. Dans mon université, on nous a appris à écrire nos propres classes de cordes et pointeurs intelligents avant de pouvoir utiliser la bibliothèque; Bjarne Stroustrup, l'inventeur de C ++, encourage l'ordre inverse.)

Felix Dombek
la source
Cela n'explique pas pourquoi Ada, par exemple, n'est pas enseigné comme première langue.
weberc2
2

C / C ++ est en fait un meilleur langage que la plupart des autres, tout d'abord parce qu'il n'ajoute pas un faux sentiment de sécurité. Deuxièmement parce que vous devez savoir ce que vous faites.

J'aime vraiment la langue et je la considère supérieure à la plupart des alternatives.

Il est également aussi productif que la plupart des autres langues, et pas si "crasque" si vous savez ce que vous faites, et réfléchissez avant de copier des pâtes au hasard.

Aussi une bonne lecture - http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Cependant, certaines choses en C ++ sont en fait mauvaises, par exemple des exceptions, et des frais généraux peu intuitifs dans certains cas. C'est la raison, je suppose, pour laquelle Linus est si négatif à ce sujet dans le message que vous avez cité.

Une bonne lecture pour toucher l'un des sujets connexes - http://blogs.msdn.com/b/oldnewthing/archive/2004/04/22/118161.aspx

Codeur
la source
3
Cette réponse est tout simplement fausse. D'abord et avant tout parce qu'il n'y a pas de langage appelé «C / C ++».
Konrad Rudolph
1
  1. Les professeurs n'aiment pas préparer un nouveau cours et il y a des limites à ce que vous pouvez offrir.
  2. Les langues vont et viennent, alors elles ont renoncé à rester à la pointe (voir n ° 1)
  3. C'est une université et non une école technique. Mettre davantage l'accent sur la création d'une base que sur la formation professionnelle
  4. Couvre une gamme assez large de programmation: serveur, bureau, embarqué, UNIX, Windows.
  5. Ils l'utilisent comme un cours d'élimination. Chaque domaine d'étude principal en a au moins un.
JeffO
la source
1

Plus tôt, il y avait Pascal, plus tôt Pascal, il y avait quelque chose de similaire Basic. La partie intéressante est - et ensuite? Peut-être rien. J'ai une réflexion sur "pourquoi c ++". Parce que c'est dur, mais ce n'est pas aussi dur que le lisp. Non, je comprends vraiment que C ++ est un bon langage pour la programmation système, je sais qu'il y a beaucoup de projets codés en C ++ et il y a des tonnes de bibliothèques pour que les étudiants puissent tout créer avec. Mais nous parlons des étudiants et de leur possibilité de créer des logiques et de comprendre le système. Vous ne pouvez pas être un bon codeur C ++ si vous ne pouvez pas créer de logiques simples et comprendre comment fonctionne le système et c'est une raison principale à mon avis. Et oui, une autre raison simple est un début de carrière stable.

cnd
la source