• [^] # Re: C'est trop compliqué !

    Posté par (site web personnel) . En réponse au journal Des langages de haut niveau. Évalué à 1.

    Java et C# ne le proposent pas, parce que c'est très dur à compiler, même quand tu fait du JIT.
    A la base les concepteurs de Java avait volontairement fait un langage "simple" avec des constructions syntaxiques "figées" pour justement limiter ce qui se faisait en C++. Le résultat c'est quoi : on peut être expert en Java en 2 ou 3 ans quand il en faut 10 en C++.
    L'argument technique n'est clairement pas suffisant. D'ailleur si le compilo de Lisaac le fait sauter, il est possible de le faire sauter également en Java ou C#.

    Cela dit, en ce qui nous concerne, on y réfléchit très murement avant de mettre une construction nouvelle dans la librairie standard.
    Evidemment, je ne doute pas que vous allez le faire de manière intelligente dans la lib standard. Seulement c'est pas monsieur tout le monde.

    Et on ne modifie pas impunément une librairie standard, je connais peu de gens qui prennent ce genre de risque, même quand c'est "pas grave" et qu'ils peuvent se le permettre.

    Sans parler de modifier, le programmeur peut avoir envie d'ajouter, de faire sa lib. Et c'est là que c'est dangereux. Au final si la bonne pratique consiste uniquement à réutiliser les constructions standards, l'intérêt de pouvoir les personnaliser...

    Comme je te l'ai déjà montré, en C# 3 tu peux obtenir plus ou moins le même type d'extensibilité et avoir du code du style :
    macollection.foreach( //code ).until (//code).do(//code).finally(//code).except(//code).etc. Bref rien de nouveau sous le soleil.
    La critique qui revient généralement, c'est que le code produit est certes joli, mais il devient de plus en plus difficile d'appréhender ce genre de code.
    Ils ont en partie utiliser le même principe que vous, à savoir ajouter des certains mots-clé afin de standardiser des constructions courantes "select" "group" "order", qui ne sont qu'une surcouche sur une lib.

    Et j'aimerai que tu me cites les constructions de Java, qui utilisent ces fameuses plus value de la VM...
    L'absence de construction permettant d'aller taper n'importe où dans la mémoire permettant d'avoir une gestion de la mémoire particulière, on peut aussi citer tout ce qui concerne la méta-programmation comme la réflexion ou les attributs de méta-données.