Pourquoi c# est un "mauvais" langage objet ....
pourquoi c# est un mauvais langage objet .... rapidement:
C# conserve le mot clef "virtual" qui est une abérration pour un langage objet moderne, qui est en plus basé sur une VM ... Cette scorie est tellement enorme que cela descend le langage et ses concepteur: soit ceux qui ont fait le langage ne comprennent rien à l'objet et ont fait n'importe quoi (peu probable) soit c'est le marketing qui à dit au développeurs de faire un langage "comme C++" (qui lui était déja un trés mauvais langage objet, mais il pouvait ce defendre dans l'esprit par lequel il se voyait: tous sacrifier pour une execution rapide.). C# est basé sur une VM, donc conserver toute les disgrétion de C++ est nul.
Il y à d'autre exemple (mais je ne pourrais tous les expliquer précisement et rapidement) mais rien que celui-ci fait qu'il ne faut pas promouvoir ce langage.
Java avait à l'époque fait un grand pas avec son (preque)tout référence, son garbage collector, ses interfaces, sont typage statique .... il à amener quelque chose de plus qu'il fallait conserver. C#, pour un nouveau langage, reprend les défaut les plus criticable de ses prédécesseur ... pourquoi alors l'utiliser ?
Heu Taroth ... tu peu un peut preciser car ...
J'ai pas dut comprendre le post du dessu car:
c# n'accepte pas non plus d'héritage multiple. Seul le sous typage multiple est possible grace au interface (comme en Java). La plateforme .Net est prevu pour un héritage simple, donc c'est déja pas evident d'implémenter un langage à héritage multiple dessu (precisons que eiffel# l'a fait -heritage multiple sur .Net- mais au prix d'une certaine bidouille dans leur compilo, il faut biens l'avouer). Donc Java et C# non rien à se reprocher l'un contre l'autre usr ce coup la...
Le virtual qui est inadmissible est celui des méthodes, que l'on doit expliciter partout (aberration: vous ètes dans un langage dit "objet" mais vous devez specifier partout que vous desirez la selection dynamique des methode -le virtual-, qui est une caracteristique indispensable pour ètre qualifier de langage "objet")
D'autre problèmes vienne quand on lit les explications du lagage: souvent on parle de l'implémentation des objet, on parle d'allocation dans la pile, dans le tas, tous ca pour "coller" un peu plus à C++ .... Non mais on rigole ou quoi? c# va ètre compilé pour une VM, on s'en fous si c'est dans la pile ou dans le tas! En plus il pourra ètre recompilé vers du natif aprés, qu'est-ce que vous en avez à faire dans quelle partie de la mémoire cela va ce situer ... pourquoi ne pas pouvoir spécifier de rester dans le cache du processeur? ou meme dans quelle barette memoire balancer notre objet tant que l'on y est! .... Java avais reussi a faire une reele abstraction de cela, et C# reviens en force avec tous ces anciens problèmes ... tiens d'ailleur, c# à t-il garder le "goto"? (je sais pas mais ca me ferrais bien marrer)
J'ai étais un peu méchant dans le paragraphe precedent mais bon, quand le marketing se mèle du développement d'un nouveua langage, et bien c'est pas joli ... (je dit "marketing" car je n'ose penser que ce soit réélement les concepteur du langage qui aient laisser c'est scories)