IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Affichage des résultats du sondage: Pourquoi C et C++ auraient-ils encore de nombreuses années devant eux ?

Votants
75. Vous ne pouvez pas participer à ce sondage.
  • C et C++ permettent d'avoir plus de contrôle sur le matériel

    41 54,67%
  • C et C++ vous permettent d'écrire du code très efficace

    38 50,67%
  • Les langages C et C++ sont portables

    35 46,67%
  • C et C++ sont des langages qui évoluent

    19 25,33%
  • C et C++ sont largement utilisés

    48 64,00%
  • C++ a peut-être de l'avenir, mais je doute que ça soit le cas de C

    8 10,67%
  • C a peut-être de l'avenir, mais je doute que ça soit le cas de C++

    3 4,00%
  • Je pense qu'ils n'ont plus beaucoup d'années devant eux

    6 8,00%
  • Autre (à préciser)

    3 4,00%
  • Pas d'avis

    3 4,00%
Sondage à choix multiple
Langages de programmation Discussion :

Pourquoi les langages C et C++ auraient-ils encore de nombreuses années devant eux ?


Sujet :

Langages de programmation

  1. #281
    Membre extrêmement actif

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Je me demande s'il y aurait un vrai impact sur le monde informatique, si les langages C/C++ venaient à disparaître. A croire qu'il n''y a aucun langage susceptible de les remplacer aujourd'hui...

  2. #282
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    Citation Envoyé par zecreator Voir le message
    Je me demande s'il y aurait un vrai impact sur le monde informatique, si les langages C/C++ venaient à disparaître. A croire qu'il n''y a aucun langage susceptible de les remplacer aujourd'hui...
    c'est la loi du marché, tant qu'il y a des programmes écrits dans ces langages, ils ne disparaîtront pas.
    Vu la quantité de programmes, qui ne seront pas ré-écrits car trop cher à faire, ça ne risque pas même pas d'arriver demain.

  3. #283
    Membre expérimenté
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mai 2016
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 313
    Par défaut
    Citation Envoyé par zecreator Voir le message
    Je me demande s'il y aurait un vrai impact sur le monde informatique, si les langages C/C++ venaient à disparaître. A croire qu'il n''y a aucun langage susceptible de les remplacer aujourd'hui...
    Au moins dans mon domaine, la simulation numérique, je ne vois en effet pas de concurrent sérieux au C++, susceptible de le remplacer à échéance prévisible pour des applications un peu conséquentes. Dans le domaine, il n'y a que des langages plus anciens (FORTRAN), que le C++ remplace progressivement.
    Pour être un concurrent sérieux à C++, un langage devrait cumuler les caractéristiques suivantes, pour un éditeur de logiciel :
    a. langage mature et normalisé
    b. riche bibliothèque normalisée associée au langage (ex. STL du C++)
    c. indépendant d'un vendeur
    d. possibilité de mixer programmation bas niveau et haut niveau
    e. disponibilité de compilateurs produisant un code machine efficace
    f. richesse de l'écosystème, sous la forme de bibliothèques compilables
    g. bonnes perspectives de pérennité

    Rien que le critère e. élimine déjà tous les langages interprétés, utilisables tout au plus pour des surcouches, IHM, etc. Ces langages ont une utilité, mais pas pour des noyaux de calcul intensifs.
    Le critère f. est difficile pour des langages restés confinés à des applications de niche, même si c'est plus pour des raisons historiques que pour des limitations techniques fondamentales. Ce critère n'est pas éliminatoire, de mon point de vue, mais il faut bien évaluer les conséquences d'un tel choix dans le temps.
    Il ne me viendrait pas à l'idée de démarrer le développement d'un logiciel durable sans quelques garanties sur g., qui découlent en fait des critères précédents : si je commence maintenant un gros logiciel de simulation dans un nouveau langage, écrira-t-on encore dans 20 ans des compilateurs de ce langage pour suivre les évolutions techniques des ordinateurs ?
    Quand on me parle d'un langage qui ferait tant de choses mieux que C++, je me documente dessus pour le passer à travers cette série de filtres pour évaluer l'intérêt réel, dans mon cas particulier bien sûr.

  4. #284
    Membre extrêmement actif

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    c'est la loi du marché, tant qu'il y a des programmes écrits dans ces langages, ils ne disparaîtront pas.
    Vu la quantité de programmes, qui ne seront pas ré-écrits car trop cher à faire, ça ne risque pas même pas d'arriver demain.
    Cela a été fait pour Flash, dont beaucoup de sites et contenus web ont été développés avec cette technologie. A sa disparition, la plupart ont été réécris en HTML5/Javascript. Les entreprises ont fait cet efforts d'investissement, pourquoi ne le referaient-elles pas pour des applis développées en C/C++, si cela était nécessaire ?

  5. #285
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    Citation Envoyé par zecreator Voir le message
    Cela a été fait pour Flash, dont beaucoup de sites et contenus web ont été développés avec cette technologie. A sa disparition, la plupart ont été réécris en HTML5/Javascript. Les entreprises ont fait cet efforts d'investissement, pourquoi ne le referaient-elles pas pour des applis développées en C/C++, si cela était nécessaire ?
    D'abord flash est toujours là mais ca fait maintenant quelques années que les programmes doivent migrer, et les programmes ne sont pas énormes non plus.

    la masse de programmes fait en C ou C++ est sans commune mesure avec flash. Rien le fait que Unix est fait en C lui garantit une pérennité énorme.
    pour le c++, les compilateurs (clang, gcc, c# etc) sont écrits avec, ainsi que tous les gros programmes (webkit etc).

    donc non ce n'est pas la même chose.

  6. #286
    Membre extrêmement actif

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Citation Envoyé par wolinn Voir le message
    Au moins dans mon domaine, la simulation numérique, je ne vois en effet pas de concurrent sérieux au C++, susceptible de le remplacer à échéance prévisible pour des applications un peu conséquentes. Dans le domaine, il n'y a que des langages plus anciens (FORTRAN), que le C++ remplace progressivement.
    Pour être un concurrent sérieux à C++, un langage devrait cumuler les caractéristiques suivantes, pour un éditeur de logiciel :
    a. langage mature et normalisé
    b. riche bibliothèque normalisée associée au langage (ex. STL du C++)
    c. indépendant d'un vendeur
    d. possibilité de mixer programmation bas niveau et haut niveau
    e. disponibilité de compilateurs produisant un code machine efficace
    f. richesse de l'écosystème, sous la forme de bibliothèques compilables
    g. bonnes perspectives de pérennité

    Rien que le critère e. élimine déjà tous les langages interprétés, utilisables tout au plus pour des surcouches, IHM, etc. Ces langages ont une utilité, mais pas pour des noyaux de calcul intensifs.
    Le critère f. est difficile pour des langages restés confinés à des applications de niche, même si c'est plus pour des raisons historiques que pour des limitations techniques fondamentales. Ce critère n'est pas éliminatoire, de mon point de vue, mais il faut bien évaluer les conséquences d'un tel choix dans le temps.
    Il ne me viendrait pas à l'idée de démarrer le développement d'un logiciel durable sans quelques garanties sur g., qui découlent en fait des critères précédents : si je commence maintenant un gros logiciel de simulation dans un nouveau langage, écrira-t-on encore dans 20 ans des compilateurs de ce langage pour suivre les évolutions techniques des ordinateurs ?
    Quand on me parle d'un langage qui ferait tant de choses mieux que C++, je me documente dessus pour le passer à travers cette série de filtres pour évaluer l'intérêt réel, dans mon cas particulier bien sûr.
    Oui, ton cas semble reposé sur des projets plutôt gourmands en terme de calcul. Des projets qui semblent sortir des standards N Tiers que l'on trouvent en entreprise. en voyant tes critères, je dirai que l'on est sur du logiciel industriel, plus que de gestion et d'administration. Quel est le % de ce type d elogiciel, par rapport à l'ensemble des logiciels utilisés en entreprise ? Assez faible je pense...

    En quoi la puissance du C++ peut m’être utile pour développer une application de type SIRH (centre nerveux des entreprises aujourd'hui) ? Java s'en sort très bien dans ce domaine. Mieux, avec la tendance au dématérialisé, il y a de grandes chances que la plupart de ces outils finissent par être accessibles uniquement depuis le web. Du coup, les langages web prennent de la valeur face à des monolithes comme C/C++.

    Il se peut que dans l'avenir, le périmètre du C/C++ se limite à l'industrie et à la science, qui ont besoin de puissance de calcul. Pour les logiciels de gestion et d'administration en entreprise, je vois pas l'intérêt de tant de puissance... C'est un peu comme utiliser une F1 pour se promener en campagne.

  7. #287
    Membre expérimenté
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mai 2016
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 313
    Par défaut
    Citation Envoyé par zecreator Voir le message
    Oui, ton cas semble reposé sur des projets plutôt gourmands en terme de calcul. Des projets qui semblent sortir des standards N Tiers que l'on trouvent en entreprise. en voyant tes critères, je dirai que l'on est sur du logiciel industriel, plus que de gestion et d'administration. Quel est le % de ce type d elogiciel, par rapport à l'ensemble des logiciels utilisés en entreprise ? Assez faible je pense...
    Rien que les logiciels de conception mécanique (CATIA, etc.) représentent déjà des millions de licenses d'utilisation dans le monde, des PME aux grands groupes. Toutes les entreprises d'ingénierie ont des logiciels de conception et de simulation de nos jours, dans leurs domaines respectifs : électronique, thermique, mécanique des fluide, éclairage, image de synthèse, etc.
    Cela ne concerne pas un commerçant qui a besoin d'un logiciel de gestion de sa compta et d'un site web de vente en ligne, évidemment, mais c'est loin d'être marginal.
    Pour le reste je suis d'accord.

  8. #288
    Membre extrêmement actif

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    D'abord flash est toujours là mais ca fait maintenant quelques années que les programmes doivent migrer, et les programmes ne sont pas énormes non plus.

    la masse de programmes fait en C ou C++ est sans commune mesure avec flash. Rien le fait que Unix est fait en C lui garantit une pérennité énorme.
    pour le c++, les compilateurs (clang, gcc, c# etc) sont écrits avec, ainsi que tous les gros programmes (webkit etc).

    donc non ce n'est pas la même chose.
    Il est vrai qu'il y a une espèce de dictature du C/C++, qui rappelle que rien ne fonctionnerait sans eux, et que les autres langages en sont très dépendants. Bref, c'est un peu le Bill Gates des langages quoi LOL !

  9. #289
    Membre éprouvé Avatar de AoCannaille
    Inscrit en
    Juin 2009
    Messages
    1 445
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 1 445
    Par défaut
    Citation Envoyé par zecreator Voir le message
    Cela a été fait pour Flash, dont beaucoup de sites et contenus web ont été développés avec cette technologie. A sa disparition, la plupart ont été réécris en HTML5/Javascript. Les entreprises ont fait cet efforts d'investissement, pourquoi ne le referaient-elles pas pour des applis développées en C/C++, si cela était nécessaire ?
    Parce que tu parles avec Flash de techno front pure, qui dans le domaine du web a une espérance de vie de 2/3 ans. Alors que dans le cas de C/C++ on parle souvent de projets dont l'espérance de vie est plus 20/30 ans.
    Autre facteur limitant, le changement de matériel. Je travaille sur un projet avec un total de plusieurs dizaines de millions de lignes de codes basés sur une architecture SPARK (des milliers de postes opérateurs, des dizaines de data centers). C'est simple, on se traine par contrat une solaris antédiluvienne pour des baies Sun pas beaucoup plus récentes. Sur ce genre d'archi, c'est simple, il n'y a quasiment que les compilo C/C++ qui sont toujours maintenu (et dans notre cas Java, parce que ... Bah Sun...) : Python n'a jamais dépassé la version 2.7 par exemple.
    On commence à peine à envisager le portage en X86.

    Autant dire qu'il faudrait vraiment un truc absolument génial et magique pour faire changer quoi que ce soit...

  10. #290
    Membre extrêmement actif

    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Par défaut
    Citation Envoyé par AoCannaille Voir le message
    Parce que tu parles avec Flash de techno front pure, qui dans le domaine du web a une espérance de vie de 2/3 ans. Alors que dans le cas de C/C++ on parle souvent de projets dont l'espérance de vie est plus 20/30 ans.
    Autre facteur limitant, le changement de matériel. Je travaille sur un projet avec un total de plusieurs dizaines de millions de lignes de codes basés sur une architecture SPARK (des milliers de postes opérateurs, des dizaines de data centers). C'est simple, on se traine par contrat une solaris antédiluvienne pour des baies Sun pas beaucoup plus récentes. Sur ce genre d'archi, c'est simple, il n'y a quasiment que les compilo C/C++ qui sont toujours maintenu (et dans notre cas Java, parce que ... Bah Sun...) : Python n'a jamais dépassé la version 2.7 par exemple.
    On commence à peine à envisager le portage en X86.

    Autant dire qu'il faudrait vraiment un truc absolument génial et magique pour faire changer quoi que ce soit...
    A la finalité, est-ce vraiment une bonne chose, d'avoir la même application maintenue depuis des décennies, qui subie des couches et sur-couches de mises à jour en fonction du hardware cible ou des tendances ? Après tant de mises à jour et d'ajouts fonctionnels, peut-on encore dire qu'il s'agit de la même application ?

    Pas sûr que ces dinosaures ne finissent pas par exploser à la tête des entreprises un jour ou l'autre, malgré tous les milliers de spécialistes qui gravitent autour.

    Et que se passera t-il ce jour-là, l'entreprise s'arrête ?

  11. #291
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    Citation Envoyé par zecreator Voir le message
    Pas sûr que ces dinosaures ne finissent pas par exploser à la tête des entreprises un jour ou l'autre, malgré tous les milliers de spécialistes qui gravitent autour. Et que se passera t-il ce jour-là, l'entreprise s'arrête ?
    en fait c'est souvent quand les logiciels sont ré-écrits que les choses vont mal.
    Combien d'entreprises ont été sur le tapis car ils ont perdu leur avantage le temps de la ré-écriture?

    il faut lire Joel Spolsky sur le thread: Has Joel Spolsky Jumped the Shark?
    ils ont préféré écrire un compilateur en deux mois plutot que de tout ré-écrire.

    Your argument against Wasabi seems to boil down to the fact that it’s “beyond the pale,” “insane,” etc. These don’t sound like actual arguments to me; they’re just assertions.

    FogBugz is a shrinkwrapped web app installed on customer’s own servers. It was originally written in VBScript way back when that wasn’t the worst idea in the world. Given our business constraints, spending two months writing a compiler that could preserve our code base, improve the language we used day-to-day, and continue to produce source code for our customers that runs on their platforms was the best business decision, even if it might make your head explode. Even if, as you claim, installing a PHP/.NET/Java Runtime at a customer site is everyone else’s business model, that doesn’t help us because our code is in VBScript and has been for many many years. We could port the VBScript to PHP/.NET/Java by hand, or we could spend two months writing a compiler. The latter decision took less work (a couple of months) and produced better working code that runs on all our customers’ machines without modification. I’m confident it was the best business decision, and I apologize if 50,000 programmers don’t understand it and their heads explode and 100,000 bloggers run around saying I’ve jumped the shark.
    donc non on ne ré-écrit pas de logiciel qui ont des millions de ligne, on re-factore, on ameliore, mais on ne repart pas de zero

  12. #292
    Membre habitué
    Homme Profil pro
    Electronicien
    Inscrit en
    Juillet 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Electronicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 10
    Par défaut
    bonsoir tout le monde,
    Pour ma part, je suis électronicien donc je pense que le langage C a encore de beaux jours devant lui. Je ne me vois pas (à l'heure actuelle) programmer un microcontrolleur avec un langage de plus haut niveau, j'ai bien tenté l'arduino mais je trouve que ce langage pourtant en apparence proche du "C" est catastrophique : c'est trop lent, bridé, prend trop de place etc, bref on ne maîtrise pas grand chose.. après c'est sûr cela permet à n'importe qui de mettre rapidement en oeuvre un microcontrolleur, mais les personnes qui veulent aller un peu plus loin finissent toujours par apprendre le "C" ou l'assembleur pour les plus téméraires.
    Par contre, je suis toujours à la recherche d'un langage à apprendre pour enfin pouvoir développer des logiciels coté PC afin de pouvoir paramétrer mes cartes électroniques, stocker et exploiter les données des capteurs et là pour le coup je ne me voie pas faire ça en "C" ... Je pensais à la base m'orienter vers du C++ mais là j'avoue être un peu déboussolé car maintenant je me dis que apprendre l'ADA ou le pascal peut être une alternative sérieuse... Je suis venu sur ce site pour m'aider à choisir et au final j'ai plus de questions que de réponses..

  13. #293
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 123
    Par défaut
    Citation Envoyé par zecreator Voir le message
    Je suis plutôt un créatif dans le développement informatique [...] Je m'extasie plus devant une belle scene 3D codée en javascript/webGL, que devant un process codé en C/C++ qui sert à filtrer les Entrées/Sorties de tel ou tel port.
    C'est un très beau métier, et je suis également heureux pour toi que tu n'aies pas à utiliser C/C++. Félicitations, et je te souhaite de beaux projets!

    Citation Envoyé par zecreator Voir le message
    J'espère pour toi que tu trouves un épanouissement, et surtout du plaisir dans ce que tu fais, parce que tu as tout de même été jusqu'à te certifié. J'espère que c'est pas juste pour l'alimentaire... Et j'espère également que ta certification te sera utile longtemps.
    La certification est un processus exigeant, mais qui permet de bien voir quelles sont les lacunes que l'on peut avoir dans le domaine. J'ai trouvé ce processus de certification finalement très formateur. Bien entendu, l'examen à la fin n'est pas spécialement agréable...

    L'audit est un métier très intéressant, surtout dans mon cas, où j'alterne entre des projets d'audit, de consultance et de direction de projet. On est amenés à beaucoup voyager, à voir des équipes à la culture très différente dans le monde entier, de discuter de ce que l'on aime avec des professionnels du monde entier, parfois de faire du bien lorsque les rapports d'audit sont effectivement pris en compte...

    Bien cordialement,
    Thierryc

  14. #294
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 123
    Par défaut Version orientée-objet de la conversion de nombres [0..99] en lettres
    Citation Envoyé par thierryc Voir le message
    Je suis en train de préparer une version orientée-objet[...]
    Thierryc
    Veuillez trouver ci-joint la version orientée-objet du projet exemple plus haut (conversion de nombre en texte, ordinaux et cardinaux). Cette version est plus complète:
    - elle intègre les ordinaux et les cardinaux,
    - elle intègre les langues francophones: français, québécois, belge, suisse romanche, suisse romanche Genevois,
    - elle intègre l'anglais (British) et l'anglais (Americain).

    L'architecture est sépare complétement l'interface utilisateur des objets métiers. Le couplage s'effectue à travers une seule unité (un module en Pascal). Le source de l'IHM est compilable et fonctionne sur Windows, Linux et MacOS sans modifications. L'interface utilisateur interroge les objets métiers pour déterminer les limites à imposer à l'utilisateur. Les différentes sécurités se complètent ainsi.

    Le source des objets métiers est compilable sur toutes les plateformes cibles sans modifications et peut fonctionner aussi bien en client qu'en serveur. L'architecture des objets métiers permet d'ajouter une nouvelle langue sans aucune modification des modules existants, ni aucun changement de l'interface utilisateur.

    J'en ai profité pour fournir un ensemble de cas-tests pour montrer la lisibilité des cas-tests, et la capacité qu'aurait un client non-informaticien à écrire ses propres cas-tests après une brève formation...

    Bien sûr, le projet pourrait être étendu, pour viser les nombres jusqu'au milliard ou plus, et plus de langages, plus d'options, un serveur web, une version distribuée, etc.

    Ci-dessous un diagramme simplifié du modèle de classes de ce projet:
    Nom : Class Overview.png
Affichages : 374
Taille : 49,4 Ko

    Et un diagramme de paquetages:
    Nom : Overview Packages.png
Affichages : 364
Taille : 39,4 Ko

    Pour ceux qui doutent, le compilateur détecte bien A LA COMPILATION les erreurs sur les intervalles:
    Nom : Vérification des intervalles à la compilation.png
Affichages : 366
Taille : 27,5 Ko

    D'ailleurs, voici les options de vérification du compilateur:
    Nom : Options de verification du compilateur.png
Affichages : 372
Taille : 32,3 Ko

    J'en ai profité pour vérifier que le programme ne générait pas de fuites mémoire:
    Nom : Vérification de la mémoire.png
Affichages : 347
Taille : 4,8 Ko

    Pour info, l'interface utilisateur du projet:
    Nom : Interface Utilisateur.png
Affichages : 355
Taille : 17,5 Ko

    et les résultats des tests:
    Nom : Résultats Tests Unitaires.png
Affichages : 394
Taille : 24,2 Ko

    L'ensemble du projet est fourni en pièce jointe. J'en profite pour remercier tous les membres de ce fil de discussion, car cela m'a permis de passer quelques heures bien agréables à faire un petit projet sympathique. N'hésitez pas à commenter. Le fichier compressé comprend également le projet en procédural d'origine, et le projet en Ada. Comme cela, vous pouvez comparer toutes les approches. Si j'ai le temps, je fournirai une dernière version, orientée-composant.

    Bonne lecture...
    Bien cordialement,
    Thieryc
    Delenda C++ est
    Fichiers attachés Fichiers attachés

  15. #295
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Ton IDE n'a pas détecté un bug sérieux: Suisse romande, pas Suisse romanche

    Plus sérieusement, mon OS préféré n'est pas supporté par FreePascal... d'ailleurs, rien que son noyau doit comporter une dizaine de millions de lignes de code quasi exclusivement en C plus un peu d'assembleur et il est officiellement supporté jusqu'en 2034 au moins.

    On peut donc en conclure que le langage C a encore de nombreuses années devant lui

  16. #296
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 512
    Par défaut
    Citation Envoyé par thierryc Voir le message
    [...]
    De mon point de vue, cette architecture crée trop de dépendances évitables. En particulier :
    • TOutilConversionAbstrait contient trop de choses spécifiques au français. Pourtant, TOutilConversionEnglishBritish en dérive.
    • Pour factoriser le code, il y a beaucoup de passages où la composition aurait pu être utilisée à la place de l'héritage. Par exemple, TOutilConversionEnglishAmerican dérive de TOutilConversionEnglishBritish, alors qu'aucun des deux types n'a de raison d'être un sous-type de l'autre.


    Personnellement, en orienté objet, dans la partie métier, je n'aurais créé qu'une seule interface, avec une seule méthode virtuelle, qui convertirait un nombre en chaîne. Appelons-là ConvertisseurDeNombreEnChaine.
    Dans l'interface utilisateur, quand on clique sur le bouton Convertir, cela appelle une fonction qui récupère une adresse vers un objet qui dérive de ConvertisseurDeNombreEnChaine, puis cela lit l'entier saisi, puis cela applique la conversion en chaîne, puis cela affiche la chaîne.
    Ainsi, si l'interface évolue, même si on ajoute de nouveaux composants graphiques dans tous les sens pour supporter des options de plus en plus hétérogènes de plus en plus de langues, une fois qu'on a réussi à construire un objet de type ConvertisseurDeNombreEnChaine, le code qui utilise ce dernier n'a pas besoin de changer.

    Ensuite, admettons que la liste des langues disponibles s'agrandisse et que, en fonction de la langue, les composants graphiques pour sélectionner les options diffèrent. Par exemple, pour le français de France, il faudrait d'une part choisir entre adjectif numéral cardinal et adjectif numéral ordinal et, d'autre part, choisir si on applique les rectifications de 1990. Dans ton exemple, il s'agit de deux boutons radio et d'une case à cocher. Par contre, pour l'espéranto, il n'y aura aucune option, donc ni bouton radio ni case à cocher. Pour l'anglais britannique, il y aura encore autre chose et ainsi de suite.
    Dans ce cas, en orienté objet, dans la partie GUI, on pourrait créer une interface GuiLangue. A chaque langue correspondrait un objet dont le type dérive de GuiLangue. Cette interface aurait au moins 3 fonctions virtuelles :
    • une qui sert à construire un morceau de fenêtre qui contient les composants graphiques associées aux options ;
    • une qui sert à construire un objet qui dérive de ConvertisseurDeNombreEnChaine en fonction de l'état des composants graphiques associés aux options et
    • une qui retourne la chaîne correspondant à la langue, par exemple "Français de France", ou un identifiant qui sera converti en chaîne en fonction de la langue de l'utilisateur, par exemple "Français de France" ou "French (France)".

    Alors, dans l'interface utilisateur, quand on clique sur le bouton Convertir, cela appelle une fonction qui récupère une adresse vers un objet qui dérive de GuiLangue, en fonction de la langue sélectionnée dans l'interface. Avec cet objet, on appelle la fonction virtuelle qui permet d'obtenir un objet de type ConvertisseurDeNombreEnChaine. On utilise ce dernier sur l'entier saisi, ce qui donne une chaîne que l'on affiche.

    Remarque : En C++, à la place de ConvertisseurDeNombreEnChaine, j'aurais directement utilisé le type std::function<TNombreEnChaine(TEntierBorneParle)> qui est assez similaire.

  17. #297
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 123
    Par défaut
    Bonjour Pyramidev,
    Merci pour tes commentaires et pour avoir lu les sources si vite ;-). Cela prouve bien mon propos, ainsi que l'on peut faire de l'orienté-objet en autre chose que C++...
    Il faut se souvenir que le fil de discussion est l'avenir de C++: l'exemple montre que l'on peut se dispenser de C++.
    CQFD

    Citation Envoyé par Pyramidev Voir le message
    TOutilConversionAbstrait contient trop de choses spécifiques au français. Pourtant, TOutilConversionEnglishBritish en dérive.
    Peux-tu être plus précis, s'il te plaît? J'ai utilisé le Français que langue de programmation, aussi le vocabulaire des opérations apparaît en français...

    Citation Envoyé par Pyramidev Voir le message
    Pour factoriser le code, il y a beaucoup de passages où la composition aurait pu être utilisée à la place de l'héritage. Par exemple, TOutilConversionEnglishAmerican dérive de TOutilConversionEnglishBritish, alors qu'aucun des deux types n'a de raison d'être un sous-type de l'autre.
    Ce n'est qu'une affaire de goût, comme tu l'écris toi-même. De toutes manières, toute cette partie est invisible de l'extérieur, puisqu'il n'y a qu'une interface.

    Citation Envoyé par Pyramidev Voir le message
    Personnellement, en orienté objet, dans la partie métier, je n'aurais créé qu'une seule interface, avec une seule méthode virtuelle, qui convertirait un nombre en chaîne. Appelons-là ConvertisseurDeNombreEnChaine.
    C'est bien ce qui a été fait. Elle s'appelle : IOutilNombreCardinauxOrdinaux

    Citation Envoyé par Pyramidev Voir le message
    Dans l'interface utilisateur, quand on clique sur le bouton Convertir, cela appelle une fonction qui récupère une adresse vers un objet qui dérive de ConvertisseurDeNombreEnChaine, puis cela lit l'entier saisi, puis cela applique la conversion en chaîne, puis cela affiche la chaîne.
    C'est exactement ce qui a été fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [...]
    begin
      laValeur   := SpinEditNombre.Value;
      leContexte := RG2Langue;
      leType     := RG2TypeCard;
      lesOptions := CGToOptions;
      leNombre   := leContexte.Convertir( laValeur, leType, CBAppliqueRectifications1990.Checked, lesOptions);
      LabelResultat.Caption := leNombre;
    end;
    Citation Envoyé par Pyramidev Voir le message
    Ainsi, si l'interface évolue, même si on ajoute de nouveaux composants graphiques dans tous les sens pour supporter des options de plus en plus hétérogènes de plus en plus de langues, une fois qu'on a réussi à construire un objet de type ConvertisseurDeNombreEnChaine, le code qui utilise ce dernier n'a pas besoin de changer.
    Je suis entièrement d'accord avec toi, et d'ailleurs, l'IHM actuelle s'adapte automatiquement aux options disponibles et fournies par chaque langage, par exemple, en Anglais (British), la fonction GetAvailableOptions, appelée à travers l'interface:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function TOutilConversionEnglishBritish.GetAvailableOptions: String; 
    begin
      Result:=ConstruireListeOptionsTexte(
                [ rsOptionAlternate, rsOptionArchaic, rsOptionArchaicFr,
                  rsOptionCricket, rsOptionDomino, rsOptionNothingness,
                  rsOptionInformal, rsOptionScientific, rsOptionSport,
                  rsOptionTennis ]);
    end;
    permet à l'IHM de s'adapter si elle le souhaite et de ne présenter que les options valides dans ce langage.

    Concernant tes remarques sur les objets de l'IHM, tu as raison et c'est effectivement le propos de la future version orientée-composant, maintenant que la partie métier est en bonne voie. Il faut également se souvenir que différents IHM sont possibles pour Windows, Linux, MacOS, IOS et Android, ainsi qu'une IHM sur la Toile.

    Au-delà de notre goût orienté-objet différent, l'exemple montre bien que le C++ est inutile et dangereux : il protège moins que le Pascal à moins de faire des contorsions imbitables avec les templates (je sais, on peut tout faire avec les templates ...) et il n'est pas lisible par les utilisateurs finaux.

    Cordialement,
    Thierryc
    Delenda C++ est

  18. #298
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 123
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Ton IDE n'a pas détecté un bug sérieux: Suisse romande, pas Suisse romanche

    Plus sérieusement, mon OS préféré n'est pas supporté par FreePascal... d'ailleurs, rien que son noyau doit comporter une dizaine de millions de lignes de code quasi exclusivement en C plus un peu d'assembleur et il est officiellement supporté jusqu'en 2034 au moins.

    On peut donc en conclure que le langage C a encore de nombreuses années devant lui
    Bonjour jlliagre
    Merci pour le rapport d'erreur, il sera pris en compte au plus tôt, dans la version orientée-composant.

    Quel est ton OS, stp? N'y a-t-il que C comme compilateur disponible pour cet OS? Les applications n'y sont-elles développées qu'en C? Quels sont les autres langages disponibles?

    Je reconnais bien volontiers que le C/C++/Java en legacy doit être maintenu , mais qu'on doit s'en débarasser dès que c'est économique de le faire (et c'est rapidement économique).
    Cordialement,
    Thierry
    Delenda C++ est

  19. #299
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    Citation Envoyé par thierryc Voir le message
    Je reconnais bien volontiers que le C/C++/Java en legacy doit être maintenu , mais qu'on doit s'en débarasser dès que c'est économique de le faire
    pascal est mort, c'est la loi du marché. Ada est un marché de niche.
    que tu le veuilles ou non, C et C++ sont la base de beaucoup de logiciels, meme de ton compilateur pascal je pense.

    C++ évolue bien je trouve, le langage est devenu plus facile et plus rationnel.

    le titre etait "est ce que c et c++ ont de beaux jours devant eux" la réponse est oui sans aucun doute, ne t'en deplaise.

    Aussi pour te rassurer, j'ai fait du code review de Java, PLSQL et de schema db relationnel, et bien les mecs n'ont absolument pas besoin de c++ pour se tirer une balle dans le pied, déjà faudrait qu'ils apprennent la base et ensuite on en reparlera. Des langages plus simple sortent tout les jours pour que les moins bons s'en sortent malgré tout... Pendant ce temps, le c++ progresse pour que les meilleurs puissent faire leur travail correctement.

    pour finir, je ne trouve pas ton code plus lisible qu'un code c++, mais ce n'est que subjectif après tout.

  20. #300
    Membre expérimenté
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mai 2016
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2016
    Messages : 313
    Par défaut
    thierryc:

    Merci, c'est intéressant, je vais voir la version Ada, étant donné que j'ai installé le compilateur.

    Mais à vrai dire, personne ne doute qu'il y a des choix plus intéressants que C++ pour faire des IHM et ce type de programme, on enfonce un peu les portes ouvertes.
    Et même de nombreux langages interprétés doivent faire l'affaire ici.
    Ce qui m'intéresse, pour mes applications, est de savoir si ces langages sont utilisables pour faire du calcul intensif.

    Sur 10 exemples de programmes de calcul ci-dessous (avec code source disponible), un programme Ada produit des exécutables de performances comparables à C++ dans 4 cas sur 10, et dans les 6 autres cas, le programme Ada équivalent est beaucoup plus lent, jusqu'à un facteur 3.
    http://benchmarksgame.alioth.debian.org/u64q/ada.html

    Le programme Free Pascal est presque toujours beaucoup plus lent que le même programme C++, même jusqu'à un facteur 15 sur ces exemples :
    http://benchmarksgame.alioth.debian....scal&lang2=gpp

    Des écarts de 20-30% ne sont pas significatifs et peuvent être attribués aux performances du compilateur, à des programmes pas écrits de façon optimale pour chaque langage, mais des écarts d'un facteur 15 sont déjà plus suspects, on se demande si cette sous-performances ne provient pas plutôt de quelque caractéristique fondamentale du langage. Mais même si ce n'était qu'une question de compilateur, ce qui m'intéresse en pratique est bien le couple (langage, compilateur disponible).
    En voyant ces tests, je n'ai aucune envie d'installer et tester Free Pascal, sans intérêt pour ce que j'ai à faire, quand bien même le code serait plus lisible.
    Ada part de moins loin, mais demande à être évalué rigoureusement.

Discussions similaires

  1. Pourquoi les langages interprétés sont-ils préférés pour l'analyse de données ?
    Par User23 dans le forum Statistiques, Data Mining et Data Science
    Réponses: 1
    Dernier message: 12/05/2016, 21h18
  2. Les langages statiques sont-ils trop sophistiqués et complexes ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 53
    Dernier message: 20/01/2013, 10h06
  3. Réponses: 2
    Dernier message: 11/05/2010, 19h36
  4. Réponses: 2
    Dernier message: 06/05/2007, 22h37
  5. Pourquoi les mails ne sont ils pas envoyés?
    Par Sunsawe dans le forum Développement
    Réponses: 3
    Dernier message: 12/04/2007, 23h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo