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.
Réponses:
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source
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é.
la source
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.
la source
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.)
la source
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
la source
la source
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.
la source