CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C++ moderne (et emploi)

Dam979
Dam979
Niveau 7
30 mars 2016 à 21:06:08

Salut tout le monde,

J'ai une question pour les connaisseurs de c++ : Est-ce vraiment encore utile de programmer en c++ "à l'ancienne" ?

Pour placer le contexte, j'ai appris à programmer il y a 4 ans en C, puis je suis passé sur du java et c# (dû en grande partie à l'école). Cependant, le C est toujours resté dans ma tête et je me suis mis au c++ pour combiner le C avec les concepts de POO que j'avais appris. Depuis, je programme pour le plaisir en C++ en m'auto-formant comme je peux depuis un peu plus de 2 ans.

Au fil du temps, j'ai pu remarqué qu'il y avait 2 camps : ceux qui programmaient avec la "philosophie" et les principes bas niveau repris du C et les personnes qui prônaient le "modern C++".
Personnellement, j'ai de très bon souvenirs du C (même si il m'est impossible de reprendre la programmation en C, je suis devenu trop dépendant de la POO) et j'adore optimiser au maximum tout ce que je peux. Du coup, je me retrouve plus du côté du "vieux c++" (peut être aussi à cause de ma méconnaissance du fonctionnement du langage).

Cependant, j'arrive à la fin de mes études et j'ai quand même envie de postuler pour des jobs en C++. Du coup, sur le marché de l'emplois, quel genre de philosophie est en place ? J'ai un peu peur de m'habituer à une façon de programmer qui ne pourra pas me servir professionnellement (même si je continuerai pour le plaisir).

Donc si quelqu'un pouvait faire un état des lieux sur le marché de l'emploi ou tout simplement donner son avis sur les 2 façons de coder, je suis tout ouïe.

Merci d'avance (et désolé pour le pavé)

Tikim
Tikim
Niveau 21
30 mars 2016 à 21:14:04

Je comprends pas vraiment ce que tu appelles vieux C++ mais globalement si tu veux du bas niveau ça se passe dans l'embarqué sur des microcontroleur. Du RISC 8bits pour du très n'as niveau, ou du bon gros 32 bits (Cortex M0+ à M4) pour du plus haut niveau, donc C++ avec un peu plus de possibilités (utilisation plus poussée des structures, d'un OS temps réel)

Dam979
Dam979
Niveau 7
30 mars 2016 à 21:24:33

Ben en gros, ce que j'appelle le vieux C++, c'est du C avec des classes. L'utilisation des new et delete à la place des smart pointer, références, etc.
Je ne peux pas expliquer ce que je pense de façon très claire car je me sens encore trop novice que pour déterminer une frontière entre le C++ moderne et la façon plus old school. En résumé, je ne sais pas moi même ce qui est quoi. J'essaye juste de m'orienter vers ce qui peut me servir dans un boulot.

Ou sinon, pour ce qui est de bas niveau, je me contente de programmer des jeux vidéo. Je parle de bas niveau en grande partie à cause de la comparaison que je fais avec le Java ou le C#.

katk
katk
Niveau 10
30 mars 2016 à 22:39:59

je suis loin d'etre un expert en C++ mais perso j'ai encore jamais touche a un smart pointer, je prefere a l'ancienne, pour moi tant que l'on sait gerer la memoire ca ne presente que des avantages

Pseudo supprimé
Pseudo supprimé 30 mars 2016 à 23:09:05

Sachant que le c++17 va bientôt arriver je pense qu'il vaut mieux abandonner l'ancienne méthode

Message édité le 30 mars 2016 à 23:10:05 par Pseudo supprimé
Yiurule
Yiurule
Niveau 10
31 mars 2016 à 09:57:01

Le 30 mars 2016 à 22:39:59 katk a écrit :
je suis loin d'etre un expert en C++ mais perso j'ai encore jamais touche a un smart pointer, je prefere a l'ancienne, pour moi tant que l'on sait gerer la memoire ca ne presente que des avantages

"pour moi tant que l'on sait gerer la memoire ca ne presente que des avantages"

Faudrait vraiment qu'on m'explique ce point.
Alors oui, pour la culture G, ok, mais sur un vrai projet, ça sert à quoi si ce n'est que potentiellement foutre des bugs ?

edit:
Pour répondre à la question, C++11/14/17, largement.
Si c'est pour utiliser le C++ comme du C, bah... autant utiliser du C.

Message édité le 31 mars 2016 à 09:58:41 par Yiurule
LGV
LGV
Niveau 28
31 mars 2016 à 12:26:11

Faudrait vraiment qu'on m'explique ce point.

Generalement quand on fait du C++, c'est qu'on a besoin d'etre proche du hardware pour un controle fin des mecanismes internes du programme, pour des raisons d'architecture materielle et/ou de performances. Typiquement, de l'embarqué, des jeux videos pc/console, etc.
Dans ces scenarios il est frequent d'avoir des contraintes fortes au niveau de la memoire et de sa gestion, et on retrouve souvent a devoir ecrire des allocateurs et manageurs personnalises pour certains types d'objets repondant a des criteres precis (ex. classique : des systemes de particules)

Des solutions "naives" a coup de smart pointers ou garbage collector ne sont pas toujours viables.

Yiurule
Yiurule
Niveau 10
31 mars 2016 à 13:41:44

Pas forcément adapter au garbage collector, je peux comprendre.
Mais à un smart pointer, je me questionne tout de même, un smart pointer globalement, une classe qui contient un pointeur et un compteur partagé entre tout les smart pointers.

Si tu travailles sur un projet où la mémoire doit être optimisé au poil de cul au point qu'un int supplémentaire soit trop important (grossièrement hein) pour ta mémoire, je suis pas sur que le C++ de base soit adapté.

Pseudo supprimé
Pseudo supprimé 31 mars 2016 à 14:55:30

Le 30 mars 2016 à 22:39:59 katk a écrit :
je suis loin d'etre un expert en C++ mais perso j'ai encore jamais touche a un smart pointer, je prefere a l'ancienne, pour moi tant que l'on sait gerer la memoire ca ne presente que des avantages

Tu devrais quand même essayer :oui:

LGV
LGV
Niveau 28
31 mars 2016 à 15:33:05

Mais à un smart pointer, je me questionne tout de même

Une exemple typique c'est quand on veut gerer des pool d'objets re-utilisables, ou "re-locatables" ; on traite les objets par batchs et on implemente des allocateurs dedies et/ou on remplit a coup de placement new. Egalement utile quand on doit streamer les blocs memoire vers des cpus specifiques. C'etait tres utilise par exemple sur la PS3 avec ses DSP specialises et uniquement 128k de memoire mappable directement. Ou comme deja cite dans les systemes de particules ou on doit assurer un acces optimal aux donnees contigues de maniere a maximiser la prediction et minimiser les cache miss / flush au niveau des pipes d'execution des processeurs logiques

Le smart pointer, c'est utile pour automatiser la gestion du cycle de vie, mais il y a des cas ou on n'a juste pas l'envie ni la necessite de s'amuser a compter les reference ; c'est parfois contre-productif.

Si tu travailles sur un projet où la mémoire doit être optimisé au poil de cul au point qu'un int supplémentaire soit trop important (grossièrement hein) pour ta mémoire, je suis pas sur que le C++ de base soit adapté.

Au contraire, le C++ permet l'integration directe facile d'asm specifique a la plateforme pour les parties critiques, et permet l'optimisation du placement des donnees via la gestion du padding et des alignements.
Le C++ permet une excellente productivite (pour ecrire les algo et implementer les concepts) tout en permettant une gestion fine des ressources.

Message édité le 31 mars 2016 à 15:36:53 par LGV
Cj1993
Cj1993
Niveau 12
31 mars 2016 à 19:18:48

Le 31 mars 2016 à 12:26:11 LGV a écrit :

Faudrait vraiment qu'on m'explique ce point.

Generalement quand on fait du C++, c'est qu'on a besoin d'etre proche du hardware pour un controle fin des mecanismes internes du programme, pour des raisons d'architecture materielle et/ou de performances. Typiquement, de l'embarqué, des jeux videos pc/console, etc.
Dans ces scenarios il est frequent d'avoir des contraintes fortes au niveau de la memoire et de sa gestion, et on retrouve souvent a devoir ecrire des allocateurs et manageurs personnalises pour certains types d'objets repondant a des criteres precis (ex. classique : des systemes de particules)

Des solutions "naives" a coup de smart pointers ou garbage collector ne sont pas toujours viables.

+10.

Sinon oui l'auteur le C++ à l'ancienne est hyper demandé, dès que tu touche du bas niveau ou il y a un besoin de structuration tu va forcement te retrouver avec du C++ à l'ancienne, t'aura juste les concepts structurel de POO à la limite, les classe, héritage ... ect

godrik
godrik
Niveau 30
31 mars 2016 à 21:26:24

Perso, je n'ai jamais rencontre un cas ou j'ai envie d'ecrire du C. Les seuls cas que je connais sont des cas cas ou il n'y avait pas de bon compilateur C++ pour la plateforme et du coup, tu n'as pas super le choix.

Le C++ permet justement une abstraction super des problemes bas niveau avec une couche que tu peux customiser comme tu veux. Du coup, tu as access a tous les details gores de la machine que tu peux encapsuler avec les abstractions utiles aux gens qui font des choses plus logique metier.

Pseudo supprimé
Pseudo supprimé 01 avril 2016 à 09:25:18

Au résultat, il faut garder a l'esprit que la stl ou boost ce n'est pas c++, on peut vivre sans. Par contre ce qui est interessant c'est de connaitre leur contenu. Savoir ce qu'ils proposent et dans certains cas pouvoir proposer comme alternative ou lors de discussion ne pas être pris au dépouvu.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment