Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Les développeurs Linux devraient-ils s'intéresser à Mono ?
Un développeur défend la plateforme

Le , par Olivier Famien

0PARTAGES

6  0 
Mono est un projet open source mis en œuvre en 2004 afin de porter le Framework .net sur plusieurs plateformes. Le succès réel de celui-ci a été remarqué depuis 2011, c’est-à-dire avec la reprise de cette plateforme par Xamarin afin de favoriser le développement des applications à la fois pour Windows, Linux, Android et iOS.

Depuis lors, on assiste à plusieurs itérations de cette plateforme s’efforçant d’assurer une compatibilité avec le langage C#, les API de la norme ECMA, le serveur Web de la technologie ASP.NET, etc.

Plusieurs avantages peuvent être donc reconnus à cette plateforme, mais le constat consternant est que la plateforme est assez peu utilisée par les développeurs Linux. Un éditorialiste nous donne cinq raisons qui devraient pousser tout développeur Linux à considérer Mono lors du choix de sa plateforme de développement.

Premièrement, l’équipe à la base du projet assure une veille permanente par rapport à C# afin d’intégrer les dernières versions du langage. Par exemple dans la version 3.8 du projet, l’équipe a intégré une préversion de C# 6.0. De ce fait, nous avons une intégration des fonctionnalités telles que les constructeurs primaires, les filtres d’exception, l’opérateur Nameof pour ne citer que ceux-là. Les développeurs C# n’ont donc pas de soucis à se faire, car aussi bien sur Windows avec .net que sur les autres systèmes avec Mono, ils arriveront à tirer parti de l’ensemble des fonctionnalités offertes par ce langage.

Deuxièmement, Mono est soutenu par MonoDevelop, un environnement de développement intégré multiplateforme incluant un débogueur, un environnement graphique pour la conception d’interfaces graphiques en Gtk#, un outil de visualisation des classes, une complétion de code ainsi que bien d’autres fonctionnalités. Les développeurs sous Linux ne sont donc pas obligés d’investir dans un EDI à grands frais pour utiliser Mono.


Troisièmement, Mono évolue avec l’ère du temps. Les smartphones étant en grande progression au fil des années, il est possible de développer des applications Android et iOS avec Mono. Toutefois, deux facteurs un peu limitants sont à prendre en compte pour ces plateformes. Pour compiler une application pour iOS, il va falloir utiliser OSX et également débourser environ 300 dollars pour obtenir la version commerciale de l’EDI de Xamarin afin de générer une version compilée des applications pour iOS.

Quatrièmement, Mono est multiplateforme. Cela sous-entend que les applications conçues sur Windows tourneront sans difficulté avec Mono sur les plateformes telles que Linux, Mac OS X, BSD, Sun Solaris, Nintendo Wii, Sony PlayStation 3, Apple iPhone et Android. Seules quelques spécifications telles que les applications WPF ne pourront pas être prises en charge.

Et en dernier point, vous pouvez utiliser Mono dans un projet développement de jeux. Dans ce sens, nous avons l’éditeur de scripts Unity qui peut être utilisé avec Mono.

En résumé, voici quelques raisons qui somme toute peuvent être prises en compte par les développeurs de la plateforme Linux afin d’adopter Mono.

Toutefois, les raisons évoquées ci-dessus peuvent également s’appliquer à de nombreuses autres plateformes de développement disponibles sur Linux. Et Mono sur Linux ne bénéficient pas de la même richesse que .NET Framwork, qui est intimement lié à Windows. Ce qui représente un gros frein pour son adoption par de nombreux développeurs. Il faut aussi noter que les développeurs Linux sont plus orientés dans le développement des solutions embarquées et des outils, dont l’accès aux ressources systèmes pousse ces derniers vers des langages comme C.

De plus, avec la publication de .NET Core, une implémentation open source de .NET soutenue par Microsoft, Mono pourrait perdre de sa pertinence et les développeurs pourraient plus se lancer dans l’adoption de cette dernière.

Source : Dice.com

Et vous ?

Que pensez-vous de ces arguments ? Les trouvez-vous convaincants ?

Quel est le frein selon-vous à l’adoption de Mono sur Linux ?

Pensez-vous que les développeurs Linux devraient s’intéresser à Mono ? Pourquoi ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 23/06/2015 à 10:58
Citation Envoyé par Aeson Voir le message
Et Mono ne prend pas en charge l'asynchrone. Ce qui est directement fort pénalisant.
Qu'est-ce qui te fait dire ça ? async/await est tout à fait supporté par Mono.
http://www.mono-project.com/docs/abo...compatibility/

Il n'y a que pour ASP.NET que le support de l'asynchrone est incomplet.

Citation Envoyé par Neckara Voir le message
Personnellement, bien que je ne sois absolument pas fan de Java, je ne vois pas pourquoi je coderais en C# quand je peux le faire en Java. Qu'est-ce que le C# m'apporterait de plus par rapport à Java si je ne développe pas sur consoles (Nintendo Wii, …) ?

Si je n'ai pas d'arguments pour privilégier C# dans mon choix, je ne vois pas pourquoi je le choisirais alors que je connais un peu mieux le Java.
Tu n'as pas du bien regarder... C# a commencé comme un quasi-clone de Java, avec quelques trucs en plus, et a évolué beaucoup plus vite pour proposer beaucoup plus de features. Quelques trucs utiles qui existent en C# mais pas en Java (liste non exhaustive) :

- types valeur
- passage de paramètres par référence
- propriétés
- delegates (grosso modo, des pointeurs de fonction)
- événements
- itérateurs (permettent de générer facilement des séquences de façon lazy)
- types anonymes (rien à voir avec ceux de Java, ça ne remplit pas le même rôle)
- Linq (Java 8 a les streams, mais Linq pousse le concept beaucoup plus loin)
- de vrais génériques réifiés (Java implémente les génériques en utilisant le principe de type erasure, donc les génériques n'existent plus lors de l'exécution)
- typage dynamique (principalement pour l'interop avec des langages dynamiques)
- async/await pour la programmation asynchrone
- expression trees
- pointeurs (rarement utilisés, mais utiles dans certains scénarios où les performances sont critiques)

Pour l'instant, la seule feature de Java que j'aime bien et qui n'existe pas en C#, c'est les default methods.

Pour ce qui est de mieux connaître Java, C# y ressemble suffisamment pour que tu ne sois pas perdu.

Citation Envoyé par Neckara Voir le message
Par contre, je me pose des questions, que se passe-t-il si demain Microsoft abandonne C# pour des raisons X ou Y ?
La même chose qui se passerait si Oracle abandonnait Java... c'est open-source, donc la communauté peut le reprendre sans problème.

Cela dit, ça me semble hautement improbable que MS abandonne C#, qui est sans doute la meilleure chose que MS ait produite ces 15 dernières années. Ce serait vraiment se tirer une balle dans le pied, tous les développeurs tourneraient le dos à MS et iraient voir ailleurs.
10  0 
Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 22/06/2015 à 16:33
Citation Envoyé par Olivier Famien Voir le message
Depuis lors, on assiste à plusieurs itérations de cette plateforme s’efforçant d’assurer une compatibilité avec le langage C#, les API de la norme ECMAScript, le serveur Web de la technologie ASP.NET, etc.
C# n'a rien à voir avec ECMAScript. ECMAScript est un standard pour des langages de script, implémenté notamment par JavaScript. Par contre, C# 2 est standardisé par l'ECMA.

Citation Envoyé par Olivier Famien Voir le message
Premièrement, l’équipe à la base du projet assure une veille permanente par rapport à C# afin d’intégrer les dernières versions du langage. Par exemple dans la version 3.8 du projet, l’équipe a intégré une préversion de C# 6.0. De ce fait, nous avons une intégration des fonctionnalités telles que les constructeurs primaires, les filtres d’exception, l’opérateur Nameof pour ne citer que ceux-là. Les développeurs C# n’ont donc pas de soucis à se faire, car aussi bien sur Windows avec .net que sur les autres systèmes avec mono, ils arriveront à tirer parti de l’ensemble des fonctionnalités offertes par ce langage.
En fait cet argument ne tient plus vraiment, dans la mesure où le nouveau compilateur C# MS fonctionne sous Linux. Donc il n'y a plus "besoin" de Mono pour compiler du code C# sous Linux (et même pour l'exécuter, puisque le nouveau runtime "CoreCLR" est multi-plateforme). Après, rien n'empêche de continuer à utiliser Mono, mais ce n'est plus la seule option.

Citation Envoyé par Olivier Famien Voir le message
Quatrièmement, mono est multiplateforme. Cela sous-entend que les applications conçues sur Windows tourneront sans difficulté avec mono sur les plateformes telles que Linux, Mac OS X, BSD, Sun Solaris, Nintendo Wii, Sony PlayStation 3, Apple iPhone et Android. Seules quelques spécifications telles que les applications WPF ne pourront pas être prises en charge.
Eeeeeuuuuuuuuh... mouais, on y est pas encore vraiment. Certains types d'application fonctionneront sans modifications d'une plateforme à l'autre (applis console qui n'utilisent aucune fonctionnalité spécifique à la plateforme, applis web qui n'utilisent pas de fonctionnalité spécifique à IIS...), mais déjà pour tout ce qui est application "desktop" c'est mort, vu que les frameworks UI sont complètement différents d'une plateforme à l'autre (il y a bien GTK#, mais c'est un peu limité par rapport à WPF par exemple).

Maintenant, c'est vrai qu'on peut partager pas mal de code entre les plateformes. Il faut juste bien séparer les parties UI pour pouvoir en faire une implémentation différente pour chaque plateforme.

Citation Envoyé par Paul TOTH Voir le message
1) je doute que les "développeurs Linux" soient fan de C#
C'est vrai, mais c'est sans doute pour de mauvaises raisons (principalement, le mépris de tout ce qui vient de MS, et la perception que "C# c'est que pour Windows". Espérons que les mentalités vont changer maintenant que C# est open-source. Le langage a suffisamment de qualités pour intéresser toutes sortes de développeurs.
9  0 
Avatar de Graffito
Expert éminent https://www.developpez.com
Le 23/06/2015 à 23:04
Neckara: Mais concrètement, moi, qui me prétend développeur Java, est-ce que je gagne vraiment à passer au C# ?
Entre autres, 2 avantages:
  • la qualité de Visual Studio (On dévellope sous windows et on exécute l'exe résultant directement sous Linux),
  • le framework (.net ou mono) qui intègre la quasi totalité des fonctions de base, contrairement à Java qu'on doit compléter par de nombreux modules genre spring, struts, xstream, hibernate, apache, xerces, ...
9  0 
Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 24/06/2015 à 1:18
Citation Envoyé par Pierre Louis Chevalier Voir le message
C# est simplement un très bon langage bien foutu, il à été créé par un pur génie nomé Anders Hejlsberg, qui était avant d'etre recruté à coup de millions de dollars par Microsoft le créateur du Pascal Objet/Delphi Langage chez Borland, un autre excellent langage qui à encore à ce jour de nombreux fanboys (désormais chez embarcadero ex codegear ex inprise ex borland).
Anders Hejlsberg est également à l'origine de TypeScript

Citation Envoyé par Neckara Voir le message
Ce à quoi je te répondrais que le C++ est super méga cool.
Certes, mais il faut avoir un QI de 150 pour vraiment le comprendre et s'en servir correctement
C# ou Java sont quand même beaucoup plus accessibles, et généralement plus productifs.

Citation Envoyé par Pierre Louis Chevalier Voir le message
Je m'attendais donc à quelques arguments essayant de nous convaincre d'utiliser C# sous Linux.
Sous Linux en particulier, je ne vois pas vraiment d'arguments en ce sens. Pendant longtemps il y avait des arguments contre, mais ils n'ont plus de raison d'être aujourd'hui.

Par contre, pour utiliser C#, indépendamment de la plateforme, il y a plein d'arguments. Le principal étant le fait que c'est "simplement un très bon langage bien foutu", comme l'a si bien dit Pierre Louis

Citation Envoyé par Graffito Voir le message
la qualité de Visual Studio (On dévellope sous windows et on exécute l'exe résultant directement sous Linux),
Ouais, enfin il y a quand même pas mal de contraintes à respecter pour que ça marche... notamment ne rien utiliser qui soit spécifique à Windows
Et puis VS n'existe que sous Windows, donc je doute que cet argument soit de nature à convaincre Neckara
9  0 
Avatar de Paul TOTH
Expert éminent sénior https://www.developpez.com
Le 20/06/2015 à 13:21
Citation Envoyé par Olivier Famien Voir le message
Que pensez-vous de ces arguments ? Les trouvez-vous convaincants ?
1) je doute que les "développeurs Linux" soient fan de C#

2) les "développeurs Linux" ont déjà des IDE OpenSource pour leurs langages

3) le "développeur Linux" ne cherche pas à développer pour iOS et sous Android il peut accéder directement à la sous-couche Linux

4) le "développeur Linux" cherche à amener des utilisateurs sous Linux par la qualité de ses productions, et certainement pas à porter ces atouts sur d'autres plateformes

évidemment, c'est ma vision du "développeur Linux" si toutefois ceci veux dire quelque chose.
14  6 
Avatar de Laurent 1973
Membre chevronné https://www.developpez.com
Le 22/06/2015 à 11:40
En fait, c'est des arguments qui cherche juste à indiquer que C# et .net fonctionne sous Linux (presque) aussi bien que sous Windows.
Par contre, il ne cherche pas à convaincre que l'environnement mono est mieux que les autres.

En plus, la remarque sur iOS est hors de propos et dessert le message de l'article (je m’interroge sur la culture informatique de l'éditorialiste)
=> Quelque soit la technologie utilisée, il vous faudra un Mac pour compiler une application pour iOS

Il serait intéressant, plutôt, d'avoir un comparative avec d'autre système, comme:
  • mono vs java
  • mono vs python/django
  • mono vs javascript (+ cordova pour mobile)
  • mono vs c/c++
  • mono vs pascal objet
  • ....


Si mono n'apporte pas un plus en terme de productivité, les linuxiens n'ont en effet aucun intérêt à adopter cet environnement.

Le seul argument que je retiens de cet article, c'est le support à Unity vu que ce framework de jeu utilise C# pour ses scripts.
8  0 
Avatar de tomlev
Rédacteur/Modérateur https://www.developpez.com
Le 24/06/2015 à 1:00
Citation Envoyé par Neckara Voir le message
Je ne faisais que mettre en avant une question qu'on peut légitiment se poser et pas rentrer dans un débat C# vs Java.
Je ne comptais pas non plus lancer un débat, je répondais juste à ta question (enfin techniquement tu n'as pas posé de question, mais tu disais que tu n'avais pas d'arguments pour privilégier C#, donc je t'en donne )

En fait, j'ai l'impression qu'on ne débat pas tout à fait de la même chose : moi je me suis focalisé sur le langage (ce que tu appelles les features "bas niveau", indépendamment de tout framework (ce que tu appelles les features "haut niveau", alors que toi tu considères le tout (langage + framework).

En termes de framework et d'écosystème, Java n'a effectivement rien à envier à C#. Purement en termes de langage, par contre, C# a clairement l'avantage.

Citation Envoyé par Neckara Voir le message
d'autres que je considère, personnellement, à tord ou à raison, comme une hérésie : les propriétés.
Pourquoi ça ? C'est juste une formalisation d'un "pattern" répandu (getter/setter) ; en Java ou en C++, il n'y a techniquement aucun lien entre le getter et le setter. C# a juste formalisé ça, ce qui simplifie la tâche des outils comme les designers, sérialiseurs, etc. Qu'est-ce qui te gêne au juste ? Peut être le fait qu'on ne réalise pas qu'on appelle en fait une méthode quand on accède à une propriété ?

Citation Envoyé par Neckara Voir le message
Mais concrètement, moi, qui me prétend développeur Java, est-ce que je gagne vraiment à passer au C# ?
Certes, je vais gagner quelques "petites" features qui vont faciliter l'écriture du code, c'est bien, mais il n'y a pas que ça à prendre en compte.
Les éventuels années d'outils de l'entreprise développés en Java, tous les API, framework, outils Java, ce sont aussi des choses à prendre en considération et qui pèse, à mon sens plus lourd que de simples «features bas niveau». Sinon, à ce niveau là, autant coder en C++.
Effectivement, si tu as une grosse base de code existant en Java, ça n'a pas de sens de passer à C#... Par contre si tu pars sur du neuf, c'est une option à envisager.

Citation Envoyé par Neckara Voir le message
Par contre, est-ce que je vais gagner en productivité ?
Potentiellement, oui, parce que le langage permet d'exprimer certaines choses plus facilement et plus efficacement qu'en Java.

Citation Envoyé par Neckara Voir le message
En qualité du code ?
Pas spécialement. Tu peux écrire du bon code ou du code dégueulasse dans n'importe quel langage (quoique certains langages tendent à encourager le code dégueulasse... PHP, I'm looking at you )

Citation Envoyé par Neckara Voir le message
Il n'y a pas que connaître les bases du langages, il y a aussi connaître différents outils liés au langage.
C'est vrai. Si je commençais demain à bosser sur un projet Java, je n'aurais pas de mal avec le langage, mais il me faudrait du temps pour apprendre à connaitre le framework et les outils.

Citation Envoyé par Neckara Voir le message
Je pense que la chose qui me gêne un peu, c'est le fait qu'en fonction de la sémantique de la classe (entité ou valeur), l'objet est passé soit par référence soit par copie.
C'est une petite subtilité de C# avec laquelle les débutants ont souvent du mal. Mais en pratique, tu as assez rarement l'occasion de t'en préoccuper (surtout si les types valeurs que tu manipules sont immuables, ce qui est fortement conseillé).

Citation Envoyé par Neckara Voir le message
en revanche, si on me demande une alternative à hibernate en C#, je sèche complètement.
NHibernate
Cela dit je déteste NHibernate, si tu as besoin d'un ORM je te conseillerais plutôt Entity Framework.

Citation Envoyé par Neckara Voir le message
Je ne suis pas très au fait et c'est relativement "récent", mais j'ai cru savoir que tout n'était pas open source, pas nécessairement lié au langage mais à certains outils/framework très utilisés.
Le compilateur de la prochaine version (C# 6), qui ne devrait plus tarder à être finalisé, est totalement open-source (licence Apache).
.NET Core (future version du .NET Framework, réécrit pour être modulaire et multi-plateforme), est également open-source.
Certaines parties du framework ne sont effectivement pas (ou pas encore) open-source (principalement des trucs spécifiques à Windows, comme WPF)

Citation Envoyé par Neckara Voir le message
Comme c'est aussi relativement "récent", et si Microsoft revient sur sa décision ?
Un peu tard il me semble... ce n'est pas le genre de chose sur lequel tu peux revenir facilement. D'autant plus que le code a déjà été cloné par un paquet de gens... une fois que c'est dans la nature, c'est trop tard pour le récupérer. Le changement d'attitude de MS vis-à-vis de l'open-source a bien redoré leur blason, un revirement serait catastrophique pour leur image. Ce scénario ne me semble pas du tout plausible.

Citation Envoyé par Neckara Voir le message
Bien que vous puissiez le juger fortement improbable, cela ne m'empêche pas, peut-être à tord, de me poser la question.
Ce qui peut malheureusement faire une différence et influencer ma décision finale.
Oui, mais encore une fois, on pourrait dire la même chose sur Java

Citation Envoyé par Neckara Voir le message
S'ils passent à autre chose de "mieux", la communauté risquerait de suivre et donc de délaisser le C#.
Idem

Citation Envoyé par Neckara Voir le message
Je ne veux pas dire "linuxien, linuxiene, fuyez le C#, Java c'est mieux", je me pose juste des questions et vous fais part d'éventuelles réticences que je peux avoir, à vous de me convaincre et peut-être de convaincre d'autres linuxiens. ^^
D'où mon message précédent

Citation Envoyé par Pierre Louis Chevalier Voir le message
C# étant optimisé Windows les applications C# sont bien plus performantes sous Windows que Java sous windows
Le langage C# lui-même n'est pas optimisé pour une plateforme en particulier. Le CLR (la machine virtuelle), en revanche, est certainement optimisée pour Windows, vu qu'elle ne tourne que sous Windows
Le nouveau CoreCLR, en revanche, existera pour plusieurs plateformes, et j'ose espérer qu'il sera optimisé pour chacune de ces plateformes.
8  0 
Avatar de Pierre Louis Chevalier
Expert éminent sénior https://www.developpez.com
Le 05/07/2015 à 23:34
Citation Envoyé par Haseo86 Voir le message
Trop de parti pris dans cet article pour pouvoir être lu sans a priori.

Je ne crois pas que le rôle d'un chroniqueur d'actualité soit de porter un jugement aussi cinglant que "les développeurs Linux, vous êtes consternants à refuser d'utiliser Mono". Si ce n'était pas sa volonté, alors l'article est très mal rédigé.

Maintenant pour le fond, C# étant Microsoft, il est évident, même si cela peut être regrettable, que ça ne va pas être un choix de cœur pour beaucoup de développeurs Linux. Aussi les avantages d'utiliser cet environnement restent à démontrer et à quantifier, cela semble avant tout rester aujourd'hui une affaire de préférence et d'habitude, pas un choix objectivement défendable.
Je crois que tu n’a pas bien lu la news et que tu nà rien compris au système de news du club developpez.
Ça n'est pas du tout les propos du "chroniqueur actualité", il ne fait que rapporter ces propos (pas terrible j'en conviens aussi ), pour qu'on puisse en débattre.

C'est ça le but : en débattre entre nous pour témoigner du pour et du contre, ces propos ne sont qu'un prétexte pour lancer le débat (ou le troll si tu préfère ).

Le lancé de trolll à très bien marché vu que le débat à démarré, j'ai même appris deux ou trois trucs personnellement en le lisant
8  0 
Avatar de Pierre Louis Chevalier
Expert éminent sénior https://www.developpez.com
Le 23/06/2015 à 21:33
S'il y à des fans de Mono, et il y en à , bref C# sous Linux, ils doivent avoir leurs raisons. Un exemple avoir appris C# pour faire des jeux avec Unity 3D, ou avoir fait des jeux en C# pour windows et autres plateformes Microsoft, puis vouloir réutiliser ce langage (plutôt très bon comparé à PHP par exemple) pour la partie serveur, tout en exploitant des batteries de serveurs Linux peu couteux comparé à des serveurs windows. Je pense que le plus gros des développeurs Mono ont "upgradés" à partir de Python/Perl/PHP/... vers C# que "downgradé" à partir de Java...
7  0 
Avatar de Pierre Louis Chevalier
Expert éminent sénior https://www.developpez.com
Le 23/06/2015 à 22:19
Tu veux baser tes raisonnements sur de la pure logique c'est tout à ton honneur.

Je pense que le plus gros des développeurs Mono ont essayés un jour C#, ont pensé que "C# c'est cool", et certains se sont dit pourquoi pas sous Linux et ils ont fait Mono...

C# est simplement un très bon langage bien foutu, il à été créé par un pur génie nomé Anders Hejlsberg, qui était avant d'etre recruté à coup de millions de dollars par Microsoft le créateur du Pascal Objet/Delphi Langage chez Borland, un autre excellent langage qui à encore à ce jour de nombreux fanboys (désormais chez embarcadero ex codegear ex inprise ex borland).

Donc si te je répond : parce ce que "C# c'est cool," est ce que ça répond à tes interrogations scientifiques purement cérébrales et objectives ?
8  1