C ++ pour le programmeur C #

J’ai une bonne compréhension de OO de Java et de C # et j’ai la chance, dans mes cours d’ingénierie, d’avoir été exposée aux maux de l’assembleur et de C (les indicateurs sont mon terrain de jeu: D).

Cependant, j’ai essayé de regarder en C ++ et la chose qui me procure est le code de la bibliothèque. Il y a tellement de bons exemples montrant comment effectuer les tâches simples en java et en C #, mais je n’ai pas réussi à trouver une bonne explication sur la façon de faire ces choses en C ++.

J’adorerais approfondir mes connaissances en C ++ pour enrichir mes compétences, mais je n’ai pas encore eu la chance d’être exposé à des personnes et à des communautés enthousiastes à ce sujet.

Est-ce que quelqu’un ici pourrait recommander de bons projets open source ou des tutoriels utiles? Marques de bonus si elles impliquent de java ou C # dans cet environnement.

Je vous conseillerais de parcourir l’excellent livre “Accelerated C ++” d’Andrew Koenig et Barbara Moo ( lien Amazon assaini ). Ce livre vous apprend le C ++ plutôt que de supposer que vous connaissez le C, puis examinez les bits C ++.

En fait, vous plongez et utilisez les conteneurs STL dans les premiers chapitres.

Hautement recommandé.

En plus des autres réponses ici, je pense que vous devriez jeter un coup d’œil à la boîte à outils QT . Il dispose non seulement de widgets d’interface graphique, mais également de bibliothèques pour gérer des bases de données, le multithreading et les sockets.

Une combinaison de BOOST et QT, IMHO, vous fournit les outils nécessaires pour traiter en C ++ tous les problèmes auxquels vous pourriez être confrontés.

Malheureusement, je n’ai pas de telles ressources pour vous car j’ai pris le temps de découvrir lentement les choses, pièce par pièce.

Je tiens toutefois à vous avertir: dans le monde C ++, la bibliothèque standard a été très lente à fournir des services utiles. En gros, vous trouverez quelques algorithmes, des structures de données, quelques classes liées aux chaînes et quelques bases liées aux E / S. Contrairement à Java ou à .Net, il n’existe pas de bibliothèque étendue de classes pour toutes sortes d’activités (mise en réseau, services de système de fichiers, cryptographie, concurrence, etc.) – le plus proche est probablement Boost , qui ressemble à une extension du bibliothèque standard, mais qui est toujours externe (bien que certaines parties retournent à la bibliothèque standard).

Il convient de garder à l’esprit que C ++ est principalement un langage de programmation système. Ainsi, l’accent principal n’est pas mis sur l’exécution de tâches courantes, mais sur la rédaction des outils nécessaires à l’exécution de ces tâches. Par exemple, plutôt que de fournir des bibliothèques d’access à la firebase database prêtes à l’emploi, C ++ est destiné à être utilisé pour l’écriture du moteur de firebase database lui-même.

En supposant que vous connaissiez déjà la syntaxe C ++ et que vous ayez une bonne expérience orientée object, je choisirais la série Effective c ++ .

C’est une collection de “trucs et astuces” expliquant le fonctionnement de c ++ sous le capot. Quels sont les malentendus les plus courants chez les personnes venant d’autres langages et pourquoi c ++ fonctionne de cette façon.

Cela dépend de la plate-forme sur laquelle vous programmez. C ++ n’a pas le même type de bibliothèque que Java ou C #. Ce type de fonctionnalité est traditionnellement fourni par le système d’exploitation. Je vous suggère d’apprendre le C ++ à partir d’un livre (j’aime le logiciel C ++ Primer de Lippman mais il est peut-être un peu lent car il est destiné aux débutants), puis dirigez-vous vers MSDN si vous programmez sur Windows. Il existe des API pour la mise en réseau, l’parsing XML, le cryptage, à peu près tout ce dont vous avez besoin. Ils sont simplement liés au système d’exploitation au lieu de la langue elle-même.

Je ne connais pas les ressources équivalentes pour Linux ou Mac, mais je suis sûr que quelqu’un peut les fournir.