Avec Go 1.5, Google vise les cœurs multiples et le développement mobile

Avec Go 1.5, Google vise les cœurs multiples et le développement mobile

Go Go Gadget

Avatar de l'auteur
Vincent Hermann

Publié dans

Logiciel

20/08/2015 3 minutes
82

Avec Go 1.5, Google vise les cœurs multiples et le développement mobile

Le langage Go de Google est disponible en version finale depuis 2012. Il a depuis évolué à travers plusieurs nouvelles versions, et l’éditeur vient de lancer la mouture 1.5. Elle reste évidemment compatible avec les précédentes mais apporte bon nombre de nouveautés.

Go est un langage développé par Google et qui vise essentiellement la programmation système. Il est largement inspiré du C et du Pascal et a pour objectif de produire du code natif particulièrement rapide à exécuter. Il peut bien entendu être utilisé pour le développement des logiciels, et l’exemple le plus représentatif est d’ailleurs Docker, la solution de référence pour les conteneurs logiciels.

La nouvelle version 1.5 du langage est disponible depuis hier. Elle apporte de nombreuses améliorations, parmi lesquelles certaines sont particulièrement importantes. Elle vise particulièrement les optimisations pour les processeurs possédant plusieurs cœurs. Le parallélisme des instructions est ainsi favorisé et le développeur n’a plus à préciser quel nombre il souhaite en utiliser dans son application : par défaut, ils sont tous utilisés (du moins tant qu’il y a des tâches à accomplir).

Tout aussi important, le langage Go se débarrasse de ses dernières fondations en C et mange sa « propre nourriture ». Le compilateur n’est ainsi plus écrit en C mais en Go 1.5, ce qui permet un meilleur travail du ramasse-miettes (ou récupérateur de mémoire). Ce dernier évolue d’ailleurs pour devenir concurrentiel (le travail s’exécute depuis un autre cœur ou processeur). Des améliorations de performances sont présentes, Google indiquant que les pauses passent d’une fourchette de 1 à 2 secondes, à un temps compris entre 10 et 20 millisecondes sur un programme de 10 Go.

Autre ajout important : des ponts vers C et C++. Depuis une application créée avec l’un de ces langages, Go peut être appelé sous forme d’une bibliothèque. Cette capacité a été ajoutée pour faire de Go un environnement capable de servir de NDK (Native Development Kit). Google garde évidemment Android en mémoire, d’autant que les architectures ARM64 pour Darwin et Linux sont supportées, ouvrant également les portes d’iOS.

En clair, l’éditeur espère faire de Go la plateforme de développement à tout faire, réduisant pour les développeurs le besoin de recouvrir à un trop grand nombre de langages différents. Un créneau déjà assez concurrentiel, avec notamment Xamarin pour faire le lien vers l’environnement .NET.

Ceux qui souhaitent récupérer la dernière version du langage Go pourront le faire depuis le site officiel. Les développeurs qui veulent jeter un œil sur la version mobile se rendront pour leur part sur le dépôt Github consacré à ce projet. 

Écrit par Vincent Hermann

Tiens, en parlant de ça :

Sommaire de l'article

Introduction

Le brief de ce matin n'est pas encore là

Partez acheter vos croissants
Et faites chauffer votre bouilloire,
Le brief arrive dans un instant,
Tout frais du matin, gardez espoir.

Fermer

Commentaires (82)


le sous titre mdr


Doit-on comprendre par le sous-titre que le langage Go est un gadget ?



Ah, c’est une référence à l’inspecteur gadget ? <img data-src=" />


Go est déjà intégrable à des applis Android ? Quelqu’un ici l’a déjà fait ? Et qu’est-ce que ça donne ?


Posons la questions de manière plus générale. Est-ce que quelqu’un ici a déjà utilisé Go?


Je crois que je l’avais téléchargé et je m’étais arrêté là, en bon codeur que je suis ^^’


Oui :) et il est vraiment plaisant. Les performances sont top, les librairies, la doc et la communauté sont tops. J’ai dev quelques webservices avec et c’est du bonheur


Quels avantages à utilise Go plutôt qu’un C# par exemple?


J’ai un collègue qui utilise go pour beaucoup d’outils qu’il dev sur le côté, ou pour l’aider, là où la plupart d’entre nous passent plus volontier par python ou ruby.

A priori il en est content ^^ Il faudrait que je regarde…


Google Go home !


C# c’est comme java =&gt; tu as besoin d’une machine virtuel sur lequel le code tourne

C# c’est officiellement que pour Windows… (oui il existe mono pour faire tourner son code C# ailleurs, mais ceci n’est pas proposé directement par l’equipe C# )

&nbsp;donc en gros C# ca a les inconveniants de java, sans l’avantage (ton code tourne partout peut importe ton OS)

&nbsp;

&nbsp;&nbsp;

&nbsp;Go c’est comme C ou C++ =&gt; ca tourne directement sur la machine, donc forcement deja plus rapide

&nbsp;

&nbsp;par contre c’est compilé pour TON os… tu ne peux donc pas donner ton binaire a quelqu’un sous linux…&nbsp;


A quoi sert le Garbage Collector dans ce cas ?








alain57 a écrit :



C# c’est comme java =&gt; tu as besoin d’une machine virtuel sur lequel le code tourne

C# c’est officiellement que pour Windows… (oui il existe mono pour faire tourner son code C# ailleurs, mais ceci n’est pas proposé directement par l’equipe C# )

&nbsp;donc en gros C# ca a les inconveniants de java, sans l’avantage (ton code tourne partout peut importe ton OS)

&nbsp;

&nbsp;&nbsp;

&nbsp;Go c’est comme C ou C++ =&gt; ca tourne directement sur la machine, donc forcement deja plus rapide

&nbsp;

&nbsp;par contre c’est compilé pour TON os… tu ne peux donc pas donner ton binaire a quelqu’un sous linux…&nbsp;





Petite précision, les specs pour .NET sont ouvertes et c’est bien un lab microsoft qui s’en charge avec la communauté Mono, donc “bientôt” plus un problème en ce qui concerne la portabilité.

&nbsp;

&nbsp;Même chose pour le reste du commentaire sinon <img data-src=" />



C’est faux pour C#. Le .Net est officiellement sous Linux depuis début d’année. Toute la partie Core.

&nbsp;Pour l’installer sur Ubuntu :&nbsp;https://dotnet.readthedocs.org/en/latest/getting-started/installing-core-linux.html

&nbsp;Et je ne ferais pas comparaison Java & .Net… ça va troller.


La syntaxe reste toujours moins sexy que du ruby :p








gokudomatic a écrit :



Posons la questions de manière plus générale. Est-ce que quelqu’un ici a déjà utilisé Go?







Je me suis arrêté au tuto, mais de ce que j’ai pu tester, c’est un langage qui m’a semblé assez sympathique. Il pourrait presque se poser comme une alternative à python.

Go essaie de proposer de nouvelles syntaxe.







Thoscellen a écrit :



A quoi sert le Garbage Collector dans ce cas ?







A gérer la mémoire. En effet, Go s’occupe de lui même de l’allocution et surtout la dés-allocution de la mémoire. En soit, ce n’est pas forcément bête. tu as un langage assez performant tout en ayant un langage simple.



Est-ce qu’au moins c’est facile de faire de compiler pour un autre OS? Parce que une ou deux fois j’avais dû compiler du C pour windows (sans avoir de windows), qu’est-ce que j’en avais chié pour trouver les instructions pour le faire…


Je donnerais juste un avantage (amha) de C# sur Java.

&nbsp;

L’ensemble des bibliothèques utilisées me parait un peu plus homogène, là ou l’écosystème Java te donne un embarras de choix de bibliothèques différentes articulées autour des même spécifications (API)… mais pas toujours compatibles si tu choisi les mauvaises. (mauvaise expérience où l’on m’a laissé en roue libre)

&nbsp;

Après avoir beaucoup de choix c’est aussi une très grande force, mais pour le coup je préfère quelque-chose d’homogène et cohérent sans avoir à me casser la tête sur la compatibilité éventuelle.



On pourrait aussi parler d’écritures du langage (comme les expressions lambda), simples et puissantes du C# que le Java n’a pas, ou a seulement depuis peu, de l’intégration dans les produits MS (Office, Windows…) vs portabilité multi OS de Java.

&nbsp;

Les deux langages ont leur place.

Tout comme les langages orientés système comme C, C++, D et Go ont leur place.


Petite question de mémoire : comment les dev font pour retenir toutes les fonctions et les subtilités de chaque langage ? Perso, je n’ai jamais été bien attiré par la prog et quand j’essaie de m’y plonger et que je vois tout ce qui a à retenir, ça me décourage. Comment on fait pour ne pas tout mélanger ?



Une fois j’ai été obligé d’écrire un bout de code php, ben je me suis arraché les cheveux pour un truc de 10 lignes qui fait un truc ultra basique : aller lire une ligne dans un ficher de log et réécrire le résultat.



Bref, c’est pas demain la veille que je développerais un site web de zéro <img data-src=" /> Déjà que même avec les CMS faut souvent bidouiller pour avoir le résultat qu’on veut…


En pratiquant principalement.

Et bien sûr: Google et StackOverflow <img data-src=" />



Après c’est pas pour rien que beaucoup de dev ont soit fait ça pendant des centaines d’heures sur leur temps perso, soit ont carrément fait des écoles (d’ingénieurs ou université) où on t’apprends à coder.



Après le développement web et applicatif sont deux aspects bien différents. Personnellement je suis incapable de faire un site web potable, mais je suis plus qu’honnête en Java, et quand j’en faisais encore, j’étais pas mauvais non plus en C.


Ba chaque langage est articulé plus ou moins par les même concept (boucle, condition, fonction etc..), chose que l’on apprend en faisant de l’algorithmique (certains décide de passer directement a la pratique avant le théorie, c’est le coté obscure!).

&nbsp;

&nbsp;Une foi ces concepts maîtrisé y a plus qu’a se tourné vers les doc pour apprendre les API en fonction de nos besoin (au début on passe notre temps a faire de la recopie en se faisant aider par l’auto complète, puis avec le temps sa viens tous seul).

&nbsp;Idéalement on commence par des truc tous con (pour se faire la main) avant de se lancer dans des vrais projet.


va jeter un oeil à du Erlang et tu verras que Go à une syntaxe très sexy finalement… :)

&nbsp;

&nbsp;Franchement la syntaxe n’est pas si affreuse en Go. L’utilisation de channel par contre peut paraître très abstraite au début mais ça marche bien !


En pratiquant et comme dit renaud07 y’a une certaine logique que l’on retrouve quasi partout.

J’ai ralenti mais à une époque je passais pas mal de temps chez moi en plus du boulot à apprendre de nouveaux langage, nouvelle techno etc…

Mais bon perso je me vois de moins en moins faire ça toute ma vie.


Donc c’est comme tout en fait, faut pratiquer longtemps. Et si on est pas attiré par le truc à la base c’est un peu compliqué…


Si on devait comparer Go à un autre langage ce serait plutôt Rust: des langages proches de C/C++, orientés performances (quoique encore en deçà de C/C++) mais également orientés déploiement (une des “philosophies” de Go étant le packaging monolithique, l’appli Go contient en elle-même toutes ses dépendances, pas de library externe). Il en résulte moins de soucis de dépendances, mais des livrables plus encombrants.

&nbsp;



Par contre ce qui est moche dans Go, c’est que tous les concepts modernes passent à la trappe, en ce qui concerne la programmation fonctionnelle. Tout ce que peuvent apporter des langages comme Scala / Haskell / Java 8 (streams) etc. De ce point de vue, Go est très “old school”.








renaud07 a écrit :



Donc c’est comme tout en fait, faut pratiquer longtemps. Et si on est pas attiré par le truc à la base c’est un peu compliqué…





Il faut surtout avoir un besoin pour s’y plonger, sinon tu n’as ni intérêt ni motivation à faire ça.



+1 le mieux c’est encore de te donner un objectif/projet, et de t’y lancer.

&nbsp;

&nbsp;Perso, c’est comme ça que j’ai fait ma première app Android&nbsp;<img data-src=" />

&nbsp;

&nbsp;Bon le code est dégueulasse, et il faudrait que je refasse tout de zero, mais au moins maintenant je peux dire que j’ai des notions de code Android&nbsp;<img data-src=" />


“En clair, l’éditeur espère faire de Go la plateforme de développement à

tout faire, réduisant pour les développeurs le besoin de recouvrir à un

trop grand nombre de langages différents. Un créneau déjà assez

concurrentiel, avec notamment Xamarin pour faire le lien vers

l’environnement .NET.”

&nbsp;

Je dirais qu’au contraire, en faisant des ponts vers C/C++ Google encourage la fragmentation: il s’adresse aux développeurs qui maintiennent une appli legacy C/C++ et qui souhaitent évoluer en douceur vers un langage plus moderne sans devoir tout réécrire en one-shot.


j’ai cru comprendre que coder pour android avec java est une galère. Pour ma part, je suis parti dans la direction kivy pour faire mon app. Et pour coder, ça va super vite.


Perso, je ne saurait juger n’ayant pas vraiment testé autre chose&nbsp;<img data-src=" />


Go est tout simplement fantastique et il est en train de devenir le langage de référence pour le cloud et le devops. Ça commence à percer aussi dans le web quand on a besoin de beaucoup de vitesse et de concurrency.&nbsp;


T’as plus d’infos ? Je fais ça quotidiennement depuis 6 ans et je n’y vois aucune galère, du coup ça m’intéresse le ressenti que peut avoir un débutant sur la plateforme/langage.


Hein ?

Je n’ai jamais codé pour android, je ne vois pas trop en quoi Java pour android soit plus difficile que du Java classique “Swing” avec un code “propre” MVC, plein de trigger&co








Alexyu a écrit :



T’as plus d’infos ? Je fais ça quotidiennement depuis 6 ans et je n’y vois aucune galère, du coup ça m’intéresse le ressenti que peut avoir un débutant sur la plateforme/langage.





Mes infos sont le lent cycle de développement “compilation-&gt;deploiement sur simu/device-&gt;test” et support des multiples versions d’android et de résolutions. En gros, ça me fait un peu penser à l’age sombre d’Internet lorsque ce n’était pas encore standardisé. Et j’oublie d’ajouter qu’avant l’arrivée d’android studio, il fallait installer une usine à gaz pour développer.



je ne blâme pas le language en soi, mais ce que j’ai cru comprendre de négatif concerne les outils de développement.


Ok en effet les multiples versions et résolutions sont un vrai casse-tête, je confirme, mais on s’y fait.

Et Android Studio a effectivement réglé pas mal de problèmes. Il n’est malheureusement toujours pas au niveau d’un Visual Studio mais c’est en bonne voie <img data-src=" />


Oui enfin là ça en revient à me demander si je préfère avoir&nbsp;dans les mains&nbsp;de la bouse de cheval ou de chameau :p


Qu’est ce que tu entends par langage de référence pour le cloud ?

&nbsp;

Pour les devops, j’en vois bcp qui aime le langage pour le déploiement (c’est clair que move un binary reste bien plus simple que le reste XD). Mais en soit les outils les plus puissants reste dans des languages tiers il me semble (ruby et python entre autre)

&nbsp;

Faut juste faire attention à ne pas tomber trop vite dedans dans le sens où pour recruter dans une boite une personen ayant déjà fait du Go c’est pas forcement ce qu’il y a des plus facile (On peut toujours former vous me direz, oui, mais ça a un coup aussi)








Kremtak a écrit :



Si on devait comparer Go à un autre langage ce serait plutôt Rust: des langages proches de C/C++, orientés performances (quoique encore en deçà de C/C++) mais également orientés déploiement (une des “philosophies” de Go étant le packaging monolithique, l’appli Go contient en elle-même toutes ses dépendances, pas de library externe). Il en résulte moins de soucis de dépendances, mais des livrables plus encombrants.

&nbsp;



Par contre ce qui est moche dans Go, c’est que tous les concepts modernes passent à la trappe, en ce qui concerne la programmation fonctionnelle. Tout ce que peuvent apporter des langages comme Scala / Haskell / Java 8 (streams) etc. De ce point de vue, Go est très “old school”.





&nbsp; Go est Rust ont certes quelques des points communs (réécents, natifs, soutenus pas des acteurs du web). Mais globalement ils sont quand même très différents. Go vise avant tout la simplicité et la rapidité de développement là où Rust vie avant tout la performance et la sécurité.

&nbsp;

&nbsp;Go est un langage simplifie, très facile a prendre en mais qui compile rapidement et avec de performances très honnêtes.

&nbsp;

&nbsp;Rust est un vrai langage système,&nbsp; comme le C ou le C++, qui peut permettre de faire vraiment du bas niveau avec des performances prédictibles(notamment sans GC). Il est aussi bien plus riche au niveau de construction qu’il permet (types Génériques notamment). Il est par contre bien plus complexe a prendre en main

&nbsp;



la on est d’accord, mais c’est moins moche que du C ou du java


Les outils évoluent vite. Ils ne sont peut être pas au niveau de ceux sur iOS (encore que ça fait longtemps que je n’ai pas regardé ce qui se passait du côté de la pomme), mais ils sont déjà très bons. Il existe tout un tas de vérifications de code faites à la volée, ça permet d’éviter les erreurs les plus basiques.


Merci pour Kivy je ne connaissais pas (et pourtant j’en ai cherché des solutions cross-platforme open source ^^), je testerais des que je peux.

&nbsp;

Concernant Java et Android c’est loin d’être galère, il y à certaines petites choses qui sont pas évidentes à faire (surtout concernant les styles, par exemple changer la couleur de l’action bar ou des tabs d’un pager), mais à part ces quelques éléments qui nécessites de tricker le reste c’est du bonheur.

Je crois même que c’est la techno sur laquelle j’ai eu le plus de facilité à rentrer.

&nbsp;








manus a écrit :



C’est faux pour C#. Le .Net est officiellement sous Linux depuis début d’année. Toute la partie Core.

&nbsp;Pour l’installer sur Ubuntu :&nbsp;https://dotnet.readthedocs.org/en/latest/getting-started/installing-core-linux.html

&nbsp;Et je ne ferais pas comparaison Java & .Net… ça va troller.





&nbsp;l’exemple que tu donne installe un depo NON officiel….&nbsp;

&nbsp;on peut compiler du C# sur ubuntu je dis pas le contraire, je dis simplement que c’est pas fournis officiellement par Microsoft… Mais par un groupe qui en chie pour justement suivre les dernieres evolutions





Xaelias a écrit :



Est-ce qu’au moins c’est facile de faire de compiler pour un autre OS? Parce que une ou deux fois j’avais dû compiler du C pour windows (sans avoir de windows), qu’est-ce que j’en avais chié pour trouver les instructions pour le faire…





Aucune idee j’ai pas encore utilisé Go, j’ai simplement lu le quick guide et vu que ca me rappel “legerement” du ruby&nbsp;





renaud07 a écrit :



Petite question de mémoire : comment les dev font pour retenir toutes les fonctions et les subtilités de chaque langage ? Perso, je n’ai jamais été bien attiré par la prog et quand j’essaie de m’y plonger et que je vois tout ce qui a à retenir, ça me décourage. Comment on fait pour ne pas tout mélanger ?



Une fois j’ai été obligé d’écrire un bout de code php, ben je me suis arraché les cheveux pour un truc de 10 lignes qui fait un truc ultra basique : aller lire une ligne dans un ficher de log et réécrire le résultat.



Bref, c’est pas demain la veille que je développerais un site web de zéro <img data-src=" /> Déjà que même avec les CMS faut souvent bidouiller pour avoir le résultat qu’on veut…





&nbsp;

tu as un IDE qui t’aide et t’autocomplete tes appels de fonction avec de preference un affichage en live de la doc pour te dire ce que fait la fonction, ce qu’elle attends et ce qu’elle renvoie ^^

&nbsp;sinon oui tu cherche sur la documentation officielle, sur google ou sur stackoverflow

&nbsp;

&nbsp;disons que tu programme souvent dans un seul et meme language (sauf quand tu fais du web, auquel cas tu utilise aussi des bibliotheques JS et ou CSS…

&nbsp;

&nbsp;mais en gros si tu es dans une boite de dev en java, tu fera principalement du java…

&nbsp;Si tu as de la chance tu peux passer sur d’autres projets dans un autre language …&nbsp;

&nbsp;mais par experience si la boite fait du java tu code du java

&nbsp;si la boite fait du rails, tu code du rails

&nbsp;si la boite fait du php tu code du php…

&nbsp;

&nbsp;apres OUI pour des besoins clients specifique il est possible que tu as dans l’année un projet qui n’est pas le langage de la boite…&nbsp;

&nbsp;mais ceci reste rare…

&nbsp;

&nbsp;la syntaxe change, les api changent, mais en gros la programmation reste identique… &nbsp;il y a un temps d’adaptation c’est sur, mais tu ne va pas réapprendre les bases et savoir ce qu’est un entier, un double etc …

&nbsp;et si vraiment tu commence un language qui te semble bizare (le ruby on rails me semblait incomprehensible) tu lit un livre et tout devient claire (une fois que tu as fait du ruby on rails tu te demande pourquoi tant de boite ne l’utilise pas :/ )



Je code dans ce langage depuis un an maintenant, c’est un réel plaisir. Relativement performant mais surtout très rapide en temps de dev. On est pas encore au niveau du python à ce niveau, mais niveau perf quelle différence.


Go est un langage qui combine beaucoup d’atouts des autres. Sa simplicité et son efficacité sont vraiment très agréables. J’adore sa gestion des erreurs (même si je sais que tout le monde n’adhère pas). Le mot clé “defer” est un pur bonheur, le système de goroutines aussi, la manière dont les objets sont gérés …



Pour info (et pour répondre à certaines questions) :




  • On peut compiler pour n’importe quelle plateforme/OS depuis n’importe quelle plateforme/OS.

  • Il intègre un gestionnaire de paquets qui est capable de récupérer les paquets en question depuis n’importe quel gestionnaire de version (Git notamment).

  • On peut désactiver le garbage collector si on veut gérer ça tout seul.

  • Sous Linux, ça manque encore un peu d’outils de développements (IDE), par contre il y a des solutions très puissantes pour Vim ou Emacs.


@nekogami&nbsp;

&nbsp;

&nbsp;En fait justement ça fait plus de 10 ans que je ne fais que du .Net. Que ce soit client lourd ou web.

&nbsp;Mais pour le web, le monde Microsoft (surtout les développeurs .Net) sont complètement loin de la réalité et ne sont que des suiveurs. &nbsp;Quand Microsoft sort un produit (par exemple asp mvc) ils ont déjà du retard et en plus, le temps que les devs s’y mettent, la techno est devenue presque obsolète ! Ça m’a tellement dégouté que j’ai commencé à chercher autres choses et Go est sorti du lot. Là je viens de trouver un job où je ferai que ça.

&nbsp;

&nbsp;Quelques avantages :

&nbsp;- Sa vitesse.

&nbsp;- Un framework assez solide fourni avec et une communauté géniale.

&nbsp;- Un GC et donc permet un développement plus rapide.

&nbsp;- En terme de&nbsp;concurrency et threading, jamais vu plus souple et plus pratique que les goroutines.

&nbsp;- La cross compilation natif. Par exemple générer un binaire linux tout en étant sur windows.

&nbsp;- Une compilation très rapide.

&nbsp;Les défauts :

&nbsp;- Pas encore de debugger.

&nbsp;- Assez rebutant quand on vient d’un monde orienté objet.

&nbsp;


Ah pour le web, t’inquiète pas, je supporte pas asp non plus XD.

&nbsp;

Maintenant, linq par exemple, j’ai toujours pas trouvé plus sympa a utiliser perso.

&nbsp;

Ça ou, la syntaxe pour tout ce qui est execution asynch en .NET 4.5 que je préfère à la syntax go routine (je la trouve sympa, c’est juste une préférence perso).

&nbsp;

Sinon t’inquiète pas que je suis d’accord par rapport aux avantages / défaut de Golang hein.








alain57 a écrit :



l’exemple que tu donne installe un depo NON officiel…. 

 on peut compiler du C# sur ubuntu je dis pas le contraire, je dis simplement que c’est pas fournis officiellement par Microsoft… Mais par un groupe qui en chie pour justement suivre les dernieres evolutions





repo officiel si tu préfère <img data-src=" />

https://github.com/dotnet/coreclr#build-status



goroutines et async/await n’ont presque rien en commun en fait.

Pour mieux comprendre je conseille fortement ses slides :&nbsphttp://talks.golang.org/2012/waza.slide

&nbsp;

&nbsp;Linq, complètement d’accord :) Même s’il y a beaucoup de haterz (Souvent parce qu’ils savent pas l’utiliser proprement), c’est la meilleure chose qui est arrivée à C# et n’a pas d’équivalent dans d’autres langages.


Merci pour les renseignements <img data-src=" />


Personnellement je ne vois aucun intérêt à faire du asp sur linux.

Pour le moment CoreCLR reste de la poudre aux yeux …

Seul avantage, c’est qu’on pourra déployer indépendamment du framework. Uniquement utile pour les besoins internes à MS pour Azure je dirais lol

&nbsp;

&nbsp;Si c’était WPF, ce serait en effet une autre histoire …








Gooom a écrit :



goroutines et async/await n’ont presque rien en commun en fait.

Pour mieux comprendre je conseille fortement ses slides :&nbsp;http://talks.golang.org/2012/waza.slide&nbsp;





Async/await utilise la TPL, et la TPL est belle et bien de la programmation concurrente à base de tâche (comme les goroutine). Après on l’utilise comme on veut (par exemple une surcouche spécialisé dans le parallélisme comme Parallel.For ou de non-blocking comme Async/await) mais l’objet Task permet de faire la même chose que ce qu’on voit ailleurs.

&nbsp;

&nbsp;Tou n’est ensuite qu’une question syntaxe (C# lambda VS goroutine).



Go compile en assembleur et fait de l’allocation dynamique avec ramasse miette ?


Tout comme le font de nombreux framework en C++.








Gooom a écrit :



Personnellement je ne vois aucun intérêt à faire du asp.&nbsp;



#Fixed&nbsp;

&nbsp;:p



&nbsp;&nbsp;&nbsp;

&nbsp;Si c’était WPF, ce serait en effet une autre histoire …



Justement il me semble que le projet sur moyen long terme, c’est de pouvoir le faire justement. Enfin, de ce que j’ai compris.

&nbsp;

&nbsp;Sinon j’avais déjà vu ces slides, Et j’ai toujours autant de mal XD (ouai à chaque fois je prends 3 plombe à me remettre ces histoires de parrallel/concurent, je finis toujours par le recomprendre et par le réoublier XD.

&nbsp;









Gooom a écrit :



@nekogami&nbsp;

&nbsp;

&nbsp;En fait justement ça fait plus de 10 ans que je ne fais que du .Net. Que ce soit client lourd ou web.



&nbsp;Mais pour le web, le monde Microsoft (surtout les développeurs .Net) sont complètement loin de la réalité et ne sont que des suiveurs. &nbsp;Quand Microsoft sort un produit (par exemple asp mvc) ils ont déjà du retard et en plus, le temps que les devs s'y mettent, la techno est devenue presque obsolète ! Ça m'a tellement dégouté que j'ai commencé à chercher autres choses et Go est sorti du lot. Là je viens de trouver un job où je ferai que ça.      

&nbsp;







J’aimerais bien savoir pourquoi ?&nbsp;&nbsp;En détail.&nbsp;&nbsp;&nbsp;

Ils sont en retard sur quoi ? vis à vis de qui ???&nbsp;&nbsp;

Et puis au passage, on dit de l’ASP.&nbsp;&nbsp;



&nbsp;Et l’intérêt n’est pas d’en faire sur linux&nbsp;<img data-src=" />&nbsp; mais plus de pouvoir l’exécuter sur linux, de pouvoir se passer d’une licence Windows et d’un IIS du coup.&nbsp;



Oui, MS travail sur le portage de WPF en .Net Native(c’est à dire la possibilité de se passer de la machine virtuel .Net et de l’installation de son framework), qui permettra d’en gros faire comme du Go (ou du C++, techniquement c’est la même chose).

&nbsp;

&nbsp;Et non, Gooom, CLRCore n’est pas de la poudre aux yeux, c’est une étape vers le .Net Native et la portativité. Ce n’est pas une fin en soit, c’est un moyen.

&nbsp;

&nbsp;De même pour ASP.Net, la version 5 est une réarchitecture complète (et recodage d’une grosse partie) on peut espérer que ça remette cette techno dans la course, car elle se traine effectivement de vieux problèmes… Normalement on devrait en avoir une première version exploitable en Novembre (pour WPF c’est repoussé à 2016).


je m’avancerais pas trop sur le winform ou wpf sur les autres platformes je t’avoue, ptètre les universals apps (via xamarin pour les api system ? ) histoire de booster le développement. Puis ils sont en train de voir pour le .net native sur les autres platformes aussi, via llvm :)


Les postes clients lourds sont encore très largement en Windows, donc ils seraient en effet étonnant qu’ils allouent du budget sur la portabilité de WPF/WinForms.

&nbsp;

Pour les client légers, où Android tient la corde (85% ? quelque chose comme ça…), ils ont l’air de s’en remettre à Xamarin. Je les vois pas concurrencer Xamarin tout de suite, ils semblent plutot coopérer (tant que aider Xamarin permettra d’arriver à la compatibilité .Net sur Android à un cout moindre que de le faire en interne, je pense qu’ils resteront sur cette solution).

&nbsp;

&nbsp;Il n’y a que sur les serveurs Web où les solutions Unix/Linux sont présentes sans avoir de réponse, d’où le portage IIS/ASP.Net et services sur Linux.

&nbsp;

&nbsp;Par contre .Net Native risque fort de se généraliser, ça à l’air de marcher comme ils veulent sur leur UWP (Win10) donc ils vont pouvoir enchainer si les language natif continuent à leur mettre la pression (et ça semble être la direction prise par tout le monde).


Je trouve cette réponse assez juste :http://stackoverflow.com/a/7480033

Je rajouterais aussi que l’autre différence à ne pas négliger est tout simplement la vitesse d’exécution et le nombre donc le cas d’utilisation et l’utilité.

&nbsp;

Sinon avez vous un lien officiel concernant WPF ?!!

WPF me parait impossible mais UWP est probable …

&nbsp;

&nbsp;@darkdestiny

&nbsp;Ce débat est trop long et chiant pour ici :p

&nbsp;Quant au linux, ça n’a aucun intérêt car tu dois te couper de tout l’écosystème MS et avoir des IT unix dans une culture 100% MS … donc lol :p


Attention, CoreCLR et .Net Native sont des chantiers différents qui n’ont pas les mêmes buts (et qui sont orthogonaux).

CoreCLR est bien d’avoir une CLR qui s’exécute sur plusieurs plateformes (mais c’est toujours de l’IL avec compilation JIT).

.Net Native qui est expérimental depuis WP8 (ou 7.5 je ne sais plus) a pour but de se passer de l’installation du redistribuable .NET (et a fortiori plus de compilation JIT). Résultat, chaque appli embarquera son coreclr et mscorlib dans son exe. C’est “simplement” une étape de plus à la compilation : on prend les assemblies .net en MSIL, on n’enlève ce qui ne sert pas (tree-shaking) et on compiler en binaire.

Ce qui est complexe avec .Net native c’est l’étape de tree-shaking : comment savoir quel type est utilisé et lequel ne l’est pas. Sur un Framework comme CoreCLR ou le .Net embarqué pour les apps universelles, le périmètres est petit et la réflexion plutôt limitée. Pour remédier à ce problème, des “hints” peuvent être mis en place pour préciser quoi garder. Se posent aussi des cas plus complexes de réflexion et l’utilisation de la DLR (via dynamic par exemple).


Le CoreCLR n’est pas qu’un problème de CLR, mais surtout de&nbsp;dépendance (framework + tiers). Et le fait que les applications embarquent l’intégralité de ce dont elles ont besoin (implémentation spécifique à la plateforme + CLR portable&nbsp;+ dépendances portable) est précisément la base utilisé pour généré l’assembleur (il serait très compliqué de faire du tree-shaking sur les 5 ou 6 implémentations actuelles de la CLR et surtout des dépendances, non seulement pour MS mais aussi pour les devs qui devraient tester chacune d’elles au final&nbsp;!).

&nbsp;&nbsp;

Pour .Net Native, ce n’est plus expérimental, c’est passé en “release” le même jour que Windows 10:&nbsp;http://blogs.msdn.com/b/dotnet/archive/2015/07/30/universal-windows-apps-in-net.aspx

&nbsp;Plus d’infos:&nbsp;http://blogs.windows.com/buildingapps/2015/08/20/net-native-what-it-means-for-universal-windows-platform-uwp-developers/


C’était un post du blog .Net sur la roadmap .Net, et l’auteur du post (un PM .Net) avait répondu dans les coms&nbsp;que le cas WPF était l’objectif de départ de .Net Native, puisque c’est le cas où le temps de démarrage (où l’absence de JIT peut&nbsp;faire le jour et la nuit) est le plus source de mécontentement (la faute à une mauvaise&nbsp;interop bien souvent…). Le .Net Native sur UWP n’est là encore qu’une étape pour arriver ensuite à WPF (qui est bien sur largement plus compliqué car plus souple, mais c’est la même techno).

&nbsp;

Mais pour des raisons politiques, priorité a été mit sur la portabilité d’asp.net 5 (ça tient à cœur à Satya et consor), donc tant que c’est pas fait (et on verra pas la version final avant 2016)&nbsp;ils ne bosseront pas vraiment&nbsp;sur WPF (les équipes MS étant en vases communicants) donc on aura pas de date de sitôt malheureusement… En tout cas pas avant la BUILD 2016 m’est d’avis.


D’accord, Go c’est bien. Mais avais-t-on vraiment besoin d’un autre langage c-like ?



Faut bien avouer qu’on n’en manque pas de langages c-like. Alors pourquoi celui là ?



La richesse de l’écosystème de développement ? La multitude de librairies prêtes à l’emploi ? L’intégration parfaite avec l’OS/Runtime ? Le volume de tutos/exemples disponibles sur le web ? La bonne connaissance du langage chez tous les étudiants/développeurs/SSII ? J’ai un doute.



C’est un bon langage. Mais… ce n’est pas le seul. Et je ne vois pas pourquoi le choisir dans le cas des “cœurs multiples” et du “développement mobile”.








Gooom a écrit :



Je trouve cette réponse assez juste :http://stackoverflow.com/a/7480033

Je rajouterais aussi que l’autre différence à ne pas négliger est tout simplement la vitesse d’exécution et le nombre donc le cas d’utilisation et l’utilité.&nbsp;

&nbsp;&nbsp;





Je suis parfaitement d’accord avec cette très bonne&nbsp;réponse (mais peut-être un peu courte)&nbsp;pour ne pas être d’accord&nbsp;pour dire qu’il faut opposer Async/await à la façon dont Go fonctionne. Hors c’est bien ce que ton com précédent laissait à penser, ce à quoi je réagissais.



&nbsp;Async/await est une façon d’injecter du concurrentielle dans du code non concurrentielle sans tout réarchitecturer. Mais ça, ça n’existe pas en Go, puisqu’il est partit dès le départ sur le coté concurrentielle (contrairement à .Net 1.0, ah que ça date !). Donc les opposer n’a pas de sens !

&nbsp;&nbsp;

Si t’as envie de faire une archi concurrentielle en C#, proche de ce que tu ferait en Go, tu n’utiliseras pas Async/await.&nbsp;D’ailleurs, je dirais même que tu n’utiliseras pas beaucoup de C# : tu feras principalement du F#.

&nbsp;

Le débat est donc plus vaste qu’une simple histoire de langage, et on en vient à un choix de plateforme, choix forcément très dépendant du contexte !

&nbsp;&nbsp;

C’est cool si t’es tombé amoureux du Go, mais sache que de nombreux systèmes concurrentielles hautement performant (High Frequency Trading…) fonctionne en .Net (avec de vrai bout de C# dedans) et s’en porte plutôt bien. Malgré toute les insanités qu’on peut prêter au C# et à sa machine virtuelle (car des solutions ont été apportées par MS) :)



C’est pour cela que j’ai dit que les deux (async/await et goroutines) n’ont presque rien en commun et ils ne sont pas vraiment comparables. Peut-être je me suis mal exprimé. Les deux font très bien leur boulot mais pas du tout dans le même objectif et utilité.

&nbsp;

&nbsp;Pour le HFT justement j’entends de plus en plus des migrations vers Go. J’ai d’ailleurs eu une offre pour. Go simplifie énormément la programmation concurrentielle car c’est fait pour.

&nbsp;&nbsp;L’autre point important aussi ce sont les ressources allouées. J’ai vu dans pas mal de blog qu’en réécrivant leur appli en Go ils ont par exemple diminué carrément leurs serveurs de 10 à 2. Et encore les serveurs s’ennuyaient.

&nbsp;

&nbsp;C’est vraiment pas une question d’aimer ou ne pas aimer. J’adore toujours C#/.Net et j’y ai investi énormément du temps. &nbsp;Mais quand tu veux faire du web/concurrency/system, &nbsp;C# n’est pas fait pour ni la politique dominatrice de MS.








Gooom a écrit :



Mais quand tu veux faire du web/concurrency/system, &nbsp;C# n’est pas fait pour ni la politique dominatrice de MS.





Tout à fait, c’est pour ça que j’ai cité F#. Un language fonctionnel est encore plus adapté au concurrentiel, et il&nbsp;a été dès le départ en open source (de fait, il n’a jamais été entre les mains de MS, c’est un produit de MS Research, filiale&nbsp;qui ne&nbsp;vend rien).



Pousse ton raisonnement plus loin. Avec le C 11, pourquoi utiliser un C-like et pas directement le C?


J’ai l’impression d’avoir dérivé le débat par rapport à la news, je commence à regretter d’avoir rebondi sur le C# moi … XD.

&nbsp;



&nbsp;Sinon en ce qui concerne ces adopteurs de Go, ouai y’a pas mal de truc qu’on peut trouver sur le net par rapport à ça c’est assez fou.

&nbsp;C’est surtout qu’après la période de buzz de NodeJS (grosso modo, c’était les même articles), je préfère voir ce que ça donne sur la longueur au niveau cohérence du code et comment ça va vieillir.

&nbsp;C’est mon plus gros problème avec GO pour le moment.

&nbsp;

&nbsp;Aussi,&nbsp;je n’y retrouve pas la simplicité de debug et de compréhension du code que j’ai en ruby.&nbsp;

&nbsp;(Ça et le fait qu’aujourd’hui front/back ne sont pas correctement séparée).


NodeJs n’est pas prêt de s’arrêter et c’est en train même de prendre plus de l’ampleur avec Isomorphic JavaScript. Des libs comme Meteor ou React par exemple et dans Angular 2 on en parle aussi.

&nbsp;

&nbsp;Franchement quand tu vois qu’il y a Ken Thompson ou Google derrière le projet Go c’est assez rassurant. Mais la durée de vie d’une techno est vraiment dépendante de sa communauté …

&nbsp;Sinon je te l’accorde c’est un langage encore jeune et pas sans risque ! Il faut pas y aller tête baissée. Il y a eu un jeu sur Steam (ou je sais plus où) en Go par exemple qui s’est cassé les dents …








Gooom a écrit :



NodeJs n’est pas prêt de s’arrêter et c’est en train même de prendre plus de l’ampleur avec Isomorphic JavaScript. Des libs comme Meteor ou React par exemple et dans Angular 2 on en parle aussi.

 

 Franchement quand tu vois qu’il y a Ken Thompson ou Google derrière le projet Go c’est assez rassurant. Mais la durée de vie d’une techno est vraiment dépendante de sa communauté …

 Sinon je te l’accorde c’est un langage encore jeune et pas sans risque ! Il faut pas y aller tête baissée. Il y a eu un jeu sur Steam (ou je sais plus où) en Go par exemple qui s’est cassé les dents …







Un jeu de Go ? <img data-src=" />









maverick78 a écrit :



Attention, CoreCLR et .Net Native sont des chantiers différents qui n’ont pas les mêmes buts (et qui sont orthogonaux).

CoreCLR est bien d’avoir une CLR qui s’exécute sur plusieurs plateformes (mais c’est toujours de l’IL avec compilation JIT).

.Net Native qui est expérimental depuis WP8 (ou 7.5 je ne sais plus) a pour but de se passer de l’installation du redistribuable .NET (et a fortiori plus de compilation JIT). Résultat, chaque appli embarquera son coreclr et mscorlib dans son exe. C’est “simplement” une étape de plus à la compilation : on prend les assemblies .net en MSIL, on n’enlève ce qui ne sert pas (tree-shaking) et on compiler en binaire.







Alors oui, c’est bien different, mais il y as un 3eme projet qui recoupe les 2 (llic), et qui à terme servira dans les 2 ( JIT pour la core CLR et AOT de .NET Native)

Pour .netNative, le projet a pas mal évolué, il a commencé par un simple pré-Ngen sur WP8 ( boost de la vitesse de démarage), et aujourd’hui, ils rajoutent de plus en plus d’optimisations du compilo c++, donc on peu espérer un jour voir de la ‘loop vectorization’







nekogami a écrit :



C’est surtout qu’après la période de buzz de NodeJS (grosso modo, c’était les même articles), je préfère voir ce que ça donne sur la longueur au niveau cohérence du code et comment ça va vieillir.

 C’est mon plus gros problème avec GO pour le moment.

 

 Aussi, je n’y retrouve pas la simplicité de debug et de compréhension du code que j’ai en ruby.



J’ai lu ça sur le Ruby récement, ça m’as pas donné envie :p : (Article en Anglais)



” Google indiquant que les pauses passent d’une fourchette de 1 à 2 secondes, à un temps compris entre 10 et 20 millisecondes sur un programme de 10 Go.”



??? C’est quoi un programme de 10 Go ? La taille disque de l’exécutable ? Je sait bien que de nos jour, on se moque de ça, mais quand même. Dire que de mon temps, les démomaker faisait de super truc en 256octets, tournant sur des machines avec 640Ko de mémoire. <img data-src=" />


L’article m’a bien fait rire XD.

&nbsp;

&nbsp;Plus sérieusement, ne pas utiliser RVM ou tout autre gestionnaire de version ruby est casse gueule. Ça fait partie des truc cool et chiants à la fois.

&nbsp;Ensuite, l’écriture de son gemfile est diront nous, à revoir.

&nbsp;Quand tu spécifie pas tes version de gemfile, vaut mieux juste bundle et non bundle install.

&nbsp;

&nbsp;Mais j’ai quand même ris <img data-src=" />








Gooom a écrit :



NodeJs n’est pas prêt de s’arrêter et c’est en train même de prendre plus de l’ampleur avec Isomorphic JavaScript. Des libs comme Meteor ou React par exemple et dans Angular 2 on en parle aussi.

&nbsp;

&nbsp;Franchement quand tu vois qu’il y a Ken Thompson ou Google derrière le projet Go c’est assez rassurant. Mais la durée de vie d’une techno est vraiment dépendante de sa communauté …

&nbsp;Sinon je te l’accorde c’est un langage encore jeune et pas sans risque ! Il faut pas y aller tête baissée. Il y a eu un jeu sur Steam (ou je sais plus où) en Go par exemple qui s’est cassé les dents …





J’ai encore un peu de mal avec l’isomorphic JS. Je comprend le principe mais j’ai pas encore bien travailler le tout.



&nbsp;Sinon oui, Go au niveau de l’équipe clairement ça rassure. Mais bon, contrairement a la Silicon Valley, je suis un peu plus conservateur ds mes projets pro. Je savais pas que y’avais un un jeu sur steam dev en Go. Tu as le nom ?.

&nbsp;Maintenant, angularJS y’avais google aussi, c’est pas ce qui les a empêcher de faire leur “bad buzz” avec angular 2 XD .

&nbsp;

&nbsp;Ensuite, ça impact pas trop le projet de ma boite, on était partie sur du full directive (pas mal de truc que je trouvais suspect / sale, Google m’a donné raison <img data-src=" />) avec une utilisation du scope la plus minimaliste possible (et ce qu’on fait avec est facilement portable donc bon).

&nbsp;Un clean chiant mais nécessaire quoi.









Gooom a écrit :



&nbsp;@darkdestiny

&nbsp;Ce débat est trop long et chiant pour ici :p

&nbsp;Quant au linux, ça n’a aucun intérêt car tu dois te couper de tout l’écosystème MS et avoir des IT unix dans une culture 100% MS … donc lol :p





C’est un peu facile. Je maintiens que côté Web, et surtout MVC, MS se défend pas mal et s’oriente beaucoup plus vers l’ouverture et s’implique beaucoup plus dans le front.&nbsp;&nbsp;Donc j’aimerais savoir, en quoi aujourd’hui, ils sont complètement largués côté web…..&nbsp;



Je n’aime pas cette généralité de croire qu’une entreprise et soit Full MS soit Full Linux ?? C’est grotesque, ou alors je n’ai pas saisi, mais dans un cas comme dans l’autre critiquer l’ouverture ne me paraît pas pertinent, du coup qu’est ce qui est obsolète ?&nbsp;



Sans parler du péquin moyen qui peut vouloir hébergé son site ASP.Net MVC à moindre de coût et donc le déployer sur un linux.









gokudomatic a écrit :



Pousse ton raisonnement plus loin. Avec le C 11, pourquoi utiliser un C-like et pas directement le C?







Toujours et encore les mêmes raisons: “C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.”



La puissance du C/C++ c’est sa grande permissivité: transtypage, gestion mémoire, multi-paradigme, …

Mais cette permissivité amène du risque et pour limiter ce risque on se tourne vers des langages moins permissifs, avec des contraintes plus strictes. Ca ammène naturellement à un subset du langage ==&gt; un c-like



C’est Kickstarter je me suis trompé. Le voici :

&nbsphttps://www.kickstarter.com/projects/2066438441/haunts-the-manse-macabre

&nbsphttp://www.bbc.com/news/technology-20003916

&nbsp;C’était il y a 3 ans.

&nbsp;&nbsp;

&nbsp;PS: Avec “Controller as” on peut se passer complètement de $scope <img data-src=" />


J’utilise déjà <img data-src=" />, y’a quand même certain truc quand tu fais des directive avec scope isolé où tu va passer par du scope. (binding au travers d’attribute etc etc).

Pub/sub d’evênement qui passe par le $scope (en soit j’aurai pu le faire un JS pure, mais bon, ça rend bizarre)


Pour faire court, pourquoi à l’époque php a écrasé asp.net et la majorité des gens l’ont adopté ?! D’un coté la politique de MS et de l’autre parce que webforms est juste une abomination. Un frankenstein pour ceux qui connaissent rien au web. Pendant 7 ans avant l’arrivé ultra tardif de asp mvc, ça a changé la culture des développeurs web .net et les a rendus à coté de la plaque. De nos jour c’est ultra difficile de pouvoir recruter un bon dev .net qui sache coder 2 lignes de Js correctement, ou qui connait le protocol http ou la notion de concurrency et de montée en charge :(

Oui MS se défend mais ce n’est qu’un suiveur et non un apporteur d’innovation. Il a toujours une dizaine de trains de retard dans le Web.

&nbsp;

&nbsp;Pour la culture ce n’est pas full Ms ou full Linux, c’est full Ms ou full multi culture <img data-src=" />


Heu tu veux dire démo 4k parcque 256 Octets tu ne rentres pas grand chose :)

Et je pense que c’est 10Go de mémoire vive



Edit: ah ben si y’avais bien des démos 256 octets.. punaise j’avais jamais connu et pourtant j’ai du faire ma première démo partie en 97-98


Cool, les déploiements vers 1.5 commencent et c’est&nbsp;déjà&nbsp;impressionnant niveau GC :

&nbsp;&nbsphttps://goo.gl/gzvt9C

&nbsp;








Gooom a écrit :



Pour faire court, pourquoi à l’époque php a écrasé asp.net et la majorité des gens l’ont adopté ?! D’un coté la politique de MS et de l’autre parce que webforms est juste une abomination. Un frankenstein pour ceux qui connaissent rien au web. Pendant 7 ans avant l’arrivé ultra tardif de asp mvc, ça a changé la culture des développeurs web .net et les a rendus à coté de la plaque. De nos jour c’est ultra difficile de pouvoir recruter un bon dev .net qui sache coder 2 lignes de Js correctement, ou qui connait le protocol http ou la notion de concurrency et de montée en charge :(



Oui MS se défend mais ce n'est qu'un suiveur et non un apporteur d'innovation. Il a toujours une dizaine de trains de retard dans le Web.      

&nbsp;

&nbsp;Pour la culture ce n'est pas full Ms ou full Linux, c'est full Ms ou full multi culture <img data-src=">







Le retard a néanmoins été bien rattrapé aujourd’hui. Microsoft propose maintenant toutes une panoplie d’outils très facile a intégrer pour les projet web (ORM, Framework d’Auth, Integration d’ajax…), tout ça fournie avec une intégration parfaite a Visual Studio…

&nbsp;

&nbsp;Il n’a rien a envie à php bien au contraire… Je comprend pas trop pourquoi on fait référence a webform qui est une technologie passé plutôt que de regarder vers l’avant…