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

Actualités Discussion :

Le PHP aurait été créé par un "faux programmeur", d'après son inventeur

  1. #161
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par gl Voir le message
    Je mettrais tout de même un bémol à ce type de liste. Autant il est globalement assez simple de séparer les langages dans deux catégories typage statique/typage dynamique, autant les catégoriser en typage faible/fort me semble plus difficile.
    Je mettrais aussi un bémol pour la séparation des langages sur le critère typage statique ou dynamique quand on voit ce qu'apporte de nouveaux langages comme le C#, qui possède du typage statique ET dynamique, cela ne m'étonnerait pas que d'autres langages s'en inspirent à l'avenir et que se soit monnaie courante (en même temps les langages à typage statique me semble plus disposés à introduire du typage dynamique que l'inverse)
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  2. #162
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Si tu veux parler du mot-clé "var" en C#, il s'agit d'inférence de type et ce n'est qu'une histoire de syntaxe, le type étant dès lors connu à la compilation.

  3. #163
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par hegros Voir le message
    quand on voit ce qu'apporte de nouveaux langages comme le C#, qui possède du typage statique ET dynamique
    Je ne suis pas très familier avec C# et encore moins avec ces évolutions récentes.
    Peux-tu donc décrire un peu plus précisément ce dont tu parles ?

  4. #164
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Oui il y a de l'inférence et de la réflexion mais je ne parle pas que de "var" mais aussi de dynamic et il y a aussi il me semble InvokeMember/InvokeMethod, tout cela dans C# 4
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  5. #165
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par gl Voir le message
    Je ne suis pas très familier avec C# et encore moins avec ces évolutions récentes.
    Peux-tu donc décrire un peu plus précisément ce dont tu parles ?
    Un petit exemple (le type n'est connu qu'à l'exécution)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public static void AfficherUneValeur(dynamic maVar)
    {
     MessageBox.Show('Ma variable dynamique est de type ' + maVar.GetType() + ' et vaut ' + maVar);
    }
    
    public static void TesterLeTypageDynamique()
    {
       string myString = 'une string';
       int myInt = 10;
     AfficherUneValeur(myString);
     AfficherUneValeur(myInt);
    }
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  6. #166
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par hegros Voir le message
    Un petit exemple (le type n'est connu qu'à l'exécution)
    C'est de la programmation "générique" (proche de ce que l'on peut faire avec le generic en Java ou les templates en C++). Pas réellement du typage dynamique.

    En outre le type peut être connu à la compilation.

  7. #167
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 148
    Points
    148
    Par défaut
    En quoi c'est nouveau ca ?
    En C++ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    template <class T>
    void foo(T&& type)
    {
    std::cout << "type est du type " << typeid(T).name();
    }

  8. #168
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par gl Voir le message
    C'est de la programmation "générique" (proche de ce que l'on peut faire avec le generic en Java ou les templates en C++). Pas réellement du typage dynamique.

    En outre le type peut être connu à la compilation.
    Je suis plutôt d'accord avec toi mais c'est comme cela que le mot clé dynamic est vendu dans C# 4 (comme du typage dynamique) même si dans la msdn on trouve que dynamic est un type static et qu'il bypass les vérifications statique de type

    Avec les génériques on écrirait plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void AfficherUneValeur <T>(T t)
    		{
     			MessageBox.Show("Ma variable est de type " + t.GetType() + " et vaut " + t);
    		}
    
    		public void TesterLeTypageDynamique()
    		{
    			string myString = "une string";
    			int myInt = 10;
    			AfficherUneValeur(myString);
    			AfficherUneValeur(myInt);
    		}

    On remarque bien que les 2 codes que j'ai donné sont différents (un avec générique et un sans) Avec les génériques oui le type est connu à la compilation (comme en C++ et en C# d'ailleurs) mais avec 'dynamic' c'est manifestement à l'exécution que le type est connu
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  9. #169
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par hegros Voir le message
    On remarque bien que les 2 codes que j'ai donné sont différents (un avec générique et un sans) Avec les génériques oui le type est connu à la compilation (comme en C++ et en C# d'ailleurs) mais avec 'dynamic' c'est manifestement à l'exécution que le type est connu
    Dans ce cas, le type n'est résolu qu'à l'exécution ? C'est surprenant comme choix, mais pourquoi pas.

  10. #170
    Expert éminent
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Points : 7 752
    Points
    7 752
    Par défaut
    Espérons juste qu'usage n'en sera fait que pour des situations qui l'exige.

  11. #171
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    la presentation du dynamic en c# est vers la fin de cette vidéo pour ceux que ça intéresse :

    http://www.microsoft.com/france/visi...0-40bfffb96599

  12. #172
    Membre du Club
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Points : 47
    Points
    47
    Par défaut
    Je pense que l'exemple en haut (pour les dynamic) est mauvais car il ne montre pas réellement que c'est du dynamic.

    La différence entre l'exemple (en haut) et des méthodes généric c'est qu'avec une méthode généric il faut que les objets utilisés en argument implémente une interface (ou hérite d'une classe abstraite) commune alors qu'avec les dynamic le programme marchera et la vérification se fera a l'exécution donc on peut avoir une truc du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class A { public void maMethod(); } Class B { public void maMethod(); }
    
    Class C { public static void Test(dynamic maVar) { maVar.maMethod(); } }
    
    C.Test(new A() );
    C.Test(new B() );
    L'utilité des Dynamic réside dans le faite qu'on peut utiliser directement (dans du code en c# ) des objets provenant d'autre langage notamment des scripts (exemple python).

  13. #173
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par gl Voir le message
    Dans ce cas, le type n'est résolu qu'à l'exécution ? C'est surprenant comme choix, mais pourquoi pas.
    Oui la résolution se fait pendant l'exécution, et c'est une évolution majeure, la programmation dynamique, de C# 4.

    Je ne trouve pas surprenant pour un langage d'avoir un typage statique ET dynamique fort, c'est plutôt un avantage, et c'est très pratique et utile, l'exemple dans la vidéo avec le XML est très parlant je trouve.

    Le code C# de nemesisTHEone est plus parlant que le mien, d'ailleurs je suis persuadé qu'en php cela se coderait de la même façon le dynamic en moins et le $ en plus

    Et tout cela n'est pas possible en C++ ou en Java.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  14. #174
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par hegros Voir le message
    Et tout cela n'est pas possible en C++ ou en Java.
    Mais il l'est en Groovy et son principe de cristallisation.

  15. #175
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par Tommy31 Voir le message
    Mais il est en Groovy et son principe de cristallisation.
    Oui groovy est un autre langage qui permet le typage statique et dynamique

    La différence, mais je me trompe peut-être, c'est que le C# a une dominante statique et groovy dynamique
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  16. #176
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Citation Envoyé par hegros Voir le message
    Je ne trouve pas surprenant pour un langage d'avoir un typage statique ET dynamique fort
    Ce n'est pas le fait d'avoir du typage statique ou dynamique qui me surprend. C'est plutôt de faire à l'exécution une résolution qui pourrait être faite bien avant (comme c'est le cas dans l'exemple donné ici) dans un langage qui justement est plutôt à typage statique.
    Maintenant c'est plus dans le cas de l'exemple donné que cela me surprend. Il doit être possible de trouver des cas où il y a un vrai gain.

  17. #177
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par gl Voir le message
    C'est plutôt de faire à l'exécution une résolution qui pourrait être faite bien avant (comme c'est le cas dans l'exemple donné ici) dans un langage qui justement est plutôt à typage statique.
    Maintenant c'est plus dans le cas de l'exemple donné que cela me surprend. Il doit être possible de trouver des cas où il y a un vrai gain.
    C'est probablement lié dans cet exemple à l'architecture .NET qui a évolué pour supporter nativement les langages dynamiques avec sa DLR. La résolution est faite au finale il me semble de façon statique (par sa CLR) à l'exécution.


    On pourrait en dire autant avec PHP, il y a des tas de codes où la résolution pourrait se faire avant l'exécution.
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  18. #178
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Ouhn le jolie troll IRL

  19. #179
    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
    je ne sais pas s'il faut être un "faux" programmeur pour faire ça, mais moi je ne l'aurais pas codé comme ça :

    Code php : 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
     
    <?php
    var_dump(0 == "a"); // 0 == 0 -> true
    var_dump("1" == "01"); // 1 == 1 -> true
    var_dump("10" == "1e1"); // 10 == 10 -> true
    var_dump(100 == "1e2"); // 100 == 100 -> true
     
    switch ("a") {
    case 0:
        echo "0";
        break;
    case "a": // jamais évalué parce que "a" est déjà trouvé avec 0
        echo "a";
        break;
    }
    ?>

    http://php.net/manual/fr/language.op...comparison.php

    ben oui ça fait tout drôle de voir que le teste suivant passe

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
      $value = 0;
    // ...
      if ($value == 'janvier') {
        echo "nous sommes en janvier ?!";
      }
    ?>
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  20. #180
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 1
    Points : 0
    Points
    0
    Par défaut possible
    je crois qu'il a tout simplement utilisé son intelligence et si ce qu'il dit n'est pas de l'ironie je crois que l'informatique a alors beaucoup de surprise résérvées.

Discussions similaires

  1. [PHP-JS] Affichage page par page
    Par Attilius dans le forum Langage
    Réponses: 8
    Dernier message: 09/08/2006, 18h23
  2. php et dll activeX par ou commencer.
    Par jul-974 dans le forum Langage
    Réponses: 1
    Dernier message: 25/07/2006, 19h01
  3. Réponses: 18
    Dernier message: 08/04/2006, 10h39
  4. [Directives] Fichier php.ini completement ignore par PHP
    Par kevos dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 07/02/2006, 17h14

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