• [^] # Re: Bof, pas d'accord avec lui.

    Posté par (site web personnel) . En réponse à la dépêche Critique de C# par James Gosling l'inventeur de Java. Évalué à 10.

    Moi ce que j'ai compris c'est que avec le mot clef "unsafe", tu peux directement utiliser des pointeurs natifs dans le C#, et que donc tu peux travailler dans le dos du garbage collector.

    genre

    public void unsafe monGrosLeak() {
    int monPoiteur = malloc(10);
    }

    Avec java tu écrirait:

    public void native monGrosLeak();

    puis tu passes ta classe dans javah, qui va générer des entêtes (.h) avec la signature C équivalente de ta méthode. Puis c'est à toi d'implementer la méthode C séparément et d'en faire une librairie.

    C# permet donc d'utiliser rapidement du code natif, mais ca fait un mélange pas très heureux. Avec java, c'est plus long et fastidieux à écrire, mais tu a une séparation complête entre le code natif et le code java.

    A mon avis, il faut se lever tôt pour arriver à gagner en performance en gérant sa mémoire soi même (dans du java et du C#).

    En tout cas, pour mettre au même niveau C++, C# et vb, il ont du bien crader le C++... Avec un rapide coup d'oeuil sur msdn, on trouve des signatures C++ qui ressemblent à ca:

    void __gc __delegate MaClasse::maMethode();

    Ils ont peut être déposé C# dans les règles, mais le C++ en a pris un coup.