Ars Technica Tours Mono
Kevin Francis writes "Over the coming weeks, Ars Technica will be taking a look at Mono, including a basic introduction to Mono, MonoDevelop, and C#, and then branching out to GTK#, database access, ASP.NET, advanced C# topics, and conclude with a discussion of the future of Mono, and the C# standard. All the examples will work on Windows and Linux, with OSX support coming shortly. Part 1 of the series is online now."
As you can clearly see, Mono brings almost limitless possibilities in breaking down the barrier between desktops: 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.
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.
Yes, it is very exciting to have developers be able to easily write code that will work both on Linux, Windows, and OS X (obviously with the correct libraries) but will the coders utilize Mono when doing their work? Will they be concerned enough that Linux and OS X users are worthwhile supporting to make sure it is cross-platform?
What mono needs is a good RAD tool for developing GTK# based apps. I know you can reference GTK# libraries in VS.NET but there's no support for cross platform forms design.
The syntax for building Winforms is completely different to GTK# (as one might expect) but the documentation I've found doesn't really map types and methods for developers familiar with existing RAD tools such as MonoDevelop and the excellent SharpDevelop.
Tool designer support for GTK# is crucial.
"It's not your information. It's information about you" - John Ford, Vice President, Equifax
As you can clearly see, Mono brings almost limitless possibilities in breaking down the barrier between desktops: 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.
I find this kind of claptrap irritating. Java is one of the easiest platforms to jump into. If you found it harder than it needed to be, you needed more coffee.
*** *** You're just jealous 'cause the voices talk to me... ***
Novell is banking on making Windows->Linux migrations simple as a selling point for their tools. Providing a viable supported .net platform is a key. Do I think that this will become the de facto Linux dev kit? No. Too many users love their kit of choice (perl,pythong,java,etc) and in any case the open source community abhors being told how to develop. Nonetheless having one more option is a benefit. The only downside is potential bloat of distro CDs, but hey we crossed this line a long time ago and its what you have to do if you want to support N dev toolkits.
What was the reasoning behind making the first letter of the method names upper case?
...and .exe on my executables?
When is Miguel going to port the windows registry?
I'm sorry but the thought of microsoft's mangled conventions polluting the linux/unix world is making me ill. :-(
It will be a sad say indeed when developers are tied to a specific language for a specific platform just because that is what someone has mandated from on high.
I look forward to the legal and security issues with .NET, Mono and .GNU. We live in interesting times.
Stick Men
The Mono project was conceived in the Summer of 2001 as an Open Source alternative to Microsoft's .NET development platform. Since then, it has come all the way to a 1.0 release among a flurry of controversy from mostly inside the Open Source community itself. Although we will not outline the reasons here, most of the criticism stems from the fact that .NET is Microsoft, and "we" don't like them.
.Net are not satisfactorily answered. What about MS total control of the standard? What good will the standard be if the company that owns 95% of the desktop starts shipping a .Net that deviates from the standard? What about the parts of .Net that are not covered by the the standard, and in fact have intellectual property encomberances?
.Net is essentially the Java runtime environment, with MS additions. Why is .Net any better than Java for application development. Is its speed any better? Is Mono's speed any better than Java's?
What a stupid simplification!! There are legitimate concerns over how MS exerts it monopoly power, and many of the resultant concerns with Mono and its support of MS'
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.
Another biased statement; has C# caught on as an application language? Why not point out that C# is pretty close to a clone of the Java language, and that
I don't mind a review of Mono. I was interested in reading it, and would like to know more about it. But, when the author so casually dismisses the concerns with MS and Mono, or dismisses the legitimacy of Java, I question his objectivity.
This is gobily-gook! How can the Ars Technica crew POSSIBLY provide me with insight (and a possible cure, please?) to mono! These guys have been a member of the biggest sausage party since 2000! (Besides the Bush/Cheney whitehouse). I don't trust a group of hackers to my mono research, no-sir-ee
Excuse me, I don't mean to impose, but I am the ocean
Comment removed based on user account deletion
I've already been doing this sort of cross-platform programming for years with wxWidgets/wxPython. I'm not waiting on Mac support - I'm already using it (and improving it!). What amazes me is that the authors act like Mono is breaking new ground by having a portable programming language that can do GUIs but is easier than Java. Hello? Apparently no one ever told them about Python/wxPython?
.NET experience comes from using Windows. And as the Ars Technica article shows, it's going to be a while before anyone can really write sophisticated cross-platform GUI apps using this toolkit. (And will it be GTK# on Mac? Does that mean X11 is needed there? Ugh.)
;-)
And not only can I use it today, I get better results than I would with GTK# or Java in terms of cross-platform interfaces. If you've ever seen the GIMP on Windows, you'd know that GTK apps don't quite look like professional Windows apps. Emulated interfaces will always look out of place, particularly as themes get more common.
I'd encourage anyone who is interested in cross-platform programming to download Python and wxPython, then run the wxPython demo on Windows, Linux or Mac OS X, and then explain to me exactly how it is that Mono is breaking new ground. (Note also that the wxPython 2.5.2 release on Mac will sport a number of nice improvements and is due out soon.)
The only new and unique thing that I see about Mono is that it uses and is compatible with APIs designed by Microsoft. As a compatibility layer, that has some value, but they will always be two steps behind Microsoft and MS will always ensure that the best
Anyways, time to go back to making my native, cross-platform apps.
The article mentioned that the C# makes things simple that would be complicated in C/C++ (the example was RegEX). This is kind of a screwy way of looking at things, and not much of a selling point for C# in my book. Something like RegEX is provided to C# through a library (or framework if you prefer), and isn't part of the actual language. If you want such a simple interface to a RegEX, it would be easy to get a similar thing for C or C++.
Overall I thought the article was pretty devoid of any meaningful reason for why we should use mono. It doesn't sound better than Java (not worse either), and it isn't a replacement for C/C++.
So people keep saying, but I don't really see much evidence. You must have heard of gcj and GNU Classpath? What about IBM Eclipse and SWT?
These all address various "issues" that people have with plain Sun Java and tools.
I think Miguel's decision to go for a .NET clone had a lot to do with his personal admiration of Microsoft. Couple that with the fact that Microsoft is pushing .NET heavily as the new official way to develop for Windows, you get the Linux zealots and the Windows people together, hence the apparent explosion in popularity. I say apparent because the hype is bigger than the statistics.
Stick Men
> People who've only used C++,
.NET are mostly hyped and pushed either by people who used MFC before (which is a PITA to code with) or people who developed for Gnome (means they worked with C and NOT with C++).
.NET aren't very much interesting for people who are working with Qt/C++, wxWidgets/C++, or Java as most of the advantages are there already.
.NET framework).
Actually Mono and
Mono and
Personally I fear & feel that Mono will become Linux' biggest threat as soon as Microsoft might regard it as a true competitor (right now it's just helpful as it helps them to sell their
I think the success of Java vs .NET will depend on how it is distributed and the "user experience" of installing and using .NET vs Java applications. Sun doesn't have the same level of control over the desktop experience that Microsoft has for desktop applications so that may be a deciding factor for most users.
On the server, Java is already very popular and installation/launching headaches are tolerated more because admins are willing to put in a little more effort than most users.
Other issues such as relative performance and the "look and feel" will also play a big role with users.
In the general theoretical sense, there isn't much difference between Java and .NET. The success of each will depend on the implementation.
Your password has expired, please login to change it.
I suspect that what he'll end up with is a bytecode interpreter and a C# compiler that conform more or less to the standard, and not much more. The rest will be pretty Mono specific. What might be possible, though, is for the Windows people to use the Mono class library...
How does this get people off of Windows and on to Linux/GNOME?
Stick Men
"The only thing that Mono/.NET has going for it, as far as I can see, is that it is designed to be targetted from multiple languages."
So is parrot. But what is the point anyway? Are you going to have a project where each member of the team is going to program in a different language? Are you going to have an open source project which accepts patches in 10 different languages?
I never did understand why this was a desirable thing. It sounds like a nightmare to me.
evil is as evil does
Different projects may like to use different languages but to target the same VM.
Stick Men
bool matches = Regex.IsMatch( input, regex );
Yippie skippie. Show me the code for a RFC822 and MIME multipart parser or something actually beyond this hello world stuff. Regular expressions are library stuff, they have been trivial for more than 10 years. Show me some real work getting done.
(no this isn't aimed at you, I just want to hang my reply off something)
I've finally had it: until slashdot gets article moderation, I am not coming back.
The term 'scripting language' is FUD. Don't use it unless you're talking about sh or something. It makes the languages seem underpowered, when in fact you can do essentially everything (more, actually) in Perl and Python than you can in Java/C/C++/C#, and as the GP pointed out, have been able to do for the better part of a decade.
You may like statically typed languages... in fact, so do I, I do much of my application coding in C... but to suggest that non-statically typed languages (note, not "scripting languages") are less powerful is patently absurd.
Honestly, I think I know where this idea comes from. For a long time, due to limitations in hardware, virtually everything was written in C, a statically typed language. The idea that real programs must be written in C persists to this day. Even I, enlightened (heh) as I am, still feel uncomfortable writing serious apps in anything but C. It just feels wrong. It's like people who say, "Until you can write a kernel in X, X isn't a real language."
Languages like Java were designed to feel like C but provide a lot of modern stuff, like memory management and object orientedness and the like. As a result, programmers with C-centrism (virtually everyone) are provided with a familiar environment that makes them feel like the lanugage is a real (C-like) language, not a toy language like BASIC. This attitude persists.
Actually, though, if you allow yourself to think about this objectively, there is nothing about statically typed languages that makes them more real, useful, or productive than non-statically typed ones, except for personal programmer preference.
You can make all sorts of arguments about how they help stop bugs before they start, but then I could make all sorts of arguments about how features in Perl prevent all sorts of typical C bugs (like taint checking, for example). And while I would be telling the truth, just as you tell the truth when you say static typing is useful, people still think of C as a "real" language.
The point is, Perl, Java, Python, C#, and the like are all different in the features they implement. Their design choices make certain things easier within their particular frameworks; each has its strengths. So it all comes down to programmer preference, really. For example, I hate Java. I probably don't like C# either. Not because they're bad languages, but for psycological reasons: they remind me of C, but feel crippled. When I write Perl, I'm not reminded of C, and so I don't expect to be able to drop into inline assembly or instruct the compiler to use registers for these auto variables or whatever.
But to each their own, that's my point. When you use the term 'scripting language', your either willfully spreading FUD, or lying to yourself about the state of things.
.NET is not about C# vs. Java. You can code in C++ and compile to .NET's IL (byte code) in many different languages. You can also write .NET applications in these languages as well:
APL, AsmL, BASIC, Cw (C-omega), COBOL, Eiffel, F#, Forth, Fortran, Java (yes seriously), ML, Mercury, Mondrian, Nemerle, P#, Oberon, Pascal, Perl, Python, RPG, Ruby, Scheme, S#, VB.NET, etc... So please, quit the C# vs. Java or Perl is so much better arguments. Because, pick your language, and there is probably a compiler out there that can spit out IL.
Are you going to have a project where each member of the team is going to program in a different language? Are you going to have an open source project which accepts patches in 10 different languages?
.net library and not having to worry about what language it was written in. The alternatives are to either write the library for every language (SVG rendering for VB, C, C++, Python, Javascript, etc), or to write your libraries in one language and try to maintain wrappers for each other language (GTK# ??).
.net approach is a good one. This is why (IMO) JNI sucks. I shouldn't have to write C code to access extra keys on my keyboard. It just adds more complication to my Java program to have to maintain C code along with it. In .net, all languages have access to roughly the same features (although there are some language specific feature differences they aren't API based). If C# has access to the keyboard, then everything else in .net will too. So .net isn't encouraging you to use multiple languages... it's encouraging you to use the language of your choice.
Maybe you will, but not likely. What's more likely is VB programmers using a
Personally I think the
"Maybe you will, but not likely. What's more likely is VB programmers using a .net library and not having to worry about what language it was written in."
You mean like using activeX controls in VB while not caring about what language they were written in. Or maybe you mean using DLLs from VB while not caring about which language they were written in.
evil is as evil does
You missed the point entirely.
.NET. You could have already called COM objects written in one language from another language.
.NET. It's just a ripoff of java. The only reason MS wrote it is because they wanted to spite SUN by building their own version of java and JVM.
There was never any need for
There is still no need for
What a collasal waste of money and time.
evil is as evil does