Ars Technica Tours Mono 465
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."
Will the coders use it though? (Score:3, Insightful)
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?
RAD tools (Score:5, Insightful)
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.
Bull (Score:3, Insightful)
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.
Re:Will the coders use it though? (Score:5, Insightful)
Re:Will the coders use it though? (Score:1, Insightful)
ummm... sure. Until it's time to change things again. Remember,
Fills a needed gap (Score:5, Insightful)
blech! (Score:2, Insightful)
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. :-(
Re:Fills a needed gap (Score:3, Insightful)
So no, this WON'T replace X, it will make it a better decision to use C# in the future. A plus to both Windows application devs, and Linux users alike.
Re:Why should "cross platform" always mean Java/.N (Score:5, Insightful)
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.
Just a bit biased.... (Score:5, Insightful)
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.
Please!! stop the insanity!!!! (Score:2, Insightful)
Comment removed (Score:3, Insightful)
And how is this better than wxWidgets/wxPython? (Score:5, Insightful)
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.
Re:Will the coders use it though? (Score:5, Insightful)
That being said,
The lesson? MS is going to win, because they have the advantage, at least on the desktop. Paradigm shifts (unix->dos->windows->linux) don't happen very often, and you need a lot of geurilla tactics to even have a fighting chance. The best thing I can see is to support
As an added bonus,
Some silly points (Score:4, Insightful)
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++.
Re:Will the coders use it though? (Score:5, Insightful)
Unlike Java, Mono doesn't try to shove cross-platform development down people's throats. If developers want to use Mono to develop Windows-specific applications, that's cool. If developers want to use Mono to develope Linux-specific applications, that's cool, too. If developers want to develop cross-platform applications with Mono, that's cool, too, and Mono supports that, too.
I suspect the biggest use of Mono will be the development of Linux desktop apps using Gnome/Gtk+. Many of those applications will be difficult to port over to Windows because they will rely on Linux-specific features. But that's no different from Gtk+ applications written in C or C++; Mono simply makes it easier to develop such applications by giving developers a choice of using C#.
The second biggest use of Mono will likely be the deployment of applications and libraries developed for Windows on Linux machines. Those applications were not originally written with cross-platform portability in mind, but by supporting Microsoft's APIs well enough, those applications will either work out of the box, or port over easily.
So, Mono gives the programmer the choice between writing cross-platform apps or taking advantage of platform-specific features. That's where the choice belongs, IMO.
Re:Will the coders use it though? (Score:1, Insightful)
Who is fircing you to use Microsoft's new
That is just an example of a kid complaining that he does not like his new toy because he saw the neighbor kid with something he liked more. The toy can still be played with.
Re:The ONLY thing? (Score:3, Insightful)
So people keep saying, but I don't really see much evidence. You must have heard of gcj [gnu.org] and GNU Classpath [gnu.org]? What about IBM Eclipse [eclipse.org] and SWT [sourceforge.net]?
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.
Re:A strange place to follow Microsoft (Score:1, Insightful)
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
Evaluation applies to any VM language (Score:5, Insightful)
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.
Re:The ONLY thing? (Score:3, Insightful)
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?
Re:And how is this better than wxWidgets/wxPython? (Score:2, Insightful)
The advantage I see is allowing
Call it a deal with the devil, but if people can use the same applications under linux that they would under windows thats one less reason not to switch.
Re:Will the coders use it though? (Score:4, Insightful)
Strangely that assumption is quite widespread. I think I've tracked down the source [mono-project.com] though.
Lucky that for you portability from Dotnet to Mono is an added bonus. Let's hope that other Mono users will have an equally chilled attitude!
Re:Will the coders use it though? (Score:3, Insightful)
Yeah, that whole JNI for plugging into java, definitely cross platform.
And as for porting over easy, don't forget, interpreters will inevitably have bugs which cause them to act differently.
-s
Re:Will the coders use it though? (Score:4, Insightful)
Better hurry before Longhorn comes out, too... That may set OSS back 10 years or more, but at least MS has given us an extra three years to innovate in the meantime!
Meh. MS has the plans for Longhorn written already, and they are busy coding / taking peices out. All the while, OSS innovates. A typical modern Linux setup will run just as fast, if not faster than an equivalent Windows XP setup. And development continues onward and upward. Now, with X.org being the *new* standard, development of that environment will take off (crosses fingers). We won't have to deal with the sluggish , non-innovating ouncil of XFree86.
It's probable that equivalent alternative OSS workstations will be at the same level that Longhorn will be within a year and a half. When Longhorn comes out, it will be obsolete. Then again, the transition to from Win32 to Longhorn will be just as painful as a transition from Win32 to Linux/BSD w/ X.
The only thing that I see holding Linux back is the hardware adoption / drivers. Companies aren't going to be too interested in developing Linux drivers if we have things like ndiswrapper around. I'm still pissed at Realtek, who said they would release a 2.6.* compatible wireless driver in April, but still haven't. At least Nvidia and ATI aren't delaying Linux adoption... I suppose that a little company called ID is helping in that respect.
Re:Will the coders use it though? (Score:3, Insightful)
Exactly.
There are already several free/commercial JVMs on Linux. Sun, despite a lot of handwaving to the contrary, has been quite friendly to the free software community. C#/CLR is not much more than a slightly warmed over version of Java, without an unencumbered cross-platform GUI library. Java has two major contenders (Swing and SWT).
Mono was a bad idea and only furthers Microsoft's market dominance.
Re:Why should "cross platform" always mean Java/.N (Score:4, Insightful)
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.
Re:Why should "cross platform" always mean Java/.N (Score:2, Insightful)
Re:Will the coders use it though? (Score:2, Insightful)
How did you come up with that? Not only will existing programs work just fine, but legacy code can interop with
You could have a point if you are putting Mono into the picture. The new
For one, it's Visual Studio
Linux is being held back by more than lack of hardware drivers. It's held back by lack of commercial developers willing to explore the platform. Quality open-source office suites and desktop environments exist because companies exist to back them, for their own interests (or because the program is so good/popular it makes money from donations and support); smaller projects don't get the attention they need to prosper; They exist, but most of them they are terribly unrefined.
That's where Mono can help: IF they so desire, developers can target both Linux and Windows, since GTK+/GTK# has been ported to Windows (i don't know how well this works, or how messy this is, but I'll give it a shot soon).
(Dead tired, incoherence warning for the above)
Re:A strange place to follow Microsoft (Score:4, Insightful)
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)
Re:A strange place to follow Microsoft (Score:1, Insightful)
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.
C# vs. Java - NOT (Score:2, Insightful)
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.
Re:Why should "cross platform" always mean Java/.N (Score:3, Insightful)
Maybe you will, but not likely. What's more likely is VB programmers using a
Personally I think the
Re:Why should "cross platform" always mean Java/.N (Score:3, Insightful)
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.
Re:Why should "cross platform" always mean Java/.N (Score:3, Insightful)
There was never any need for
There is still no need for
What a collasal waste of money and time.