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

 Delphi Discussion :

Question philosophique !


Sujet :

Delphi

  1. #1
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut Question philosophique !
    Bonjour,

    Est ce que le compilateur aime les parenthèses ? est ce que cela lui facilite le travail et lui fait gagner du temps ?

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      EcrireChaine := (PageControl1.TabIndex = 0) ;
      If (i > 54) Then j := 30 ;
    est il plus rapide que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      EcriChaine := PageControl1.TabIndex = 0 ;;
      If i > 54 Then j := 30 ;
    je demande cela car j'ai l'habitude d'abuser des parenthèses inutiles ...

    A+
    Charly

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    euh...tu parles en temps de compilation ou en temps d'exécution ?

    car pour la compilation je dirais que ça doit être une micro seconde plus lent vu qu'il va falloir gérer la parenthèse fermante...en temps d'exécution c'est totalement indifférent (sauf à jouer sur la précédence des opérateurs évidemment)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 955
    Points
    40 955
    Billets dans le blog
    62
    Par défaut
    Dans la même veine si tu cries en mettant tout en majuscule, le compilateur comprendra mieux ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  4. #4
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    euh...tu parles en temps de compilation ou en temps d'exécution ?

    car pour la compilation je dirais que ça doit être une micro seconde plus lent vu qu'il va falloir gérer la parenthèse fermante...en temps d'exécution c'est totalement indifférent (sauf à jouer sur la précédence des opérateurs évidemment)
    Je n'en suis pas si sûre que toi. Le compilateur va devoir créer un bloc avec la condition.
    Quand il va tomber sur le '=', il va devoir évaluer les expression à droite et à gauche du symbole '=' pour créer 2 blocs. Une fois qu'il va trouver les parenthèses, les blocs seront créés. Sinon, il est obligé d'aller jusqu'au prochains indicateurs de séparation d'instruction.

    Mais on est bien d'accord que la différence de temps de compilation est infiniment minime.

    Personnellement, pour la lecture du code, je préfère dans ce cas, le parenthésage. @Charly : je ne trouve pas ça inutile du tout, au contraire.

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Merci pour vous avis de super spécialiste,

    D'accord avec Blonde, c'est plus lisible et plus compréhensible dans le code.
    C'est pourquoi j'utilise beaucoup les parenthèses, mais je voulais savoir si ce n'était pas trop pénalisant.

    C'est vrai que le principal c'est à l’exécution et là peu importe.

    A+
    Charly

    PS : reste à départager Paul et Blonde !

  6. #6
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    Si tu veux t'amuser un peu, il existe Lex et Yacc. Je te laisse découvrir

  7. #7
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par blonde Voir le message
    Si tu veux t'amuser un peu, il existe Lex et Yacc. Je te laisse découvrir

  8. #8
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    Citation Envoyé par pprem Voir le message

    Ben quoi ? C'est formateur dans la compréhension des analyseurs syntaxiques et des compilateurs.
    Je te trouve un peu moqueur mon cher Patrick.

  9. #9
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par blonde Voir le message
    Je n'en suis pas si sûre que toi. Le compilateur va devoir créer un bloc avec la condition.
    Quand il va tomber sur le '=', il va devoir évaluer les expression à droite et à gauche du symbole '=' pour créer 2 blocs. Une fois qu'il va trouver les parenthèses, les blocs seront créés. Sinon, il est obligé d'aller jusqu'au prochains indicateurs de séparation d'instruction.

    Mais on est bien d'accord que la différence de temps de compilation est infiniment minime.

    Personnellement, pour la lecture du code, je préfère dans ce cas, le parenthésage. @Charly : je ne trouve pas ça inutile du tout, au contraire.
    alors je ne sais pas comment Delphi va parser ce code, mais pour avoir écrit plusieurs compilateur, je sais comment moi je fais

    dans FlashPascal par exemple

    TCompiler.Expression est le plus haut niveau qui gère les expressions booléennes, Expression3 gère les termes, Expression2 les facteurs et Expression1 au plus bas niveau gère tous les cas possibles...et notamment le cas Parenthèse qui repart au niveau le plus haut

    donc dans FlashPascal, mettre une expression entre parenthèse impose au compilateur de descendre au niveau le plus bas pour reboucler sur une expression...ce qu'il aurait fait dès le départ sans les parenthèses.

    et mettre la parenthèse au plus haut niveau n'est pas vraiment une solution car dans l'expression 1 + (2 * (3 + (4))), on voit bien que la parenthèse intervient à tous les niveaux...donc nécessairement au plus bas niveau...sauf à faire du C pour lequel l'expression de condition est forcément entre parenthèses...mais ça devient un séparateur syntaxique comme begin/end et ne fait plus parti de l'expression en réalité.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  10. #10
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 345
    Points : 3 123
    Points
    3 123
    Par défaut
    Bien, merci à tous,

    je retiens que même si c'est un peu pénalisant je vais continuer à utiliser les parenthèses (sans excès) afin d'avoir une meilleure lisibilité du code.

    A+
    Charly

  11. #11
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Bien, merci à tous,

    je retiens que même si c'est un peu pénalisant je vais continuer à utiliser les parenthèses (sans excès) afin d'avoir une meilleure lisibilité du code.

    A+
    Charly
    ceci dit, et puisque l'on parle philosophie, je pense que la lisibilité du code est très liée aux habitudes...et de fait suivre les principes utilisés par Embarcadero permet de rendre son code lisible par la plus part des développeurs Delphi

    les parenthèses ne sont pas gênante et sont syntaxiquement correctes, mais leur usage n'étant pas répandu tu vas prendre une mauvaise habitude de lecture qui peut te perturber pour lire le code des autres, et les autres seront peut-être déroutés en lisant ton code.

    c'est vrai de pas mal de chose, évidemment un code non indenté posera problème, mais une indentation inhabituelle aussi; cf les longues discussions sur le 'then' en fin de ligne du 'if' ou à la ligne, le 'end else begin' en une, deux ou trois lignes...j'ai moi même des habitudes qui ne sont pas Embarcadero compatibles.

    au cours de ma carrière j'ai changé plusieurs fois de style d'écriture, mes premiers programmes sous Turbo Pascal, rédigés dans un éditeur texte en 80x43 lignes étaient particulièrement compacts afin d'avoir le maximum de code visible à l'écran...je les trouve très indigestes aujourd'hui. Il fut un temps ou je mettais une majuscule aux mots clés...ce que je continu à faire pour Integer mais par pour string
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    2 autres aspects :
    1) Les compilateurs. En Delphi, il n'y a pas trop de compilateurs ... à moins de switcher sur Lazarus. Mais en C/ C++, tu as Delphi Builder, gcc/ g++, Visual, ... Et donc, tout parenthèser permet de ne pas avoir de surprises sur l'interprétation des expressions/ conditions/ ou autres. En théorie, il y a 0.01% de risques, mais ce sont souvent des bogues assez "discrets"/ subtils (<- en gros, ce sont généralement des bogues que l'on découvre en production)

    2) Reprendre du code. @Paul TOTH a peut-être raison sur la lisibilité du code. Mais tout parenthèser clos les débats sur l'interprétation et permet de modifier rapidement les conditions/ ou autres, parce qu'on n'a pas à rajouter de parenthèses (sauf si on étend), en repérant les parenthèses on peut modifier facilement 1 partie, ...
    En C/ C++, par exemple, on n'a pas besoin de mettre les accolades pour le bloc if, mais ce bloc ne fait qu'1 ligne. Et lorsqu'on est en phase de test/ débogage, à chaque fois qu'il faut faire 1 trace, il faut reprendre le code s'il manque les accolades. C'est assez pénible.

  13. #13
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 931
    Points : 1 909
    Points
    1 909
    Par défaut
    C'est vrai que la lisibilité du code est très lié aux habitudes, les sociétés ou j'ai pris le + de plaisir à travailler sur le code est celles qui avaient une charte de bonnes pratiques ou tous les dev étaient contraints de les appliquer.

    Si certaines règles m'étaient un peu pénible à suivre au début, une fois l'habitude prise, cela ne posait plus de problème et le plaisir de travailler sur du code écrit par d'autres qui respectaient ces règles l'emportait.

    Rien de plus pénible de travailler sur un projet ou chaque dev suit ses habitudes, rien que pour l'indentation par exemple, cela peut devenir pénible à lire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. question philosophique sur les champs
    Par stagolee dans le forum Modélisation
    Réponses: 3
    Dernier message: 20/08/2008, 11h14
  2. Quelques questions philosophiques
    Par elbj dans le forum La taverne du Club : Humour et divers
    Réponses: 36
    Dernier message: 19/01/2008, 04h43
  3. [XHTML] Une Question Philosophique
    Par Prosis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 15/12/2007, 13h18
  4. Question philosophique fonction statique
    Par ram-0000 dans le forum C++
    Réponses: 6
    Dernier message: 27/09/2007, 22h12
  5. [VS.net 2005] Question philosophique sur les objets
    Par WriteLN dans le forum Framework .NET
    Réponses: 8
    Dernier message: 23/08/2007, 10h34

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