• [^] # Re: Microsoft va-t-il LIBÉRER .net ?

    Posté par . En réponse à la dépêche Tomboy vs Gnote. Évalué à 4.

    Tu nous fais de la dissonance cognitive
    http://fr.wikipedia.org/wiki/Dissonance_cognitive
    C'est de l'auto persuasion pour se dire qu'on a fait le bon choix sur des critères ~équivalents (entre 2 TV de même taille et de même prix et de performances globale équvalentes, on a choisie "la meilleure" parce que, le cadre est plus joli/design plus sobre/le temps de réponse fait 1ms de moins/...)

    Je ne nie pas les avancées de C#, ni même de son utilité, ni même des avantages à avoir une syntaxe plus concise.

    En fait, on se dispute sur un problème de philosphie sur le degré "d'hackitude" du langage.

    JAVA est plus rigide, tout est fait pour que tu codes de manière uniforme et en évitant le plus possible les pièges conceptuels. D'où à mon regret une syntaxe super verbeuse bien indigeste à lire dans certaines parties de code technique.

    A contrario, un code super compressé sur une ligne n'est pas forcément plus digeste à lire aussi (cf one liner en perl/bash/...)

    Apparement, tu as été séduit par le rapport expression compressé/lisibilité du C#, mais ça ne le rend pas plus puissant intrinsèquement.

    Il ne faut jamais oublier qu'à partir du moment ou un langage est "Turing complét", tu peux tout faire (plus ou moins douleureusement en fonction de la spécialisation du langage).

    Event
    En JAVA tu passeras par une interface, ça rendra le code encore plus lourd à lire et verbeux, mais tu auras une sécurité sur le type de fonctions et la signature à passer. C'est pour cela que JAVA a laissé tomber le pointeur sur fonction du C.

    Lambda expression
    Pareil, pas de vérification de contrat de signatures sur les types (philosophie non java). Néanmoins, avec les types génériques, et l'interface, je n'y ai pas réfléchi, mais il y a surement moyen de gruger (avec plus de lourdeur syntaxique, je l'accorde).

    LINQ
    Effectivement, je n'avais pas vu les requête sur une liste d'objet, c'est rigolo la généralisation des principes.
    Honnêtement, dans mon dernier projet, les sources de données étaient en BDD, donc c'est la requête SQL qui filtrait, néanmoins, il y a eu 5 ou 6 cas en 18mois ou j'aurais apprécié le principe de LINQ pour faire des filtres sur les collections au lieu de faire une boucle ou une fonction dédiée.
    Mais bien évidemment, j'ai trouvé un équivalent sous java en cherchant un peu, mais ça ne fait pas partie des librairies standard.
    http://quaere.codehaus.org/.


    Peux tu écrire en Java un truc du style, avec typage fort, vérification par le compilo et complétion dans l'IDE
    var res = from e in maListe where e.Value == 2 orderby e.Name select new {e.Id, e.Name, e.Value.ToString() }

    Surement pas en une ligne, mais un code qui renvoie res avec les mêmes valeurs surement.


    Franchement, des coders qui savent parfaitement utiliser la construction qui va bien dans le langage, je n'en connais pas beaucoup, surtout quand dans 90% des cas d'une application "buisness" tu va récupérer une liste, faire un filtre dessus, modifier un champs sur une ligne et réenregistrer cette ligne.

    si une seule application critique est codée dans une techno MS, il est beaucoup plus pertinent d'utiliser .NET que Java pour une transition en douceur.
    ça c'est n'importe quoi, ça dépend du type d'application.
    Je prend un exemple extrême, mais si c'est de la réplication sur plusieurs machines et synchronisation par réseau en //, je pense qu'erlang sera beaucoup plus adapté que n'importe quel autre langage.
    Deuxième contre argumentation, le choix de la nouvelle techno dépend du degré de connaissance de cette techno de ceux qui vont faire la nouvelle application. Si personne ne connait C# ni l'a mis en oeuvre, mais que ce sont tous des cadors en "autre langage", c'est "autre langage" qui te permetra une transition en douceur.


    Mon but n'est pas de te convaincre d'abandonner C#, au contraire, il correspond à ton style et tu t'amuses avec, mais la liste des caractéristiques techniques d'un langage ne fait pas un programme, c'est le développeur et son degré de maitrise qui le fait.

    Et quelque soit le langage, tu vas trouver des situations ou tu trouveras la syntaxe, le framework, des incohérences, bref des situations ou il sera lourdingue et CHIANT à utiliser. Dans les cas ou c'est sa force, tu trouveras le langage génial.