[Mono-list] FW: evangelizing mono

Radu-Adrian Popescu radu.popescu@aldratech.com
Tue, 17 Feb 2004 12:59:01 +0200


--=-mKgzrEarGpjwvwghYUkC
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

I think you're plain wrong calling C# bare metal performance when you've
used that exact
phrase to describe C++'s performance.
I'm not Java against .NET here, but:
Like it or not, the JVM's performance is superior to that of the .NET
VM, and it sometimes 
outperforms even C++ native code. This is not FUD, it's not
lets-do-it-this-way-cos-it-will-prove-me-right  benchmarking, it's due
to the differences in
the way some code you wrote runs: compiled once to native code versus
compiled
to byte-code and then re-compiled and profiled and adjusted multiple
times during run-time.
This performance improvement has often been noticed when doing stuff
like regexp or xml.
I don't really see any reason the .NET VM would not achieve this state
of the art, but it's just
not there yet. Naturally there's loads of other areas where .NET is
faster than Java, take for one
GUI applications. But that's a corner-case (no, don't start cursing,
it's probably more important than
regexp or recursive methods) compared to the raw ability of dynamically
re-writing and optimising
pieces of code. And hey, let's not forget Java/IBM's SWT :-)

Cheers,

On Sun, 2004-02-15 at 22:47, Richard Norman wrote:

> I am a listener too. Here I what I think about the situation (I am primarily
> a Windows Developer - Hey they give me great tools that are easy to use).
> With C#, you can get that "Cross-platform" capability with not too much
> effort on the part of the developers. With C++ you have a lot more work in
> front of you. Also the memory management and garbage collection and so on of
> the CLI is great help compared to C++.
> 
> Now if you look at Java (C# is a close cousin), you see that (in my opinion)
> C# made some optimizations up front that makes it have the slight edge (and
> the reason why Java is in the process of duplicating some of the features
> i.e. J2SE 1.5).
> 
> Several people have already given solutions of how to handle the "Mono
> file.exe" issue. And in terms of mono being Un-Unix like, direct them to the
> various other implementations of the CLI and they will see that it is more
> than just a Windows technology (like Rotor, dotGNU, and I believe that Intel
> has an implementation of JVM and CLI). It is just that I believe that Mono
> has the most "complete" implementation of the libraries and classes that
> give you additional functionality outside of the base requirements without
> going to Microsoft's implementation.
> 
> So what I am getting at is that while you can look at a lot of various
> technologies, I believe that CLI is one that is growing and progressing in
> the right directions and with enough flexibility (so much so that if you
> wrote code in C# today, you will be prepared for Longhorn tomorrow)
> 
> Anyway, that's my comments on your issues, C++ is great if you need the bare
> metal performance and every ounce of processor power needs to be controlled,
> however this falls into a very niche segment now. Things like drivers,
> Kernel modules, High end games, RTP engines, etc. So I would advocate for at
> least Java, but definitely push C# cause it gives you that bare metal
> capability while having the protection of the Garbage Collector.
> 
> Sincerely,
>  
> Richard Norman
> Web/Application Developer
>  
> http://www.Jazzynupe.net
> http://Jazzynupe.no-ip.com/
>  
> 
> 
> -----Original Message-----
> Message: 6
> From: "Jeffrey McManus" <jeffreyp@well.com>
> To: <mono-list@lists.ximian.com>
> Date: Sat, 14 Feb 2004 11:57:48 -0800
> Subject: [Mono-list] evangelizing mono
> 
> Hey team,
> 
> Long-time listener, first-time caller. I wanted to get your advice on
> something...I'm helping a high-energy team of Linux ninjas who are
> interested in creating an OSS app that makes it easier to sell stuff on
> eBay. (Giving developers this kind of help is actually part of my job at
> eBay.) These guys just got into the planning stages of their project and are
> trying to settle on a choice of language/framework/etc. They want to use a
> client/server architecture which actually makes a lot of sense for a variety
> of reasons mostly having to do with caching and handling eBay data from
> eBay's API in an intelligent way.
> 
> It's my intuitive sense that C#/Mono may be a good choice for this kind of
> project. Maintainability and developer productivity is a big deal with
> custom eBay clients that use the API because eBay changes so frequently, and
> I've had to agonize with developers that have made sub-optimal language and
> architecture choices in the past and paid for it dearly as their
> applications implode repeatedly.
> 
> However, they're gravitating to C++, at least for their server piece, which
> may be a good choice for the lead developer(s) who I think already knows
> C++, but may be a sub-optimal choice for the project in general. I fear  
> C++that
> they may be in "when you have a hammer, every problem looks like a nail"
> mode.
> 
> One tactical thing they seem to be getting hung up on is the fact that you
> need to run Mono apps with a command line (and, secondarily, an executable
> that ends in *.exe reeks of evil Windows; I explained to them that this is
> what chmod +x is for, but anyway).
> 
> My questions are:
> 
>  - Do you have good evangelism tactics for Linux developers who evaluate
> Mono and find it somehow "un-Unix-like"?
>  - Is there a technical answer to the "mono my.exe" command-line objection?
>  - Is there an elegant solution for distributing the Mono framework onto
> client machines today?
>  - Are there examples of functioning high-performance client/server apps
> running on Mono today?
> 
> I suspect that this kind of discussion will be useful in a general-purpose
> sense as you take the message of Mono out to the rest of the universe, but
> feel free to respond to me privately if you like.
> 
> If you're interested, the original discussion is over on the Gentoo forums
> here:
> 
>   http://forums.gentoo.org/viewtopic.php?t=123105
> 
> Thanks,
> 
> Jeffrey
> 
> _______________________________________________
> Mono-list maillist  -  Mono-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list

-- 
Radu-Adrian Popescu
CSA, DBA, Developer
Aldratech Ltd.
+40213212243

--=-mKgzrEarGpjwvwghYUkC
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.0.9">
</HEAD>
<BODY>
I think you're plain wrong calling C# bare metal performance when you've used that exact<BR>
phrase to describe C++'s performance.<BR>
I'm not Java against .NET here, but:<BR>
Like it or not, the JVM's performance is superior to that of the .NET VM, and it sometimes <BR>
outperforms even C++ native code. This is not FUD, it's not lets-do-it-this-way-cos-it-will-prove-me-right&nbsp; benchmarking, it's due to the differences in<BR>
the way some code you wrote runs: compiled <I>once</I> to native code versus compiled<BR>
to byte-code and then re-compiled and profiled and adjusted multiple times during run-time.<BR>
This performance improvement has often been noticed when doing stuff like regexp or xml.<BR>
I don't really see any reason the .NET VM would not achieve this state of the art, but it's just<BR>
not there yet. Naturally there's loads of other areas where .NET is faster than Java, take for one<BR>
GUI applications. But that's a corner-case (no, don't start cursing, it's probably more important than<BR>
regexp or recursive methods) compared to the raw ability of dynamically re-writing and optimising<BR>
pieces of code. And hey, let's not forget Java/IBM's SWT :-)<BR>
<BR>
Cheers,<BR>
<BR>
On Sun, 2004-02-15 at 22:47, Richard Norman wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE><FONT COLOR="#737373"><I>I am a listener too. Here I what I think about the situation (I am primarily
a Windows Developer - Hey they give me great tools that are easy to use).
With C#, you can get that &quot;Cross-platform&quot; capability with not too much
effort on the part of the developers. With C++ you have a lot more work in
front of you. Also the memory management and garbage collection and so on of
the CLI is great help compared to C++.

Now if you look at Java (C# is a close cousin), you see that (in my opinion)
C# made some optimizations up front that makes it have the slight edge (and
the reason why Java is in the process of duplicating some of the features
i.e. J2SE 1.5).

Several people have already given solutions of how to handle the &quot;Mono
file.exe&quot; issue. And in terms of mono being Un-Unix like, direct them to the
various other implementations of the CLI and they will see that it is more
than just a Windows technology (like Rotor, dotGNU, and I believe that Intel
has an implementation of JVM and CLI). It is just that I believe that Mono
has the most &quot;complete&quot; implementation of the libraries and classes that
give you additional functionality outside of the base requirements without
going to Microsoft's implementation.

So what I am getting at is that while you can look at a lot of various
technologies, I believe that CLI is one that is growing and progressing in
the right directions and with enough flexibility (so much so that if you
wrote code in C# today, you will be prepared for Longhorn tomorrow)

Anyway, that's my comments on your issues, C++ is great if you need the bare
metal performance and every ounce of processor power needs to be controlled,
however this falls into a very niche segment now. Things like drivers,
Kernel modules, High end games, RTP engines, etc. So I would advocate for at
least Java, but definitely push C# cause it gives you that bare metal
capability while having the protection of the Garbage Collector.

Sincerely,
 
Richard Norman
Web/Application Developer
 </FONT>
<A HREF="http://www.Jazzynupe.net"><U>http://www.Jazzynupe.net</A>
<A HREF="http://Jazzynupe.no-ip.com/">http://Jazzynupe.no-ip.com/</U></A>
<FONT COLOR="#737373"> 


-----Original Message-----
Message: 6
From: &quot;Jeffrey McManus&quot; &lt;jeffreyp@well.com&gt;
To: &lt;mono-list@lists.ximian.com&gt;
Date: Sat, 14 Feb 2004 11:57:48 -0800
Subject: [Mono-list] evangelizing mono

Hey team,

Long-time listener, first-time caller. I wanted to get your advice on
something...I'm helping a high-energy team of Linux ninjas who are
interested in creating an OSS app that makes it easier to sell stuff on
eBay. (Giving developers this kind of help is actually part of my job at
eBay.) These guys just got into the planning stages of their project and are
trying to settle on a choice of language/framework/etc. They want to use a
client/server architecture which actually makes a lot of sense for a variety
of reasons mostly having to do with caching and handling eBay data from
eBay's API in an intelligent way.

It's my intuitive sense that C#/Mono may be a good choice for this kind of
project. Maintainability and developer productivity is a big deal with
custom eBay clients that use the API because eBay changes so frequently, and
I've had to agonize with developers that have made sub-optimal language and
architecture choices in the past and paid for it dearly as their
applications implode repeatedly.

However, they're gravitating to C++, at least for their server piece, which
may be a good choice for the lead developer(s) who I think already knows
C++, but may be a sub-optimal choice for the project in general. I fear  
C++that
they may be in &quot;when you have a hammer, every problem looks like a nail&quot;
mode.

One tactical thing they seem to be getting hung up on is the fact that you
need to run Mono apps with a command line (and, secondarily, an executable
that ends in *.exe reeks of evil Windows; I explained to them that this is
what chmod +x is for, but anyway).

My questions are:

 - Do you have good evangelism tactics for Linux developers who evaluate
Mono and find it somehow &quot;un-Unix-like&quot;?
 - Is there a technical answer to the &quot;mono my.exe&quot; command-line objection?
 - Is there an elegant solution for distributing the Mono framework onto
client machines today?
 - Are there examples of functioning high-performance client/server apps
running on Mono today?

I suspect that this kind of discussion will be useful in a general-purpose
sense as you take the message of Mono out to the rest of the universe, but
feel free to respond to me privately if you like.

If you're interested, the original discussion is over on the Gentoo forums
here:

  </FONT><A HREF="http://forums.gentoo.org/viewtopic.php?t=123105"><U>http://forums.gentoo.org/viewtopic.php?t=123105</U></A>
<FONT COLOR="#737373">
Thanks,

Jeffrey

_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com</FONT>
<A HREF="http://lists.ximian.com/mailman/listinfo/mono-list"><U>http://lists.ximian.com/mailman/listinfo/mono-list</U></I></A></PRE>
</BLOCKQUOTE>
<PRE><TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<PRE>-- 
Radu-Adrian Popescu
CSA, DBA, Developer
Aldratech Ltd.
+40213212243</PRE>
</TD>
</TR>
</TABLE>
</PRE>
</BODY>
</HTML>

--=-mKgzrEarGpjwvwghYUkC--