Discussion :
Je sais très bien je travail justement dans ce secteur depuis 3 ans et je dois dire que je vois fuire pas mal de monde ...
L'avantage c'est qu'ils ont du mal à trouver des développeur c++.
Le désavantage s'est qu'on se retrouve avec des "professionnel" du c qui viennent faire du c++ et te place plein de chose en public (cad: j'ignore la conception et ca n'a rien de technique)
Ma question est plus de l'ordre stratégique que philosophique, le marché n'a rien à faire de ça ...
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
t'inquiète j'utilise plusieurs langages, et a chaque fois celui le plus adapté aux exigences d'un module et je ne suis pas borné a C++.
et c'est malheureusement le message des C++iens que je déplore:
C'est compliqué mais il te faudra une décennie d'expérience pour comprendre, bref tu comprendra lorsque tu cessera de développer
et c'est justement mon expérience qui m'a appris a simplifier les choses et ou je découvert que la couche technique en C++ représente un fardeau pour le developpeur C++ et la manière de faire abstraction a la complexité est le principe de base pour toute conception.
et crois moi même si t'a 100 ans d'expérience tu ne peux pas couvrir toutes les subtilités des projets puisque chacun est spécifique, c'est surtout la manière d'appréhender qui compte et c'est la ou j'essaye de proposer une approche qui consiste a simplifier.
Non, c'est surtout parce que certains veulent faire n'importe quoi avec le C++ (chose que tu veux, justement), se pètent la tête dessus à grand coup d'usines à gaz pendant que le stagiaire fait la même chose dix fois plus vite en C# ou Java, alors qu'il a appris hier le sens du mot "conception"... Du coup, il se dégoûtent du C++ et passent à ce que le marché semble le plus rechercher, du Java/JEEE/(insérer ici la dernière techno à la mode).
C'est triste, mais c'est aussi très logique lorsque l'on fait commencer le C++ avec des monstruosités genre "IHM en MFC", ou en engueulant le débutant parce qu'il n'a pas trouvé la classe "foo.hidden.obscure.undocumented" au fin fond du framework "standard", et qu'il a osé réimplémenter une addition à la main...
Or, comme je l'ai dit, une grosse partie du marché C/C++ est totalement caché : tu ne verras quasiment jamais une annonce passer, souvent tu ne sauras même pas qu'une société industrielle X possède un service informatique !
Et sans tomber dans le "C+" non plus, le C++ dans son contexte bas niveau, c'est franchement plus simple que les API graphiques de Java, par exemple... C'est pour ça que je dis que C++ est très adapté à ce segment : dans ce contexte, c'est un langage puissant et simple. Souvent plus simple que les autres, d'ailleurs... Il suffit juste de réussir à tracer la limite entre l'optimisation et la généricité, et c'est là que la conception intervient (et pas qu'un peu...).
Tu vas faire de la randonnée en montagne avec un coupé sport surbaissé ? Non. Tu vas faire tes courses au supermarché en semi-remorque ? Non. Tu vas faire la course avec un véhicule utilitaire ? Non.
Pourtant, ce sont à chaque fois des véhicules, mais pas forcément adaptés à l'usage que tu veux en faire... C'est exactement pareil pour les langages de programmation.
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
et comme j'ai répéter a plusieurs reprises c'est gonflant d'avoir des réponses genre:
tu comprends rien de rien , moi j'ai plus d'expérience et je comprends mieux et c'est comme ça.
bref aucun argument.
peux tu me dire avec des arguments a quoi c'est mal de faire abstraction a la couche technique?
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
qui t'a dis ça , relis mes posts depuis le départ et tu découvre que je suis pour utiliser chaque langage la ou il faut, et relis les réponses des autres tu trouvera une résistance a cette idée comme quoi C++ peut tout faire.
je te parle ce qu'il faut faire la ou on doit développer avec C++ ,et la il ne faut pas prendre l'argument de perf pour faire n'importe quoi au niveau conception.
l'idée est simple et très très basique:
comment faire abstraction a la couche technique pour être plus productif , la ou on développe avec C++ pas en C# ou java ou autre![]()
relis attentivement aussi mes posts ou je parle :
- d'utilisation de C++ la ou il faut.
- simplifier au maximum la couche technique pour être productif.
- C++ apporte les mécanismes pour avoir un langage haut niveau si on ne tombe pas dans le piège de rester bas niveau.
et tu me dira quelle idée de ceux la ne te plait pas avec des arguments bien sur et éviter les réponses très très faciles , genre tu ne comprends rien .

On avait eu un bout de discussion sur le sujet, il y a quelque temps...
http://www.developpez.net/forums/d75...ciatifs-fixes/
Je vais probablement refaire des tests avec mon beau Builder tout neuf et tout moderne (parce que, Builder 6, je l'ai déjà surpris qui faisait des bétises avec la STL...), mais ca montre bien la limite de l'idée répandue 'tableau associatif=map'... (et bien sur, ce serait pareil avec les sets,...)
Francois
Mais toi, tu n'as pas encore saisi comment saisir cela (ce que ça veut dire utiliser un langage là où il faut). Tu le dis comme on réciterait une poésie, sans l'avoir assimilé. Les autres contributeurs ont assimilé ce concept (ça se voit dans leurs propos), surtout travaillant dans des domaines pointus, comme l'embarqué.
En revanche, quand on commence à s'ouvrir à d'autres langages, technos, ... il faut un temps d'adaptation. On ne dit pas qu'on connait tout, mais on a clairement assimilé certains concepts qui t'échappent pour le moment. Je ne doute pas que dans quelques temps, tu comprendras ce qu'on essayait de te dire. Enfin, j'espère.
Avant de poursuivre dans cette optique, veux-tu bien aller sur cette page, ainsi que sur ce sujet, et lire les documentations de chaque librairie présentée, s'il te plait ?
Ensuite, peux-tu nous expliquer clairement et de façon détaillée ce qu'il te manque et qui n'existerait pas déjà dans ces librairies ?
Peux-tu également, après ceci, nous expliquer (exemples à l'appui) comment se "détacher" de la technique sans ajouter des couches et des couches d'abstraction, qui seront donc forcément soit pénalisantes à l'exécution (wrappers compilés), soit pénalisantes pour la compilation/modularité (wrappers templates) ?
J'avoue aussi que je serais curieux de voir comment tu fais pour avoir une sorte d'intersection absolue des OS, librairies, etc. (le "framework parfait", si l'on peut dire) tout en conservant les spécificités de chaque librairie ou plate-forme utilisables...
Mac LAK.
___________________________________________________
Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.
Sources et composants Delphi sur mon site, L'antre du Lak.
Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.
Rejoignez-nous sur : ► Serveur de fichiers [NAS] ► Le Tableau de bord projets ► Le groupe de travail ICMO
alors la c'est fort, relis mes messages et a plusieurs reprises je dis que C++ est bien pour :
le systeme, l'embarqué et les jeux.
et la ça montre juste une volonté d'attaquer pour rien,on discute pour ne pas savoir qui est de nous le plus fort mais pour proposer des approches et démarches pour appréhender la complexité de C++.
moi j'ai proposer d'isoler cette couche en faisant abstraction a la complexité pour ne pas impacter tous les développeurs par et j'attends ta proposition![]()
C'est bien plus vaste que ça, mais bon...
Dans ces domaines là, tu ne penses pas que la couche "métier", c'est autre chose que ce que tu dis ? Encore une fois, je fais référence à la première correction que j'ai faite sur ton terme "métier". Pour moi, le métier, c'est justement ce qui est primordial, ce qui ne va pas forcément être récupérable à l'extérieur. Dans ce cas, c'est quoi l'utilité de faire une abstraction là-dessus ? Le métier, c'est la plus value de l'application dans l'entreprise, ce n'est pas en passant de MySQL à Oracle que ton entreprise va gagner des millions d'euros, mais en passant d'un algorithme de résolution numérique à un autre, on peut gagner des millions, voire des milliards. Et là, la couche d'abstraction, on s'en fout, on n'en veut pas car on doit rester proche du matériel, tout en étant super haut-niveau.
La seule vision que tu as, c'est la vision informatique de gestion de bureau, mais tu crois sincèrement que c'est tout ce qui existe dans le monde ?
Pour continuer dans cette direction, regarde The Gimp VS Photoshop (exemple donné par Mathieu je sais plus où).Le métier, c'est la plus value de l'application dans l'entreprise, ce n'est pas en passant de MySQL à Oracle que ton entreprise va gagner des millions d'euros, mais en passant d'un algorithme de résolution numérique à un autre, on peut gagner des millions, voire des milliards.
Ils font les même traitements (en gros): l'un en plusieurs minutes, l'autre en quelques secondes.
La différences ? Les algos !
C'est à la fois du technique et du métier. On ne peut séparer de façon aussi radicale.
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)
Mes articles dont Conseils divers sur le C++
Une très bonne doc sur le C++ (en) Why linux is better (fr)
Ce que tu n'as pas l'air de comprendre, c'est que C++ te permet de définir un langage spécifique à un domaine particulier.Envoyé par Mac LAK
Oulah, ça n'a rien à voir avec les macros.Envoyé par Mac LAK
Pour avoir fait beaucoup de choses avancées avec les deux, je peux te dire que les macros c'est très dur à maintenir à et à déboguer, mais ce n'est pas du tout le cas des templates, qui sont type-checkés indépendemment de leur instantiation.
C'est exactement pareil, sauf que ton méta-langage te demandera de faire un parser, un vérificateur sémantique, un générateur de code, etc. alors qu'avec C++ c'est beaucoup plus facile et nécessite moins de dépendances.Envoyé par Mac LAK
Après, si c'est vraiment pour des questions syntaxiques, ça a du sens de passer par un parser.
Pas plus qu'autre chose.Envoyé par Mac LAK
La différence importante avec un langage comme OCaml qui fait de l'inférence de type, par exemple, c'est que C++ ne va prendre en compte que la signature de la fonction pour déterminer si le type des arguments convient à la fonction, alors qu'OCaml va en fait prendre en compte l'intégralité du corps de la fonction pour déterminer le type possible des arguments, ce qui resulte en effet en de meilleurs messages d'erreurs.
Chose qui n'est pas impossible à faire en C++ pour autant, les gens ne le font pas dans la pratique, simplement.
En utilisant de simples techniques de concept-checking (ce qui peut se faire même en C++03) on peut avoir des messages d'erreurs équivalents à ceux fournis quand il n'y a aucune surcharge qui correspond au type des arguments, par exemple.
L'intérêt principal des concepts de C++0x qui ont été enlevés, c'était de démocratiser cela.
Après j'ai bien compris que sur le marché français, les templates c'est considéré comme étant une technologie expérimentale risquée. Si la France a réputation d'avoir 10 ans de retard en développement et en génie logiciel, ce n'est pas pour rien...
Ada ne permet pas du tout de faire ce genre de choses (des DSELs).Envoyé par Mac LAK
C++ commence bas niveau, et te permet de construire l'échauffage que tu veux pour monter aussi haut-niveau que tu veux et de la manière que tu veux.
C'est simple : aucun autre langage ne permet ça. Les seuls langages qui ont des fonctionnalités vaguement comparables commencent haut niveau, et ne permettent pas de redescendre, cassant toute l'utilité du truc.
La programmation à base de copier/coller, franchement, je crois qu'on fait difficilement pire.La réutilisation de code, au delà du copier coller
Aucun (ou peu de ?) langage ne se base sur la syntaxe uniquement, mais tu peux voir de très beaux DSELs en Haskell aussi par exemple (et le fait de pouvoir définir des opérateurs totalement nouveaux, avec une précédence sur mesure, c'est top).
Mais je suis d'accord que les DSELs en C++ ça peut se faire assez bien. Ce n'est pas à la portée du débutant, mais de toute manière, comme on le dit depuis le début, si le développeur ne veut pas faire l'effort de se mettre à niveau, qu'il laisse tomber. Ce n'est pas avec ce genre de mentalité qu'on avance.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Je crois que D permet ça aussi. Ada permet de descendre très bas niveau aussi, mais ne permet effectivement pas la métaprogrammation.C'est simple : aucun autre langage ne permet ça. Les seuls langages qui ont des fonctionnalités vaguement comparables commencent haut niveau, et ne permettent pas de redescendre, cassant toute l'utilité du truc.
Après, ça reste des choses très complexes à maîtriser. Dans la plupart des cas, les templates, c'est vu comme un truc qui sort des messages d'erreur horribles (et difficile de donner tort aux gens qui disent ça, tant que tu n'as pas appris à les lire, ils sont horribles).
Partager