Effectivement les pointeurs en C# ne sont pas du tout là pour apporter quelque chose au design objet.
Faut juste que se dire que MS n'a pas voulu que le C# soit un simple langage de haut niveau, mais également un langage de "moyen niveau", avec lequel on peut utiliser des notions plus proches du système lorsque c'est nécessaire (si celà s'appelle C# c'est aussi parcqu'il reprend certains concepts du langage C). Les structures s'inscrivent également dans la même lignée : aucun apport au niveau design, mais question perfs c'est sympa.
Ah si y'a quand même une sorte de pointeurs qui peuvent améliorer le design en C# : les délégués, qui ne sont rien d'autre que des pointeurs de fonction typés. Il y a de nombreuses applications, comme par exemple la gestion des événements : c'est contournable en Java mais c'est nettement plus lourd.
Il paraît par exemple fort dommage dans une application qui manipule des images de devoir se coltiner JNI pour aller bidouiller un champ de bit par soucis de rapidité : celà nuit clairement à la portabilité, à la lisibilité, et peut avoir beaucoup plus de conséquences "négatives" qu'avec des pointeurs comme en C# (ces pointeurs on un minimum de protection tout de même).
Bref, on va dire que C# ratisse un peu plus large que Java au niveau du domaine d'applications possibles.
Pour la comparaison avec Python, ben je connais pas très bien ce langage, mais je vois pas trop en quoi il en est plus proche :)
Pour ma part, je suis convaincu que les optimisations de code dans les langages sans compilation ciblée sur une plateforme de type C# et Java (Eiffel, Smalltalk, Python, Ruby, Perl ...) doivent être réalisées par le compilateur/machine virtuelle (JIT).
Tout à fait d'accord, mais le fait est que parfois le compilateur ne fait pas tout, quand par exemple tu lui demandes d'allouer quelque chose sur le heap, il ne peut pas de lui-même décider d'allouer cet objet sur la pile si celà l'amuse (encore heuresement)
[^] # Re: navrant
Posté par TImaniac (site web personnel) . En réponse au journal C# vs java. Évalué à 2.
Faut juste que se dire que MS n'a pas voulu que le C# soit un simple langage de haut niveau, mais également un langage de "moyen niveau", avec lequel on peut utiliser des notions plus proches du système lorsque c'est nécessaire (si celà s'appelle C# c'est aussi parcqu'il reprend certains concepts du langage C). Les structures s'inscrivent également dans la même lignée : aucun apport au niveau design, mais question perfs c'est sympa.
Ah si y'a quand même une sorte de pointeurs qui peuvent améliorer le design en C# : les délégués, qui ne sont rien d'autre que des pointeurs de fonction typés. Il y a de nombreuses applications, comme par exemple la gestion des événements : c'est contournable en Java mais c'est nettement plus lourd.
Il paraît par exemple fort dommage dans une application qui manipule des images de devoir se coltiner JNI pour aller bidouiller un champ de bit par soucis de rapidité : celà nuit clairement à la portabilité, à la lisibilité, et peut avoir beaucoup plus de conséquences "négatives" qu'avec des pointeurs comme en C# (ces pointeurs on un minimum de protection tout de même).
Bref, on va dire que C# ratisse un peu plus large que Java au niveau du domaine d'applications possibles.
Pour la comparaison avec Python, ben je connais pas très bien ce langage, mais je vois pas trop en quoi il en est plus proche :)
Pour ma part, je suis convaincu que les optimisations de code dans les langages sans compilation ciblée sur une plateforme de type C# et Java (Eiffel, Smalltalk, Python, Ruby, Perl ...) doivent être réalisées par le compilateur/machine virtuelle (JIT).
Tout à fait d'accord, mais le fait est que parfois le compilateur ne fait pas tout, quand par exemple tu lui demandes d'allouer quelque chose sur le heap, il ne peut pas de lui-même décider d'allouer cet objet sur la pile si celà l'amuse (encore heuresement)