quelles sont les particularité du C# ? - C#/.NET managed - Programmation
Marsh Posté le 26-03-2003 à 20:07:12
Si tu es anglophone, regarde ça, ça devrait apporter quelques réponses.
http://www.sosnoski.com/presents/d [...] otnet.html
PS: j'ai mis au moins 30 secondes à trouver ça dans google... "c# vs java presentation"
Sinon, niveau purement soft :
- Avantage : plus rapide que le Java, aussi rapide que le C, car une fois que le p-code interprété une première fois, la version assemblée est conservée ce qui permet de tirer pleinement partie du programme sans être ralentis par un SDK qui va tout ralentir. Deplus, la recompilation à l'éxécution a l'avantage de prendre en compte la configuration système (bi-processeur, beaucoup de RAM, etc.) ce qui permet de tirer pleinement partie du PC quelquesoit son architecture, contrairement à un programme compilé.
- Inconvénient : SDK redistribuable très volumineux. Pas très portable pour le moment, car les tentatives de SDK sous Linux ne sont pas encore très concluantes.
Marsh Posté le 26-03-2003 à 20:10:23
Euh... je vais chercher un autre lien (ou démerde-toi ) parceque la présentation est nullissime et manque totalement d'objectivité
Marsh Posté le 26-03-2003 à 20:14:27
Ca à l'air plus complet, mais je sais pas s'il est confronté aux autres SDK.
http://www.jaggersoft.com/cool_stuff.html
Marsh Posté le 26-03-2003 à 20:17:38
airseb a écrit : Que pouvez vous me dire sur ce langage dont je ne sais que peu de choses ? Est-il adapté à la programmation graphique (open gl et directX ) ? |
Je te donnes quelques particularité du langages, pas de .net (bien qu'on sente qu'il est présent sur certaines).
des truc qui reposent sur des mots-clef :
- attributs en lecture-écriture : la généralisation de l'accès uniforme de Meyer. Vu de l'extérieur, ça ressemble à une variable mais il y aura peut-être du code exécuté au moment de l'affectation. De même à la lecture, il sera peut-être calculé à la volée et non stcoké
- delegates (délégués) : un objet contenant une référence vers une méthode (le tout typé proprement). Un pas vers la propreté des vrais closures des langages fonctionnels.
- events (événements) : un type aussi, lorsqu'un objet possède des événements, les dépendants (pattern observateur, les événements d'un objet en sont les aspects) pouvant s'y abonner en lui filant un délégate qui sera exécuté lors du déclanchement de l'événement.
sinon, on est généralement proche de java (syntaxe, références pour tout le monde), avec un certain nombre de sucres syntaxiques (un foreach pour les collection par ex.).
Des structures assez particulières (et montées à l'envers, il n'y par défaut aucune sécurité et elles ne sont pas contaminantes) pour contrôler l'arithmétique (overflow etc.).
Un héritage simple (on pouvait s'en douter), namespaces à la C++.
Un système d'annotation du code (pour donner des instructionsàux divers outils qui vont le lire)
Sinon, j'ai pas trop d'avis personnel général sur la question si ce n'est qu'il a trop de mots clefs (j'expliquerais éventuellement à la demande, c'est pas le sujet).
Marsh Posté le 26-03-2003 à 21:24:00
nraynaud a écrit : |
pour le debut ok (j'ai pas encore fini le meyer, c quand meme un poil long)
pour la fin de ton post, je suis curieux quand meme
Marsh Posté le 26-03-2003 à 21:36:51
Une particularité du C#, c'est la notion d'attribute. C'est un modifieur d'une classe, se nichant au niveau de ses méta données. Ca permet, par exemple, d'ajouter des choses à une classe ou un ensemble de classes (généralement par réflexion) sans jouer avec l'héritage et sans faire de copier/coller de partout.
Le cas le plus simple est l'attribute [Serializable] que l'on peut mettre sur une classe pour la rendre serialisable. Le langage permet de créer ses propres attributes.
Marsh Posté le 26-03-2003 à 21:52:21
Kadreg:Ca m'interesse ce que tu dis mais je ne suis pas sur de voir la différence avec le fait d'implémenter l'interface Serializable dans une classe Java (du moins pour l'exemple que tu donnes).
pour les attributs en lecture écriture, les outils et les nouveaux standards facilitent grandement l'implémentation de setters/getters donc je suis assez sceptique.
D'autres part, le concept d'interface a été bien exploité en Java ce qui fait que la plupart des patterns/concepts décrits ici (dont le pattern Observateur via l'interface Observable) sont facilement implémentables.
L'annotation du code existe aussi en java (javadoc, xdoclet,...).
Par contre c'est vrai que c'est TRES rapide, notamment en client lourd : quand je vois comment les applis Swing se trainent de manière générale...
Marsh Posté le 26-03-2003 à 21:53:25
cryo123 a écrit : Kadreg:Ca m'interesse ce que tu dis mais je ne suis pas sur de voir la différence avec le fait d'implémenter l'interface Serializable dans une classe Java (du moins pour l'exemple que tu donnes). |
Marsh Posté le 26-03-2003 à 22:07:42
cryo123 a écrit : Kadreg:Ca m'interesse ce que tu dis mais je ne suis pas sur de voir la différence avec le fait d'implémenter l'interface Serializable dans une classe Java (du moins pour l'exemple que tu donnes). |
Le fait d'utiliser l'implement serializable en java me semble être une dégénérescence du système d'implémentation d'interface, puisque le but de cette implémentation est juste d'ajouter une notion sémantique à la classe, c'est le système de serialization (saveGuts/loadGuts) qui va s'occuper de serializer la classe, et ne l'acceptera que sur les classes qui implémentent serializable. Je me demande d'ailleur si ce système ne fonctionnerais pas directement sans l'implementation de serializable mais directement sur Object.
L'attribute permet de modifier reellement dynamiquement la classe en lui ajoutant des métadonnées (j'adore ce terme, il est bien pédant). Donc contrairement au cas java, c'est bien la classe elle-même qui est modifiée et pas les objets qui manipulerons la classe. On obtient donc un mecanisme plus général, certainement à approcher de notions de patterns (je ne serais pas choqué par un attribute [singleton] sur une classe), mais à vérifier.
Marsh Posté le 26-03-2003 à 22:20:59
Merci pour l'info ! Une autre question : Peut on définir soi meme de nouveaux attributs ?
Marsh Posté le 26-03-2003 à 22:22:51
cryo123 a écrit : Merci pour l'info ! Peut on définir soi meme de nouveaux attributs ? |
Oui, sans problèmes (c'est d'ailleurs le plus grand avantage).
C'est dommage que de nombreux livres font l'impasse sur cette particularité du langage, qui est une vraie originalité de C#
Marsh Posté le 26-03-2003 à 22:44:23
kadreg a écrit : |
Boarf, smalltalk il fait pareil depuis 1980 au moins
(quoi chuis chiant avec mon smalltalk ?¿?)
Marsh Posté le 26-03-2003 à 22:48:43
nraynaud a écrit : |
en tout cas je suis content que tu l'aies dit, je me doutais bien qu'il n'y avait rien d'original dans C# (mode langue de p*te activé )
Marsh Posté le 26-03-2003 à 22:51:22
drasche a écrit : |
l'originalité c un truc crosoft moins mal foutu que le reste
sauf que quand on utlise l'VS.NET comme IDE, y a de quoi s'arracher les cheveux
Marsh Posté le 26-03-2003 à 22:58:49
drasche a écrit : |
Je conaissais pas les delegates et les events avant (mais ça m'étonnerais pas que ce genre de trucs batards soient dans VB et Delphi), je connaissais que les trucs 15 fois plus puissant de smalltalk ...
Sont seul truc c'est qu'il a typé statiquement tout ça en éliminant toute la partie puissante (les closures) ... O'caml l'a fait longtemps avant avec un système de types 15 fois plus puissant et en gardant les closures.
Marsh Posté le 26-03-2003 à 23:13:25
quelqu'un a un lien sur les closures, leur intérêt, leur utilisation, etc ?
Marsh Posté le 26-03-2003 à 23:32:44
noldor a écrit : quelqu'un a un lien sur les closures, leur intérêt, leur utilisation, etc ? |
http://www.google.com.ar/search?hl [...] s%22&meta=
http://www.google.com.ar/search?hl [...] a%22&meta=
http://www.pps.jussieu.fr/Livres/o [...] html#toc11
Marsh Posté le 26-03-2003 à 18:20:03
Que pouvez vous me dire sur ce langage dont je ne sais que peu de choses ? Est-il adapté à la programmation graphique (open gl et directX ) ?
Est-il très utilisé ? quels sont ses avantages et inconvénients ?