Liens connexes

Dépêche modérée par

Dépêche éditée par

: Mono 1.0 sous le feu des projecteurs

Posté par patrick_g (page perso, ). Modéré le 16 juillet 2004.
0
Mono est une plate-forme de développement qui propose une alternative libre à l'environnement .Net de Microsoft et qui met l'accent sur la compatibilité en s'appuyant sur la norme officielle de l'ECMA. Après la sortie le mois dernier de la version 1.0, on commence à voir fleurir sur le net des analyses techniques qui permettent d'apprécier les avantages de cette plate-forme et de les confronter avec les alternatives existantes.

Un article sur le site Arstechnica donne des exemples (et du code ; par exemple avec GTK#) et développe l'idée que ce framework offre des gages de rapidité de développement, du fait d'une grande simplicité.

> Lire la suite (177 commentaires, moyenne: 2,4).   [dépêche : 1403 caractères]

La conclusion de l'article esquisse une comparaison avec Java : « En quoi est-ce différent de Java ? A mon avis Java rend les choses plus difficile que nécessaire ». NdM : Ce dernier propos est en parfaite résonance avec ce qui semble être un des aspects majeurs de l'argumentaire des auteurs de Mono en faveur de leur produit. Il fait, en effet, penser aux déclarations agressives vis-à-vis de Java tenues par le leader du projet Mono, Miguel de Icaza, lors d'une interview donnée à News.com. Ainsi, selon Miguel de Icaza « Le problème avec J2EE est qu'il est devenu très, très académique et que la complexité de tous ces systèmes parfaitement conçus à l'université ne convient pas nécessairement quand vous avez des dates limites ».

Il est à noter que le projet GNOME est actuellement en phase de réflexion sur son avenir afin de faciliter et d'en accélérer le développement.
Le projet Mono est l'un des candidats envisagé mais il rencontre une grande résistance du fait de son « origine » Microsoft et des incertitudes sur les problèmes de brevets.
Une autre difficulté est qu'il sera, par essence, toujours en retard sur les dernières nouveautés de Microsoft comme c'est déjà le cas actuellement, selon l'aveu même du leader du projet Mono signalant que « Nous sommes en retard ; nous sommes très en retard ; nous avons 18 mois de retard par rapport à Microsoft ».

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

C'est un troll.

Posté par gc (page perso, ) le 16/07/2004 à 14:23. (lien). Évalué à 20.

C'est un troll ou quoi cet article d'Arstechnica ?

D'abord on peut lire :

Mono's main pull for developers is that it is cross-platform and makes writing applications very fast because of its extensive framework. Mono also has the concept of garbage collection. Gone are the days of using malloc() and free() and recording where you allocated memory and making sure you free() it. Java has GC as well, but Java never really caught on as an application language.

Gni ? Ça veut dire que l'auteur pense que Java n'a jamais été utilisé pour écrire des vrais programmes ? C'est du grand n'importe quoi.

Ensuite on nous présente un exemple de code, avec le morceau de bravoure suivant :

The great power of Mono and .NET lies in the ONE line of code:

    bool matches = Regex.IsMatch( input, regex );

.NET and Mono are actually a collection of libraries that form a framework which allows you, the programmer, to write the logic of your application. I can call one line of code to do input validation on a string which saves you possibly hours of time. Things like Input validation, network communication, file reading and writing, text encoding, regular expressions, formatting, XML Parsing, LDAP Access, remoting, and GUI development are reduced to just a few lines of code compared to possibly hundreds.


Euh, oui c'est sûr si on compare .Net à l'assembleur, c'est sûr qu'il faut une seule ligne par rapport à plein de lignes pour faire ça. Sauf que .Net vient chasser sur les terres de Java, hors en Java ça s'écrit en une ligne (et avec moins de caractères en plus).

    boolean matches = input.matches( regex );

Bon on se décourage pas on continue. On nous montre ensuite une belle page de Gtk#, bon on aime ou on aime pas, moi je trouve que le style impératif forcé de Gtk+ donne des fonctions illisibles et trop longues mais bon c'est pas le sujet. La conclusion est assez fantastique :

a commercial software provider would target Mono and it would "just work" on all platforms that Mono supported. How is this different from Java? In my opinion Java makes things harder than it needs to be. For starters, enforced exception handling can't auto-box/unbox primitive types and doesn't support arbitrary length parameter lists String.Format() style.

Alors le type a rien prouvé du tout vu qu'il n'a jamais comparé avec Java sauf à dire que en Java y'a pas d'applications, mais bon il se permet quand même de dire qu'en Java c'est trop dur (sous-entendu c'est plus simple en .Net ? oui mais où et comment ?). Ensuite il parle à la fois d'exception et des types primitifs, là j'avoue que je comprends pas le rapport, mais il pointe un problème effectivement de Java (la dualité int/Integer et compagnie qui est vraiment un truc chiant en Java) et ensuite nous parle de l'impossibilité d'appeler une méthode Format avec un nombre variable de paramètres.

Ok, donc, .Net est vachement mieux que Java parce que... y'a pas le problème des types primitifs de Java, et y'a des méthodes avec nombre variable de paramètres ? On est d'accords que ce sont des problèmes de Java mais si .Net compte là-dessus pour faire la différence ça laisse rêveur...

Il finit par :

The framework of Mono provides the ability to make a very tedious task in C/C++ almost trivial in C#. As the above example, RegEx, shows, it helps the programmer concentrate on the program itself, rather than the logic supporting the code.

Ouais bon d'accord mais ça on sait que la gestion automatique de la mémoire c'est une avancée importante, et qu'une bonne bibliothèque de base c'est capital. Bref, cet article ne montre aucun intérêt de .Net par rapport à Java, (alors que .Net est là juste pour tuer Java, ce qui est de notoriété publique)

Cependant, et pour adopter un point de vue plus utile à Linux et au logiciel libre, ça peut être intéressant de disposer d'un runtime libre (Mono), car en face il n'y a pas de runtime libre Java correct à ma connaissance - mais il ne me semble pas que ce point soit abordé dans l'article.

La vie réelle

Posté par Stéphane Traumat (page perso, ) le 16/07/2004 à 15:00. (lien). Évalué à 0.

Java never really caught on as an application language.

bien sur et nous, on développe tous pour des gens qui viennent de Mars.

Si la personne se renseignait un tout petit peu plus, elle aurait pu regarder des sites comme Objectweb ou on voit des gens comme Dassault, Thalès, INRIA, la CNAF qui utilisent Java...

Et si il veut jouer à ça, combien d'applications d'entreprises tournent sous Mono ?

[+] du fait d'une grande simplicité

Posté par Philip Marlowe (Jabber id, ) le 16/07/2004 à 15:11. (lien). Évalué à -2.

En français dans le titre.

La réécriture des news

Posté par patrick_g (page perso, ) le 16/07/2004 à 15:13. (lien). Évalué à 18.

Ma news a été un peu réécrite et je n'y vois aucun inconvénient...tant qu'on n'ajoute pas une faute de frappe comme le "d'une fait d'une grande simplicité" !

Par contre ce qui est vraiment problématique à mes yeux c'est l'ajout d'un adjectif qui n'est absolument pas présent dans ma contribution initiale :
A propos de Miguel de Icaza le modéro à ajouté le terme "agressives" dans la phrase suivante :

Il fait, en effet, penser aux déclarations agressives vis-à-vis de Java tenues par le leader du projet Mono

La réécriture OUI quand c'est pour corriger des fautes ou ou reformuler en bon français.
Si le modéro veut préciser un truc il l'ajoute avec la mention : NdM

Par pitié pas d'ajout d'adjectifs qui ne sont pas dans la news de départ.

...c'est que j'ai peur de me faire casser la gueule à la récré par Miguel moi maintenant !

Je suis content...

Posté par Julien Bidault (page perso, ) le 16/07/2004 à 15:14. (lien). Évalué à 4.

Je suis content de voir que les gens qui ont commenté jusqu'à présent on eu une opinion modérée...c rare sur un sujet aussi trollogène...

Par contre l'article est à chier...s'extasier devant une regexp, et critiquer un autre langage qui est soi disant plus compliqué alors que ca se fait rigoureusement pareil dans les 2, je trouve ca naze...

C'est bien qu'un projet libre voit le jour : mais on s'élève pas en abaissant les autres...pis mono est qd même loin d'etre fini...

Bravo l'innovation!!!

Posté par ufoot (page perso, ) le 16/07/2004 à 15:29. (lien). Évalué à 20.

Bon désolé mais là c'est trop gros, voici 2 programmes:


Le leur:
----------8<--------------------------------------------------------------------------
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;

namespace Volume_27
{
///
/// Linux.Ars Volume 27 Example 1
///
class Example1
{
static void Main(string[] args)
{
if( args.Length == 0 )
{
Usage();
Console.ReadLine();
return;
}

String input = "";
for(int i = 0; i < args.Length; i++)
input = input + ((i==0)?"":" ") + args[i];

Console.Write
("Enter a regular expression to test the string \"{0}\": ", input);
String regex = Console.ReadLine();

bool matches = Regex.IsMatch( input, regex );

Console.WriteLine
("\"{0}\" DOES {1} Match \"{2}\"", input, (matches)?"":"NOT", regex);
}

public static void Usage()
{
String ExecPath = Environment.GetCommandLineArgs()[0];
String Executable =
ExecPath.Substring(ExecPath.LastIndexOf(Path.DirectorySeparatorChar) + 1);
Console.WriteLine("-------------------------------------------------");
Console.WriteLine("{0} usage:", Executable );
Console.WriteLine();
Console.WriteLine("\t{0} [Input String]", Executable);
Console.WriteLine();
Console.WriteLine
("\t[Input String]: An input string that should be tested against");
Console.WriteLine("\t the prompted regular expression");
Console.WriteLine();
Console.WriteLine("-------------------------------------------------");
}
}
}
----------8<--------------------------------------------------------------------------


Et le mien:
----------8<--------------------------------------------------------------------------
#!/usr/bin/perl

sub usage {

printf <<EOF
-------------------------------------------------
$0 usage:

$0 [Input String]


[Input String]: An input string that should be tested against
the prompted regular expression
-------------------------------------------------
EOF
}

$input = shift;
if (not $input) {
usage();
<>;
exit(0);
}

printf ("Enter a regular expression to test the string \"$input\":");
$regex = <>;
chomp $regex;
$matches = $input =~ $regex;
printf("\"$input\" does%s match \"$regex\"\n",($matches ? "": " NOT"));
----------8<--------------------------------------------------------------------------


Et maintenant je passe en revue leurs arguments:

1) L'article:
A user of a platform that supports Mono will hopefully see better-quality applications, applications that can just be installed (no compiling, not even for packaging), and applications that are secure.

Ce que j'en dis:
Bullshit marketting. La problématique d'installation dépasse largement le cadre de la compilation. Il n'y a qu'à voir le cas de Java où bien que le bytecode soit parfaitement portable et que la compilation soit souvent faite de manière transparente par les divers environnements de prod (serveurs d'appli par exemple), le packaging est une science en soi. Quand à l'argument sur la sécurité, ça me laisse rêveur.

2) L'article:
Mono also has the concept of garbage collection. Gone are the days of using malloc() and free()

Ce que j'en dis:
Eh oh les copains réveillez-vous ça fait plus de 10 ans que ça existe...

3) L'article:
And now to execute the same exact binary on Linux

Ce que j'en dis:
Certes Perl génère le bytecode à la volée donc la notion de binaire est ici faussée, ceci dit en terme de compatibilité entre les différentes plate-formes .NET a du retard à rattraper, et pas que par rapport à Perl, grosso-modo à part Visual Basic tout le monde est en avance... Mon p'tit programme Perl il marche sur bien plus de machines que celui en Mono.

4) L'article:
The great power of Mono and .NET lies in the ONE line of code:
"bool matches = Regex.IsMatch( input, regex );"

Ce que j'en dis:
The great power of Perl lies in the ONE line of code:
"$matches = $input =~ $regex;"

5) L'article:
Things like Input validation, network communication, file reading and writing, text encoding, regular expressions, formatting, XML Parsing, LDAP Access, remoting, and GUI development are reduced to just a few lines of code compared to possibly hundreds.

Ce que j'en dis:
http://www.cpan.org(...)

6) L'article:
forgue@ahab:~$ ./v27e1.exe Linux.Ars is cool
Enter a regular expression to test the string "Linux.Ars is cool": ^L.*\.C*
"Linux.Ars is cool" DOES Match "^L.*\.C*"

Ce que j'en dis:
Ils utilisent quoi comme shell? Parce que moi bash il m'explose le Linux.Arts is cool en 3 paramètres "Linux.Arts" "is" "cool". Et ce traitement est fait par le shell avant d'envoyer les paramètres au programme donc pour parler "en C" argv[1]="Linux.Arts" et argv[3]="cool". Donc concrêtement sur une machine Linux de base (c'est souvent bash qui est installé mais je soupçonne les autres shells de faire pareil...) leur exemple ne fonctionne pas il faut taper:
forgue@ahab:~$ ./v27e1.exe "Linux.Ars is cool"
avec les guillemets donc.
Ils l'ont vraiment testé leur programme sous un UNIX ou bien ils ont pris l'exemple Windows et remplacé l'invite shell après coup??? J'ai des doutes...

7) L'article:
Console.WriteLine("-------------------------------------------------");
Console.WriteLine("{0} usage:", Executable );
Console.WriteLine();
Console.WriteLine("\t{0} [Input String]", Executable);
Console.WriteLine();
Console.WriteLine
("\t[Input String]: An input string that should be tested against");
Console.WriteLine("\t the prompted regular expression");
Console.WriteLine();
Console.WriteLine("-------------------------------------------------");

Ce que j'en dis:
Et après on va dire que Perl n'est pas clair, honnêtement je trouve la construction avec <<EOF bien plus élégante mais bon.


Bon, pour conclure, je ne critique pas .NET ni Mono je connais pas trop le détail mais je suis pas ébourriffé par la présentation 8-)


PS: Je tiens à préciser que je ne suis vraiment pas expert en Perl ni défenseur de Perl, mais franchement n'importe quel langage de script (Python, Ruby, Perl...) permet de coder leur truc en 2 coups de cuillère à pot. Le problème c'est que leur exemple est mal choisi: un langage compilé est assez inadapté à ce type de code/réalisation. Et ça reflète un problème récurrent de l'industrie logicielle: on utilise souvent les mauvais outils...

Mouais...

Posté par Yhar Gla () le 16/07/2004 à 15:34. (lien). Évalué à 2.

Allez moi aussi je m'en vais critiquer :)

Je suis d'accord avec tous ceux qui trouvent que c'est abuser de juger Mono supérieur à Java sur un test de 2 petits programmes. On a même pas l'équivalent Java pour comparer. Et puis quand bien même Mono serait plus adapté au dev, se poserait encore la question des perfs.

Pis en plus le 2eme exemple il compile pas chez moi:

$ mcs dialog.cs
dialog.cs(7) error CS0246: Cannot find type `Window'
Compilation failed: 1 error(s), 0 warnings

Il me manque un truc? J'ai installé gtk-sharp pourtant et j'ai fait

$ export MONO_PATH=/usr/lib/mono/gtk-sharp/gtk-sharp.dll

Ou que j'ma gouru (à part que j'ai jamais lu aucune doc à propos de .Net et Mono :)?

[+] Mon grain.

Posté par Homer (page perso, ) le 16/07/2004 à 16:05. (lien). Évalué à -2.

J'y vais de mon couplet moi aussi. C'est clair qu'en ce moment une publicité importante est faite autour de mono. Ben quoi? Les devs ont peur que leur projet n'intéresse personne? D'un coté ils sont là à dire que c'est cool mono, et de l'autre gnome se pose la question de savoir si ils veulent utiliser le framework mono.
Pourquoi? Soit disant l'origine microsoftienne. Plus serieusement, tout n'est pas dans la phrase: "nous avons 18 mois de retard sur microsoft"? Si gnome se sert d'un tel projet, combien d'entre vous pensent que c'est du suicide?

On fait la guerre à m$ depuis des lustres, et c'est pour se retrouver handicapé par ce mono. Ok, il est plus probable que gnome soit raisonnable et opte pour autre chose. Mais alors, à quoi sert mono si aucun desktop ne veut de lui? Car il ne faut pas s'y tromper: Java est au TOP de sa forme. Java n'a jamais aussi bien marché. Et maintenant java est utilisé par d'autre personnes que des branleurs d'universitaires.

Non, serieusement, je leur souhaitent bien du courage...

ps: oui vous avez compris, mono ça me fait bien rire

MONO, Mac OS X et Xcode

Posté par pepie34 () le 17/07/2004 à 19:48. (lien). Évalué à 1.

Est-ce quelq'un sait s'il est possible de développé en C# sous Xcode avec le framework Mono?

Plus compliqué, est-ce que Windows.Form est disponible grâce à Darwine?

Revenir en haut de page