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

Langages de programmation Discussion :

Quel est l'intérêt des langages dynamique, en général ?


Sujet :

Langages de programmation

  1. #41
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Si je vous comprend bien, ce vous vous souhaitez faire, c'est que cela soit permis directement au niveau du langage parce que sinon, il y a moyen de le faire "en dehors".

    Je ne nie pas qu'il y a des cas où ce soit intéressant mais après, il y a le risque que ce soit mal utilisé (et qu'une solution trouvée à la conception aurait été préférable).

    Si je peux me permettre, pour faire une analogie avec SQL, il y a les ordres qui opèrent sur la structure et d'autres sur les données.
    J'ai entendu dire par des "DBA" qu'une application ne devrait pas comporter des ordres DDL.
    Si on pense à une "méta application" qui créerait des schémas de base de données, on peut désapprouver ce conseil.
    Toutefois, je l'ai compris le jour où j'ai vue une application faite par des novices (et malheureusement utilisé parce que le front-end est joli) : à chaque création de cours, 50 tables sont créées !

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  2. #42
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    <dérive>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Object o = new Object();
    o.addMethod("int sum(int x,int y) { return x+y;}");
     
    int s = o.sum(1,2);
    Cela n'est pas possible en java ? :perplexe:

    Pourtant c'est un compilé, j'ai toujours pensé que c'était plus simple de gérer ces fonctions dynamique sur des langages compilé, plutôt qu'avec des langages interprétés.

    Mais bon vous m'avez un peu perdu avec vos langages dynamique et static alors c'est peut être une grosse ânerie.
    </dérive>

  3. #43
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 189
    Points : 268
    Points
    268
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    .

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (o instanceof MyResource) {
      o.addInterface(java.io.Closable);
      o.addMethod("void close() { this.disconnect(); }");
    }
    J'aurais plutôt vu un équivalent des classes Proxy. Même si on limite la possibilité de génération de code.


    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (o instanceof MyResource) {
      o.addMethod(new Method("close", new Class[] {}), new InvocationMethod() {
       public Object invoke(Object o, Object[] params) {
          ((MyResource) o).disconnect();
          return null;
       }
    });

    Après, c'est clair que les cas d'utilisation sont rares et il faut pas utiliser ça n'importe comment.

  4. #44
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    meta programmation sur Java ?
    tu as utilisé cet outil http://www.jetbrains.com/mps/index.html ?
    Heu... non. Mais ca m'a l'air surtout orienté sur la création de langage spécifique aux domaines (DSL). Ca n'a pas trop de rapport avec les langages dynamiques (je dirais même le contraire).

    Citation Envoyé par benwit Voir le message
    Je ne nie pas qu'il y a des cas où ce soit intéressant mais après, il y a le risque que ce soit mal utilisé (et qu'une solution trouvée à la conception aurait été préférable).
    Je n'ai pas dit que ca devait être utilisé tout le temps. Bien au contraire, j'apprécie la rigueur imposée par le typage statique et le "blindage" qu'il procure dans des applications complexes.

    Il y a cependant des cas où l'on maitrise parfaitement ce que l'on fait (un petit "bloc" de code, une classe autonome, ...). Dans ces cas là, on peut utiliser la programmation dynamique sans trop de risque et ainsi avoir une plus grande souplesse pour écrire une solution.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int getTotalPrice(int clientId) {
    	Query query = new Query("SELECT SUM(price) AS grandtotal FROM Orders WHERE client=%cid%");
    	query.cid = clientId;
    	Object o = Database.execute(query);
    	return o.grandtotal;
    }


    Citation Envoyé par kaymak Voir le message
    Cela n'est pas possible en java ? :perplexe:

    Pourtant c'est un compilé, j'ai toujours pensé que c'était plus simple de gérer ces fonctions dynamique sur des langages compilé, plutôt qu'avec des langages interprétés.
    On pourrait tout a fait ajouter dynamiquement une méthode a un objet, mais le compilateur ne serait pas au courant (au moment de la compilation). Et donc il ne pourrait pas vérifier les noms/types des méthodes/variable, ce qui est tout de meme le gros avantage du typage statique .

    Le typage statique impose qu'une variable ne change pas de type pendant son utilisation. Elle conserve donc le type qui lui a été donné au départ (dans le code du programme), ce qui permet au compilateur de faire tous les tests (et optimisations) nécessaires.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #45
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    <dérive suite>
    On pourrait tout a fait ajouter dynamiquement une méthode a un objet, mais le compilateur ne serait pas au courant (au moment de la compilation). Et donc il ne pourrait pas vérifier les noms/types des méthodes/variable, ce qui est tout de meme le gros avantage du typage statique .

    Le typage statique impose qu'une variable ne change pas de type pendant son utilisation. Elle conserve donc le type qui lui a été donné au départ (dans le code du programme), ce qui permet au compilateur de faire tous les tests (et optimisations) nécessaires
    OK, merci de ta réponse !


    Mais du coup, j'ai envi de dire, que c'est le compilateur qui ne prévoit pas le cas d'utilisation.
    Que comme je l'imaginais, se serait tout à fait possible, plus rapide et mieux géré qu'en langage interprété, si tant est que le compilo l'ai prévu.
    <dérive suite & fin si personne n'à rien à y redire ^^>

  6. #46
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par pseudocode Voir le message
    Heu... non. Mais ca m'a l'air surtout orienté sur la création de langage spécifique aux domaines (DSL). Ca n'a pas trop de rapport avec les langages dynamiques (je dirais même le contraire).

    via un DSL, on peut introduire du "sucre syntaxique" pour construire des stubs de manière transparente, et ainsi donner une impression de objets à la SmallTalk ?
    donc ça a un rapport... il n'y a qu'à voir comment de simples extensions camlp4 arrivent à intégrer l'évaluation paresseuse ou des "constructeurs d'ordre supérieur" dans un langage qui ne les gère pas nativement (et qui est quand même beaucoup plus statiquement typé )
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #47
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Jack Sparrow Voir le message
    J'aurais plutôt vu un équivalent des classes Proxy. Même si on limite la possibilité de génération de code.
    Oui, mais la partie "interessante" dans mon exemple c'etait la ligne "addInterface" qui permet par la suite de réutiliser le typage statique.

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Object o = ...
     
        // add Closable behavior if needed
        if (!(o instanceof Closable)) {
            o.addInterface(java.io.Closable);
            o.addMethod("void close() { /* nothing to do */ }");
        }
     
        doSftuff( o ) ;
       /* doSftuff( (Closable) o ); // Necessaire avec le typage statique */
    }
     
    void doStuff (Serializable o) { .. }
    void doStuff (Closable c) { .. }
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #48
    Membre actif
    Inscrit en
    Juin 2008
    Messages
    189
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 189
    Points : 268
    Points
    268
    Par défaut
    On peut aussi avoir ça du coup :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        Object o = ...
     
        // add Closable behavior if needed
        if (!(o instanceof Closable)) {
            o.addInterface(java.io.Closable);
            o.addMethod("void close() { /* nothing to do */ }");
            o.addInterface(java.io.Serializable);
        }
     
        doSftuff( o ) ;
       /* doSftuff( (Closable) o ); // Necessaire avec le typage statique */
    }
     
    void doStuff (Serializable o) { .. }
    void doStuff (Closable c) { .. }

    Et même ça :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Object o = ...
        // add Closable behavior if needed
        if (!(o instanceof Closable)) {
            o.addInterface(java.io.Closable);
          }
     
    (    (Closable) o).close();
    }

    Et là, ça me semble mal

  9. #49
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Je suis du même avis que benwit

    Au final, il ressort qu'un langage statique peut très bien gérer:
    - L'instrospection
    - La métaprogrammation
    - Les fonction d'ordre supérieur
    - Les fonction lambda
    - L'évaluation et la modification du code au runtime. On peut d'ailleurs tout à fait modifier la définition d'un classe au runtime en c#. Il faut utiliser le TypeBuilder (http://oreilly.com/catalog/progcshar...h18.html#17553). On peut même compiler au runtime du code pour l'exécuter.

    Si les langages statique d'aujourd'hui implemente des propriete des langages dynamiques, sont-il toujours statiques ?
    J'ai l'impression que beaucoup d'avantages qu'on attribue exclusivement aux langages dynamiques existe en fait également en statique et même de façon plus poussée (cf. les expressions lambda). Pourquoi a t-on ces à priori ? Je me demande si ça n'est pas parce qu'on se lance facilement dans l'apprentissage d'un langage dynamique en croyant qu'il est plus facile à maitriser et sans vérifier les possibilités en statique. On prend à mon avis le problème à l'envers, car les débutants devraient justement s'obliger à une certaine rigueur au début pour bien comprendre les mécanismes de la programmation.

    En fait un langage devrait être statique par défaut et dynamique pour des besoins spécifique (comme faire de la récursivité sur des types non connus à l'avance). C'est la direction que prend c# et je la trouve tout à fait logique: il faut d'abord avoir de la rigueur et ensuite s'autoriser de la souplesse, ça évite bien des ennuis car on sait ce que l'on fait. En dynamique, c'est l'inverse: souplesse à volonté au moment de taper de le code... la rigueur et les ennuis tombent au runtime !

    Le seul vrai avantage que je retiens pour l'instant est qu'il est facile de faire une petite modification, sans avoir à recompiler, etc. Mis à part ça, un langage statique suffisamment évolué semble pouvoir faire tout ce que fait un langage dynamique.

    Sinon on ne m'a pas répondu si Java était aussi souple que le langage C# (inférence de type, variables implicitement typés, expressions lambda, variables dynamiques, etc.). Parce que pour en revenir à mon problème initial, il me faut choisir un ERP et je n'en vois aucun de gratuit écrit en .NET.

    Le typage statique impose qu'une variable ne change pas de type pendant son utilisation. Elle conserve donc le type qui lui a été donné au départ (dans le code du programme), ce qui permet au compilateur de faire tous les tests (et optimisations) nécessaires.
    Oui et c'est logique d'ailleurs. Le language ne devrait pas permettre à une variable de muter vers n'importe quoi. Pourquoi est-ce qu'un objet "Personne" pourrait-il se transformer en un objet "Ordinateur" ? En revanche, il serait peut être logique qu'un objet "Personne" puisse évoluer vers le type "Professeur" et gagner ainsi en fonctionnalités.

    C'est pour ca que je parle d'écosystème si tu utilises PHP sans un Framework tu ne vas pas en voir les avantages. Pour reprendre ton exemple tu compares un langage (PHP) à "une plateforme de développement" ASP.net. Cela dit tu ne retrouveras pas le confort de Visual Studio.
    J'utilisais le framework Zend. En fait je travaillais sur un projet magento. Mais l'utilisation du framework ne change rien au fait qu'il n'y a pas de code behind, pas de réelle séparation entre les couches métiers et affichage, etc. sans compter que la programmation objets est très limitée...
    Côté IDE, il en ressort que même en utilisant de bons éditeurs comme netbeans on a une assistance très limitée et associé à une lourdeur pour parser le code et le confronter à la doc. Croyez moi, quand on passe de ASP.net à PHP, on vraiment l'impression de retourner à l'âge de pierre au niveau confort de programmation!
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  10. #50
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Jack Sparrow Voir le message
    On peut aussi avoir ça du coup :
    (...)
    Et même ça :
    (...)
    Et là, ça me semble mal
    Ce n'est pas que c'est mal, c'est juste que les vérifications ne sont pas faites au moment de la compilation mais de l'exécution.

    Le typage statique nous permet (en Java) d'appliquer le mantra "si ca compile alors c'est que j'ai implémenté toutes les méthodes nécessaires". Donc on n'aura pas d'exception du type "Unknown method".

    Citation Envoyé par maa Voir le message
    Je me demande si ça n'est pas parce qu'on se lance facilement dans l'apprentissage d'un langage dynamique en croyant qu'il est plus facile à maitriser et sans vérifier les possibilités en statique.
    Comme l'a dit Jedai, c'est surtout que l'on confond le "typage dynamique" et le "langage de programmation dynamique".
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #51
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Citation Envoyé par maa Voir le message
    J'utilisais le framework Zend. En fait je travaillais sur un projet magento. Mais l'utilisation du framework ne change rien au fait qu'il n'y a pas de code behind, pas de réelle séparation entre les couches métiers et affichage, etc. sans compter que la programmation objets est très limitée...
    Côté IDE, il en ressort que même en utilisant de bons éditeurs comme netbeans on a une assistance très limitée et associé à une lourdeur pour parser le code et le confronter à la doc. Croyez moi, quand on passe de ASP.net à PHP, on vraiment l'impression de retourner à l'âge de pierre au niveau confort de programmation!
    "En ce qui concerne l'interet des languages dynamiques il faut pas essayer de le comparer a un langage static car tu n'en verras que les défauts.
    Ton choix doit se faire en fonction du projet."

    "Tu ne trouveras pas l'équivalent de Visual Studio."

    - Est-ce que ton projet se prete au langage dynamic?
    - C'est étrange Zend fournit le patron de conception MVC.
    - En ce qui concerne l'objet qu'est-ce qu'il te manque?

    Il faut que tu passes un peu de temps a étudier les possibilités que PHP t'offre ca sert a rien de les comparer. Si tes besoins passent par un langage de type C# ou Java et bien fonce.

  12. #52
    Membre éprouvé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Points : 1 177
    Points
    1 177
    Par défaut
    Citation Envoyé par Bibi218 Voir le message
    J'avoue que j'aimerais bien en savoir un peu plus là-dessus.
    Python est pour l'instant mon langage préféré, mais si je l'ai choisi, c'est pour sa bibliothèque standard, sa syntaxe qui ne me pique pas les yeux, ainsi que quelques autres petites choses citées plus haut. Par contre, j'ai beaucoup d'assert qui trainent dans mon code, et ma documentation comprend presque systematiquement des informations sur le type de mes variables, validés par des décorateurs.

    Je suis conscient que je dois manquer quelque chose, auquel cas merci de m'éclairer ! Mais ce qui m'a séduit dans Python, c'est vraiment le côté haut niveau, pas le typage dynamique.

    "changer ta façon de développer", je veux bien, mais vers quoi du coup ?
    Et quel est l'intérêt pour de la programmation Web en particulier ?
    Si tes projets demandent un typage fort n'hésite pas a switcher de langage.
    Un informaticien se doit d'etre polyglotte. De plus ce qui compte vraiment c'est la maitrise des concepts.

    Pour répondre a ta question je te recommande les méthodes d'intégrations continues comme ca ton code est constamment validé.

  13. #53
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2006
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Suisse

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 519
    Points : 1 104
    Points
    1 104
    Par défaut
    Citation Envoyé par Jedai Voir le message
    D'un autre côté pas mal d'aficionados des langages dynamiques tendent à attribuer au dynamisme des avantages qui sont plutôt dûs au niveau d'abstraction et à imputer au typage statiques des désavantages qui n'existent que dans les systèmes de typage explicite faiblement expressifs et fragiles des langages mainstream...
    Jedai, je t'aime

    Sinon, pour ce qui est de l'ajout dynamique de méthodes à l'exécution : en OCaml, l'utilisation des fonctions est très souple, il est possible de créer une hashtable dont les éléments sont des fonctions, et les fonctions que l'on y ajoute peuvent être créées dynamiquement, par exemple l'on pourrait avoir une fonction qui, à partir d'un code dans un langage donné, produirait un arbre syntaxique et une autre fonction qui exécuterait cet arbre (avec d'éventuels arguments qui pourraient être passés par une liste, par exemple).

    Exemple :
    Code OCaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let arbre=ast_of_code "def main(msg): print(msg)" in
    let fonction=execute_ast arbre in (* note : la fonction execute_ast pourrait attendre 2 arguments : l'arbre et les arguments de la fonction main du code, le code ne serait alors pas immédiatement exécuté *)
    Hashtbl.add tbl "ma_fonction" fonction
     
    (* ... *)
     
    try
      (Hashtbl.find tbl "ma_fonction") [String "Bonjour"] (* les arguments de la fonction main seraient une liste d'un type somme et là, le code serait effectivement exécuté *)
    with
      | Not_found -> ()

  14. #54
    Membre confirmé Avatar de ypicot
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    412
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 412
    Points : 579
    Points
    579
    Par défaut
    Citation Envoyé par maa Voir le message
    ...j'ai perdu un temps fou à debugger des erreurs de syntaxe, de typage, de propriétés ou méthodes inexistantes, etc. Il faut dire que je dois faire pas mal d'erreurs d'inattentions, étant habitué à ce qu'une compilation me signale toute ces erreurs...
    On sait que passer du procédural à l'objet (ou le contraire), de l'objet au fonctionnel (et réciproquement), de la moto à la voiture (et inversement) demande une certaine phase d'adaptation. Au début, on est toujours perdu, on recherche ce dont on a l'habitude. Ce n'est qu'après un certain temps qu'on remarque ce qui est ajouté, et surtout a quoi ca sert et comment on l'utilise.

    Pour reprendre ton exemple (erreur de typage, ...) ce genre de choses n'est effectivement pas détecté par le compilo, puisqu'il n'y a pas de compilo.
    En fait, c'est remplacé par autre chose : un développement piloté par les tests. C'est ton harnais de tests qui va détecter ce genre de boulette, ainsi que de nombreuses autres.
    Les tests existent bien sûr dans quasiment tous les langages (y compris statiques), mais ils sont encore plus vitaux dans les langages dynamiques. A noter que pyunit est intégré à Python.

    Développer dans un langage dynamique avec les réflexes d'un langage statique va te conduire au même endroit que piloter une moto avec les réflexes d'une conduite auto : dans le mur.

    Par contre, quand tu maitrises les deux, tu peux choisir l'un ou l'autre en fonction du contexte (c'est vrai pour les langages et les véhicules).

    Yvan
    Une solution n'est valable que dans un contexte donné

  15. #55
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Merci beaucoup pour ce conseils sur les tests unitaires. Je n'en ai pas fait lors du développement de mon application en php et c'est clair que ça m'aurait sûrement éviter pas mal d'erreurs.
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  16. #56
    Expert éminent sénior
    Avatar de Katleen Erna
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 547
    Points : 76 188
    Points
    76 188
    Par défaut
    Mise à jour du 26.07.2010 par Katleen
    Les langages statiques sont-ils trop sophistiqués et complexes ?


    => http://www.developpez.net/forums/d95...s/#post5367400


    Edit de Gordon : débat déplacé pour ne pas détourner celui-ci de son sujet initial (l'intérêt des langages dynamiques)

  17. #57
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par maa Voir le message
    Mise à jour du 26.07.2010 par Katleen
    Les langages statiques sont-ils trop sophistiqués et complexes ? Un cadre de Google montre Java et C++ du doigt


    ...

    Source : Déclarations de Rob Pike

    Pensez-vous que Java et C++ soient devenus trop complexes ?

    Pourquoi les langages gagnent-ils toujours en complexité ?

    Que pensez-vous de l'initiative Go ?

    Go deviendra-t-il à terme aussi compliqué que les autres langages lorsqu'il sera beaucoup utilisé ?

    -
    Les langages ne sont pas responsables de cette complexité, c'est plutôt ce qu'on fait avec

    Ok je m'interresse à Go (comme à tout ce que produit google) mais je ne vais pas entrer dans cette stratégie de communication : poser une question absurde pour faire jazzer..

    C'est vrai les languages deviennent complexes, mais les nouvelles stratégies de programmation tardent à être implémentées dans les langages sous forme de primitive (cf Ajax) on copi colle de gros patés de code parce qu'on ne peut rien faire d'autre. De nouveaux langages apparaissent qui font en une seule directive ce qui exige des centaines de lignes de C+ ou des milliers d'assembleur

    Mais dés qu'on sort des sentiers battus, on est bien obligés de détricoter les process, refaire tout à la main et changer juste ce qui nous intéresse

    Bon, la question est volontairement biaisée
    Il n'existe pas de réponse satisfaisante, si ce n'est qu'il faut bien surveiller toutes les nouvelles stratégies de productivité des développeurs. Pas seulement les langages mais aussi les IDE's, les générateurs, les outils de refactoring... Et croire les ainés quand ils disent que trois lignes de regex remplacent 50 lignes de splits/merge !

  18. #58
    Expert éminent sénior

    Inscrit en
    Juillet 2009
    Messages
    3 407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 407
    Points : 149 059
    Points
    149 059
    Par défaut
    Débat sur la complexité des langages statiques déplacé pour ne pas détourner celui-ci de son sujet initial (l'intérêt des langages dynamiques)

    => http://www.developpez.net/forums/d95...s/#post5367400


    Cordialement,

    Gordon

  19. #59
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Points : 1 658
    Points
    1 658
    Par défaut
    Je suis programmeur c#, qui est statique et fortement typé. (...) Comprendre un programme existant est aussi bien plus évident quand on connait le type des objets et que l'on peut remonter à leurs définitions ou la définition de leurs membres, et ceci n'est pas possible avec un langage dynamique.
    message #1




    Est-ce que quelqu’un pourrait expliquer en quoi consiste « remonter à leurs définitions ou la définition de leurs membres » auquel il est fait référence dans cette phrase.

    Ceci évoque-t-il une possibilité de C# ou de tout langage dynamique en général ?



    Merci.

  20. #60
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 056
    Points
    32 056
    Par défaut
    Citation Envoyé par eyquem Voir le message
    Est-ce que quelqu’un pourrait expliquer en quoi consiste « remonter à leurs définitions ou la définition de leurs membres » auquel il est fait référence dans cette phrase.

    Ceci évoque-t-il une possibilité de C# ou de tout langage dynamique en général ?

    Merci.
    Langage statique en général.

    ça veut dire que quelque part dans le code, il existe une définition unique de la donnée sur laquelle je suis en train de bosser. Et ça permet de comprendre un peu mieux ce qui se passe.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

Discussions similaires

  1. Quel est l'intérêt des Interfaces ?
    Par opeo dans le forum Langage
    Réponses: 42
    Dernier message: 06/01/2022, 15h16
  2. Quel est l'intérêt des mots clé get et set ?
    Par verbose dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 30/09/2008, 17h19
  3. Signature des assemblies : quel est l'intérêt?
    Par AdamReith dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 30/04/2008, 19h20
  4. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 23h28

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