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. #161
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par thierryc Voir le message
    As-tu lu la phrase sur la raison du choix du C++? Pourquoi voudrais-tu que le directeur du programme F-35 qui est dans la mouise la plus totale admettrait-il plus qu'à demi-mot que ses équipes se sont gourées sur tout...
    Et ? Peut-être que le choix du C++ était mauvais dans leur contexte mais je ne vois toujours pas en quoi cela prouve que le C++ était inadapté à ce genre de projet, que tout autre équipe aurait échoué également et qu'il faut donc éradiquer ce langage de la planète et de tous les domaines.

    Citation Envoyé par thierryc Voir le message
    Parce que Stroustrup s'aventure là où il ne connait pas. Sa spécialité, c'est le C++. Dans un post, je référence des projets industriels, de très grande envergure, réalisés en Ada, et très récents. Cette citation est donc erronée. Ceci dit, c'est loin d'être la seule erreur de Stroustrup, ni sa plus grave...
    Figure toi qu'il y a aussi des projets d'envergure récents réalisés en C++.

    Citation Envoyé par thierryc Voir le message
    Fais tes recherches, compare la taille et les fonctionnalités d'Active Oberon avec la taille et les fonctionnalités de Minix...
    Ce que Niklaus a démontré au travers de l'exemple d'Obéron, c'était qu'il n'était nul besoin d'un langage de bas niveau pour programmer un système d'exploitation.
    Il n'y a aucun mélange, mais une démonstration scientifique.
    ??? active oberon est un langage, minix un OS...
    Niklaus n'a rien démontré du tout, la lisp machine date des années 70. Fais tes recherches.

    Citation Envoyé par thierryc Voir le message
    Cf. un autre de mes posts plus haut. Je n'ai pas travaillé sur Rosetta, ni sur A400M, ni sur Active Oberon, ni sur plein d'autres références citées. Ce sont bien des preuves car ce sont autant de projets brillamment réussis, et pas seulement mon propre témoignage.
    ...
    Le plus terrible, ce que beaucoup d'entre eux (elles?) sont ignorantes de ce que l'on leur fait subir. Et qu'il y a de nombreuses écoles de "développeurs/hackers" qui promeuvent et transmettent à la jeune génération de détestables habitudes.
    Pour moi, le plus terrible c'est de répandre l'idée qu'un langage est une religion qu'on doit embrasser ou détruire. Un langage n'est qu'un outil avec des domaines d'utilisations, des avantages et des inconvénients. N'importe quelle formation informatique moderne enseigne au moins 3 langages et paradigmes différents et avec un minimum de recul quant à leur utilisation.
    Dernière modification par Invité ; 30/01/2018 à 19h22.

  2. #162
    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
    Points : 7 842
    Points
    7 842
    Par défaut
    Citation Envoyé par thierryc Voir le message
    Antoine de Saint Exupéry écrivait "Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher" http://dicocitations.lemonde.fr/cita...tion-28697.php. Peut-être Niklaus a-t-il lu Antoine, en tout cas, il a bien suivi la démarche.
    Il s'agit d'un principe philosophique bien plus ancien que cette citation. On le retrouve généralement sous le terme « rasoir d'Occam ».

    Pour ce qui est du rapport avec le sujet de la discussion, l'un des reproches que je peux faire à tous les langages dérivés de simula et qui lui sont restés proches en terme de syntaxe, comme pascal, modula-2, ada, oberon et autres, c'est leur persistance à continuer a utiliser des mots clefs qui pourraient être supprimés ou remplacés par une ponctuation moins intrusive.

    Je parle des mots réservés comme FUNCTION, PROCEDURE, THEN, BEGIN, END, LOOP, END IF, END LOOP, etc.

    Pourquoi écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BEGIN
        faireQuelqueChose();
    END
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {
        faireQuelqueChose();
    }
    D'ailleurs, javascript puis go l'ont bien compris et sont allés plus loin en supprimant le point virgule là où il n'avait pas d'utilité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {
        faireQuelqueChose()
    }
    Un autre exemple, peut-être qu'un client comprendra mieux la procédure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROCEDURE WhileExample IS 
       A:Integer;
    BEGIN
       A := 0;
       WHILE A < 10 LOOP
             someFunction(A);
             A := A + 1;
       END LOOP; 
    END WhileExample;
    plutôt que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WhileSamples() {
        int a=0;
        while (a < 10) {
            someFunction(a++);
        }
    }
    ou la variante en go qui va plus loin dans l'élagage en supprimant les points-virgules finals, le typage quand il peut être implicite, unifie for et while et supprime des parenthèses inutiles de la condition:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    func WhileSamples() {
        a:=0
        for a < 10 {
            someFunction(a++)
        }
    }
    L'abondance de mot clefs inutiles des langages de la première famille me donne des boutons...

    Il est d'ailleurs amusant de constater que l'inverse peut aussi être vrai, comme quoi to ça est assez subjectif.

    Un programmeur connu, Steve Bourne, habitué à un autre langage assez verbeux, Algol-68, a créé les macros suivantes pour écrire son shell bien connu en C avec une syntaxe qui lui était plus familière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    /usr/src/cmd/sh/mac.h:
    #define IF      if(
    #define THEN    ){
    #define ELSE    } else {
    #define ELIF    } else if (
    #define FI      ;}
    
    #define BEGIN   {
    #define END     }
    #define SWITCH  switch(
    #define IN      ){
    #define ENDSW   }
    #define FOR     for(
    #define WHILE   while(
    #define DO      ){
    #define OD      ;}
    #define REP     do{
    #define PER     }while(
    #define DONE    );
    #define LOOP    for(;;){
    #define POOL    }
    ɹǝsn *sıɹɐlos*

  3. #163
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 123
    Points : 97
    Points
    97
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Il s'agit d'un principe philosophique bien plus ancien que cette citation. On le retrouve généralement sous le terme « rasoir d'Occam ».

    Pour ce qui est du rapport avec le sujet de la discussion, l'un des reproches que je peux faire à tous les langages dérivés de simula et qui lui sont restés proches en terme de syntaxe, comme pascal, modula-2, ada, oberon et autres, c'est leur persistance à continuer a utiliser des mots clefs qui pourraient être supprimés ou remplacés par une ponctuation moins intrusive.
    [/code]
    Bonjour jlliagre,
    Je te remercie pour ton commentaire sur mon post.
    Malheureusement, ton analyse est complétement erronée, factuellement: l'activité principale des développeurs est la lecture (90%) et l'activité d'écriture représente environ (10%). Ce qui tu appelles mots clefs intrusifs, je l'appelle "anglais structuré". C'est justement ce qui fait la force de ces langages, dès lors qu'il faut communiquer avec la maîtrise d'ouvrage (les clients) : bien utilisés, on écrit des spécifications qui compilent. Leur "verbosité" est une force qui permet au compilateur de détecter bien plus d'erreurs que dans d'autres langages qui pratiquent la concision et l'élision. Il reste bien sûr des erreurs sémantiques, mais ces erreurs sont facilement repérables par les clients non informaticiens car ceux-ci sont capable de lire et vérifier les spécification qu'on leur fournit.

    Par ailleurs, tout environnement moderne permet de mettre en gras, d'afficher ou de masquer tout ou partie du source qui fait l'objet de la revue ou (plus rarement) de l'écriture. Le problème des mots-clefs ne se pose pas en pratique d'un point de vue rapidité d'écriture ou capacité à voir des éléments dans le source.

    Témoignage: Il y a quelques années, nous eûmes un client militaire qui avait un développement temps-réel non-critique à faire réaliser. Un petit logiciel, d'environ 100000 lignes exécutables. Malheureusement, ses spécifications étaient très floues. Après discussion, nous pûmes lui proposer un développement au forfait, garantie d'un an incluse. Nous gagnâmes le contrat, étant 50% en dessous du concurrent le plus proche. Le client exigea alors que le développement soit réalisé en C++ (clauses qualité internes au client), mais étant convaincu par notre approche, il accepta notre proposition révisée à 80% du prix du concurrent.

    Je fis faire la spécification formelle en Pascal Objet, et nous validâmes les algorithmes et les résultats attendus par une revue conjointe du source Pascal avec le client (non informaticien) et par les résultats des tests, la spécification Pascal ayant l'heureuse propriété de compiler et de s'exécuter. Nous n'utilisâmes pas d'UML ou d'autres techniques de spécifications compliquées, cela n'aurait pas facilité le dialogue avec le client. Au passage, nous livrâmes la version Pascal au client qui put commencer à travailler longtemps AVANT la date prévue de la livraison...

    Une fois cette première étape franchie, au bout de 30% du projet, la deuxième étape fut de transcrire la spécification Pascal en C++ (à l'instar de ce que tu proposes, mais en sens inverse). En effet, tout ce qui est faisable en Pascal (et sûr) est également faisable en C++ (et relativement sûr). Le développement ne connut pas de problèmes particuliers, et nous livrâmes un logiciel sans défaut (0% de défauts). Nous fûmes payés lors de la signature du PV de recette.

    Plus tard, après la garantie, environ 2 ou 3 ans après, le client revint avec un problème. Nous vérifiâmes sur la spécification Pascal qu'il s'agissait d'une erreur de spécification (erreur client, donc), et après avoir signé un avenant, nous spécifiâmes la modification en Pascal avant de la réaliser en C++. Il n'y eut plus d'autres défauts.

    Au final, nous avons spécifié en Pascal, codé en C++, produit le logiciel en 70% du temps imparti, satisfait le client et la comptabilité, et obtenu zéro défaut. Un bon bilan, je crois.

    On ne programme pas en Pascal, Ada, Obéron ou Eiffel comme on "code" en C/C++/Java...

    Comme indiqué plus haut dans un autre post (et avec un peu d'humour), tu roules tranquillement en Twingo, je fonce en Ferrari, et je m'éclate :-). Rejoins-moi, si tu le veux?

    Tu as, bien sûr, tout à fait raison sur le rasoir d'Occam, mais la citation d'Antoine de Saint-Exupéry est bien plus belle :-) Je t'invite d'ailleurs à lire le texte complet, la citation n'étant qu'un tout petit bout d'un très beau texte.

    Bien cordialement,
    Thierryc

  4. #164
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Il s'agit d'un principe philosophique bien plus ancien que cette citation. On le retrouve généralement sous le terme « rasoir d'Occam ».
    d'accord mais attention ce principe qui est effectivement philosophique s'applique plutôt au domaine de la métaphysique.
    Domaine dont le principe est de gérer des objets abstraits tout comme les langages de programmation

  5. #165
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par thierryc Voir le message
    Malheureusement, ton analyse est complétement erronée, factuellement: l'activité principale des développeurs est la lecture (90%) et l'activité d'écriture représente environ (10%).
    avant d'affirmer que l'analyse des autres est erronée encore faut-il être critique sur ses propres analyses
    L'activité principale d'un développeur c'est plutôt à 70-80% de la conceptualisation et de la compréhension d'un projet
    Ce qui n'est pas du tout la même chose que la lecture...
    par conceptualisation j'entends concevoir sur papier, avec des diagrammes de classe UML notamment
    Citation Envoyé par thierryc Voir le message
    Malheureusement, ses spécifications étaient très floues.
    c'est là toute la problématique des projets informatiques , définir par des spécifications des conceptualisations de nature abstraite.
    Mais étant donné que c'est abstrait la porte est ouverte à toutes les définitions possibles
    Ceci est autre sujet certes

  6. #166
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 36
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par SimonDecoline Voir le message
    ??? active oberon est un langage, minix un OS...
    Niklaus n'a rien démontré du tout, la lisp machine date des années 70. Fais tes recherches.
    Oberon est un OS aussi apparement, implémenté avec le langage Oberon. Si je ne me trompe pas, l'idée de Wirth était de juger un langage à sa capacité à implémenter un système d'exploitation complet. Mais là encore si tout est si parfait, pourquoi est-ce que ça n'a jamais pris ? Il y a un complot Microsoft/Linux pour donner raison à Dennis Richie ?

    Citation Envoyé par thierryc Voir le message
    cet échange me paraissant cordial et fructueux. Peut-être en est-il de même pour vous?
    Tout à fait. Je sous en désaccords sur beaucoup de points mais je note les arguments, j'essaye de ne pas avoir de religion. Merci pour les références, je compte y jeter un œil attentif. Quelques remarques:

    Citation Envoyé par thierryc Voir le message
    Es-tu sûr de ton URL?
    Je l'ai mise à jour. En cherchant "Stepanov Musser Ada" on tombe sur différents sites qui parlent des proto-STL en Ada. Stepanov a cherché pendant 25 ans un langage qui lui permette d'implémenter efficacement des composants logiciels. Il a créé un langage (Tecton), utilisé Scheme, puis Ada, puis finalement C++ après collaboration avec Stroustrup. Je pense qu'il avait de sérieuses raison pour considérer qu'Ada ne lui permettait pas de faire ce qu'il souhaitait. De ce que j'ai compris, Ada ne permet pas de contrôler aussi finement que le C/C++ les opérations d'accès/création/déplacement de données.


    Citation Envoyé par thierryc Voir le message
    - Toutes les bibliothèques C/C++ sont accessibles en Ada sans pertes de performances. Pour faciliter la vie, GNAT (le compilateur ADA, basé sur GCC) génère maintenant des spécifications Ada à partir des entêtes .h des bibliothèques.
    Ça me fait penser au langage D qui se vante d'une compatibilité presque parfaite avec le C++... sauf pour les fonctions inline ! Le problème c'est que 99% de mes fonctions sont inline ! Je suppose que c'est pareil avec Ada, car à moins d'avoir un traducteur automatique C++ vers D/Ada, on est bien obligé de passer par des fonctions qui existent physiquement (donc pas inline).

    Citation Envoyé par thierryc Voir le message
    - dans tous les cas, la performance vient bien de la conception de l'algorithme, pas des astuces du langage.
    Mais elle vient des deux ! Essayez d'implémenter un même algorithme de tri rapide aussi efficace en Python qu'en C++ : bon courage Je ne pense pas que c'est ce que vous vouliez dire mais c'est aussi pour ça que je me méfie sur les autres points.
    Après qu'est-ce qu'une astuce de langage ? L'arithmétique des pointeurs ? Tout le monde semble vouloir s'en débarrasser. Pourtant ça représente un état de fait : dans une mémoire, les données sont stockées à des adresses, et il arrive fréquemment que l'on doive se déplacer d'une adresse à l'autre. Il n'y a là rien d'artificiel.

  7. #167
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par _Bérenger_ Voir le message
    Mais elle vient des deux ! Essayez d'implémenter un même algorithme de tri rapide aussi efficace en Python qu'en C++ : bon courage Je ne pense pas que c'est ce que vous vouliez dire mais c'est aussi pour ça que je me méfie sur les autres points.
    ok mais avant de vouloir inventer la roue et de faire un algorithme pour faire tourner la roue encore faudrait-il bien dessiner et concevoir la roue...
    pour dessiner une roue c'est pas trop difficile...tout le monde peut y arriver
    Pour dessiner le système informatique d'une entreprise ou de composants temps-réel c'est là où les choses se compliquent
    Donc le fait d'utiliser tel ou tel langage ne change pas forcément les choses

  8. #168
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par _Bérenger_ Voir le message
    Oberon est un OS aussi apparement, implémenté avec le langage Oberon. Si je ne me trompe pas, l'idée de Wirth était de juger un langage à sa capacité à implémenter un système d'exploitation complet. Mais là encore si tout est si parfait, pourquoi est-ce que ça n'a jamais pris ? Il y a un complot Microsoft/Linux pour donner raison à Dennis Richie ?
    Ca c'est oberon system, pas active oberon. Et s'il s'agit effectivement de ça alors oui comparons avec minix:
    - oberon : système mono-utilisateur avec interface texte (TUI)
    - minix : système unix à micro-noyau et haute-disponibilité, capable de faire tourner tout l'userland de netbsd, interface graphique comprise...

    Des OS codés dans d'autres langages que le C, il y en a : redox os (rust), mirage os (ocaml), haiku (c++), voire même coreos (go) et lisp/smalltalk qui étaient initialement des véritables environnements.

  9. #169
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 36
    Points : 95
    Points
    95
    Par défaut
    Citation Envoyé par Mat.M Voir le message
    ok mais avant de vouloir inventer la roue et de faire un algorithme pour faire tourner la roue encore faudrait-il bien dessiner et concevoir la roue...
    pour dessiner une roue c'est pas trop difficile...tout le monde peut y arriver
    Pour dessiner le système informatique d'une entreprise ou de composants temps-réel c'est là où les choses se compliquent
    Donc le fait d'utiliser tel ou tel langage ne change pas forcément les choses
    Ça dépend du cas d'utilisation. Mais, par exemple, à partir du moment où on a besoin de performance, ça change radicalement entre un langage compilé et interprété.

  10. #170
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 361
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 361
    Points : 20 381
    Points
    20 381
    Par défaut
    Citation Envoyé par _Bérenger_ Voir le message
    Ça dépend du cas d'utilisation. Mais à partir du moment ou on a besoin de performance, ça change radicalement entre un langage compilé et interprété.
    je suis bien d'accord cependant j'évoquais la conceptualisation, bref la phase bien en amont de celle de la phase de codage dans un langage informatique à propement parler.
    c'est un peu du hors-sujet certes

    J'en reviens à l'exemple de ma roue, si au lieu de la définir de manière parfaitement circulaire je la définis comme un polygone par exemple eh bien que ce soit après pour coder en Python , Java , C ou C++ ou Assembleur ou tout ce que vous voulez, il y aura une erreur de conception en amont

  11. #171
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 123
    Points : 97
    Points
    97
    Par défaut
    Cher Simon
    Citation Envoyé par SimonDecoline Voir le message
    Pour moi, le plus terrible c'est de répandre l'idée qu'un langage est une religion qu'on doit embrasser ou détruire. Un langage n'est qu'un outil avec des domaines d'utilisations, des avantages et des inconvénients. N'importe quelle formation informatique moderne enseigne au moins 3 langages et paradigmes différents et avec un minimum de recul quant à leur utilisation.
    Je suis entièrement d'accord avec toi: c'est terrible ces gens illuminés qui ne jurent que par C/C++/Java et qui considèrent que tous ceux qui en montrent les faiblesses sont des hérétiques qu'il faut faire taire à tout prix. T'es-tu relu quand tu postes tes commentaires? Tu apparais comme un défenseur acharné du C/C++/Java, alors que c'est moi qui défends la multiplicité des outils et des techniques. Je fournis des sources qui montrent que le C++ contribuent à mettre en danger de gros projets et tu nies l'évidence. J'ai témoigné que j'ai réalisé de très gros projets dans de nombreux différents langages, dont C++ et Java. Pourquoi serait-ce moi l'ayatollah alors que justement j'ai utilisé ce que je critique, avec succès?
    De ton côté, avant de critiquer les alternatives, as-tu seulement développé un projet de taille raisonnable dans un langage comme Ada ou Pascal, disons 1 ou 2 millions de lignes de source?

    C/C++/Java ne sont que des outils, et ce sont des mauvais outils. Stroustrup lui-même l'admet. Pourquoi s'en servir encore alors qu'il existe de nombreuses alternatives plus efficaces, seules ou en combinaison?

    Très peu de formations modernes enseignent la rédaction de cahier des charges, le travail réel avec le client, l'estimation raisonnable de projets au forfait, et la priorité accordée aux besoins du client, et pas à l'emploi d'un outil défectueux. C'est évident, car nous devons former ces jeunes gens sur les projets à leur arrivée dans l'entreprise. Les outils que je propose facilitent justement toutes ces activités.

    Visiblement, aucune source ni aucun témoignage ne te convaincra... religion, quand tu nous tiens.

    Mais de toutes manières (humour), tu roules tranquillement en Twingo et je fonce en Ferrari... (l'argument de la popularité...)

    Plus des gens comme toi font des projets en C/C++/Java, plus des gens comme moi seront bien payés pour les auditer, les conseiller, les remettre sur les rails, les refaire ou recommander leur arrêt total. Je ne peux que te remercier. Le seul point noir, ce sont les clients déçus et les utilisateurs insatisfaits. Mais qu'importe, pourvu qu'on "code"...

  12. #172
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par SimonDecoline Voir le message
    Tu mélanges les concepts avec les outils pour les mettre en oeuvre. Andrew Tanenbaum a également beaucoup critiqué l'aspect monolithique des Unix mais il a quand même codé Minix en C.
    .

    Parce que à l'époque, le C était le seule langage qui permettait de faire des optimisations spécifiques à l'échelle de régistre à l'intérieur du CPU. Imagine à quel point tu peux accéléré une boucle for si la valeur incrémenté est faite entièrement dans le CPU.

    https://en.wikipedia.org/wiki/Register_(keyword)

  13. #173
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par _Bérenger_ Voir le message
    Oberon est un OS aussi apparement, implémenté avec le langage Oberon. Si je ne me trompe pas, l'idée de Wirth était de juger un langage à sa capacité à implémenter un système d'exploitation complet. Mais là encore si tout est si parfait, pourquoi est-ce que ça n'a jamais pris ? Il y a un complot Microsoft/Linux pour donner raison à Dennis Richie ?
    .

    Mais il a pris. Il est connu sous l'acronyme de WWW. Il n'est pas nécessaire d'avoir le OS pour essayer le langage. Vous n'avez qu'à le télécharger pour l'essayer. Ce n'est pas qu'un langage d'ordinateur, mais également un langage de réseau qui permet de faire les tâches qui demandent les "Sockets", mais sous une forme plus abstraite. Toute les idées qui ont développé à partir de ce langage ont été repris sous une forme ou une autre, cela passe de l'hyperlien jusqu'à Appletalk (interéchange par système évènementiel).

  14. #174
    Membre extrêmement actif
    Avatar de Madmac
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    1 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 685
    Points : 1 376
    Points
    1 376
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par SimonDecoline Voir le message
    Ca c'est oberon system, pas active oberon. Et s'il s'agit effectivement de ça alors oui comparons avec minix:
    - oberon : système mono-utilisateur avec interface texte (TUI)
    - minix : système unix à micro-noyau et haute-disponibilité, capable de faire tourner tout l'userland de netbsd, interface graphique comprise...
    .
    Tu n'as pas compris la nature de cet OS. Tout les ordinateurs sur le même réseau était interconnecté à l'échelle des traitement de texte de fromat Obéron qui intégrait des hyperliens dans les documents. Une page de texte avait les même propriétés qu'une page HTML. En pratique, Un réseau sous Obéron devenait un intranet

  15. #175
    MikeRowSoft
    Invité(e)
    Par défaut
    Citation Envoyé par wolinn Voir le message
    Un programmeur qui m'écrirait ce genre de chose a intérêt à bien compter ses abattis et affuter ses arguments pour en justifier la nécessité s'il ne veut pas se faire voler dans les plumes.
    Il y va de même pour tout les métiers. Il y a bien d'autres choses en informatique qui mériteraient une telle colère ou réprimande, pourtant toi comme les autres disent j'achète ou j'utilise gratuitement.

    Je pari que si IBM avait fait un truc pareil que t'aurait rien dit.

  16. #176
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Responsable informatique, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable informatique, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 086
    Points : 5 606
    Points
    5 606
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Il s'agit d'un principe philosophique bien plus ancien que cette citation. On le retrouve généralement sous le terme « rasoir d'Occam ».

    Pour ce qui est du rapport avec le sujet de la discussion, l'un des reproches que je peux faire à tous les langages dérivés de simula et qui lui sont restés proches en terme de syntaxe, comme pascal, modula-2, ada, oberon et autres, c'est leur persistance à continuer a utiliser des mots clefs qui pourraient être supprimés ou remplacés par une ponctuation moins intrusive.

    Je parle des mots réservés comme FUNCTION, PROCEDURE, THEN, BEGIN, END, LOOP, END IF, END LOOP, etc.

    Pourquoi écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    BEGIN
        faireQuelqueChose();
    END
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {
        faireQuelqueChose();
    }
    D'ailleurs, javascript puis go l'ont bien compris et sont allés plus loin en supprimant le point virgule là où il n'avait pas d'utilité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    {
        faireQuelqueChose()
    }
    Un autre exemple, peut-être qu'un client comprendra mieux la procédure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    PROCEDURE WhileExample IS 
       A:Integer;
    BEGIN
       A := 0;
       WHILE A < 10 LOOP
             someFunction(A);
             A := A + 1;
       END LOOP; 
    END WhileExample;
    plutôt que:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WhileSamples() {
        int a=0;
        while (a < 10) {
            someFunction(a++);
        }
    }
    ou la variante en go qui va plus loin dans l'élagage en supprimant les points-virgules finals, le typage quand il peut être implicite, unifie for et while et supprime des parenthèses inutiles de la condition:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    func WhileSamples() {
        a:=0
        for a < 10 {
            someFunction(a++)
        }
    }
    L'abondance de mot clefs inutiles des langages de la première famille me donne des boutons...
    [/code]
    Perso je trouve que ça améliore la lisibilité du code surtout dans les phases de maintenance. ça m'arrive de reprendre des projets plusieurs années après (dans l'industrie
    les gens sont très conservateurs), pas forcement écrits par moi, et lorsque que l'on tombe sur du C++ avec pointeurs dans tous les sens, des variables a gauche et a droite et pas de commentaires
    c'est très dur à comprendre du premier coup d'oeil...

    Je vois pas tellement la différence entre l'exemple go et l'exemple au dessus (même nombre de lignes et une boucle tout pareil)

    On en vient à une veille lubie, j'avais d'ailleurs eu une stagiaire qui l'avait, qui prétend que plus la syntaxe d'un langage est concise
    plus le langage est puissant...

    Perso beaucoup de nos clients sont des non-informaticiens, c'est pas le peine de leur montrer quoi que soit
    c'est pour eux du chinois (et cela quelque soit le langage). Lorsque l'on doit décrire ce que fait un process
    ou une procédure on le verbalise en français ou on utilise un langage type grafcet ou diagramme de flux

  17. #177
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 123
    Points : 97
    Points
    97
    Par défaut
    Bonjour Bérenger,

    Citation Envoyé par _Bérenger_ Voir le message
    Oberon est un OS aussi apparement, implémenté avec le langage Oberon. Si je ne me trompe pas, l'idée de Wirth était de juger un langage à sa capacité à implémenter un système d'exploitation complet. Mais là encore si tout est si parfait, pourquoi est-ce que ça n'a jamais pris ? Il y a un complot Microsoft/Linux pour donner raison à Dennis Richie ?
    J'ai déjà répondu à l'argument de popularité ou d'utilisation dans un post ci-dessus. Je préfère rouler en Ferrari plutôt qu'en Twingo. Essaye, tu verras, après la phase de transition, c'est une toute autre expérience :-)

    Ceci dit, sérieusement, Niklaus était très en avance sur son époque et je crois qu'il n'a pas été compris. Lis son livre, il est impressionnant, vu la date de publication.

    Citation Envoyé par _Bérenger_ Voir le message
    Je l'ai mise à jour. En cherchant "Stepanov Musser Ada" on tombe sur différents sites qui parlent des proto-STL en Ada. Stepanov a cherché pendant 25 ans un langage qui lui permette d'implémenter efficacement des composants logiciels. Il a créé un langage (Tecton), utilisé Scheme, puis Ada, puis finalement C++ après collaboration avec Stroustrup. Je pense qu'il avait de sérieuses raison pour considérer qu'Ada ne lui permettait pas de faire ce qu'il souhaitait. De ce que j'ai compris, Ada ne permet pas de contrôler aussi finement que le C/C++ les opérations d'accès/création/déplacement de données.
    Regarde l'Ada 2012, ou le Pascal Objet d'aujourd'hui. Je n'ai jamais vu de programme C++ rendre de la performance à de l'Ada ou du Pascal, dès lors que la conception est bien faite. Chaque compilateur optimise de lui-même et "inline" les fonctions qui peuvent l'être. Et Pascal Objet est l'exemple à suivre en termes de développement orienté-composant. Fais-toi un démonstrateur un peu réaliste dans chaque technologie et juge par toi-même.
    Ce que Stepanov a fait il y a longtemps ne paraît pas très pertinent dans ce cas-ci.

    Concernant la gestion fine des données, il me semble bien que c'est l'inverse et que c'est Ada qui fournit une gestion très fine des accès jusqu'au bit. Il a été conçu pour cela.


    Citation Envoyé par _Bérenger_ Voir le message
    Ça me fait penser au langage D qui se vante d'une compatibilité presque parfaite avec le C++.
    Je ne connais pas D. Après Java et les améliorations supposées, je ne regarde plus les emplâtres sur la jambe de bois qu'est C++.

    Citation Envoyé par _Bérenger_ Voir le message
    Mais elle vient des deux ! Essayez d'implémenter un même algorithme de tri rapide aussi efficace en Python qu'en C++ : bon courage Je ne pense pas que c'est ce que vous vouliez dire mais c'est aussi pour ça que je me méfie sur les autres points.
    Cf. un autre post plus haut qui répond à cela bien mieux que je ne saurais le faire. Et je n'ai jamais écrit sur Python.

    Citation Envoyé par _Bérenger_ Voir le message
    Après qu'est-ce qu'une astuce de langage ? L'arithmétique des pointeurs ? Tout le monde semble vouloir s'en débarrasser. Pourtant ça représente un état de fait : dans une mémoire, les données sont stockées à des adresses, et il arrive fréquemment que l'on doive se déplacer d'une adresse à l'autre. Il n'y a là rien d'artificiel.
    Réponse: une catastrophe pour la lisibilité, et un défaut potentiel un peu plus tard dans le développement.
    Par ailleurs, avec cet argument, il vaut mieux développer en assembleur, car avec cet outil-là, on a vraiment le contrôle total sur les pointeurs. LOL.
    Cependant, en Pascal, Ada et les autres langages de haut niveau, l'arithmétique des pointeurs est gérée (et bien gérée) par le compilateur, sans que le développeur en ait généralement conscience. Bien entendu, s'il le souhaite, il peut ouvrir une fenêtre et voir la traduction en assembleur de son source, faite par le compilateur. (Nota: Pascal permet justement de mélanger du source pascal avec de l'assembleur pour certaines fonctions si nécessaire. Ada aussi. :-))

    Bien cordialement,
    Thierryc

  18. #178
    Membre éprouvé
    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
    Points : 1 237
    Points
    1 237
    Par défaut
    En ce qui me concerne, je vais consacrer un peu de temps à réévaluer la pertinence de Ada pour mes applications, en codant quelques algorithmes bien connus.
    Calcul de transformée de Fourier par exemple, problèmes de géométrie, etc.
    Je me doute bien qu'il existe des bibliothèques pour certaines de ces fonctions, mais cela me permet de me rendre compte du potentiel du langage associé à son compilateur,et si c'est réellement utilisable pour mes applications lorsqu'il n'y a pas de béquilles écrites dans un autre langage.
    La dernière fois que je me suis intéressé à Ada remonte à 25 ans, c'était encore Ada 83, et je me doute bien que le langage, et les compilateurs, ont dû bien progresser depuis.
    Mais il n'y a pas que les performances pures des exécutables, il faut évaluer aussi la richesse de l'écosystème, si les outils et bibliothèques sont bien accessibles et à la portée d'une PME (dans mon cas).

  19. #179
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Pourquoi écrire:
    BEGIN
    faireQuelqueChose();
    END
    au lieu de
    {
    faireQuelqueChose();
    }
    parce que le code n'est pas WriteOnly, il faut pouvoir le lire et le comprendre rapidement

    moi quand je vois ça sur un écran
    et qu'il faut rajouter quelque chose à la fin de la boucle, ou une classe je suis obligé de trouver à quoi correspondent ces accolades
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
             next
          end sub
        end class
      end class
    end namespace
    on comprend tout de suite la structure, qu'il y a une classe dans une classe etc...

    et tous ces mots c'est l'IDE qui les écrit donc ce n'est pas une perte de temps du tout


    en plus le { a été prévu pour les claviers anglais ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  20. #180
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Bonjour,
    Citation Envoyé par Pol63 Voir le message
    moi quand je vois ça sur un écran
    et qu'il faut rajouter quelque chose à la fin de la boucle, ou une classe je suis obligé de trouver à quoi correspondent ces accolades
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
             next
          end sub
        end class
      end class
    end namespace
    on comprend tout de suite la structure, qu'il y a une classe dans une classe etc...
    Quand je suis passé du Pascal puis Ada au C, j'ai pas mal râlé après ces accolades. Et puis finalement, les habitudes changeant, c'est avec la verbosité excessive de ces langages que j'ai plus de mal aujourd'hui.

    Ce qui me fait penser que je suis en train de corriger des boucles non vectorisables en fortran, et bien, après le "end", c'est le nom de l'indice que je rajoute. Comme quoi quand les imbrications deviennent complexes, ce n'est pas juste un endtoto ou endtiti qui suffit. On a parfois de rappeler plus de choses au niveau des fins de blocs.

    Vous ne devez pas aimer Python du coup...

    Citation Envoyé par thierryc Voir le message
    Regarde l'Ada 2012, ou le Pascal Objet d'aujourd'hui. Je n'ai jamais vu de programme C++ rendre de la performance à de l'Ada ou du Pascal, dès lors que la conception est bien faite. Chaque compilateur optimise de lui-même et "inline" les fonctions qui peuvent l'être. Et Pascal Objet est l'exemple à suivre en termes de développement orienté-composant. Fais-toi un démonstrateur un peu réaliste dans chaque technologie et juge par toi-même.
    Ce que Stepanov a fait il y a longtemps ne paraît pas très pertinent dans ce cas-ci.

    Concernant la gestion fine des données, il me semble bien que c'est l'inverse et que c'est Ada qui fournit une gestion très fine des accès jusqu'au bit. Il a été conçu pour cela.



    Cependant, en Pascal, Ada et les autres langages de haut niveau, l'arithmétique des pointeurs est gérée (et bien gérée) par le compilateur, sans que le développeur en ait généralement conscience. Bien entendu, s'il le souhaite, il peut ouvrir une fenêtre et voir la traduction en assembleur de son source, faite par le compilateur. (Nota: Pascal permet justement de mélanger du source pascal avec de l'assembleur pour certaines fonctions si nécessaire. Ada aussi. :-))
    Je n'ai pas encore vu de Pascal ou d'Ada dans le HPC. S'ils peuvent être suffisants pour des applications plus classiques, je n'en doute pas, pour le HPC, jamais croisé. Ceci dit, j'ai la flemme de chercher en ligne si des gens on joué avec ça.
    Je ne renie pas les qualités de ces langages, loin de là. Le problème est qu'ils se sont effacés et que de fait, moins de gens les connaissent parmi ceux qui sortent d'écoles. De plus leur écosystème est bien plus restreint que celui des autres langages, même malgré la possibilité de communiquer avec des libs C. C'est limite pire pour Eiffel.

    J'ai fait du Pascal Objet à l'ère de TP6.0, à l'époque je n'avais absolument pas compris l'OO. Je serai bien incapable de le comparer à l'OO pratiqué dans les langages mainstream. Je n'en ai pas gardé un souvenir impérissable. J'ai un vague souvenir que c'était guère différent de la mise en oeuvre de l'OO en C++, et un chouilla plus restreint.

    Stepanov semble dire qu'il est parti vers le C++ parce qu'il ne croyait pas en la percée d'Ada et qu'il voulait pouvoir gérer la mémoire finement, allocations comprises (dixit wikipédia). Dans mes souvenirs d'Ada (83?) il n'y avait pas d'arithmétique des pointeurs (chose que je savais émuler en Pascal). Si on regarde comment les algorithmes standards sont écrits, il n'a fait que généraliser (d'un point de vue syntaxe) les algos de la libc et en introduire d'autres. Son livre Elements of Programming est très intéressant.

    Concernant l'arithmétique des pointeurs, sa pertinence dépend des générations de compilateurs. Aujourd'hui, l'accès indexé semble plus recommandable. Parfois utile, mais non indispensable.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

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