La surchage d'operateurs existaient aussi en ada83 alors rien de bien nouveau.
La question n'est pas que ce soit nouveau, mais différent de java... les concepts objets existe depuis très longtemps, la surchage (opérateur et méthode), l'héritage, etc... ne sont que des moyens d'y arriver, certains langage en propose plus que d'autre... Tu peux faire de l'objet en C (les vtable à la main, c drôle ;-), pourtant le C++ est largement plus simple à utiliser, ayant codé en java (en production) et en C# (pour découvrir et pour le fun), j'ai trouvé C# plutôt séduisant... (globalement moins de "bordel comment on fait ce truc qui est pourtant tout con?"... faut dire aussi, en dehors de java, j'ai fait pas mal de prog windows, et en général .NET, entre autre les windows form sont mappé sur le fonctionnement de Win32).
Sinon il manque les templates en C# et en Java. Les templates permettent de faire des trucs vraiment puissants et efficaces.
C'est prévu pour les deux il me semble, concernant C# d'ailleurs, j'ai été heureux d'apprendre qu'ils vont non seulement faire un système de template (Generics) mais également apporter des améliorations (au moins une: pouvoir ajouter facilement des contraintes explicite sur les type template utilisé...). [et euh, détail, concernant C#, ms affirme que ce sera dispo avec la prochaine version de VS.NET... pour java, je n'ai pas encore vu d'info sur l'apparition réelle des generics].
Pour moi Java et C# sont vraiment tres tres proches. Ils ont tous les deux une MV avec un garbage collector. Les deux font de l'heritage simple et tous les deux ont des interfaces. Bref, au niveau du langage c'est des freres.
Mais C# a des delegates, en swing tu as énormément besoin des interfaces car les messages marchent de cette façon, en C# tu utilises des delegates (en gros c'est un sorte de pointeur vers une fonction, comme en C, mais gérer correctement en objet). Les delegates permettent d'ailleurs de faire d'autre truc sympathique, genre lancer un truc en invoquant un delegate (ça permet de passer les paramètre que tu veux à ton thread sans faire un objet dédié à cela). Attention je ne suis pas en train d'affirmer haut et fort que .NET est meilleur que java, le problème est plus complexe, parce qu'il y'a un paquet d'autres facteurs que le langage qui intervienne... on est en train de comparer le langage java à C#, pas le reste... (framework, disponibilité, ouverture, le fait que ça encourage le monopole, etc...)
Niveau GC, le fait que ce soit du bytecode, etc... c'est en effet très semblable, mais dans ce cas, il s'agit plus de la plateforme (.NET ou java) que du langage proprement dit...
Pour résumer: java et C# ne sont pas totalement différent, mais les quelques différences valent quand même la peine d'être soulignées, cela dans un but plus scientifique que stratégique...
[^] # Re: Mono
Posté par tene . En réponse à la dépêche Microsoft brevette les API de .NET. Évalué à 0.
La question n'est pas que ce soit nouveau, mais différent de java... les concepts objets existe depuis très longtemps, la surchage (opérateur et méthode), l'héritage, etc... ne sont que des moyens d'y arriver, certains langage en propose plus que d'autre... Tu peux faire de l'objet en C (les vtable à la main, c drôle ;-), pourtant le C++ est largement plus simple à utiliser, ayant codé en java (en production) et en C# (pour découvrir et pour le fun), j'ai trouvé C# plutôt séduisant... (globalement moins de "bordel comment on fait ce truc qui est pourtant tout con?"... faut dire aussi, en dehors de java, j'ai fait pas mal de prog windows, et en général .NET, entre autre les windows form sont mappé sur le fonctionnement de Win32).
Sinon il manque les templates en C# et en Java. Les templates permettent de faire des trucs vraiment puissants et efficaces.
C'est prévu pour les deux il me semble, concernant C# d'ailleurs, j'ai été heureux d'apprendre qu'ils vont non seulement faire un système de template (Generics) mais également apporter des améliorations (au moins une: pouvoir ajouter facilement des contraintes explicite sur les type template utilisé...). [et euh, détail, concernant C#, ms affirme que ce sera dispo avec la prochaine version de VS.NET... pour java, je n'ai pas encore vu d'info sur l'apparition réelle des generics].
Pour moi Java et C# sont vraiment tres tres proches. Ils ont tous les deux une MV avec un garbage collector. Les deux font de l'heritage simple et tous les deux ont des interfaces. Bref, au niveau du langage c'est des freres.
Mais C# a des delegates, en swing tu as énormément besoin des interfaces car les messages marchent de cette façon, en C# tu utilises des delegates (en gros c'est un sorte de pointeur vers une fonction, comme en C, mais gérer correctement en objet). Les delegates permettent d'ailleurs de faire d'autre truc sympathique, genre lancer un truc en invoquant un delegate (ça permet de passer les paramètre que tu veux à ton thread sans faire un objet dédié à cela). Attention je ne suis pas en train d'affirmer haut et fort que .NET est meilleur que java, le problème est plus complexe, parce qu'il y'a un paquet d'autres facteurs que le langage qui intervienne... on est en train de comparer le langage java à C#, pas le reste... (framework, disponibilité, ouverture, le fait que ça encourage le monopole, etc...)
Niveau GC, le fait que ce soit du bytecode, etc... c'est en effet très semblable, mais dans ce cas, il s'agit plus de la plateforme (.NET ou java) que du langage proprement dit...
Pour résumer: java et C# ne sont pas totalement différent, mais les quelques différences valent quand même la peine d'être soulignées, cela dans un but plus scientifique que stratégique...