Slashdot Mirror


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."

73 of 465 comments (clear)

  1. Will the coders use it though? by garcia · · 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.

    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?

    1. Re:Will the coders use it though? by AliasTheRoot · · Score: 4, Interesting

      Clearly one of the biggest concerns is the degree of compatability between .NET and Mono & the lack of many of the API's that exist on Windows - which face it will be the primary development environment.

      I'm sure someone will point out that MS will extend .NET beyond the standards thus marginalising Mono, but i'm sceptical of whether this will happen - it's in their interests to keep the core platform and language specs consistent, the API's are another matter...

    2. Re:Will the coders use it though? by Random+Web+Developer · · Score: 5, Informative

      I am writing an app for mono that is supposed to run on linux mac and windows in the end. From what I see it's nowhere near just starting a .NET app on linux using mono.

      The app clearly has to be written with crossplatform execution in mind. (I know this goes for c and java too, but some people seem to think they will run office on mono in the future.).
      You need to steer clear of anything that depends on a platform.
      - if you define a path, make sure you use path.combine or path.directoryseparatorchar instead of a / of \.
      - don't depend on environment variables
      - pay attention to casing, don't say "file.ext" when it's "File.ext"

      I know it should be ovbious to any cross platform dev out there, but I just thought I'd bust some bubbles with some of the less informed.

      --
      Artists against online scams http://www.aa419.org/
    3. Re:Will the coders use it though? by Kithraya · · Score: 5, Insightful

      I certainly am. I am required to use C# in a Windows environment, and since I've discovered mono for my at-home-just-for-fun stuff, I'm able to leverage the experience and education from my day job. I find myself doing far more of this for-fun work in the linux environment now. For me, this has been the greatest boon of having mono, and hopefully other developers forced to work in Windows will also leverage mono to bring even more great software to other platforms.

    4. Re:Will the coders use it though? by iseff · · Score: 2, Interesting

      I'm currently building a nice web server, much like Tomcat for .NET in C# (yes, I realize a lot of it could be done currently using ASP.NET and/or Apache with mod_mono or XSP -- but this server has some features I really like; plus it's a good exercise). I hope to build some web app's for the server after it's complete (I'd say its just about ready to enter alpha stage), but so far developing between VS.NET during the day in my office and MonoDevelop at home at night on FC2 is a really fun process. They both have their quirks, their plusses, and their minuses -- but really if you're just careful how you program there's no worrying about whether or not it will work cross-platform -- it will. Of course, this isn't including Winforms or GTK#.

    5. Re:Will the coders use it though? by caspper69 · · Score: 5, Insightful

      I'll bite, even though you're an AC. You must understand that everything evolves in the computer world. We do not simply make new things up. The tools available at our disposal are the result of an evolutionary process that has gone on for 50+ years.

      That being said, .NET is most certainly not any of those things you presented. .NET is the new version of Win32, which we all know, as a subsystem to a pretty amazing kernel (nt/2k/xp), really drags the entire system down. You should be excited that Linux is getting in on the ground floor of a fresh, robust, and USEFUL framework so early in the game. Heck, how many Windows apps are written in .NET right now? How many will be in 5-10 years? Exactly. How many years did it take to wean people from Win16? I can tell you that I still have a couple of apps that haven't migrated, and that it took a LOT of other apps more than 3-4 years after Windows 95 was released to make the switch.

      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 .NET on both sides of the coin (hey, you'll soon even be able to throw OSX in there too), and in three or four years, when someone says: "I can't switch from Windows, because app X won't work, or is too slow through Wine," or blah, blah, blah, you'll be able to retort that all of their favorite apps will run natively on Linux or OSX, thus freeing them from any sort of platform dependence.

      As an added bonus, .NET is a great tool. C# really does allow some very neat and timesaving features for development. That's the number one reason more people don't develop for Linux/Unix. Some people are too young to remember WHY we left Unix on the big-iron all those years ago, but if we insist on repeating those mistakes, let's at least provide an evironment that can muster some developer support. Not everyone is writing a Word/Excel/Photoshop. Some people like to site down and bang out a few lines of code, and be confident that it'll work as intended, where intended. VB has gone a long way toward keeping the Mom & Pop development shops on Windows. If we can begin to get these folks to consider making cross-platform apps, then half the battle will be over. Now we just need to convince the users of those apps that there are advantages to running them on Linux. 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!

    6. Re:Will the coders use it though? by moonbender · · Score: 5, Informative
      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.

      Right. Of course that's all about to change - from the Java 1.5 ("5") new features site:
      Autoboxing/Unboxing
      This facility eliminates the drudgery of manual conversion between primitive types (such as int) and wrapper types (such as Integer). Refer to JSR 201.
      Varargs
      This facility eliminates the need for manually boxing up argument lists into an array when invoking methods that accept variable-length argument lists. Refer to JSR 201.
      You still need to deal with exceptions - that's a bad thing?
      --
      Switch back to Slashdot's D1 system.
    7. Re:Will the coders use it though? by dekeji · · Score: 5, Insightful

      Will they be concerned enough that Linux and OS X users are worthwhile supporting to make sure it is cross-platform?

      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.

    8. Re:Will the coders use it though? by dekeji · · Score: 3, Interesting

      Clearly one of the biggest concerns is the degree of compatability between .NET and Mono & the lack of many of the API's that exist on Windows - which face it will be the primary development environment.

      You are operating under the assumption that the main use of Mono is going to be to allow people to write .NET software. If it were, that would be a serious concern.

      But most Mono software will likely be developed using OSS libraries for OSS platforms. It makes no difference to that kind of development what Microsoft does with .NET. Mono is simply a good implementation of a good language that allows them to reuse vast amounts of OSS software with less hassle than if they were writing C/C++ code.

      The fact that Mono can also be used to easily port .NET software to Linux is an added bonus.

      I'm sure someone will point out that MS will extend .NET beyond the standards thus marginalising Mono

      There is no "standard" for .NET; the only standard there is is ECMA C#. Mono's effort to re-implement the .NET APIs is analogous to the Wine/Willows efforts to re-implement the Win32 APIs: it's tracking a moving target. Everybody working on, and using, Mono knows that, and it just is not a problem for the uses people put Mono to.

    9. Re:Will the coders use it though? by alext · · Score: 3, Insightful

      You are operating under the assumption that the main use of Mono is going to be to allow people to write .NET software

      Strangely that assumption is quite widespread. I think I've tracked down the source 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!

    10. Re:Will the coders use it though? by Cereal+Box · · Score: 3, Interesting

      Perhaps .NET allows for directly getting environment variables, but Java doesn't, and this is one case where I think it's a good idea. Instead of obtaining environment variables through a method call, you have to pass them as arguments to the VM, and then you can use System.getProperty() to obtain them. So for instance on Windows I could define the property program.home to %HOMEDIR% and $HOME on Unix and you'd never know the difference in the code because on both Windows and Unix you'd be called System.getProperty ("program.home"). Maybe it's just my Java background talking, and that's why I don't see a problem with environment variable handling.

    11. Re:Will the coders use it though? by sporty · · Score: 2, Insightful

      Unlike Java, Mono doesn't try to shove cross-platform development down people's throats.


      Yeah, that whole JNI for plugging into java, definitely cross platform. :P That whole C# compiled to byte code? Nah, no one is pushing cross platform.


      And as for porting over easy, don't forget, interpreters will inevitably have bugs which cause them to act differently.


      -s

      --

      -
      ping -f 255.255.255.255 # if only

    12. Re:Will the coders use it though? by Slime-dogg · · Score: 3, 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.

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    13. Re:Will the coders use it though? by dekeji · · Score: 5, Informative
      Strangely that assumption is quite widespread. I think I've tracked down the source [mono-project.com] though.

      Yes, you have correctly tracked down the source of that misconception. It's an easy misconception to have, given what the Mono project writes about itself.

      Now, dig down a little deeper and go to the downloads. What do you see? A "Mono Stack" on the left, consisting of OSS libraries and APIs, and a .NET stack on the right, consisting of .NET libraries and APIs. You can pick one or the other, or both. Neat, huh? Now, also note the relative sizes of the Mono and .NET stacks.

      Now, turn to the FAQ:

      Question 132: Is Mono only an implementation of the .NET Framework?

      Mono implements both the .NET Framework, as well as plenty of class libraries that are either UNIX specific, Gnome specific, or that are not part of the .NET Framework but people find useful.


      Question 50: Can mono run the WebMatrix?

      No. That requires System.Windows.Forms support which is not currently implemented.


      Question 40: Do you fear that Microsoft will change the spec and render Mono useless?

      No. Microsoft proved with the CLI and the C# language that it was possible to create a powerful foundation for many languages to inter-operate. We will always have that.

      Even if changes happened in the platform which were undocumented, the existing platform would a value on its own.


      What does that tell you?

      • A lot of Mono software (most, in fact) already is completely incompatible with Microsoft .NET, since Mono doesn't even implement important parts of .NET, but does provide extensive non-.NET libraries that are being used by Mono applications. So, .NET compatibilty just doesn't matter to most Mono developers.
      • People know that Microsoft could change .NET, and it generally doesn't matter to them.


      Why is the Mono project seemingly saying one thing and delivering another? Well, in part, it's because the term ".NET" is really ambiguous. In part, it's because where their money comes from and where their commercial interests are (they aren't doing this out of religion, they are in it for commercial purposes).

      So, your confusion is understandable. I wish the Mono project were clearer on their front page, too, but I suspect they have reasons for what they are doing. Either way, you should really dig a little deeper.
    14. Re:Will the coders use it though? by Glock27 · · Score: 2, Insightful
      The last thing I need is for Linux to become a tech-slave to Microsoft's Win32NG department and its users to start acting like a bunch of *ssholes.

      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.

      --
      Galileo: "The Earth revolves around the Sun!"
      Score: -1 100% Flamebait
    15. Re:Will the coders use it though? by koali · · Score: 3, Informative

      Errrrr... no, it's not.

      In fact, there's a new method in 1.5 to get all the env vars...

      http://java.sun.com/j2se/1.5.0/docs/api/java/lan g/ System.html#getenv(java.lang.String)
      http://java. sun.com/j2se/1.5.0/docs/api/java/lang/ System.html#getenv()

    16. Re:Will the coders use it though? by antoy · · Score: 2, Insightful

      Then again, the transition to from Win32 to Longhorn will be just as painful as a transition from Win32 to Linux/BSD w/ X.
      How did you come up with that? Not only will existing programs work just fine, but legacy code can interop with .NET. It's quite easy, I've tried it.
      You could have a point if you are putting Mono into the picture. The new .NET APIs (WinFX, Avalon and the such), will take as much getting used to as a Mono/GTK# change. So where's the problem, why not switch to the Mono solution?

      For one, it's Visual Studio .NET. Despite some hideous bugs some of you will be quick to mention, it's a rather splendid development environment, and 2005 is even better. Mono has Monodevelop, which is fine for hacking around but lacks a UI designer/page designer, and all sorts of goodies VS.NET users are used to. So if you're hoping for a huge developer switch to Linux, consider it highly unlikely.

      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)

    17. Re:Will the coders use it though? by kaffiene · · Score: 2, Interesting

      The ironic thing about this is that Java actually offers a more fully featured API for writing code on Windows than .NET does.

      Let's see... off the top of my head:
      * although windows allows icons in menus, .NET doesn't, Java does
      * .NET doesn't have a general purpose table component (DataGrid is designed to attach to Databases and just does not do some of the things you want tables to do)
      * .NET doesn't support double buffering (you have to implement it yourself)
      * .NET doesn't support transparency (no transparent backgrounds for labels, for example)
      * .NET doesn't have an Action component (ala Java and Delphi)

      The reality is that Java has a very well developed, secure and fully featured API. .NET's API is extremely thin and of patchy quality.

  2. looks promissing but what is it really against? by urbieta · · Score: 4, Informative

    Time for coders to take a closer look!

    What are the methods currently used by GIMP, OpenOffice, Mozilla among others that already support multiple OS's?

    Maybe Ill start learning coding with this and kill more birds with the same shot :)

    1. Re:looks promissing but what is it really against? by Graelin · · Score: 4, Interesting

      What are the methods currently used by GIMP, OpenOffice, Mozilla among others that already support multiple OS's?

      Those projects are all written in C++. They all use libraries that are cross-platform but they're littered with #ifdef WINDOWS ... do_win32_specifics(); #endif.

      The theory is that with .NET you won't need ANY platform specfic code. If that turns out true, I will be completely amazed.

      Maybe Ill start learning coding with this and kill more birds with the same shot :)

      That's a really good idea. Mono and DotGNU make .NET really cross platform (which is neat) but a lot of companies will switch to .NET platforms. I know some pretty big ones that already have and are loving it.

      What I *really* want to see is mod_mono with class wrappers for the identical IIS hooks. Imagine being able to develop web apps on your WinXP laptop on the road and push up to your Linux server farm without any worries. I'm crushing already.

    2. Re:looks promissing but what is it really against? by FooBarWidget · · Score: 4, Informative

      I don't know about OpenOffice and Mozilla but your claims are definitely not true for Gimp.

      First of all, Gimp is not C++, it's written in C. And Gimp contains very little to no platform-specific code. Gimp uses Gtk and Glib as portability layers. The Gimp maintainer strives to have as little platform-specific code as possible. He even wants to eventually get rid of all of the remaining little #ifdefs.

      Gtk and Glib are also not littered with #ifdefs. Gtk uses Gdk as portability layer. Gdk has several implementations: X, Win32 GDI, DirectFB, etc. An implementation is automatically chosen by the configure script (or something like that, not really sure about this one), but there are very little #ifdefs.
      I don't know about Glib.

      "The theory is that with .NET you won't need ANY platform specfic code. If that turns out true, I will be completely amazed."

      My theory is that it will end up with something like Java or all the other portability frameworks for C/C++. The simple things are portable but when you want to do some more complex things, you suddenly face the limitations. And you also have limited ways to really integrate with the platform's desktop.

  3. RAD tools by BillsPetMonkey · · Score: 5, Insightful

    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
    1. Re:RAD tools by Lussarn · · Score: 4, Informative

      Glade is language independant. As long as there is libglade for mono it should work very well.

    2. Re:RAD tools by Random+Web+Developer · · Score: 2, Informative

      It does pretty much everything except for the gui designer (and a debugger or help system if it's not built correctly).

      --
      Artists against online scams http://www.aa419.org/
    3. Re:RAD tools by dominator · · Score: 2, Interesting

      Yeah, just to re-iterate, Glade works great on Windows.

      http://gladewin32.sourceforge.net/

      GTK# ships with Glade#, so yes, there is a libglade for Mono.

    4. Re:RAD tools by Oxy+the+moron · · Score: 2, Informative

      It is important to remember, though, that if you use GLADE you should have it set to Gtk+/Gtk/Gtk#. If you have it set to GLADE, I don't believe it will work in Windows (yet) due to lack of library support.

      --

      Proudly supporting the Libertarian Party.

  4. Bull by tgrigsby · · 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.

    --
    *** *** You're just jealous 'cause the voices talk to me... ***
    1. Re:Bull by cbiffle · · Score: 5, Informative

      And, of course, there's the fact that his latter two complaints are kind of sort of fixed in 1.5.

      So... :-)

      Personally, I think the C# folks make too much of a big deal about the mandatory exception handling in Java. Heard a fellow from Microsoft say "Frequently, Java folks just put an empty catch() block to catch the exception they know won't happen, so why make it mandatory?"

      I've got bad news for you. I find situations like that about once a week when auditing my programmers' code, and it's almost always a situation that -can- happen, but the programmer couldn't see it.

      Don't trust the programmer. I know, I am one. :-)

  5. Re:Libraries by ajp · · Score: 5, Informative

    Uninformed slashdotters with tin foil hats should click this link.
    ECMA-335 Common Language Infrastructure (of which .NET, Rotor and Mono are implementations.)

  6. Mono and geeks by Anonymous Coward · · Score: 2, Funny

    Ars Technica will be taking a look at Mono...

    ...because most geeks no nothing about it :P

  7. Fills a needed gap by Ars-Fartsica · · Score: 4, Insightful

    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.

    1. Re:Fills a needed gap by metallikop · · Score: 3, Insightful
      I dont think the goal of mono is to replace all the other dev kits. Wouldn't it make more sense to write your Windows application in C# and just compile it for Mono while you're at it? Seems to me that this is a very easy way for developers to make their application cross-compatable without any extra work.

      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.

    2. Re:Fills a needed gap by I_redwolf · · Score: 4, Interesting

      Simply because most applications will be using the native Microsoft forms and extensions. Mono has yet to support any of them natively without problems. It's forseeable into the future that they will never be able to fully adopt or engineer such compatibility without help from Microsoft themelves and/or an open spec. That is why.

  8. blech! by shralpmeister · · 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. :-(

    1. Re:blech! by turgid · · Score: 3, Informative
      Since when does imposing Windows conventions everywhere by force equal "cross platform compatability?"

      We have Open Standards and Open Source for that sort of thing already.

      We also have Java for the write-once-run-anywhere thing. I fail to believe that .NET/Mono/.GNU will be better or solve any new problems that have not already been solved.

      There's even an official Windows port ofn Java, so I'm told...

  9. Why should "cross platform" always mean Java/.NET? by PommeFritz · · Score: 5, Interesting
    What I don't understand is that when people are talking about "cross platform" programming, it almost always is about Java or .NET/Mono. What is it that those 2 seem to be mutually connected to "cross platform"?

    I mean, take Python! (my favorite high level cross-platform programming languate)
    • Python has been around longer than Java (it's from 1991)
    • Python has been ported to a lot more platforms than Java (and certainly .NET!)
    • Python has various powerful language features that Java, C# can only dream of (metaclasses, generators, list comprehensions)
    • Pure python programs will run everywhere a suitable Python is available
    What's so special about Java or .NET that makes them the talk of the day, while other much more interesting languages seem to be ignored in this matter?
  10. Re:Why should "cross platform" always mean Java/.N by turgid · · Score: 4, Insightful
    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. Python and Java are both languages and run-time thingies.

    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.

  11. Just a bit biased.... by Anonymous Coward · · Score: 5, Insightful

    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.

    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' .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?

    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 .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?

    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.

  12. Comment removed by account_deleted · · Score: 2, Insightful

    Comment removed based on user account deletion

  13. And how is this better than wxWidgets/wxPython? by kollivier · · Score: 5, Insightful

    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?

    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 .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.)

    Anyways, time to go back to making my native, cross-platform apps. ;-)

    1. Re:And how is this better than wxWidgets/wxPython? by De · · Score: 2, Informative

      You're of course welcome to use wxNet (wx's C# bindings) instead of GTK#. Mono doesn't force you to use a toolkit, they just make it easy to use GTK#.

    2. Re:And how is this better than wxWidgets/wxPython? by farmerbuzz · · Score: 2, Insightful

      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?

      The advantage I see is allowing .NET developers to easily develop for linux. It may be a while (or forever) before many Windows development companies decide its valuable to go cross platform in order to support linux, but if they can immediately transfer .NET skills to linux development the barriers are definitely lowered.

      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.

    3. Re:And how is this better than wxWidgets/wxPython? by StarfishOne · · Score: 4, Informative


      I've been playing around with (wx)Python as well lately and it rocks!

      Especiall combined with:

      Boa Constructor:
      'A cross platform Python IDE and wxPython GUI Builder. It offers visual frame creation and manipulation, an object inspector, many views on the source like object browsers, inheritance hierarchies, doc string generated html documentation, an advanced debugger and integrated help.'

      http://boa-constructor.sourceforge.net/

      And the Twisted framework for network programming. http://www.twistedmatrix.com/

      "Twisted Matrix Laboratories is a distributed group of open-source developers working on Twisted, an event-driven networking framework written in Python and licensed under the LGPL. Twisted supports TCP, UDP, SSL/TLS, multicast, Unix sockets, a large number of protocols (including HTTP, NNTP, IMAP, SSH, IRC, FTP, and others), and much more."

      I've now got a fully asynchronous and very fast custom server running.. in less then a day from a clean start with the Python language!

      I really recommend checking this out!! ^_^

  14. A strange place to follow Microsoft by Junks+Jerzey · · Score: 4, Interesting

    First off, realize that I'm not anti-Linux. I've used Linux both professionally and at home. UNIX, too. And I also know C++ and C#, among other languages.

    What has always struck me about .net, C#, and okay Java too, is that they're essentially playing catch-up to what's already out there. People who've only used C++, and the people who can't shake the "everything has to be optimized down to the last microsecond" mindset, tend to really like C# and .net. After all, now they finally have real modules, a clean string syntax, hidden memory management, and so on. Just that the article makes a big deal about the power of this line:

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

    is telling. After all, you could do this--with a cleaner syntax, mind you--in Perl fifteen years ago. Don't like Perl? Well, Python then. Or even old clunky TCL. And so to me, the furor over .net and C# appear to be coming from people who spent the nineties thinking that C++ was the pinnacle of software development. If you look at Perl and Python, though, they still have lots of wins, like no noticible compile times, no need to jam everything into an object framework, less bulky syntax, a lot less fussing about types, and generally more malleable ways of programming. From that point of view, C# doesn't offer much, unless again you stay up late worrying about shaving cycles out of your button handler callbacks.

    Perl and Python have always been better supported under Linux than Windows, and I'd even call them the Linux way of approaching software development. Leverage the best tools available so you can achieve more in less time. Microsoft has been playing catch-up here, and .net and C# are what they came up with, a solution that's still far behind what was already available. A solution that feels like something that would have been stunning in 1990 or 1992, but now is mired in an earlier generation of software development. The weird part is that dragging this over to Linux, making it an across the board cross-platform solution, is looked at as a good thing. The effort would be better spent elsewhere, like coming up with a lighter weight GUI toolkit for Python that breaks from Tk and behemoths like WxWindows.

    1. Re:A strange place to follow Microsoft by scrytch · · Score: 3, Insightful

      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.
    2. Re:A strange place to follow Microsoft by WWWWolf · · Score: 2, Funny
      What has always struck me about .net, C#, and okay Java too, is that they're essentially playing catch-up to what's already out there.

      Hehehehe. Know what this reminds me of?

      "Those who don't understand Lisp are condemnded to reinvent it, poorly." (patterned after Henry Spencer's famous observation on Unix)

      I'm seeing that happening all the time =)

  15. Some silly points by I_Love_Pocky! · · Score: 3, Insightful

    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++.

  16. The elephant in the room by SuperKendall · · Score: 4, Interesting

    While an interesting (if very simple) article, it never adresses the elephant in the room - why not Java?

    With Java you can do everything in the example, with ease. From the article:


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


    Wow! Well, in Java it looks like this:

    boolean b = Pattern.matches(regex, input);

    Is the great power of Mono then that they have screwed up the name of the matching method to FunnySound?

    Or what about GTK support in Java - you could use Java-Gnome. Or you could use AWT. Or you could use Swing. Or you could use SWT if you prefer native performance.

    And using all this, you don't have to wait for OS X support - it's here now! Chances are you don't have to wait for support on whatever OS you are using in fact, as the JVM is now pretty much everywhere.

    So why ignore the elephant? Why does this article not go into the reasons why you would want to consider a platform years behind an exisitng one with similar capabilities, better cross-platform support, and way more tools. Instead it just pretends that corss-platform wasn't even possible before MONO.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  17. Re:The ONLY thing? by turgid · · Score: 2, Insightful
    Also, Sun continues to strangle the life out of Java with its grip of death on all aspects of the language + vm. Sun is holding Java back.

    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.

  18. Evaluation applies to any VM language by David+Ishee · · Score: 5, Insightful
    There is nothing special in general about .NET that doesn't apply equally to Java. They are both VM languages that have good library support.
    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.

    The description of the power .NET here isn't .NET specific. Actually, any language with good library support will meet this criteria of "power".
    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.
    Give me a break! Autoboxing and the String.Format() comment are very trivial things to complain about. Enforced exception handling is a little more complex and the debate will probably never end on which is better.

    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.
    1. Re:Evaluation applies to any VM language by ncaHammer · · Score: 3, Informative

      There is nothing special in general about .NET that doesn't apply equally to Java


      Except those
      A. Polymorphic instruction set
      In JVM most instructions have the types of their arguments hardcoded (faster interpretation but harder to create a compiler to emit the correct one)
      In CLR has polymorphic instruction set, only the result type is hardcoded (compilers have much easier job but JITer has more work to do)

      B. Extensible convention for emitted members using attributes
      C. Assembly packaging vs JAR (zip file) packaging (can also contain native code or preJITed code)
      D. In JVM you are unable to encode
      1) enumerations (all)
      2) structures (records in Delphi, struct in C)
      3) unions (C and Delphi)
      4) variant records (only C)
      5) overflow sensitive arithmetic on integer data types (all)
      6) reference parameters (var in Delphi)
      7) function pointers (all)
      8) extern functions with calling convention (all)
      9) variable length arguments (array of in Delphi, C ...)
      10) tail calls (only Scheme IIRC)
      11) Unsafe code (eg C, Delphi pointer/memory manipulation)

      so the compiler writer that targets JVM must emulate all the above (using Java actually) resulting functional crippling or degraded efficiency

      E. JVM has an 64K limit in branching, making compiler writing more difficult than CLR

  19. Re:The ONLY thing? by turgid · · Score: 2, Insightful
    As for the ECMA thing, that's merely the bytecode interpreter. The standards do not cover the class libraries required to write Windows applications. Miguel is sadly mistaken if he thinks that he's going to be able to get enough of that done (without incurring Microsoft's legal wrath) to get general Windows .NET "binaries" to run on Mono.

    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?

  20. it's not either/or by dekeji · · Score: 2, Informative

    Mono isn't all about cross-platform development, it's about giving you a more modern general purpose programming language than C/C++ and providing lots of useful bindings for it. Some of those bindings happen to be cross-platform, others don't. You really just get a choice.

    As languages, C# and Python are simply different. Both have their uses, and neither is better. C#, for example, lets you do pointer manipulation and its implementations are efficient enough even for writing low-level loops. Also, people find C#'s static type checking useful for long-lived, multi-programmer projects. If all your needs are met by Python, consider yourself lucky; other people's needs are not that simple.

    In terms of libraries, you can have Python/Gtk+, Python/wxWindows, C#/Gtk+, and C#/wxWindows, and all four exist (C#/wxWindows isn't all that far along yet, but people are working on it). So, your choice of toolkit and your choice of language are orthogonal.

  21. Re:Why should "cross platform" always mean Java/.N by Cereal+Box · · Score: 3, Informative

    Python and Java are both languages and run-time thingies.

    Not necessarily. People have targetted other languages for the Java runtime, including Python (Jython) and Scheme (Kawa). Basically, as long as you can spit out Java bytecode it doesn't matter language what you compiled to get it. Same basic idea with .NET.

  22. Yep, here it is... by SuperKendall · · Score: 2, Interesting

    You can find a product here to convey IL (.Net bytecode) into bytecode for the JVM.

    You can also find a Powerpoint on this here. Note that they even talk about supporting ASP calls via a servlet library they have built!

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  23. Wrong, wrong, wrong by ultrabot · · Score: 5, Interesting

    No, Python is a SCRIPTING languate [sic].

    No, it's a programming language. It's just productive enough for scripting. "Scripting language" doesn't really mean anything.

    I would also add that the Java SDK supplies developers with FAR more common libraries than Python does which tends to cut development time.

    Python libraries generally have better (simpler) design and are easier to use. And there are lots of them, both in the standard library and available separately.

    Semantically, Java is a pure-OO language. Python is not.

    It's exactly the other way around. Python is pure OO language, java is not. Does 'int' ring a bell for you? Python provides functions, but they are objects, just like ints, strings and, say, sockets.

    Not that being pure OO language is the end-all and be-all. It just makes the language semantically cleaner while trading off some performance.

    Opening a file in Python is a one liner. In Java you need 2 or more objects and 3+ lines of code. But you have much greater control over how the descripter is read.

    You can have all the control you need, all the way down to file descriptor level. People just don't seem to need the control. Nothing prevents you from writing wrapper objects with different buffering policies.

    Maybe because nobody has a mainstream cross platform app that is written in a scripting language?

    Bittorrent? And quit with the "scripting language" term, it's ignorant or intellectually dishonest, take your pick.

    --
    Save your wrists today - switch to Dvorak
    1. Re:Wrong, wrong, wrong by WWWWolf · · Score: 2, Interesting
      Python is pure OO language, java is not.

      Well, Python isn't exactly pure OO either, far less so than Java. There's no true data hiding, for example. There's some inconsistencies that look bad (why str(foo) and not foo.str()?). Not to even mention that deep down many types aren't really objects at all, even though they may be used as though they were.

      Anyway, Java was designed as a OO language with as little non-OO stuff as possible. Python is a programming language that happens to feature object orientation, and does frequently use it as one possibility of building things - and one of Python's strengths is that you don't need to use OO in your own design, but you can if your design needs it.

      Not that being pure OO language is the end-all and be-all.

      Correct. Purely functional programming is the one true Holy Grail. =)

  24. Re:Why should "cross platform" always mean Java/.N by killjoe · · Score: 3, Insightful

    "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
  25. Re:Why should "cross platform" always mean Java/.N by turgid · · Score: 2, Insightful

    Different projects may like to use different languages but to target the same VM.

  26. But, why? by gillbates · · Score: 4, Interesting

    So instead of targetting the Windows platform, or the Linux platform, or the Java platform, I can now target the Mono platform, which has *GASP* a regular expression library.

    Excuse me if I'm not a little underwhelmed by this. We're supposed to get excited about Mono because of the libraries? As if a good C or C++ coder couldn't write a regular expression parser in less than a week?

    But no, I'm converting to Mono because (pick one or more):

    1. I hate Microsoft. But I like their software. So, instead, I'll use a cheap knockoff of .NET, and won't pay Microsoft any money. And I'll never admit that they had a good idea with .NET, even though I'm using what amounts to a copy of it. Instead, I'll call them all sorts of names and say that .NET sucks, just because it's made by Microsoft.
    2. I love to reinvent the wheel with every new project. I'm going to throw out all of those C and C++ function libraries and classes I've built so I can now reimplement them in Mono.
    3. I hate fast code! How am I supposed to write slow code in C++ when my users have a 3 GHz Pentium 4s? Oh, I know, I'll use a virtual machine!
    4. I love to learn. In fact, now that I've mastered C and C++, I'm going to throw away all of my effort invested in these languages and learn a new one.
    5. I hate to write clean code. All my programs have memory leaks because I could never be bothered to actually follow good design principles, nor keep track of the memory I'm using. So instead, I'll just switch langauges, where I can continue to write sloppy code.
    6. I love to file bug reports. There's nothing like using a new technology before it is fully debugged and tested. In addition, I'll complain that the garbage collector slows my program down too much. Granted, if I understood how it worked, I could write code that would minimize the work it had to do. But that would require effort, and I'd rather complain about than clean up my coding style.

    I really don't see the big deal here, folks. The fact that the binaries are portable without recompile isn't going to make up for the fact that C++ is a mature, very powerful, fast, portable language.

    • I can't write kernel drivers in Mono. Only apps.
    • I couldn't write an OS in Mono, but I could in C++.
    • I can target Macs, Linux, and Windows now with C++, but I'll have to wait if I want to use Mono.
    • Mono is not sufficiently different in terms of ease of programming to justify the switch from C++. In fact, as the example code demonstrated, Mono apps often involve more lines of code simply because every single detail of the GUI can, and must be, set by the programmer. In Windows, 9 times out of 10 I can simply use the defaults and everything comes out fine.

    Okay, if you've got counterexamples of the points above, I'd like to hear them. But save it if you're going to flame me for broiling your sacred cow. I'd rather see a few good reasons to switch from C++ than a flame war, and right now, Mono isn't making a compelling case. To me, it seems like its Yet Another Algebraic Language With Libraries.

    --
    The society for a thought-free internet welcomes you.
  27. Re:Why should "cross platform" always mean Java/.N by Arkaein · · Score: 2, Informative
    This is pure ignorance. The differences between programming languages and scripting languages are completely in the eyes of the developer. Python has excellent tools for developing solid applications which perform well and make use of libraries normally associate with C/C++ applications:

    • A large standard library that rivals "programming" languages like Java
    • Hooks into popular interface libraries
    • for developing GUI applications
    • A JIT optimizing compiler for speeding up interpreted bytecode to near-directly compiled code speeds
    • Great support for regression/unit testing by allowing "main" functions to be used in every script/class file in large projects

    In short, Python can do pretty much anything Java or Mono is likely able to do. In addition, it's faster and easier to code in than most "programming" languages, largely due to dynamic variable typing.

    For developer friendliness Mono and Java are a step up from C/C++, but languages like Python (and probably Ruby, though I haven't used it) have potential to be even more.

  28. Re:Why should "cross platform" always mean Java/.N by Merk · · Score: 2, Informative

    Java compiles to bytecode, Python compiles to bytecode. If being a "scripting language" means that you're not *forced* to compile to bytecode to run a program, then aren't scripting languages simply a superior form of "programming languages"?

    Verbosity in Java doesn't translate to flexibility. It may occasionally translate to more control, but that's rare. Most of the time, it's just due to the inflexibility of the language. Conversely, just because Python provides an easy way of dealing with files doesn't mean that it lacks flexibility. What kind of low-level things can you do with Java that you can't do with fileno and fcntl in python?

    fileno()

    Return the integer ``file descriptor'' that is used by the underlying implementation to request I/O operations from the operating system. This can be useful for other, lower level interfaces that use file descriptors, such as the fcntl module or os.read() and friends. Note: File-like objects which do not have a real file descriptor should not provide this method!

    Commercial applications use Python and Java. Both are extensively used on servers (like Google uses Python for example). Java may have more desktop GUI use, but Python is used as a scripting engine in many applications, including games.

    As for Java being pure-OO and Python not being pure OO? Mwhahahahahaha.

    % python
    >>> (1).__add__(3)
    4

    Although the syntax may be somewhat ugly, even integers in Python are objects. Try that in Java. Java has Integer objects and 'int' types. That's not even slightly OO, let alone "pure" OO.

    Having said all that, I don't even like Python. I happen to be a big fan of Ruby, and am not at all used to defending Python. I think Python's syntax is ugly. I think significant whitespace for indentation of loops and conditionals is a huge mistake, making the code really inflexible when it comes to copying and pasting. I think it's requirement to pass around self when defining methods within a class is simply stupid. And the few remnants of non-ooness bug me, like len(str) instead of str.len() On the other hand, there's even more I dislike about Java. Java is way too verbose, and incredibly inflexible in a lot of areas. By making things like 'int' types rather than classes, it defeats a lot of the purposes of object orientation. At the same time, it makes things more difficult for programmers by lacking a simple printf/sprintf function. Of languages with a C-like syntax, I guess Java is the best option in most cases, but it's lack of true OOness, and its static typing really annoy me. Misinformed people who think that there is something inherently superior about languages which you have to compile to use just make it worse.

  29. Putting Mono, .Net and all that into perspective by Qbertino · · Score: 3, Interesting

    1.) .Net was and imho still is - to a large extent - a joke. What MS did was rename the .obj files from all their developement stuff to .net and start a big marketing boohey. Those laughing the most about .Net weren't the OSS people, it was the veteran MS developers, noticing all the vaporware about it. MS added a nice and neat VM, which in parts is so close to the Windows lowlevel stuff that it's hardly a VM and they 'invented' C#, pronounced C-Hash or Cash (=$$$) for short, a nice PL that rids some downsides of Java and C in one stroke. Well big fat hairy deal. The OSS community invents neat and inovative PLs every other week. Nothing new here, move on.

    2) A group of OSS people saw some nice things to the whole 'plattform' and started programming it themselves. More power to them. I would've considered their time more worthwhile spend on a proper Font system for X or a layer that leverages Motif, QT and GTK into one big engine as to rid the Toolkit bloat of OSS, but it was their decision.

    3) Mono is 'finished' into a solid 1.0. Great. People say it sports some cool stuff. That's nice. Thanks for the great work. I'm going to look at it sometime. NOT because it is a redoo of MS stuff. I for one don't give a doo-doo about Mickeysofts software products anymore since... well a very long time.
    But I do like new tech-frontier OSS software so I'll probably support it. Looking at the way things are going just now it could very well be that .Net disapears to were it came from and Mono becomes the one-size-fits-all technology for future OSS products. Who knows? I wouldn't be suprised. Just as I wouldn't be suprised if the Mono project at one time decides for themselves that they can do things better than MS (which they evidently can) and screw .Net compatability alltogether. After all, .Net was and still is mostly just a marketing gag anyway.

    --
    We suffer more in our imagination than in reality. - Seneca
  30. Gtk#? Conservative GC? Hack? by zyridium · · Score: 2, Interesting

    Gtk# is a ridiculous idea and only exists because some elite coder quickly hacked it up before Mono could get serious enough to implement Windows.Forms.

    Windows.Forms really needs to be *the* standard implementation. I can't imagine many people taking Gtk# applications that seriously on Windows...

    And as for the runtime itself... Why write a VM for a garbage collected language and not do proper garbage collection??!

    It appears that Novell may have helped Mono pretty up the signs on the outside, but I am much more interested in something that is engineered well from the inside....

    1. Re:Gtk#? Conservative GC? Hack? by VP · · Score: 2, Informative
      Windows.Forms really needs to be *the* standard implementation.

      Bullshit. Mono supports Windows.Forms via Wine. There is no way this can be "*the* standard". Windows.Forms is tied to the Win32 API, which even MS considers outdated. That is why they are replacing it in Longhorn. From this already discussed article:
      And if you're developing a Windows GUI app today using Microsoft's "official" latest-and-greatest Windows programming environment, WinForms, you're going to have to start over again in two years to support Longhorn and Avalon.

  31. What a retarded website by Nailer · · Score: 2, Informative

    White is the hyperlink color. Clicking the big white link named after the article takes me to the same page.

    The phrase we've got other stuff lined up inside would imply the link goes to the other stuff. The url for it seems like it'd show an index of all their linux content. But the word 'inside' actually shows the article.

  32. C# vs. Java - NOT by gmenhorn · · Score: 2, Insightful

    .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.

  33. Re:Why should "cross platform" always mean Java/.N by bay43270 · · Score: 2, Insightful

    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?

    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. 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# ??).

    Personally I think the .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.

  34. Re:Why should "cross platform" always mean Java/.N by killjoe · · Score: 2, Insightful

    "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
  35. Re:Java by turgid · · Score: 2, Informative
    Yeah, and Java really took off now, didn't it?

    It did actually, despite what Microsoft, the Slashbots and the Linux (and Windows) press would have you believe. There are millions of Java developers across the world, there are billions of devices from phones to high-end servers running Java. The number is growing despite what the Redmond Marketting Machine tells you. Even IBM likes Java.

  36. Re:Putting Mono, .Net and all that into perspectiv by StrawberryFrog · · Score: 2, Informative
    .Net was and imho still is - to a large extent - a joke. What MS did was rename the .obj files from all their developement stuff to .net

    You don't know the first thing about it, do you? Go read.

    NET langages compile to plaform-independant bytecode. Shure it's ripping off Java, but it shows good taste in plagarism.

    --

    My Karma: ran over your Dogma
    StrawberryFrog

  37. Because of the improvements by SuperKendall · · Score: 2, Interesting

    Going from C++ (or C) to Java offered some real differences. It offered standard GC, great standard libraries that came with the platform (instead of paying the mandatory RogueWave tax for decent C++ collections) and real gains in productivity over C++ or C.

    Now with C#, the situation is much more murky. C3 over C++? Sure. But C++ over Jvaa, there are just not enough distinguishing differences to make it worth shifting over the whole platform. Furthermote a lot of effort has been put forth just to move sideways - porting things that already exist in Java to .Net. It's the largest attempt at cross-migration in the history of languages.

    I would have WELCOMED a Microsoft language with real improvemnts over the status quo. Perhaps a functional language, or something with deep Aspect roots. But since C# is just a shallow clone of Java, instead ew all have to suffer through years of language wars instead of advancing the state of computer languges themselves.

    My whole thing is I HATE duplciation of effort, and I see C# as the largest single waste of programming manpower in the history of computing. That is why I loathe C# and .Net.

    I am not so much dead set against Microsoft, I use Microsoft products on my Mac and they are just fine. It's when Microsoft takes up the flag for utter domination at the expense of the industry that I get unhappy and point out what they are doing.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  38. Re:Why should "cross platform" always mean Java/.N by killjoe · · Score: 2, Insightful

    You missed the point entirely.

    There was never any need for .NET. You could have already called COM objects written in one language from another language.

    There is still no need for .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.

    What a collasal waste of money and time.

    --
    evil is as evil does