Hmph, ça m'a l'air de s'approcher de ce que je recherche... :vacontinuerbosserladocc#:
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Oui oui, je vois de quoi tu parles , en fait je cherche à faire un truc de ce genre http://msdn.microsoft.com/en-us/libr...=VS.90%29.aspx
T'as plein de possibilités pour une même méthode, c'est ça que je saisi pas bien...
Sans doute parce que certains paramètres ne sont pas indispensables et qu'il n'y avait pas de possibilité d'assigner des valeurs par défaut aux paramètres avant le C#4.
Cette fonction MessageBox.Show qui est implémentée avant la sortie du C#4 peut très bien fonctionner avec juste une chaine de caractère comme avec tout un tas de paramètres divers et variés si l'on souhaite tout customiser. La technique utilisée par Microsoft (comme ils n'avaient pas cette fonctionalité de paramètres optionels et valeurs par défaut) a été de créer les 45 versions possibles avec chaque combinaison de paramètres, chacune appelant la méthode la plus complète en rajoutant les paramètres manquant à leur valeur par défaut. La fonction la plus complète seule contient le code qui sert à quelque chose.
Mais en C#4 ils auraient pu se contenter d'une seule méthode, en assignant des valeurs par défaut à tous les paramètres.
Exemple, en C#<4 avec juste 2 paramètres:
Ici, si on appelle maFonction avec un paramètre, c'est la seconde surcharge qui est appelée et qui apelle la première avec false en second paramètre, si on appelle maFonction avec deux paramètres, c'est la première surcharge qui est appelée directement.Code:bla maFonction(int ParamObligatoire, bool ParamOptionnel) { // Code qui fait quelquechose et utilise ParamObligatoire et ParamOptionnel } bla maFonction(int ParamObligatoire) { // Si on utilise cette version, ParamOptionnel prend sa valeur par défaut: false. maFonction(ParamObligatoire, false); }
La même chose en C#4:
Et puis c'est tout. Si on appelle maFonction avec juste un paramètre, ParamOptionnel prendra la valeur par défaut, sinon il prendra la valeur qu'on lui a passé.Code:bla maFonction(int ParamObligatoire, bool ParamOptionnel = false) { // Code qui fait quelquechose et utilise ParamObligatoire et ParamOptionnel }
Edit:
En plus de ça, le C#4 introduit aussi la notion de paramètres nommés, comme c'est le cas en python, c'est à dire que pour les paramètres optionnels, on n'est pas obligés de respected l'ordre dans lesquels ils ont été définis.
Exemple:
Ici par exemple, on pourrait se dire, si l'on souhaite appeler la méthode en explicitant la valeur de ParamOptionnel2, on est obligé de donner aussi une valeur à ParamOptionnel1 (ou de faire une surcharge de la méthode avec les paramètres optionnels dans l'autre sens). Comme ça:Code:bla maFonction(int ParamObligatoire, bool ParamOptionnel1 = false, int ParamOptionnel2 = 3) { // Code qui fait quelquechose et utilise ParamObligatoire et ParamOptionnel }
Hors ce n'est pas obligé. Grâce aux paramètres nommés on peut écrire ça:Code:maFonction(ValeurObligatoire, false, ValeurOptionnelle2);
Qui va utiliser la valeur par défaut définie pour ParamOptionnel1 et assigner la valeur ValeurOptionnelle2 à ParamOptionnel2.Code:maFonction(ValeurObligatoire, ParamOptionnel2: ValeurOptionnelle2);
C'est le bien (et dieu sait si je vomis le C#).
Edit: correction de typos
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
http://www.boost.org/doc/libs/1_47_0...tml/index.html
Tadaaaaaaaaa !
Parce que faire du C# ce n'est pas simplement programmer dans un langage comme un autre, c'est vendre son âme et son code à Microsoft. Et être dépendant à plus ou moins long terme de leur bonne volonté et de (tous) leurs produits.
---------- Post added at 15h31 ---------- Previous post was at 15h31 ----------
En plus y'a pas de templates.
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Ah oui mais oui mais d'accord mais une fois encore, ce serait quand même plus simple si c'était intégré au langage directement !
Ah oui, je pensais que C# c'était pas mal (indépendamment des aspect Anti/Pro Crosoft) jusqu'à ce que je m'y mette.
Punaise.
Il n'y a pas de typedef
Il n'y a pas de polymorphisme const.
Ptet dans le C++49
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Du temps de Java 2 (1.2, c'est dire si ça date), j'avais entendu dire surtout que C# avait tout pompé sur Java paske jalousie, mais qu'ils avaient laissé de coté tout ce qui était bien dans Java pour ne garder que ce qui foirait. J'ose espérer quand même que depuis ils ont fait des progrès...
I am Moanaaaaaaa !!! (et en version legit!)
Non mais ça c'est les développeurs Java frustrés qui racontent ça.
Microsoft s'est inspiré de ce qui existait, et qui était facile à prendre en main, et c'est bien normal. Et puis en plus ils sont grave frustrés que MS introduise tout un tas de features sympatoches dans leur langage alors que Java est skotché dans les années 90.
Mais bon, c'est quand même du gâchis de devoir se taper toute la merde de Microsoft derrière pour utiliser leur langage. Y'a bien Mono, mais bon... voilà quoi.
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
En fait, microsoft a eu un procès car il intégrait la jvm dans ses versions de windows alors pour contrer ça il à créé la techno .net (il me semble).
Le c# bien que pas super optimisé est vraiment excellent pour se mettre à la prog objet, et visual studio est terrible pour programmer rapidement sans avoir à tout connaître par coeur
Argh VS.
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
J'en ai bouffé pendant un an, VS2010 c'est de la merde. Enfin, les goûts et les couleurs. Je suis bien plus à l'aise sous Eclipse.
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
VS2010 très correct pour du code managé, en particulier du C#. Vraiment, ça ram un peu, des fois ça plante, c'est vrai mais ça assure.
Pour du C++ non managé, c'est bof bof.
Microsoft a effectivement anticipé une mine d'emmerdes s'ils conservaient Java, et ont développé l'infrastructure .NET qu'ils ont dès le départ mis dans le domaine public, c'est important à noter. C# est le langage qui va avec .NET, et est effectivement assez facile à appréhender. Ses limitations (dont celles dont je parlais) sont celles du .NET Framework d'ailleurs, plus que celles du langage.
Maintenant, le code managé .NET n'est pas compilé nativement, intègre beaucoup de mécanismes dynamiques, en un mot: ça rame. Et le C# me semble peu adapté pour des projets importants.
Dois-je quand même rappeler que xna utilise est en c#? C'est que ça doit pas être trop mauvais non plus hein... Bon après c'est vrai que sorti du c#/VB, visual studio perd un peu son sens, mais ça reste un excellent logiciel (et avec un putain de débuger, oui je le dis jamais assez mais ). Et sinon, la taille du projet importe peu, la je suis sur un gros truc donc j'en ai écrit une partie, c'est pas mal du tout... (Sinon, il y a ce genre de logiciels aussi écrit en c# http://www.windev.com/ )...
Non mais niveau perf, c'est similaire au Java. C'est bien, mais pas extraordinaire et quand tu coures après la microseconde, c'est pas la peine. Alors oui, on peut trouver des jeux en Java ou en C#, mais tu ne trouveras pas Crysis en C#.
"Dieu est mort" · "Si le téléchargement c’est du vol, Linux c’est de la prostitution."
Bah, après, c'est sur que niveau perf, je dis pas, quoi que pour l'affichage on passe par directX, on doit gagner en puissance de ce côté là je pense, sinon, c'est certain qu'on est loin de la machine, donc bon...
Et puis regarde, sur l'unreal engine, l'uscript passe par une machine virtuelle, c'est pas pour ça que l'on a de mauvaises performance, hein.
Vous allez sans doute vous foutre de moi (pour les plus sympas, les plus snobs me battront froid ), mais je voudrais vous faire de ma découverte récente de PureBasic. C'est pas cher (79€), et c'est une toute petite boîte française (cocorico) qui en est à l'origine. Certes c'est du Basic, mais du Basic++ quand même, jugez-en plutôt:
- Procédural (donc sans goto/gosub bullshit )
- Support des pointeurs et de l'allocation mémoire
- Compilateur produisant des exécutables pour Windows, MacOS, Linux et AmigaOS, sans runtime ; le code est portable entre toutes ces plateformes (hormis appel direct aux API de l'OS, évidemment)
- Librairie de widgets graphiques portables
- Support de l'Unicode et des Threads
- Support natif de l'API Win32
- Support natif des API 2D (DirectX, SDL) et 3D (Ogre)
- Nombreuses librairies disponibles (XML, Network, Expressions régulières, etc...)
- EDI avec debugger
J'ai commencé à jouer avec, et la productivité qu'on peut atteindre avec est assez impressionnante.
Je l'ai choisi pour produire des utilitaires pour lesquels les langages utilisés traditionnellement dans ma boîte ne sont pas les plus adaptés. Dans les tuyaux actuellement, un explorateur SNMP et un client de messagerie broadcast.
war-p >> WinDev, non merci, ce que j'ai pu en voir m'a définitivement dissuadé de l'utiliser un jour. Et là pour le coup tu as un runtime, super pratique de devoir déployer un runtime de 10 Mo pour un utilitaire qui compilé fait quelques centaines de Ko... Surtout sur environ 1000 postes, répartis géographiquement partout dans le département.
PHP, Java, Ruby, par ordre décroissant de quantité de code. C++ aussi mais de manière très marginale et minoritaire, principalement pour interfacer des DLL métiers avec Java via JNI.Envoyé par Foudge
Heu, windev (et webdev hein) ce sont de vraies usines à gaz, tu peux faire tout et n'importe quoi. Et le support importe peu (mobile, ordinateur, serveur etc...), c'est très très puissant, et ça permet de gagner pas mal de temps. Après ouais ça peut paraître un peu lourd mais bon. (Bon aussi la licence est exorbitante...)
Usines à gaz, c'est exactement la formulation que j'emploierais à leur sujet, et selon l'acceptation courante c'est pas vraiment flatteur...