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

465 comments

  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 Simon+(S2) · · Score: 1

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

      I will. And you?

      --
      I just don't trust anything that bleeds for five days and doesn't die.
    3. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      I guess after reading the entire "article" and seeing that it was nothing more than a bunch of Mono code and screenshots of what it did I was unable to come up with something that you could write home about.

      Then again, this Ars Technica article shouldn't have been linked on the front page of Slashdot as it isn't really that interesting.

    4. Re:Will the coders use it though? by surreal-maitland · · Score: 1

      obviously, there's no way of knowing, but as the linux and mac userbase grows, it seems likely. as soon as managers hear that it's easy to write code that will work on these other platforms, it'll become a standard aspect of software. it has to not crash, not fuck up, and work just as well on one platform as any other. java is certainly popular (granted, not as popular as c++), and this is apparently easier. so my official answer to your question is yes. :)

      --
      -ninjaneer
    5. 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/
    6. 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.

    7. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      I thought it was insightful. What's your problem? If he's bringing content to the table, don't complain. Amazed how many retard moderators out there are listening to your nonsense.

      -Aaron

    8. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      then why bother posting? other than karma whoring of course. if you have nothing interesting to say, dont waste my time with your garbage

    9. Re:Will the coders use it though? by Anonymous Coward · · Score: 1, Insightful

      it's in their interests to keep the core platform and language specs consistent, the API's are another matter...

      ummm... sure. Until it's time to change things again. Remember, .Net is nothing more than the lastest version of DDE. There's DDE, several versions of OLE, ActiveX, COM, DCOM, .Net, and the rest I'm forgetting.

    10. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      I own you and you know it.

    11. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      your nuts are MINE!

    12. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      at least i know how to karma whore effectively~

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

    14. Re:Will the coders use it though? by nusratt · · Score: 1

      I think the poster has a valid point. A lot of people are basically lazy, inertia-bound, inclined to take the path of least resistance.

      The benefit will be minimized if Mono is used only by the already-converted ("preaching to the choir"). It's greatest potential is as another step toward shattering the MS shackles -- and for that to happen, developers need to have the interest and the vision, and to have the necessary latitude provided by their PHBs.

      [As for the flurry of "whore!" "troll!" name-calling posts attacking "garcia (6573)": pathetic. Go outside in the fresh air and get some exercise, even if it's only by torturing some ants.]

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

    16. Re:Will the coders use it though? by Negatyfus · · Score: 1

      Cool! I'm starting a job in October coding C# in an entirely Microsoft-based environment. I'm glad to see someone who uses Linux enjoy C#, because I was kind of worried that I would be wasting all my skill on a pure Windows lock-in. I really don't want to see OSS getting killed off. Your post was somewhat of a reassurance. Thanks.

    17. Re:Will the coders use it though? by Cereal+Box · · Score: 1

      don't depend on environment variables

      Why, because they don't work the same way in both Windows and Linux? Is there some fundamental difference I'm missing...?

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

    20. Re:Will the coders use it though? by Anonymous Coward · · Score: 1, Insightful

      I have a simple reply.

      Who is fircing you to use Microsoft's new .NET extensions? The old and still working will suite most projects anyway.

      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.

    21. Re:Will the coders use it though? by Random+Web+Developer · · Score: 1

      When for example you are looking for a home dir, on linux that would be getenvironmetvar("HOME") while on windows that is "%HOMEDIR%"

      --
      Artists against online scams http://www.aa419.org/
    22. 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.

    23. Re:Will the coders use it though? by sporty · · Score: 1

      Don't forget the plugin type facilities some of these languages provide, like java and JNI, or perl and XS. I work someplace that does jsut that to get IE in their app to display 1 web page. Kinda lame when java has an text editing widget that does html. Not super spiffy, but it works.

      --

      -
      ping -f 255.255.255.255 # if only

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

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

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

    27. Re:Will the coders use it though? by alext · · Score: 1

      We do not simply make new things up

      One would never accuse Microsoft of that. Or Miguel.

      Unless you're saying that there's something really "fresh" in Dotnet that's not in Python, Java etc.?

      Most companies I know using Linux already have a top quality cross-platform environment, transferring their Win32 applications to Solaris and Linux faster than you can decide whether today you're in a WinForms, Avalon or GTk+ mood.

      Still, respect due for the brave prediction regarding Microsoft's dominance of the desktop.

      Insightful? Look no further.

    28. Re:Will the coders use it though? by alext · · Score: 1

      What a coincidence!

      I discovered Mono for my at-home-just-for-fun-stuff and I'm now able to leverage the experience by replacing non-Microsoft technologies at my day job with Dotnet.

      For Bill Gates, this has probably been the greatest boon of having Mono. Hopefully other developers forced to work in Java or Python will now be able to bring more great software to Windows.

    29. Re:Will the coders use it though? by alext · · Score: 1

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

      Thank goodness someone has finally had the balls to stand up to this "portability" nonsense.

      If we want to have the option of a low-cost port to another environment we'll damn well ask for it. And we're not exactly blind - after all, if we can't trust Visual .NET to reliably tie our applications to Windows, what can we trust?

      As the parent no doubt accurately predicts, the biggest use of Mono will be the development of Gnome applications, Gnome being practically universal on corporate desktops these days.

      Fortunately, as the poster goes on to point out, porting big Windows apps not originally written for Windows to Mono is only the second biggest use, so Adobe and Borland will be quite happy to wait a little bit longer for Mono to accurately support all those tricky little Windows APIs. It's only been 3 years so far. And yes, when they do, porting will be easy! Almost as easy as it is today for Adobe and Borland to port their Java applications, in fact.

    30. 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.
    31. Re:Will the coders use it though? by puppetluva · · Score: 1

      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.

      Let me get this straight. Since people don't switch to other platforms often, you are suggesting that Linux becomes as much like Microsoft Windows as possible? And that the Linux community engages in geurilla tactics and "fight" Microsoft?

      What would be the incentive to switch? I, for one, use Linux because it is BETTER than Windows for almost everything I need to do (and, unlike Microsoft, is actively engaged in inventing/developing the the great features that will push computer usage forward for everyone). I engage in the community because they aren't engaged in geurilla tactics and fighting/sabotaging everyone. 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.

      Some people are too young to remember WHY we left Unix on the big-iron all those years ago

      Commercial Unix boomed and continued growing all through the 90's (up to the tech bust that hurt everyone) - and with Linux and MacOSX, Unix is growing faster than ever. Most people run Linux on the same "iron" that people run Windows on. Unix is not legacy, its the most innovative, fastest-growing OS today.

    32. 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.
    33. 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
    34. Re:Will the coders use it though? by Random+Web+Developer · · Score: 1

      In .NET/mono you also have the possibility to call framework methods to reliably retrieve those special directory's, but I mainly was trying to say that you should use the framework instead of relying on something you assume

      --
      Artists against online scams http://www.aa419.org/
    35. Re:Will the coders use it though? by SageMusings · · Score: 1

      Samba has been able to match pace with an ever-shifting target. I see no reason why MONO cannot adapt to any "extensions" Microsoft may attempt.

      One could effectively argue that if this project truly becomes successful, It may be MS that becomes marginalized in an extension war. You just need a critical mass of Unix platform developers.

      I'm actually very excited about this and plan to watch it closely. I use C# with the Visual Studio .Net IDE. Imagine being able to work cross-platofrm in that language. Now if MONO could just come up with a good GUI editor. Do they have one I'm not aware of?

      --
      -- Posted from my parent's basement
    36. Re:Will the coders use it though? by alext · · Score: 1

      It's an easy misconception to have, given what the Mono project writes about itself.

      Yeah

      Now, dig down a little deeper[...]

      Well I tried

      Bit complicated. I'll stick with Java, least that way I know it'll run. Thanks anyway.

    37. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      Ooh, checked exceptions? Those are a problem because the exceptions thrown by a function become part of the signature of the function. So any slight change (in the form of exceptions thrown) to a library breaks anything that uses it.

      Of course, you can get around this by just using "throws Exception" everywhere, but that's defeating the whole purpose of checking the exceptions.

      While we're bitching about Java, how about the lack of pass-by-reference (i.e. out parameters)? How do I write a function that returns multiple values, like a div/mod or sin/cos function? Do I make a special class DivModResult { double quotient, remainder }? Or perhaps pass in an array of Objects to hold the output?

      Also, I think that Java is a poor language for writing heavy-duty math. Why? Well, in C# a 100x100x100 array of class Complex {double re, im} numbers would take one object of a little over 100*100*100*2*8 bytes, or 16MB, and referenced with addition and multiplication. In Java the same array would take 1+100+100*100 Array objects of over 100*4 bytes, plus 1,000,000 Complex objects each a little over 2*8 bytes -- requiring 3 dereferences to access. Assuming a highly-optimized 8 bytes of overhead per object, that's 16MB for the data, 8MB of overhead for each object, and 4MB of pointers to the objects from the arrays, for a grand total of 28MB.

      In other words, the highly optimized JVM will only have 12MB of overhead for this simple 16MB array. However, since the individual elements could be anywhere, and possibly not even sequential, accessing sequential elements would be much slower than in C# due to lack of locality and extra derefs.

      Can you imagine trying to do image processing for a 14MP digital camera where your 3000x4500 array of class Pixel {byte R, G, B} takes not 40MB, but 200MB!? There are whole classes of applications that are ruled out for Java thanks to this.

      aQazaQa

    38. Re:Will the coders use it though? by koali · · Score: 1

      System.getenv() reads an environment variable in Java.

    39. Re:Will the coders use it though? by Cereal+Box · · Score: 1

      That's a deprecated method, meaning it's not the preferred way of doing things.

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

    41. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      funny thing about autoboxing. Generics was created in C# to get rid of autoboxing. Sun created autoboxing so generics would work in Java.

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

    43. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      Q: How is arguing with an Anonymous Coward like competing in the Special Olympics?
      A: Even if you win, you're still a fucking retard.

    44. Re:Will the coders use it though? by Anonymous Coward · · Score: 1

      Hmm... It's kind of easy, actually, to call some Java libraries from .Net. the Naked Objects implementation in .Net merely calls the Naked Objects java .class files. THAT is where .Net, I think, has it made.

      I would not want to code in Perl, Python, or whatever, but if I can call your Java classes or Perl- or Python-based .net libraries from my F# code, that is all right, especially if there is no kung-fu involved.

    45. Re:Will the coders use it though? by fitten · · Score: 1

      I engage in the community because they aren't engaged in geurilla tactics and fighting/sabotaging everyone.

      Funny... the first step in sabotaging a software market is to write something almost as good and give it away free, thereby dropping the bottom out of the market and making it difficult to make money in it and hurting them. It's even better if you can hide behind the premise that you are doing it because software should be Free (as in beer and as in rights) cough/IBM, as an example/cough

    46. Re:Will the coders use it though? by dekeji · · Score: 1

      If we want to have the option of a low-cost port to another environment we'll damn well ask for it.

      Quite right. And the reason why "we" often don't want that option is because cross-platform capabilities come at a steep price. But, of course, you'll joyously accept a poor user experience, poor desktop integration, and longer development times just so that you can brag about how "portable" your software is.

      As the parent no doubt accurately predicts, the biggest use of Mono will be the development of Gnome applications, Gnome being practically universal on corporate desktops these days.

      Well, you just go ahead in your foolish belief that the corporate desktop is the only thing that matters in this world. You can compound your foolishness by going on to believe that Java has any relevance to the corporate desktop.

      so Adobe and Borland will be quite happy to wait a little bit longer for Mono to accurately support all those tricky little Windows APIs

      Given what a poorly designed piece of shit Adobe Acrobat Reader is, I think anything that keeps Adobe from porting more of their junk to Linux is to be welcomed. And Borland--are they even still in business?

    47. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      The people who have made SharpDevelop (the source for MonoDevelop) have ported SWT to .Net. I imagine that the GTK.Net libs and using code can also be used on Windows (if you have the GTK+ stuff installed).

    48. Re:Will the coders use it though? by alext · · Score: 1, Troll

      Right.

      If there's one area where Dotnet can clearly win over Java it's the ease of calling Java class files. Let's not forget that.

      And for those without the slightest interest in Perl or Python being able to call Perl or Python is unquestionably a huge advantage.

      Long live F#!

    49. Re:Will the coders use it though? by Cereal+Box · · Score: 1

      Well, perhaps they've "un"-deprecated it since 1.4.2:

      getenv

    50. Re:Will the coders use it though? by pyrrhonist · · Score: 1
      Well, perhaps they've "un"-deprecated it since 1.4.2

      Yes, because everyone though it was stupid for getenv() to be deprecated in the first place. This method didn't even work in 1.4, BTW.

      --
      Show me on the doll where his noodly appendage touched you.
    51. Re:Will the coders use it though? by pyrrhonist · · Score: 1
      Of course, you can get around this by just using "throws Exception" everywhere, but that's defeating the whole purpose of checking the exceptions.

      Some people have claimed that you shouldn't use checked exceptions. From the January 2001 issue of Java Report:

      To Check or Not to Check? - Todd Lauinger

      Checked exceptions introduce redundant error handling in code. People ignore significant error handling in code with a catch-all-do-nothing block. Todd discusses how unchecked exceptions remove the redundancies in code, fix the inconsistencies, and handle errors more reliably.

      This is no direct link to the article, but interestingly enough, the code is here).
      --
      Show me on the doll where his noodly appendage touched you.
    52. Re:Will the coders use it though? by frank_adrian314159 · · Score: 1
      We do not simply make new things up.

      Yeah. Right.

      If that's the best you can do for an imitation of an engineer, you better keep your day job.

      BTW, C# is a better language than Java and .NET's VM is better than the JVM. The VM still isn't good enough, though.

      Get back to me when you can actually run Common Lisp on it (and the guy trying to make Lisp.NET doesn't count - it's just a crapped up Scheme).

      Make. Stuff. Up. **SNORT** Priceless.

      --
      That is all.
    53. Re:Will the coders use it though? by Enucite · · Score: 1

      Bit complicated. I'll stick with Java, least that way I know it'll run. Thanks anyway.

      I know some people who use that same excuse as a reason to deploy Windows.

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

    55. Re:Will the coders use it though? by Kithraya · · Score: 1

      No problem, glad to offer some reassurance. In truth, my company's decision to go the C#/.NET route instead of a pure C++ route was in part tied to the possibility of using mono to extend to other platforms in the future. I'm not sure a lot of companies have really thought about that yet, but the ports almost write themselves. Once a few more namespaces are fleshed out in mono (in particular, the performance monitors weren't implemented the last time I looked), it gets even easier. So I think by going the C# route, you're doing anything but locking yourself in to Windows.

    56. Re:Will the coders use it though? by kaffiene · · Score: 1

      I'm using Java to work with OpenGL and DirectX - is that platform specfic enough for you?

      Your post is pure FUD - you've been able to write dirty Java from the outset.

    57. Re:Will the coders use it though? by AstroDrabb · · Score: 1
      Do they have one I'm not aware of?
      Mono has MonoDevelop which is based on the Open Source SharpDevelop for MS .Net. It is not as far along as MS's VS.Net, but it is going fast and already has:

      Class Management

      Built-in Help

      Code Completion

      Project Support

      Integrated Debugger

      and others It doesn't yet have a GUI builder, though you can use Glade for that which works OK for now.

      --
      If Tyranny and Oppression come to this land,
      it will be in the guise of fighting a foreign enemy. -James Madison
    58. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      An even simpler reply - who is forcing you to use .NET at all? Why don't you just use C? The answer is because people want to take advantage of these new developments, to make it easier/faster/safer for them to make stuff. If there's a whole lot of good extensions on Windows and nothing else, then there's your problem.

    59. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      That whole C# compiled to byte code?

      That sounded like sarcasm, but C# *is* compiled to a bytecode, not to native machine code. They do, however, contain a wrapper to make them launchable as standard windows apps, hence the .exe extension.

    60. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      Some people have claimed that you shouldn't use checked exceptions.

      Checked exceptions have always been questionable. In Java, they created three major types of exceptions (more accurately, Throwables):

      Checked Exceptions (derived from java.lang.Exception): Exceptions that the code must either handle or declare as thrown.

      Unchecked Exceptions (derived from java.lang.RuntimeException): Exceptions that the code need not declare or handle.

      Errors (derived from java.lang.Error): Exceptions that the code probably will never want to catch because they are serious. These buggers can be scary. Classes that derive from it can have strange descriptions like "Thrown to indicate some unexpected internal error has occurred in the Java Virtual Machine." They will slip through a catch(Exception e) block, so if you want to catch them, you have to use catch(Throwable e), which may or may not be a good idea. Unfortunately, java.lang.OutOfMemoryError, a reasonably common exception, is derived from java.lang.Error, so you probably will have to consider Errors at some point in your code, no matter what the description for java.lang.Error would have you believe.

      In the end, you have to stand back and realize that most of this doesn't provide much benefit, and all of these separate exception trees are just complicating the matter.

    61. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      So you're using jedit to write C++ OpenGL and DirectX code huh? Cool!

    62. Re:Will the coders use it though? by Nailer · · Score: 1

      What editor / IDE do you use in Linux? How do you find Monodevelop comares with VS, if you use it?

    63. Re:Will the coders use it though? by dekeji · · Score: 1

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

      I agree, but so what? I would go further and say that the .NET APIs suck and that you shouldn't use them. But we aren't talking about .NET on Windows. We are talking about Mono. The examples in Ars Technica don't use .NET, they use Gtk#.

      Mono provides a huge set of APIs, much bigger than Microsoft .NET. In particular, Mono provides excellent bindings to native Linux APIs, including Gnome and Gtk. Those are APIs that OSS developers already know, that are mature, and that are proven, in contrast to Sun, which has produced a completely new and unfamiliar set of APIs.

      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.

      The reality is that you are missing the point. The reality is that Java is a proprietary platform whose Linux desktop integration is charitably described as "mediocre at best". Mono, on the other hand, is an open source platform which integrates completely natively with the Linux desktop and Linux APIs because it uses the Linux native APIs.

      That Mono also happens to give you cross-platform capabilities on top of that (through Gtk+ ports to Windows and .NET compatibility libraries on Linux) is an added bonus. But, in particular with Mono's Gtk# APIs, Linux comes first and everything else comes second, and that's the way I like it as a Linux developer.

    64. Re:Will the coders use it though? by dekeji · · Score: 1

      I'm using Java to work with OpenGL and DirectX - is that platform specfic enough for you?

      Did you write the OpenGL bindings yourself? Did you write the DirectX bindings yourself? Interfacing Java with native facilities is hard. And what Java ships with in terms of integration with Linux is poor. You can't even do signal handling or interact with the desktop out of the box.

      Mono, in contrast, ships with native Linux desktop bindings: Gnome, Gtk+, XML libraries, etc. Furthermore, you can write native interfaces in Mono without ever having to write a line of C or C++ code--you just declare the C library interface in your C# code and call it. Try doing that in Java.

      Your post is pure FUD - you've been able to write dirty Java from the outset.

      Even if my statement were factually wrong (which it isn't), how would it be "FUD"? Do you even know what "FUD" is?

      Face it, Sun isn't some small startup anymore that big companies try to keep down with FUD. Quite to the contrary: Sun is like IBM used to be in IBM's big-FUD-days: a threatened and dying behemoth with bad technology but lots of gullible customers. Sun at one point had it all: good technology and a huge market, but they lost it through stupidity and business mistakes to both Microsoft and open source. Now, Sun is trying to FUD their way out of their failure and incompetence by misrepresenting open source and Microsoft technologies and generally trying to create fear about everything other than their own products.

      So, if you want to do something about FUD, make Sun shut up, because Sun is the biggest source of FUD on this planet.

    65. Re:Will the coders use it though? by Negatyfus · · Score: 1

      Great, especially since C# really doesn't seem like a bad language at all. I think I'll have lots of fun programming with it. Hard to accept something good has come from Microsoft. ;)

    66. Re:Will the coders use it though? by alex_tibbles · · Score: 1

      FYI GTK+ has been ported to Windows, so many of those GTK+ apps will run on Windows (like GAIM and GIMP). So lots of apps that arn't truly platform specific (like ones that configure printers for example) will port pretty easily.

    67. Re:Will the coders use it though? by puppetluva · · Score: 1

      1) I'm not IBM. I don't represent ANY software/hardware company.

      2) I care about applications and people like me who want to use good software tools. . . I don't even mind paying for "free" software and supporting the authors. Writing poetry for free and performing performance art doesn't sabotage poets and other artists. Software is the same. The technology world is not a zero-sum game as Microsoft would have you believe.

    68. Re:Will the coders use it though? by kaffiene · · Score: 1
      Did you write the OpenGL bindings yourself? Did you write the DirectX bindings yourself? Interfacing Java with native facilities is hard.
      No, I didn't write those bindings. Quite frankly I think it would be a sign of an immature language that required me to write such basic tools, but as it happens I have written JNI bindings on several occassions (I wrote one just recently for using the DevIL image library) and it's not hard at all.

      Verbose, yes, hard, no.

      Even if my statement were factually wrong (which it isn't), how would it be "FUD"?
      You were posting about how Mono allows platform specific coding when Java allows exactly the same thing. Your post surely emphasised that this was a difference between Mono and Java - and that is just not true. As I said, I've been coding to OpenGL, DirectX and DevIL and that's all platform specific code.

      You say that Mono ships with native linux desktop bindings. Well, there are GTK bindings for Java, there is SWT for java which uses native widgets and there's Swing and AWT as well. It's not as if Java is locking you into one way of doing things or denying you the chance to go native. Then you say:

      Furthermore, you can write native interfaces in Mono without ever having to write a line of C or C++ code--you just declare the C library interface in your C# code and call it. Try doing that in Java.
      But this is exactly what Java does offer you through the GTK bindings or via SWT. That sure as hell sounds like FUD to me when you suggest that Java cannot do the same thing when it was already doing so.
    69. Re:Will the coders use it though? by Captain_Chaos · · Score: 1

      I am writing an app for mono that is supposed to run on linux mac and windows in the end.

      Why aren't you using Java?

    70. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      Additionally, checked exception handlers become part of the method's interface. Now you can never modify the underlying code to call anything that might thrown a different exception from the ones on your list. Also, what do you do if you use pluggable parts? For instance the Stram class that might be using a network, file, memory stream, etc.

    71. Re:Will the coders use it though? by Random+Web+Developer · · Score: 1

      Frankly, I was considering it, and it might have been a better option if it were only about the app.

      This application is as much a learning curve as it is a functional useful application, so I chose something I didn't have real life experience in.

      Another thing that bothered me is that java at this time only half-ass integrates with linux/gnome which is my personal main platfom and as such the platform where it'll run most of the time.

      --
      Artists against online scams http://www.aa419.org/
    72. Re:Will the coders use it though? by fitten · · Score: 1

      Writing poetry for free and performing performance art doesn't sabotage poets and other artists.

      Not even remotely comparable.

      One of the major problems today is that copyrights were designed primary to protect the intellectual space. For example, it keeps others from (without my permission) to take my written ideas (poetry, etc.) and making money off it. Patents are more to protect physical processes (physical realm) and the like. I'll patent my new carborator that is so efficient so that my idea is protected and others can't use it without my permission.

      The truth is, software straddles both realms and fits neither very well. Software is both intellectual and physical - the ideas and the processes to solve some problem as well as the physical embodiment of those ideas (files, etc.)

      Copyrights are about protecting distribution. Patents are about protecting products. Software requires both as it is more akin to a reproducable durable good than just an idea or just a physical thing like a car.

      If/when there are matter replicators that can reproduce material things, we'll see similar issues. Right now, automobiles do not have copyrights, they have patents. When an automobile can simply be copied like a Xerox machine copies a document, then there will be issues all over again.

    73. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      Nonsense - you convert the exceptions to something common. Given that the exceptions were not checked, how would you deal with an interface that could give back ANY exception? You can't write an exception handler that actually does anything if you have no idea what exceptions are coming back.

    74. Re:Will the coders use it though? by dekeji · · Score: 1
      You were posting about how Mono allows platform specific coding when Java allows exactly the same thing.

      Java allows some platform specific coding, using add-on libraries. Unfortunately, there are many important platform-specific things I can't do with Java out of the box, or even with existing third party packages. Furthermore, writing native bindings to C/C++ libraries in Java is a lot of work compared to C#.

      You say that Mono ships with native linux desktop bindings. Well, there are GTK bindings for Java,

      Java doesn't ship with Gtk bindings, even on Linux, and most Java users on Linux aren't going to have them installed. All Mono users on Linux are going to have Gtk# installed, and, in fact, almost all Mono applications for Linux are written with Gtk#.

      there is SWT for java which uses native widgets and there's Swing and AWT as well.

      Neither SWT nor AWT are native bindings; they happen to use native widgets, but they don't give you anything like the native APIs, and they don't give you full access to native functionalities. And neither of them are desktop bindings, meaning they don't let you integrate fully with the desktop (although SWT seems to be better than Swing in that regard). AWT is so poorly designed and limited that it is useless anyway. And SWT doesn't ship with any certified Java implementation.

      Furthermore, you can write native interfaces in Mono without ever having to write a line of C or C++ code--you just declare the C library interface in your C# code and call it. Try doing that in Java.


      But this is exactly what Java does offer you through the GTK bindings or via SWT.

      You misunderstood; I wasn't talking about "GUI interfaces", I was talking about "library interfaces", as I clearly stated. Java-GTK and SWT have nothing to do with calling arbitrary native C libraries.

      In C# I can call any C function in any dynamic library without writing a line of C/C++ code. I can write C# code to efficiently access native data structures, to allocate and free memory with malloc, etc. You can't do that in Java, not the way it is, and not with any add-ons.

      I'm sorry, but your problem is that you really just don't know what you are talking about and have not the slightest clue about what C# is. As a result, you attribute any criticism of Java to some kind of unfair persecution. But Java simply happens to be not very good technology; it never has been, Sun has had nearly a decade to fix it, people have given Sun extraordinary support and leeway, and they still have failed.

      At this point, Sun Java is more of a marketing construct, a religious and blind pursuit of WORA that is of no use to most people. C# has taken Java and turned it into a fairly reasonable general purpose language that integrates well with existing systems, but can also be used to write WORA software, if you really want to. It's embarrassing, but in this case, Microsoft really does have the better technology. It's particularly embarrassing not because Microsoft had any great insights (they have just done something reasonable), but because Sun has been so incredibly stupid.
    75. Re:Will the coders use it though? by kaffiene · · Score: 1

      I see - I don't agree with you so I must misunderstand C#. Sure, whatever.

      For someone who has "not the slightest clue about what C# is" I could have sworn that's the programming language I've been using for the last year. But no, you tell me it's not and obviously you know everything, so I'll defer to your superior powers of ESP.

    76. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      For someone who has "not the slightest clue about what C# is" I could have sworn that's the programming language I've been using for the last year.

      There are lots of coders who don't know what's going on with the languages they are using--just witness the hordes of VB.NET programmers. It's not surprising that you are like that.

      I see - I don't agree with you so I must misunderstand C#. Sure, whatever.

      No, it's not a question of "disagreeing", you simply don't understand C# (and you don't understand Java very well either).

    77. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      What editor / IDE do you use in Linux? How do you find Monodevelop comares with VS, if you use it?

      EMACS, BITCH!

    78. Re:Will the coders use it though? by Anonymous Coward · · Score: 0

      I know some people who use that same excuse as a reason to deploy Windows.

      Actually, I think Hitler used that same excuse as a reason to kill Jews.

  2. Haha by Anonymous Coward · · Score: 0

    When I first read this (slightly stoned) I thought the article headline was reading "Tours Mono" as in the disease...

    I was slightly confused, as I thought that required kissing girls / sharing Mountain Dews, and that seems slightly out of place here...

  3. Libraries by vontrotsky · · Score: 1, Interesting

    Even though C# is a standardized language the .Net framework is not. I'm not sure we can be confident that Microsoft can't legally stop open source implementations of the the framework. Does anyone know what protection mono (and .gnu) have against legal threats?

    Jeff

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

    2. Re:Libraries by Anonymous Coward · · Score: 0

      not standardized?

      http://msdn.microsoft.com/net/ecma/

    3. Re:Libraries by toccoa · · Score: 1

      To me, this is clearly the biggest worry (certainty?)

      Microsoft has not bee bashful about being very competitive using lawyers, non-public APIs and changing APIs.

      It seems quite problematic to spend the effort in the hopes that it will not be an issue here.

    4. Re:Libraries by Anonymous Coward · · Score: 0

      Hey dipship, the Common Language Infrastructure standard covers the base libraries too.

    5. Re:Libraries by Anonymous Coward · · Score: 0

      Right after Mono came out with 1.0, MS released a 2.0 Beta. In short, they can keep moving the goalposts and Mono will always be seen as "behind" or "not quite there yet" as a compatibility solution (even if it is a good platform in it's own right).

      OTOH, the existance of Mono gives Microsoft Salesmen a ton of credibility against Java as a "standard" and "cross-platform". The core developer group (VB/ASP) mostly does not care.

      Besides, most of this MS Patent stuff is purely vicious FUD spread by the Java/C++ squad. Open Sores types save the worst for their own.

    6. Re:Libraries by yamla · · Score: 1

      Yes, exactly. C# is standardised. The .NET framework is not. You simply provided additional support for this position.

      --

      Oceania has always been at war with Eastasia.
    7. Re:Libraries by melvin22 · · Score: 1

      Even if MS can stop them from using the .NET framework, I'm pretty sure I've seen (on some mailing list somehwere, or on a blog...don't really remember) Miguel talking about the fact one could develop applications using C# and GTK#, and make it run on Windows and Linux. So, one would be developing trully cross platform application without necessarily using the .NET framework.

      People sometimes forget that Mono isn't just an implementation of the .NET frameworks, but it inludes much more.

    8. Re:Libraries by dekeji · · Score: 1

      Even though C# is a standardized language the .Net framework is not.

      Mono is an implementation of ECMA C#, bindings of C# to OSS libraries like Gnome, Gtk, etc., and a reimplementation of the .NET framework.

      I suspect most Mono developers never touch Mono's .NET framework (it's a separate download that you don't need unless you specifically want to develop .NET applications), so what Microsoft does or does not do with .NET doesn't matter to them.

      I'm not sure we can be confident that Microsoft can't legally stop open source implementations of the the framework. Does anyone know what protection mono (and .gnu) have against legal threats?

      Well, the most straightforward protection you can have is that you can use Mono without using the .NET framework; most people do that for technical reasons alone.

      Beyond that, you can never be confident that someone with deep pockets isn't going to sue you if you sufficiently annoy them. However, the legal situation surrounding Mono's .NET implementation (which, again, you probably wouldn't be using anyway) has been scrutinized very carefully now, and all the facts are well known: all the patents that could apply are on the table, all the statements from the major players are out, etc. I haven't seen any smoking guns; if you find any, let us know.

    9. Re:Libraries by AuMatar · · Score: 1

      Standardized doesn't mean shit. You can legally patent a standard, which would make any other implementation infringing. And thanks to the idea of submarine patents, we can't tell if MS has done this or not. I'd be highly shocked if they haven't, though.

      --
      I still have more fans than freaks. WTF is wrong with you people?
    10. Re:Libraries by zhenlin · · Score: 1

      Thats basically C#, the VM and the core libraries. What about the APIs that are so harped upon like Windows.Forms or ASP.NET etc.? I think, when people think of .NET, they think of those as well as C#, the VM and the core libraries, rather than only C#, the VM and the core libraries.

    11. Re:Libraries by AstroDrabb · · Score: 1
      +5 Informative? Maybe +1 half-Informative.

      Yes, C# the language and CLI are both ECMA. However, what are MS .Net developers going to use most? Win.Forms and Asp.Net. Those are the two biggies and guess what? They are not a standard and will never be. This is MS's lock-in. Did you really think MS would make something trully x-platform for all developers to use and potentially take business away from their monopoly? Also, ever hear the term submarine patent? MS could have a patent waiting somewhere to bring Mono down. I personally use Mono and like it, though I think it could be on shaky grounds if it touches any thing that MS has a patent on.

      --
      If Tyranny and Oppression come to this land,
      it will be in the guise of fighting a foreign enemy. -James Madison
    12. Re:Libraries by Anonymous Coward · · Score: 0

      Scroll down that page a little farther next time.

    13. Re:Libraries by ajp · · Score: 1

      And five replies telling me what a fool I am...

      Parent post said this: "I'm not sure we can be confident that Microsoft can't legally stop open source implementations of the the FRAMEWORK." My response: the FRAMEWORK is standardized, and by dint of being standardized, is open to other implementations. Not my fault that the parent post was titled "libaries" when it discussed "frameworks."

      I did NOT address:

      1. Whether MS will use nasty legal techniques to prevent other implementations. They haven't and I have no (logical or economic) reason to believe they will. Think what you want: I sure won't change your mind. But note that Miguel still hasn't been assassinated.

      2. Whether MS will allow the libraries to be copied. I've done very little with Winforms but it appears to me that they're more useful on Windows. At some point aren't system API's more relevant to the actual system? I mean, you wouldn't expect MFC to work on X, would you? Or Cobalt to work on Windows?

      3. Whether MS is evil. Answer me this: What did Coca-Cola do last year in patent law? Did you drink at least one Coke? Whom does your bank support politically? Do you agree with their activism? How did your broadband ISP manage to bring that fat pipe to your bedroom? Are they 3\/1|_ bastards too? Did they have real competition in the marketplace?

      4. Whether I have enough karma to burn with this post. Here's my best try for a +5, Funny: These two ducks walk into a strip bar...

    14. Re:Libraries by ergo98 · · Score: 1

      Just to clarify, the following is the definition of the .NET Framework per MSDN:

      "The .NET Framework has two main components: the common language runtime and the .NET Framework class library. The common language runtime is the foundation of the .NET Framework. You can think of the runtime as an agent that manages code at execution time, providing core services such as memory management, thread management, and remoting, while also enforcing strict type safety and other forms of code accuracy that promote security and robustness. In fact, the concept of code management is a fundamental principle of the runtime. Code that targets the runtime is known as managed code, while code that does not target the runtime is known as unmanaged code. The class library, the other main component of the .NET Framework, is a comprehensive, object-oriented collection of reusable types that you can use to develop applications ranging from traditional command-line or graphical user interface (GUI) applications to applications based on the latest innovations provided by ASP.NET, such as Web Forms and XML Web services."

      Cheers.

    15. Re:Libraries by ajp · · Score: 1

      Point taken, thank you. But remember, MSDN is a marketing organization. Google "Raymond Chen" and "MSDN" to see what MSDN really is.

      My definition of the Framework is the Common Language Runtime (known as the Common Language Infrastructure to ECMA). The Base Class Library is the set of Windows APIs built upon the CLR/CLI.

      Keep in mind that I learned Java with AWT before Swing came along. But Swing didn't change Java. It changed the GUI APIs.

      I'm not big on libraries. And I hate GUIs. Them there would be my biases.

    16. Re:Libraries by ergo98 · · Score: 1

      Interestingly we have entirely the opposite opinions on the terminology - I have always perceived a "framework" as being a standard class library, and when I hear .NET Framework I think of only the class library. I consider the CLR the platform that the framework happens to target. Microsoft screwed the pooch with the terminology of that.

  4. 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 kyknos.org · · Score: 1

      AFAIK Gimp is written in C, not C++

      --

      SHE does throw dice.
    3. 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.

    4. Re:looks promissing but what is it really against? by Anonymous Coward · · Score: 0

      Just as a thought, maybe Gtk/Gdk/Glib could use some more #ifdefs. Because right now, it's pretty 3rd rate on Win32.

    5. Re:looks promissing but what is it really against? by sloanster · · Score: 1

      I don't imagine wintendo is a high priority for the gnome developers - gotta take care of the core linux market, the windows port is more of an afterthought.

    6. Re:looks promissing but what is it really against? by Anonymous Coward · · Score: 0

      True, which is probably why it shouldn't be mentioned as a 'cross-platform toolkit'.

    7. Re:looks promissing but what is it really against? by NickRuisi · · Score: 1

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

      If you write "pure .Net" (i.e. no native calls) and use the class libraries supported in Mono, you can compile on windows and run your exe in the Mono runtime. I've done it before.

      The GTK# class libs (wrappers around GTK+) exist in both linux and windows versions. Just read the article for a sample of this.

      I can even access a SQL server database from my application runing on a linux box without any re-compilation (thanks to the FreeTDS project!).

    8. Re:looks promissing but what is it really against? by Anonymous Coward · · Score: 0

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

      Mozilla and OpenOffice are, in fact, written in C++.

    9. Re:looks promissing but what is it really against? by rd_syringe · · Score: 1

      And you also have limited ways to really integrate with the platform's desktop.

      I'm posting this in the middle of writing a custom Outlook Bar control for my application in .NET.

      Seems kind of pointless, actually--isn't the point of being cross-platform to not be platform-specific? If you need to integrate into a specific desktop, you'd be writing something that's not platform-independent anyway.

    10. Re:looks promissing but what is it really against? by Anonymous Coward · · Score: 0

      An implementation is automatically chosen by the configure script...

      Semantically, it's just one big #IFDEF block, then, instead.

    11. Re:looks promissing but what is it really against? by bofkentucky · · Score: 1

      Not when in the future you generalize it into

      barConstruct(platform){
      if(platform=windows){
      construct.OutlookBar();
      }
      elsif(platform=OSX){
      construct.MailappBar();
      }
      elsif(platform=linux){
      construct.EvolutionBar();
      }
      }

      --
      09f911029d74e35bd84156c5635688c0
    12. Re:looks promissing but what is it really against? by AstroDrabb · · Score: 1
      What I *really* want to see is mod_mono with class wrappers for the identical IIS hooks.
      What doesn't mod_mono support yet? According to the Mono ASP.NET site:
      ASP.NET support is divided in two pieces:

      * Web Forms (Web Applications infrastructure).

      * Web Services (the SOAP-based rpc system).

      Both are fully functional at this point. Publicly available applications such as IBuySpy, nGallery and many others are known to work.

      The Web Services stack is being used for commercial applications such as SourceGear's Vault. They even funded the development of our Web Services classes back in 2002. Another example is OpenLink's Virtuoso. People from OpenLink also contributed to Mono/
      --
      If Tyranny and Oppression come to this land,
      it will be in the guise of fighting a foreign enemy. -James Madison
    13. Re:looks promissing but what is it really against? by Abcd1234 · · Score: 1

      Umm, why not? Gtk, etc, works great on Linux, SunOS, FreeBSD, OpenBSD, etc, etc... oh, wait a sec, you didn't realize that there are more platforms than just Linux and Windows?

    14. Re:looks promissing but what is it really against? by Anonymous Coward · · Score: 0

      are you Hearn?

    15. Re:looks promissing but what is it really against? by Eponymous,+Showered · · Score: 1

      Hello OO? Polymorhpism? Inheritance?

      How about:

      BarConstruct(platform) {
      Class class = BarParentClass.getClass(platform);
      class.constructAppBar();
      }

      Whenever you start doing case statements/multiple if/elseifs in an OO language, think "polymorphism"!

    16. Re:looks promissing but what is it really against? by bofkentucky · · Score: 1

      I am not a programmer by trade, just a quick (java|perl)script implementation of handling constructing an app bar for a cross-platform .Net app

      --
      09f911029d74e35bd84156c5635688c0
  5. 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 AliasTheRoot · · Score: 1

      I would imagine it's on the roadmap for MonoDevelop.

      Side question, how far along in terms of usability, functionality is MonoDevelop compared to SharpDevelop? It's one of the Apps I used a fair amount on Windows and was fairly decent, not as good as VStudio but decent, and a code editor / ide is something I miss on Linux.

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

      I know it's not an integrated forms designer, but using Glade and monodevelop works fine.

      Check this out for an intro:
      http://primates.ximian.com/~edasque/projec ts/Tutor ial/glade2.html
      http://www.tomvergote.be/b2/archi ves/2004/05/01/gl ade-part-2-my-own-experiments/

      --
      Artists against online scams http://www.aa419.org/
    3. 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.

    4. 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/
    5. 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.

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

  6. 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 Woodie · · Score: 0

      I disagree. While Java makes some hard things much easier, it doesn't make things which should be simple, simple.

      The autobox/unbox and arbitrary parameter lists are just two examples. It's not so much that these things are hard - they're just verbose, and they distract you from solving your real problem with having to deal with dozens of little work-arounds. In short a lot of the early Java language choices result in a less than elegant, less than expressive chunk of source code to do simple things.

      This coupled with the ever increasing download size of the SDK leads me to believe it's not just "claptrap" when people complain about Java. Once you open the J2EE and EJB can-o-worms well you can virtually kiss simplicity goodbye. Hence a recent spate of books on simpler Java.

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

    3. Re:Bull by dekeji · · Score: 1

      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.


      I agree. And that's exactly what makes mandatory exception handling in Java such a problem: as you observe, programmers do, in fact, assume that certain exceptions can't happen. So, what do Java programmers do? They don't write a proper exception handler, they do write an empty catch block to make the type checker shut up. And, depending on the context, the result is a serious bug that wouldn't have been there without mandatory exception handling.

      Secondly, because Java programmers believe that exception declarations tell them where exceptions happen, they fail to take into account that every single line of code can throw exceptions that don't need to be declared. Therefore, they tend to leave out essential clean-up and error recovery code.

    4. Re:Bull by Duhavid · · Score: 1

      You have a bug with or without the exception handler. What the problem is is that with the empty exception handler, the bug will be silent and may be deadly. Without the exception handler, the exception will be expressed in a way that everyone can see, and the business of tracking it down can begin earlier. Should it be there? Sure, along with the cleanup / recovery code. Course, now, someone will mandate that exception handlers cant be empty. Then the programmer that use empty exception handlers will put in do nothing code to work around.

      Frankly, I dont like languages ( java or c# ) that tie my hands so much. I do like things that increase productivity and correctness, but it is annoying to run into artificial limitations. Like where you cant have standard "static, global scope" functions, so you end up working around that by having a Utility class ( or somesuch ), and declaring static functions there. The lack of multiple inheritance ( which, in general *should* be avoided ) caused me additional work on a project in C# that could have used it.

      --
      emt 377 emt 4
    5. Re:Bull by Anonymous Coward · · Score: 0

      You can't stop people from crappy programming, and there's an arugment for non-checked exceptions when doing prototypes etc.

      The big problem with .NET is that Framework itself does tell you what exceptions might be thrown. And neither does the documentation. And therefore it's difficult for the end-programmer to handle even most what might happen without abusing the QA process.

      Just wrapping and throwing a COM or Win32 exception was a pretty crappy design choice.

    6. Re:Bull by dekeji · · Score: 1

      The big problem with .NET is that Framework itself does tell you what exceptions might be thrown

      Neither do the Java libraries. They tell you about some exceptions that might be thrown, but that makes it all the more dangerous because people incorrectly assume that they know all the exceptions that might be thrown and leave out essential exception handling code.

      You should always write exception handling code as if anything could happen at any time.

    7. Re:Bull by alext · · Score: 1

      Well thanks for the heads up.

      I tried it and now I have 150 if/then statements around this one database call - is that OK?

    8. Re:Bull by BigJimSlade · · Score: 1


      Personally, I think the C# folks make too much of a big deal about the mandatory exception handling in Java.


      Not just the C# camp. Bruce Eckel spoke at PyCon this year about mandatory exceptions (an also why Java's new autoboxing isn't that useful, but I won't get into that)

      Python also subscribes to the "non-enforced exceptions" camp, and I happen to like it. If I am forced to deal with an exception right away, I usually have to shift my train-of-thought at least a little, which costs me time. Only a little usually, but it does add up.

      Usually, non-enforced exceptions and test-driven development (the only part of any software development methodology that I really subscribe to) go hand-in-hand. If you aren't catching a certain exception, the exception gets thrown at runtime, and you write a new test to handle how that code should react to the exception.

    9. Re:Bull by dekeji · · Score: 1

      I tried it and now I have 150 if/then statements around this one database call - is that OK?

      No, it's not OK. In fact, it's just an indication that you don't know how to handle exceptional conditions in your code correctly. Correct exception handling is actually far easier than what Java tries to force you to do, which is why Java's exception declarations are such a misfeature.

      Correct exception handling means that you identify a complete collection of locations in the code where you can safely reset your program to a known state and you place exception handlers in those locations (such a complete collection is usually quite small--often, only a single exception handler suffices). Furthermore, you identify those places where you need to protect resources with "try ... finally", and you use "try ... finally" religiously in every single such place, whether you believe that an exception can be thrown there or not. All other exception handlers are optional as far as correctness is concerned; you only add them if the functionality of your program calls for it, and that will be obvious from its requirements.

    10. Re:Bull by michaelggreer · · Score: 1

      I prefer compile-time errors to runtime errors, which I guess is the purpose of enforced exception handling: you get told what might happen while you are coding, not later.

    11. Re:Bull by Slime-dogg · · Score: 1

      If you're writing a utility class with a bunch of global static functions, perhaps you shouldn't be using C#, or any other OO language. Use C or something else. The idea of a global static function outside of a class is more of a procedural thing, ie C. When you commit to using an OO language, you commit to using classes and not using these functions. It's just the paradigm, and it's nothing to bitch about. I've written a bunch of applications, and do use global static functions in some classes, but they are always relevant to the content of the class.

      An option that you do have is to declare those functions in the class of your application, and make sure that any object that you use has a reference to your application. Then, if you want to make a call, just use that reference. Then, at least, those functions have the context of your application, and are not out of place.

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    12. Re:Bull by Duhavid · · Score: 1

      Agreed that it is more of a procedural thing, but there are a ( limited ) number of times when you need a short stupid plain old function, because you dont want to create whole class for that function, and tagging it into every class that uses it defeats one of the benefits of OO programming. And saying I should be using C misses the point. The biggest part of the work correctly uses and benefits from OO thinking and doing. And declaring the function in the class of the application ( where such exists ) may not give it visibility in other classes without making an unwanted dependancy.

      Try it from this angle.... Shouldnt the tool be enabling rather than limiting? To the extent possible, of course. Please dont interpret this as anything against good practice, or as a call to enable sloppy stupid programming. Thought should be given to find a way within the logical model the tool promotes, but sometimes ( very very small number of times ) you need to go outside a bit.

      --
      emt 377 emt 4
    13. Re:Bull by Anonymous Coward · · Score: 0

      Maybe you guy need to program in java. In Java, you don't need to tell users to catch exception if that's what you want. Sun wants users to catch exception. Clear enough? Probably not. So here's the lyric:

      You can have run time exception if you wish. Such as:
      Integer.parseInt(...).

      It's choice. Java is just better. I don't have problem with exception at all, and been developed with it for a long time.

      Then with empty exception, you have a bug, but your server still running (normally because you test normal stuff first right?).

      Without exception, your server may explode while you're not there.

      Yes, there's silent death things, but nothing is perfect, and after these many years with Java, it's not bad at all for me (desktop, server, client, web, j2ee, corba, soap, you name it).

    14. Re:Bull by Anonymous Coward · · Score: 0

      try
      {
      subscribes to the "non-enforced exceptions" camp
      }
      catch( MixedMetaphorException mme)
      {
      sheesh.
      }

    15. Re:Bull by johannesg · · Score: 1
      If a function:

      - does not operate on any class;

      - and does not maintain state between invocations;

      - and is not "obviously" part of a group of similar functions;

      ...then it has no business being inside a class. The OO paradigm does not require that everything must be in a class. Instead it requires that related data and functions operating on that data are grouped together in a class. That does not exclude the possibility of functions that exist on their own, simply by virtue of not being related to anything.

      Your idea with references is something I consider rather dangerous. If something has global scope (and since you are apparently passing the reference to _everything_ it effectively has global scope), you should formulate your program in a way that makes this clear. The correct way to do this is by creating a global variable. Not using a global variable means:

      - you will create many, many aliases for your "almost global" variable. I consider aliasing a far greater evil in this case.

      - you will need to pass that reference everywhere, and store it in every class. This is ugly, and costs time and memory for no good reason.

      - you are hiding vital structural information about your program.

      Really, it is important to realize that all those programming rules are _really_ just guidelines that happen to be true 999 out of every 1000 times. That last time, though - you must break the rule to create the "best" program.

    16. Re:Bull by Slime-dogg · · Score: 1

      Typically, an object will know what it's parent is. In terms of an application, the parent would be the main executable class. If you want a "global" function, then put it in the application class.

      There is no real danger of having a reference to the parent object. Garbage collection will take care of things, so you don't have the problems you have in C++. You can't accidently vape the parent object if another object references it, you can in C++. Once the application goes bye-bye, everything goes.

      It doesn't really cost time or memory or whatever. Just pass "this" in the constructor. It's a pointer in reality, so there's a minimum of resources taken. If you are programming with C#, it's rather silly to worry about a pointer taking up too much memory. It's not C.

      You aren't hiding structural information about your program. You know what classes contain things, you wrote them. When you call something, you use the variable to call it... so you know that the object has such and such function. Besides, you ought to be documenting things anyway, so if you don't know the structure of your own program... you shouldn't be in the business.

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    17. Re:Bull by johannesg · · Score: 1
      I'm not sure if you persist in your foolish ways because your language of choice forces you to or because you actually think it is the best thing to do? I could respect the former, but in the latter case you really should take a step back and reflect on what you are doing.

      As for your comment that "you know what classes contain things, you wrote them": I'm sure you realize that argument could be used to defend every piece of bad programming on the face of the planet.

      "Yes, I know this is evil uncommented spagetti code, but I know what it does - I wrote it!"

      But you are right, in a sense: if you are working alone and know everything your program is doing, you can certainly do as you please. It is only when you get out into the world and start programming together with other people (so you don't know what everything does, and you didn't write everything) that things like program clarity become an issue.

      In the meantime, I continue to believe that software engineering educations fail very badly in that they teach people absolute rules, instead of installing some common sense. And common sense dictates that if something is a global function (and we recognize it because it has global scope, semantically speaking, and no persistent memory) than you shouldn't attempt to hide that fact just to satisfy some arbitrary constraint.

    18. Re:Bull by Slime-dogg · · Score: 1

      The same argument applies to your situation. In working with non-object oriented code, there will be a procedure or function call in the middle of a chunk of code, and I won't know where it comes from. I then end up wasting time searching through the included header files for a reference to that function...

      My way works even when you're working with other people. They see the type of the object that the parent is. If they use some sort of generic type, it's a bit more troublesome, but that usually falls into the realm of general services/etc... things that don't need or care who called them. In that case, however, every (public) function in the web service should pertain to whatever that web service is. Back to the types, though, other people will be able to tell immediately where/what that object is.

      I also have problems with this "common sense" that you speak about. It's best just to stick with best practices, because they lead to readable and maintainable code. It isn't spaghetti code if you're writing a self-contained application and have references to parent object in other objects. Any code that affects the parent objects still exist within the parent, not the child. The child can make calls to the parent's exposed functions just like any other function. That's generally how events and event handlers work, and those are nearly impossible to avoid when writing a UI.

      Software engineering curricula typically teach programming to the point of writing documentation. Write your code so it's readable. Write your code so that it's easy to document. Avoid huge nests, avoid functions over X number of lines. Name your variables with relevant names, write an overview of the functionality of each function/procedure/class. When it comes to actual structure, follow the guidelines of whatever language that you are dealing with. If you work with C, encapsulate your code in a library... know that your library will be automatically included in your compiled code (unless it's a dynamically linked library, which is just putting the object code in a separate place). If you work with Java or C#, keep the functions relevant to the functionality of each object, and use the structure of the application to work with those objects. It's fairly simple.

      Perhaps it's just a misunderstanding of how to do OO programming that gives you this belief.

      --
      You need to restart your computer. Hold down the Power button for several seconds or press the Restart button.
    19. Re:Bull by johannesg · · Score: 1
      In working with non-object oriented code, there will be a procedure or function call in the middle of a chunk of code, and I won't know where it comes from. I then end up wasting time searching through the included header files for a reference to that function...

      This is a bogus argument: if you see a function call dereferenced from some object pointer, you still need to look up the object type, find its associated file, and then search that file for the function. You end up with exactly the same problem. Besides, who does this anymore? In a modern development environment you can just click on the function name and choose "go to definition" or "go to declaration".

      I also have problems with this "common sense" that you speak about.

      Well, if it is any consolation: you are certainly not alone in that.

      It isn't spaghetti code if you're writing a self-contained application and have references to parent object in other objects.

      No, indeed: that would be (the beginning of) spaghetti *data* (as in, a damn mess of pointers or references pointing to a thousand different things - or not, because whoever wrote the software liked making aliases for everything so you will never be sure what is going on exactly when you do something to an object...). That is just as bad as spaghetti code, but unfortunately software engineering courses have a tendency to overlook it as a source of problems. These days I think it is actually the great scourge.

      If you work with Java or C#, keep the functions relevant to the functionality of each object

      That was exactly what I was saying. Don't go about inventing classes just to hold functions that would otherwise be global. And don't just add them to the application class just because it happens to be there.

      Perhaps it's just a misunderstanding of how to do OO programming that gives you this belief.

      I will certainly admit that I will sometimes do things that are considered unorthodox. That doesn't mean I never follow any guidelines or best practices; on the contrary, I follow them for about 99.9% of the time. Just to make sure we understand each other: I have been working in C++ for over six years now (before that I wrote software in a variety of other, mostly non-OO languages). I've written over 200,000 lines of C++ code in those years (most of it on software for testing space craft, where bugs may translate into hundreds of millions of euros of damage), and whenever code reviews come up people comment on the elegance and simplicity of my solutions. Even though I sometimes use a global function or variable ;-)

    20. Re:Bull by BigJimSlade · · Score: 1

      try:
      to_to_get_your_point_across()
      except GrammarAndLanguageNazisAreNeverHappy:
      go_figure() :)

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

  8. 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 Anonymous Coward · · Score: 0

      The cool thing is that i can choose lisp/perl/python/java/whatever when developing for .NET.

    3. Re:Fills a needed gap by theantix · · Score: 1

      (perl,pythong,java,etc)

      I'm very happy to see that I'm not the only person in the world to accidentally type "pythong" on a regular basis. I've even got it aliased on my desktop since I mistype it so often.

      --
      501 Not Implemented
    4. Re:Fills a needed gap by I_redwolf · · Score: 1

      Except that isn't the way it works, you won't be able to just easily compile your application on Linux.

    5. Re:Fills a needed gap by metallikop · · Score: 1

      why not?

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

  9. don't cry for US miguel by Anonymous Coward · · Score: 1

    mono is more of an annoyance than any real system ailmeNT?

    tell 'em robbIE?

  10. Microsoft and Lawsuits by Azeron · · Score: 1

    To the best of my knowledge, Microsoft has never sued anyone for violating a patent, although they have been the target of such suits. Copyrights Yes, Patents no. I don't think that they feel thats its in their best interests to deterring developers from working on microsoft technologies.

    1. Re:Microsoft and Lawsuits by njcoder · · Score: 1

      There was an article (that I don't have time to find right now) about how MS is expanding it's Patent portfolio. Since they need to keep up their rapid pace of growth, they are planning on taking a hint fro IBM and the billion dollars a year they make from their patents.

    2. Re:Microsoft and Lawsuits by Waffle+Iron · · Score: 1
      To the best of my knowledge, Microsoft has never sued anyone for violating a patent

      Wait until they have their first really bad quarter. Then we'll see what happens.

    3. Re:Microsoft and Lawsuits by black+mariah · · Score: 1

      So around the year 2150, MS will sue someone over a patent.

      --
      'Standards' in computing only impress those who are impressed by things like 'standards'.
    4. Re:Microsoft and Lawsuits by Waffle+Iron · · Score: 1

      Since the vast majority of their revenue comes from maintaining huge profit margins on two software categories that are rapidly undergoing commoditization, they are in a rather unstable situation. They have not yet successfully demonstrated the ability to move into new areas on the same scale as their current primary businesses. Most likely, this will catch up with them and they will have a very bad quarter within 5-10 years, if not sooner.

    5. Re:Microsoft and Lawsuits by AstroDrabb · · Score: 1
      But when has anyone tried to use one of their patents to make a profit or used one of their patents that took business away from them? The reason they have not sued over patents is because they never needed to. If a big company touched any of MS's patents, then MS and the big company usually work together and swap patents which is always cheaper then litigation.

      Do you really think that if I built a company that was selling technology that MS had patents on, that they would just sit back and let me profit?

      --
      If Tyranny and Oppression come to this land,
      it will be in the guise of fighting a foreign enemy. -James Madison
    6. Re:Microsoft and Lawsuits by Anonymous Coward · · Score: 0

      I can almost hear you slashdweebs praying at night for Microsoft's downfall. But don't worry, Microsoft will be around and prosperous long after your in the ground.

    7. Re:Microsoft and Lawsuits by Waffle+Iron · · Score: 1

      Bad quarter != downfall. At any rate, my assessment is far more realistic than the possibility that they will post a profit for the next 600 consecutive quarters, as the grandparent poster seems to think.

  11. 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 Anonymous Coward · · Score: 0
      "making me ill. :-("


      You are already a sick-minded slashdotter, why do you get ill over getting a better system anyway?

    2. Re:blech! by metallikop · · Score: 1

      It's called cross platform compatability. It makes perfect sense.

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

    4. Re:blech! by DAldredge · · Score: 1

      If you don't like it don't fscking use it.

    5. Re:blech! by Anonymous Coward · · Score: 0

      Its not a windows convention, camelCase and PascalCase along with hungarian notation are all independant.

      Hungarian is used for "unmanaged" langauges mostly and the other for managed and better IDEs that use metadata to give a better informaton UI for datatypes. Hungarian notation is there for developers that use notepad.exe or vi or emacs with no UI cues (intellisense etc) for types.

      Uninformed zealot. Whats the matter? DO you feel threatened beceuase youre 1337 status for having unreadable code using hungarian notation threatens youre job safety? Dont feel so big now? Tard.

    6. Re:blech! by turgid · · Score: 1
      I was referring to putting ".exe" on the end of the names of executable files. Some of us have metadata in our filesystems for that sort of thing...

      Uninformed zealot. Whats the matter? DO you feel threatened beceuase youre 1337 status for having unreadable code using hungarian notation threatens youre job safety?

      If only I were allowed to write code. The nearest I get is the odd bash script and a Makefile once in a while :-(

    7. Re:blech! by Anonymous Coward · · Score: 0

      When is Miguel going to port the windows registry?

      That's in Gnome, isn't it?

    8. Re:blech! by Anonymous Coward · · Score: 0

      It's a case of what you're used to, I suppose.

      I personally prefer ThisNamingConvention to theOtherNamingConvention, but I'm pretty sure that it's just because I've been exposed to more code which uses the former.

      Of course, I can justify my prejudice: It's more consistant -- if some words are going to be capitalized, then they should ALL be capitalized.

      But I can just as easily justify the other one: The capital letter indicates a word-break -- it's a space-less space -- we don't need a space-less space before the first letter (because we've already got a REAL space before it), so it's only logical that the first letter should be lower case.

    9. Re:blech! by Anonymous Coward · · Score: 0

      > Some of us have metadata in our filesystems for that sort of thing...

      And those people aren't Unix users. Are you using the BeOS version of Mono or something?

    10. Re:blech! by Space_Soldier · · Score: 1

      The reason for it being upper case is because of properties: private int numeber; public int Number { get { return number; } set { number = value; } } If the convention was to use lower case, it would have forced you to name number as m_number, _number or some other ugly naming convention. For languages that do not support properties like C++, you use setNumber() and getNumber(), and don't have to rename "number" as "m_number".

    11. Re:blech! by turgid · · Score: 1

      And those people aren't Unix users. No? Doesn't the "x" permission count as a form of metadata? Or has my friend misinformed me? Or are we arguing over semantics?

    12. Re:blech! by Anonymous Coward · · Score: 0

      I think he means that he is using an OS where executability is handled by permission rather than by filename. Executability by filename probably seemed reasonable back in the days of CP/M, but today it just seems dumb. It is especially bad when combined with an OS that often and not entirely consistantly likes to hide the extension when displaying filenames.

    13. Re:blech! by hey · · Score: 1

      gconf == regedit

    14. Re:blech! by Anonymous Coward · · Score: 0

      >What was the reasoning behind making the first letter of the method names upper case

      it's known as Pascal case there guy and is NOT required. It is a simple naming guideline that helps code readability in between projects. The exact choice could as easily have been for camelCase instead. Just Deal With It. NOT A BIG ISSUE. If you don't like then don't do it!

    15. Re:blech! by dekeji · · Score: 1

      What was the reasoning behind making the first letter of the method names upper case?

      It's Microsoft's coding conventions. They apparently go back to some people the hired from other well-known research labs in the distant past. I think it's mostly an indication of the kind of insulation Microsoft has grown up in.

      I'm sorry but the thought of microsoft's mangled conventions polluting the linux/unix world is making me ill. :-(

      It's not pretty, but, frankly, from a traditional UNIX point of view, neither are the mixed case names so popular in other Java and C++ libraries either.

    16. Re:blech! by Anonymous Coward · · Score: 0

      Microsoft pollution must be eradicated, .exe's and .dll's are windows naming conventions that reflect the terrible init design of that family of operating system. The patent concerns with .NET libraries are enough to keep the pollution off of our systems here.

    17. Re:blech! by Anonymous Coward · · Score: 0
      If you don't like it don't fscking use it.

      Don't you mean "don't CHKDSKing use it"?

    18. Re:blech! by Anonymous Coward · · Score: 0

      Well, no more than the NTFS "Execute" permission. The actual "how do I execute this" logic is not based on filesystem info.

      I kinda suspect that Linux itself might use the "EXE" part to tell the difference between PE-format and elf-format, but I'm not really sure. Ximaian might have only done it that way because "XCOPY Deployment" is a .NET marketing point.

    19. Re:blech! by spitzak · · Score: 1

      In C++ I always use this rather than the set/get style, which is very similar and makes the "get" calls much more readable, and in some cases makes "set" nicer (in other cases it makes it not as nice). This has the same name conflicts as what you said for C#:

      private:
      int number_;
      public:
      int number() const {return number_;}
      int number(int v) {return number_ = v;}

      I do have problems with your reasoning. Renaming by changing the case will break searches, unless you assumme the language is not case-sensitive, but if the language was not case-sensitive such renaming would not work! Underscore is pretty well established as indicating internal stuff.

      Even if such renaming is considered a good idea, I would much prefer if it was reversed. I like to use capitalized names for classes, and this forces a member function to have a different name than the class, ie I have to make the method be "Rectangle ThisRectangle" rather than "Rectangle rectangle".

    20. Re:blech! by turgid · · Score: 1
      I kinda suspect that Linux itself might use the "EXE" part to tell the difference between PE-format and elf-format, but I'm not really sure. Ximaian might have only done it that way because "XCOPY Deployment" is a .NET marketing point.

      And there was me thinking that "magic numbers" were the way to distinguish the different types of file. I usually run the "file" command when I'm in doubt. Must be getting old :-)

    21. Re:blech! by ncaHammer · · Score: 1
      FYI MS is against of using the regisrty for .net apps
      Use XCOPY or FTP.

      Because common language runtime applications are self-describing and require no registry entries, you can use XCOPY or FTP to simply copy the application to an appropriate directory. The application can then be run from that directory.
    22. Re:blech! by noda132 · · Score: 1

      gconf == regedit

      To quote Jorge Castro, here:

      GConf is nothing like the Windows Registry, except for the similar appearance of their respective editors. If Mr. Petreley cares to compare and contrast GConf and the Windows Registry he would know this. In fact Nicholas, I will paypal you $100 US if you can name three architectural similarities between GConf and the Registry.
    23. Re:blech! by Anonymous Coward · · Score: 0

      And, magic number != filesystem metadata, which was the point all along. (even windows uses magic numbers to determine the exe format: DOS/Win16/Win32/OS2/etc)

    24. Re:blech! by turgid · · Score: 1
      And, magic number != filesystem metadata, which was the point all along

      And my point was that you can have many types of executables. Scripts can be executable too.

    25. Re:blech! by Space_Soldier · · Score: 1

      The Win32 api has always had upper case first char; this might be another reason. Method names should have a verb. getNumber() is much better than number().

    26. Re:blech! by nikster · · Score: 1

      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.

      They provide much needed competition. Because of this, Java is going to get better. Also, different approaches might open up new avenues... I am particularly interested in how Gtk# will match up with Swing.

      Already, improvements from c# have made it into Java. Others will hopefully make it into future versions. Like c#'s event handling syntax:
      txtRegex.Changed += new EventHandler(ChangedSomething);

      i would love to have that in Java. i am always kind of annoyed with having to write some anonymous inner class to call my event handling method. (note to Sun: event handling. it shouldn't be difficult.)

    27. Re:blech! by Anonymous Coward · · Score: 0

      Still better then the pain in the ass premision bit BS used on link.

    28. Re:blech! by snkline · · Score: 1

      This is perhaps the thing I like best about MS's migration to .Net. I HATE HATE HATE the registry.

    29. Re:blech! by Brandybuck · · Score: 1

      When is Miguel going to port the windows registry?

      As soon as Bill Gates says "I think it's time Miguel..."

      --
      Don't blame me, I didn't vote for either of them!
    30. Re:blech! by CableModemSniper · · Score: 1
      I've always thought (but never actually put into practice) that an interesting way to do it would be:
      template<typename T>
      Property
      {
      private:
      T * data;
      public:
      Property(T * s) : data(s) {}
      virtual Property<T>& operator=(const T& what)
      {
      *data = what;
      return *this;
      }

      virtual operator T()
      {
      return *data;
      }

      };

      //and then

      class Someclass {
      private:
      int m_x;
      public:
      Property<int> x;

      Someclass() : x(&m_x) {}
      };

      Someclass inst;

      inst.x = 3;
      cout << inst.x + 7 << endl;

      etc.
      --
      Why not fork?
    31. Re:blech! by spitzak · · Score: 1

      Probalby want "T * const data" so that the pointer is known to not change. Then maybe a compiler would be able to optimize this out to direct modification of the location. But I kind of doubt any compiler will manage to do that...

  12. Great news! by Anonymous Coward · · Score: 0

    Excellent! Java clone for VB programmers on Linux is finally here!

    HERE HERE!

    I think someone needs to create a C clone called "Q." Make it almost exactly the same, with a little less support, and it would be perfect.

    Also, we need to make sure some reputable company patents the technology to ensure it says an open alternative to C (you know, SCO, Infinium labs, etc)!

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

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

    1. Re:Just a bit biased.... by dekeji · · Score: 1

      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?

      It doesn't matter because that's not what Mono is about. Mono has two sets of APIs: OSS APIs and .NET APIs. You use the .NET APIs only if you either are trying to port Windows software to Linux or if you are a masochist. Most OSS developers are going to stick to the OSS APIs and never even install the .NET stuff.

      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?

      C# and Java are quite similar, and C# is based closely on Java. But there are differences: C# allows you to declare unsafe modules, C# makes it easy to write platform-specific code, and C# has some other significant language differences. Whether that makes C# "better" or "worse" is a matter of perspective. Personally, I think it makes C# a better language, but there are obviously Java developers who vehemently disagree. Ultimately, you'll have to make up your own mind and vote with your feet.

    2. Re:Just a bit biased.... by mackstann · · Score: 1

      Who said it was intended to be objective? I didn't get that impression at all.

    3. Re:Just a bit biased.... by Anonymous Coward · · Score: 1, Informative

      While C# and Java are very similar looking, the difference between .NET and Java is huge.

      A couple of key differences....

      - .NET's garbage collection is not based on reference counting, but is actually a rooted reference map and is absolutely gorgeous to behold - heap allocations are identical in process time to stack allocations (unless the heap allocation triggers a GC) providing an incredible speed increase.

      - Everything in .NET is derived from the base class object. In Java, native types (int, float, etc) are not. Although Java 1.5 syntactically supports calling of methods on native types, behind the scenes a method call on type int boxes that type up to a type Integer, silently incurring an allocation, copy and deallocation cost. In .NET, method calls are permitted on value types and those types only need to be boxed when explictly casted to type "object".

      - .NET supports value-types, or types derived from
      object which can be stack allocated. In Java, native types can be allocated on the stack, but the user cannot define new native types, and there are no methods assigned to the existing native types. All custom objects must be heap allocated.

      - In Java, every method is virtual by default. In .NET, a method is only virtual if explicitly marked as virtual. This is a boon to .NET, since a JIT compiler can smartly inline non-virtual methods much easier than it can inline virtual methods (and it can only inline the virtual method in somewhat rare circumstances), producing much faster execution times.

      - .NET supports delegates, which are effective "safe" function pointers. The .NET Framework libaries use these as the mechanism for event-driven programming models as opposed to Java which requires listeners interfaces. Although its debateable, I personally find this produces much more elegant code, although there are others who disagree with me - the point is, listener interfaces can be implemented in .NET too. In Java, you don't have a choice.

      - .NET allows developers to embed type metadata into their objects, and have very powerful tools for reflection. Take a look at how easy it is to make a webservice in .NET as opposed to Java, or how easy it is to mark an object as serializeable. Admittedly, Java 1.5 supports metadata as well, and I don't know enough about its inner workings to compare it to .NET.

      - .NET supports inlining of "unsafe" or unmanaged code into an assembly. When an assembly is marked as unsafe, .NET treats it with the same permissions it would treat any other native executable, but it allows one to write below the .NET layer and add .NET stubs to their native objects without having to write a wrapper layer ala JNI. There are already Windows device drivers written as .NET assemblies that run just as fast as any other native driver, only that developers have to use a safe, managed interface to interact with them. The very existence of C++ with Managed Extensions and the "unsafe" keyword in C# make interoperability with low-level elements significantly more easy to work with and develop than it is to do the same in Java.

    4. Re:Just a bit biased.... by prockcore · · Score: 1

      What good will the standard be if the company that owns 95% of the desktop starts shipping a .Net that deviates from the standard?

      Yeah, because MS never concerns itself with backwards compatability.. oh wait, yes they do.

      MS can't break the API because then all the current .Net apps would break.

    5. Re:Just a bit biased.... by Anonymous Coward · · Score: 0

      You question his objectivity and post on slashdot? What an idiot! First question your own mind.

    6. Re:Just a bit biased.... by Anonymous Coward · · Score: 0


      - .NET's garbage collection is not based on reference counting, but is actually a rooted reference map and is absolutely gorgeous to behold - heap allocations are identical in process time to stack allocations (unless the heap allocation triggers a GC) providing an incredible speed increase.


      Tell us how much of a difference in speed. If it speeds up a program by less than 5%, I don't care.


      - Everything in .NET is derived from the base class object. In Java, native types (int, float, etc) are not. Although Java 1.5 syntactically supports calling of methods on native types, behind the scenes a method call on type int boxes that type up to a type Integer, silently incurring an allocation, copy and deallocation cost. In .NET, method calls are permitted on value types and those types only need to be boxed when explictly casted to type "object".


      The autoboxing is a good feature, and Java 1.5 has it as well. You seem to imply that you cannot call a method in java such as this:

      set(int i);

      without incurring an object creation cost. This is simply not true. If you have a function of the form:

      set(Integer i);

      and you call it as

      obj.set(5);

      I believe that a new object will be created in either java or .net. I don't buy (or understand) your point here.


      - In Java, every method is virtual by default. In .NET, a method is only virtual if explicitly marked as virtual. This is a boon to .NET, since a JIT compiler can smartly inline non-virtual methods much easier than it can inline virtual methods (and it can only inline the virtual method in somewhat rare circumstances), producing much faster execution times.


      It is also a surprise to programmers who find out that the method they think should be called is not. The virtual marker was kept out of Java for the sake of simplicity, and I have to say as a former C++ programmer, I have not missed it.

      Again, you say that it is much faster. Do you have numbers? Do they outweigh the downside?


      - .NET supports delegates, which are effective "safe" function pointers. The .NET Framework libaries use these as the mechanism for event-driven programming models as opposed to Java which requires listeners interfaces. Although its debateable, I personally find this produces much more elegant code, although there are others who disagree with me - the point is, listener interfaces can be implemented in .NET too. In Java, you don't have a choice.


      Put me in the group that disagrees with you. I see little advantage in the delegate approach, especially when the listener interface will multiple methods. I often want to treat various listeners as polymorphic objects rather than a list of methods to call.


      - .NET supports inlining of "unsafe" or unmanaged code into an assembly. When an assembly is marked as unsafe, .NET treats it with the same permissions it would treat any other native executable, but it allows one to write below the .NET layer and add .NET stubs to their native objects without having to write a wrapper layer ala JNI. There are already Windows device drivers written as .NET assemblies that run just as fast as any other native driver, only that developers have to use a safe, managed interface to interact with them. The very existence of C++ with Managed Extensions and the "unsafe" keyword in C# make interoperability with low-level elements significantly more easy to work with and develop than it is to do the same in Java.


      This is an admittedly good feature which I would like to see in Java, provided it could be done in a standard, non-platform specific way. MS, of course, did something similar with J++, but did it in a way t

    7. Re:Just a bit biased.... by Anonymous Coward · · Score: 0
      Tell us how much of a difference in speed. If it speeds up a program by less than 5%, I don't care.

      It depends on what you're doing - In my office, I've seen differences as low as 3% for apps that had very few allocations, but I've also seen differences as high as 20% when manipulating large sums of data and pushing it to/from a database.

      Interestingly enough, every time I see a test that comes out and says that Java is as fast/faster than .NET, and I look at the source code for the test, its always fibonacci sequences and other things that don't involve alot of object allocations. When you test two real world apps against each other (excluding GUI code because that's not fair to Java, and only using threads when the Java code is run on Windows since Linux/Win32 threading models vary so much), the differences are much more visible.

      The autoboxing is a good feature, and Java 1.5 has it as well. You seem to imply that you cannot call a method in java such as this:
      set(int i);
      without incurring an object creation cost. This is simply not true. If you have a function of the form:
      set(Integer i);
      and you call it as
      obj.set(5);
      I believe that a new object will be created in either java or .net. I don't buy (or understand) your point here.

      The key difference is that in Java, you're always autoboxing - In .NET, you only have to autobox when you cast to type object.

      In Java, calling set(Integer i) as set(5) actually translates to set( new Integer( 5 ) ) in bytecode which incurs a heap allocation (not to mention Integer consumes more memory than a simple int does by I think either 4 or 8 bytes) and eventually, a garbage collection on the "new Integer( 5 )". In .NET, value types do not need to be boxed - there was the stack allocation when you created "5", but there's no heap allocation involved in passing it.

      More importantly, imagine 5.ToString() in .NET - in the IL, ToString is a method on the value-type itself, and no additional allocation is needed (in fact, ToString in the int case is also inlined, so there's not even much work on the stack). In Java, 5.toString() is silently converted to (new Integer(5)).toString() which is one allocation, an eventual garbage collection and one virtual method call more than the same .NET code. Its not much faster in .NET, but that stuff adds up fast.

      It is also a surprise to programmers who find out that the method they think should be called is not. The virtual marker was kept out of Java for the sake of simplicity, and I have to say as a former C++ programmer, I have not missed it.

      Again, you say that it is much faster. Do you have numbers? Do they outweigh the downside?

      Eric Gunnerson summed up the MS approach to it pretty well in one of his blog postings (the discussion continues on for several more postings over the next week) that I happen to agree with. As such, I happen to think its not a downside at all.

      As for performance - I've seen it add another 3-6% when comparing two internal apps. Consider it this way - A virtual method lookup is at least 4 processor instructions, plus the cost of setting up the stack for a new function (at least another 7, but can creep pretty high). At a bare minimum, .NET shaves off those 4, and at best, it knocks off the entire setup for the stack frame, which can be 30-40 instructions.

      One interesting thing about implementing in .NET v Java is that the speed of the JIT'd code relies heavily on awesome bits of optimization in code in the JIT compiler. Sun put alot of money into optimizing parts of the JVM that MS didn't into the CLR, and vice versa. Mono, for instance, despite all the speed advantages in the IL over Java bytecode, is slower than Sun's JVM - no surprise. M

    8. Re:Just a bit biased.... by javabsp · · Score: 1
      More importantly, imagine 5.ToString() in .NET - in the IL, ToString is a method on the value-type itself, and no additional allocation is needed (in fact, ToString in the int case is also inlined, so there's not even much work on the stack). In Java, 5.toString() is silently converted to (new Integer(5)).toString() which is one allocation, an eventual garbage collection and one virtual method call more than the same .NET code. Its not much faster in .NET, but that stuff adds up fast.
      Actually Integer.toString is final, so it's not a virtual call. Also I remember reading somewhere that Integers smaller than some value (I don't remember what that value is) are pooled, so there's no allocation as well.
    9. Re:Just a bit biased.... by Chester+K · · Score: 1

      What good will the standard be if the company that owns 95% of the desktop starts shipping a .Net that deviates from the standard?

      It would at least have to be backward compatible with the standard, or else existing applications won't run, and lack of proper standards never stopped the Samba project. The threat here is a good one to keep in mind, but also keep in mind that Microsoft has been touting .NET's conformance to the ECMA standard very heavily, they would take a major hit if they suddenly decided to start heading in the other direction.

      What about the parts of .Net that are not covered by the the standard, and in fact have intellectual property encomberances?

      Microsoft has never used one of their patents offensively to stop competition. Yes, I know that just because they haven't doesn't mean that they never will, but a combination of factors strongly suggest they won't: antitrust concerns, no matter how much you think they completely slinked through their trials, have put serious shackles on how they can stomp out potential competition; and more importantly their stock price would drop if they resorted to using patents in that manner, which is seen as the move of desperation.

      And on the other hand, it can be argued that you're not exposing yourself to any less IP liability by using any other solution available. Microsoft, among others, have patents that technically cover just about every software you've ever written and ever will write. .NET is really no different.

      Why is .Net any better than Java for application development. Is its speed any better? Is Mono's speed any better than Java's?

      .NET is better for many reasons: performance is one: MSIL was designed from the start to be JITted, and so it actually does so on par with real native code; flexibility is another: you can run and interoperate between many different languages under .NET, including Java itself; and community support will increasingly become another reason: Microsoft has totally committed itself to the platform, and for better or for worse, when the 900 pound gorilla moves, it makes waves.

      --

      NO CARRIER
    10. Re:Just a bit biased.... by anomalous+cohort · · Score: 1
      Mono has two sets of APIs: OSS APIs and .NET APIs

      I was wondering why the sea change around here. It seemed to me that the /. crowd's stance before the Novell acquisition was "don't touch mono as it is a poison pill from Microsoft." What I'm hearing you say is that the /. crowd feels that any program written to the GTK# stack is not vulnerable to any future Microsoft IP claims.

    11. Re:Just a bit biased.... by Anonymous Coward · · Score: 0

      For me (not the original poster) it's not about Novell, but about Miguel's persuavsive posts on the legality of it; my summary being that patent-wise Sun vs Microsoft have as much ownership, and 3rd parties could have patents that cover both Java and .Net. They're not saying it's invulnerable, but that it's as vulnerable, or maybe a little less due to the ECMA + OSS bits.

  16. Re:Why should "cross platform" always mean Java/.N by The+Bungi · · Score: 1
    I agree. And not only Python (which I've personally used for cross-platform stuff) but also Perl and PHP, among many others.

    It's perfectly possible to run many PHP-based products (like Textpattern) on Windows/IIS with some work. The key is almost always MySQL, and that runs fine on Windows as well. In fact it kicks the bejeesus out of MSDE for some scenarios.

  17. Please!! stop the insanity!!!! by Eric(b0mb)Dennis · · Score: 1, Insightful

    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
  18. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    The only Python program on my machine is BitTorrent, and frankly it looks and runs like a piece of crap.

    When you manage to out-fugly Java, that's quite a feat.

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

    Comment removed based on user account deletion

  20. Right here... by joeldg · · Score: 1

    Yep, linux coder here and moving to mono for new development.
    So far, it is pretty damn cool and I am very happy with it. It is exciting starting fresh in a new language. I recommend it.

  21. The Other Thing by Anonymous Coward · · Score: 0

    The other thing it has going for it is Buzzword value and the fact that it replaces the mess which is Win32

  22. Libraries-DRM Keys. by Anonymous Coward · · Score: 0

    One also has to ask how will DRM fit into the programming picture? With a looser definition of "content". Remember most of the commercial programming community still isn't comfortable with the free-wheeling "programming must be free" mantra of OSS, and still wish to retain control.

  23. Indemnify, Indemnify, Indemnify! by Anonymous Coward · · Score: 0

    I think indemnification would put an end to all of the legal issues surrounding Mono. If Ximian/Novell would put their money where their mouth is and put their own neck on the line, that would show how confident they really are.

    1. Re:Indemnify, Indemnify, Indemnify! by HogynCymraeg · · Score: 0

      Glad you could join us Darl!

  24. Re:Linux is catching up by Anonymous Coward · · Score: 0
    How about an AI instruction taker that you can tell it "Delete all files older than 2 weeks" and it will do it, or "group files by type and sort the groups by when they were created" and it would do it.


    How about
    find ./ -mtime +14 -exec rm -f {}\;
    ?
  25. 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 kollivier · · Score: 1

      I probably shouldn't respond to an obviously stereotypical comment, really, but I'll bite as many people don't realize that you can do a lot with "interpreted" languages...

      One of my wxPython apps does trivial little things like provides WYSIWYG HTML editing (via embedded Mozilla), lets you preview pages in IE/Mozilla at the click of a tab, exports files and in fact entire sites from HTML to PDF, lets you create online, self-grading quizzes, maintain your site structure using a treeview, including clipboard copy/paste, creates full-text indexes of all your HTML content, and lets you create your own themes or content editors very quickly via extensible plugins. Sure, a good portion of the guts are coded in C/C++, but as I didn't code most of those C/C++ sections, I don't really care. They just work from Python and I can build interfaces and "glue" the C/C++ pieces together very quickly. Furthermore, if I had to write all this in C/C++... Well, as a one man project it just never would have happened. Those who are interested can check it out at http://www.eclass.net.

      If there were more interest in a Linux/Mac version, I could make packages for those platforms, but it does run from source as is. (Mozilla embedding doesn't work from Mac well yet, but that's because of issues with the Mozilla codebase, not with wxPython/Python.)

      But this probably isn't a serious app, except maybe to the people who use it to do their work. =)

    4. 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!! ^_^

    5. Re:And how is this better than wxWidgets/wxPython? by michaelggreer · · Score: 1

      I'm not a Python person, but I agree with your skepticism about the UI cross-platform possibilities. For instance, GTK# is not an option on a Mac for application deployment. You can't ask people to install the Dev Tools, install Fink, and apt-get the gtk+ libraries, just to run your program whose UI looks like nothing they have ever seen.

      The decision to wrap WinForms around Wine also gets nowhere beyond an x86, and just shows how difficult chasing Microsoft.NET is going to be.

      I am, however, really jazzed about the ability to compile tons of other real languages down into bytecode and have them all communicate inside Mono. Now that is cool.

    6. Re:And how is this better than wxWidgets/wxPython? by immytay · · Score: 1

      I agree. I'd like to use the CLR, but maybe I'll wait and use wxNet and ironpython.

    7. Re:And how is this better than wxWidgets/wxPython? by Anonymous Coward · · Score: 0

      Well, I'll say to you what I said to another "Why not Python" guy.

      First, IronPyton(I think) will spit out MSIL, so you eventually (I don't know if they IronPython guy has released anything yet) will be able to use .NET/Mono platform with Python. It's supposedly very fast too. The guy has some benchmarks on his page. (google)

      Secondly, .NET will be ubiquitous on windows platforms eventually and most linux distros will have Mono eventually. The problem is that you have this huge ass Python libraries/runtime for windows users which they most won't have. The assembly modules/libraries should be language neutral.

      Thirdly, any language can use any .NET/Mono library as long as that library exposes the proper methods(some languages don't have properties, etc..) and that the native libraries are there.

      MSIL was designed in such a way that it's much more language-neutral than Java ever will be. Heck, they've got C++ compiling down to MSIL, and even Mono has a guy working on targetting a C++ compiler to IL. That's never going to happen with the Java bytecode just because of the nature of its design. No pointers for one thing.

    8. Re:And how is this better than wxWidgets/wxPython? by borgheron · · Score: 1

      I will risk my karma rating (which is excellent) to continue to foster this unpopular, but true, fact. My comment was more than stereotypical, it was true.

      Most of the "apps" you pointed out involve python messaging or controlling something which is written primarily, of course, in C or C++. So while they may indeed by serious apps, they fail to satisfy the "serious apps *in python*" statement.

      Also, I never said that Python and other *scripting* languages aren't worth anything. The article however, is about Mono and C# which is, from what I understand, JIT *compiled*. You're response implies that one should consider using wxPython since it's "better".

      If you can point me to one, just one serious application (not a testing suite or one where python simply acts as a glue mechanism) written *entirely* using Python, I'll change my mind.

      Oh, and for the guys who modded me down, do it again, 'cuz my karma can take it. :P

      GJC

      --
      Gregory Casamento
      ## Chief Maintainer for GNUstep
    9. Re:And how is this better than wxWidgets/wxPython? by kollivier · · Score: 1
      If you can point me to one, just one serious application (not a testing suite or one where python simply acts as a glue mechanism) written *entirely* using Python, I'll change my mind.

      To me, a "serious" application simply defines it's capabilities and usefulness. I mean, after all, the question any developer must ask themselves is "can I use this tool to do what I need?" I guess to you a "serious application" needs to be purely coded in one language. Most apps in the world today would fail that test, including just about any GUI-based C# Mono apps, which also would rely on C/C++ for much of their code. Python obviously fails your test, but that doesn't bother me much because your test doesn't have any impact on Python's usefulness to me (or many others).

    10. Re:And how is this better than wxWidgets/wxPython? by borgheron · · Score: 1

      To me, a "serious" application simply defines it's capabilities and usefulness. I mean, after all, the question any developer must ask themselves is "can I use this tool to do what I need?" I guess to you a "serious application" needs to be purely coded in one language.

      No, I never said that. One of the true tests of a language's capabilities, however, is the kind of app it can be used to make all by itself.

      Since the rest of your message is predicated on the false assumption that I asserted this, I should ignore it, but lets examine one of the things you did say:

      Most apps in the world today would fail that test, including just about any GUI-based C# Mono apps, which also would rely on C/C++ for much of their code.

      C# uses the Window's code to present a consistent interface to the user. But what you're talking about is the layer of the OS that is used to present the gui. By that standard every program in the world is mostly C or C++.

      I'll presume that you understood meaning when I said "an app written in python" to mean an app whose main functionality is written in python, NOT one in which simply glues together very large apps to form it's core function, such as the one you described in your previous posting.

      By this measure, it's my opinion that Python simply fails miserably to measure up. No scripting language can hope to beat a compiled language in terms of speed. This isn't cliche or stereotypical, it's just a cold hard technical fact of life. The closer to the iron you get, the faster the program will run.

      GJC

      --
      Gregory Casamento
      ## Chief Maintainer for GNUstep
  26. Re:Linux is catching up by atezun · · Score: 1

    Don't EVER underestimate the innovation of mozilla tabs.

  27. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  28. C# compiled to native i386? by MarsDefenseMinister · · Score: 1

    Is there any c# compiler that compiles down to regular i386 code, like gjc is capable of? The language looks very interesting, but I'm not interested in yet another virtual machine.

    --
    No weapon in the arsenals of the world is so formidable as the will and moral courage of free men.-Ronald Reagan
    1. Re:C# compiled to native i386? by Space_Soldier · · Score: 1

      C# is not interpreted. C# in compiled with JIT (Just In Time) upon runtime. If you digitally signed it, it will put the bin in the global assembly cache, and it won't compile it again upon another run time. You can also use ngen.exe (Native Image Generator) to compile it AOT (ahead of time) if you digitally sign the assemblies. All this has nothing to do with the virtual machine. That only manages memory and security.

    2. Re:C# compiled to native i386? by MarsDefenseMinister · · Score: 1

      OK, so you're saying that I can just compile the thing on one step, produce an executable file, and then at my bash prompt I can just run the file (just like I do right now with my C++ compiler)?

      $> foo.c# (whatever c# source code is called)
      $> ngen.exe -o foo foo.c# (compiled with ngen.exe)
      $> foo
      hello world!

      --
      No weapon in the arsenals of the world is so formidable as the will and moral courage of free men.-Ronald Reagan
    3. Re:C# compiled to native i386? by Anonymous Coward · · Score: 0
      Something like that, except the generated executable requires the "Microsoft .NET Runtime Execution Engine" (i.e. MSCOREE.DLL). The following example comes from the Microsoft.NET Framework v1.1 download, which is available for free on the Microsoft website.

      simple.cs

      using System;

      class App{
      public static void Main(){
      Console.WriteLine("Hello World!");
      }
      }
      build.bat
      @ REM Set command switch for building debug or retail (default is to build debug)
      @ REM Type "build.bat -r" to build for retail
      @ SET DEBUGSAMPLE=/debug+
      @ IF "%1"=="-r" SET DEBUGSAMPLE=/debug-
      @ IF "%1"=="-R" SET DEBUGSAMPLE=/debug-

      csc.exe /t:exe %DEBUGSAMPLE% /out:.\Simple.exe Simple.cs
      Using the command line:
      C:\Program Files\Microsoft.NET\SDK\v1.1\Samples\Technologies\ IL>build
      C:\Program Files\Microsoft.NET\SDK\v1.1\Samples\Technologies\ IL>csc.exe /t:exe /
      debug+ /out:.\Simple.exe Simple.cs
      Microsoft (R) Visual C# .NET Compiler version 7.10.3052.4
      for Microsoft (R) .NET Framework version 1.1.4322
      Copyright (C) Microsoft Corporation 2001-2002. All rights reserved.

      C:\Program Files\Microsoft.NET\SDK\v1.1\Samples\Technologies\ IL>Simple.exe
      Hello World!
  29. 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 Anonymous Coward · · Score: 1, Insightful

      > People who've only used C++,

      Actually Mono and .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++).

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

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

    2. Re:A strange place to follow Microsoft by Anonymous Coward · · Score: 0

      > appear to be coming from people who spent the nineties thinking that C++ was the pinnacle of software development.

      Or the only reasonable option for desktop applications.

    3. Re:A strange place to follow Microsoft by jcupitt65 · · Score: 1

      It depends on the sort of program you're writing. You need the right tool for the job, etc. yadda yadda as we all know.

      Scripting languages are convenient for small-ish programs. But going above (for me) about 10,000 lines of code without a static typechecker is very painful. Especially if it's something that's going to need to be maintained for a while.

      A good type system can give pretty tight guarantees about your code.

    4. Re:A strange place to follow Microsoft by Anonymous Coward · · Score: 0

      I think you are the new contender in the dumbest slashdotter category. This is definitely one of the funniests posts I have ever seen. Oh, yeah, Python is much better than .net, I loved that.

    5. 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.
    6. Re:A strange place to follow Microsoft by Anonymous Coward · · Score: 1, Insightful

      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.

    7. Re:A strange place to follow Microsoft by jcupitt65 · · Score: 1
      Oh dear, I didn't realise the term was so charged. I guess I just used it to mean "run-time type checked". Plenty of people call Python a scripting language, for example "Zope is written in Python, a highly-productive, object-oriented scripting language.".

      I still think I'm right through :-) if you're picking a language for a largish project, a good static typechecker should be on your shopping list.

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

  30. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    Frankly - because Python IDEs suck.

  31. Will work for now by Anonymous Coward · · Score: 0

    Not after Microsoft pulls a couple of patent infringement lawsuits and make the Mono developers look like fools.

    1. Re:Will work for now by Anonymous Coward · · Score: 0

      They need lawsuits for that?

  32. blech!-Follow the leader. by Anonymous Coward · · Score: 0

    "If you don't like it don't fscking use it."

    Please keep the above in mind, next time you read an article about Microsoft's Marketshare, and how Linux will not take off unless it imitates MS, or you can't get a Laptop without Windows.

    1. Re:blech!-Follow the leader. by DAldredge · · Score: 1

      Linux is taking off and you can buy laptops that come with Linux.

  33. NO YUO!!!1` by Anonymous Coward · · Score: 0
  34. Re:Why should "cross platform" always mean Java/.N by zaf · · Score: 1

    For one, .NET has the Microsoft marketing machine behind it, allowing Mono to piggy-back off of that. Technical merits aside, this gets .NET/Mono more developers, which helps.

  35. The ONLY thing? by bani · · Score: 0

    Maybe this has an impact?

    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.

    Look at how C# + Mono has exploded in popularity in comparison to Java in the same timeframe.

    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.

    Er, PHB's have always done this since the dawn of computing. Before Java and before C#. Hell, they did this before microsoft even existed. Nothing has changed.

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

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

    3. Re:The ONLY thing? by MenTaLguY · · Score: 1

      IIRC mono also runs Java apps (subject to the limitations of GNU Classpath, which it uses).

      --

      DNA just wants to be free...
    4. Re:The ONLY thing? by turgid · · Score: 1

      I dare say you could implement a .NET CLR and a C# compiler in Java too, if you were so inclined :-)

    5. Re:The ONLY thing? by Cereal+Box · · Score: 1

      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.

      How do you figure? Take a look at .NET's class library and Java's. The majority of the stuff is mundane, easily implementable stuff like data structures, sockets, text manipulation, regular expressions, I/O, XML, etc. Nothing you would consider Microsoft trade secrets subject to being pulled out from under the Mono team. Besides, what are they going to do about it? As long as Microsoft publishes API documentation there's nothing they can do to stop someone from implementing an equivalent class (as ECMA-standardized .NET CLR bytecode) by simply following the API documentation. Furthermore, why would they care? The stuff that really ties .NET programs to Windows can't correctly be implemented on Linux due to the fact that Linux doesn't have some of the same facilities that Windows does.

      This is more paranoid Slashdotter ranting. Microsoft could care less if Mono is implementing the mundane 90% of their APIs. If Mono out of the blue developed a perfect clone of the API that allowed every .NET program (including ones that use WinForms and other Windows-specific technologies) flawlessly, then they might start getting a little concerned. But realistically, that's never going to happen, and it's not because of anything Microsoft is doing.

    6. Re:The ONLY thing? by turgid · · Score: 1
      As long as Microsoft publishes API documentation there's nothing they can do to stop someone from implementing an equivalent class (as ECMA-standardized .NET CLR bytecode) by simply following the API documentation.

      Until they come across something covered by a patent.

      This is more paranoid Slashdotter ranting.

      Maybe. It might also be someone trying to put the other side of the story, and to explore some of the issues that people are quick to gloss over.

      Even the wildest rant may contain a grain of truth, or may spark a thought. We must encourage free and open discussion, for without it society will be come a morose, stagnant, rotting, festering pile of apology, conformity and subserviance.

    7. Re:The ONLY thing? by Cereal+Box · · Score: 1

      Until they come across something covered by a patent.

      Like what? A patent on a hashtable implementation? A patent on file I/O? Please. The only stuff that could conceivably be patentable is the proprietary stuff that Mono will probably never be able to implement properly ANWYAY. ... And you're completely ignoring the fact that all of Microsoft's patents are freely browseable, so the Mono team could easily find out if what they're doing is patented or not.

      It might also be someone trying to put the other side of the story, and to explore some of the issues that people are quick to gloss over.

      You must be new to Slashdot if you think anyone on here has "glossed over" the idea that Microsoft will crush Mono somehow.

    8. Re:The ONLY thing? by HiThere · · Score: 1

      All patents are browseable, but nobody can really tell what a lot of them cover. For many it depends on how fancy a lawyer you can afford. And how much court time you can afford. (Patent cases aren't cheap. I seem to recall that it costs somewhere over $100,000 to get INTO court.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
  36. 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++.

    1. Re:Some silly points by prockcore · · Score: 1

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

      That's actually the biggest selling point for C# for me. It has an amazing class library... which is part of the standard.

      If I want to do regex under C++ I have to find a regex library and then that's one more dependency for my app. If I also want to do AES encryption, that's another dependency.

      Mono is great because it has an incredibly thorough class library. C++ would be a lot better if we dropped STL and created a standard library that had support for everything. I then wouldn't have to have #ifdefs for simple things like networking and 20 dependencies.

    2. Re:Some silly points by I_Love_Pocky! · · Score: 1

      I'm not sure on this, but if I remeber right, one of the selling points of .NET is that it is language independent. Doesn't that mean you can use the framework from C++?

    3. Re:Some silly points by prockcore · · Score: 1

      I'm not sure on this, but if I remeber right, one of the selling points of .NET is that it is language independent. Doesn't that mean you can use the framework from C++?

      Yes you can, but it requires you to use managed C++, which I'm not sure mono supports yet.

  37. 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
    1. Re:The elephant in the room by dekeji · · Score: 1

      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.

      Well, you may consider those self-evident truths, but there are many people who don't. For example, there are subtle but very important differences between the C# and Java languages (even with JDK 1.5). There are also many people who don't want cross-platform support.

      Instead it just pretends that corss-platform wasn't even possible before MONO.

      The article's mention of cross-platform features is bogus; what makes Mono so attractive to OSS developers is that it uses the same APIs OSS developers already know. The resulting programs are actually no more cross-platform than any other Gtk+/Gnome program, meaning, they will run on Windows and OS X, but they will work best on Linux.

    2. Re:The elephant in the room by Anonymous Coward · · Score: 0

      Why use Java when other language were years ahead of Java with support and tools?

      Why Java when you had other interpreted langauges that you could things in 1 line of code that would take multiple in other languages?

      Java comparisson is irrelevant. This is about Mono. Period.

    3. Re:The elephant in the room by daytrip00 · · Score: 1

      One huge advantage .NET has over java is it's pretty P/Invoke mechanism. With this, i can execute code from an arbitrary dll. This is exceptionally useful especially for developing Win32 applications as I can call into user32.dll or gdi32.dll (for example) whenver i need to, and it only takes two lines of code:

      [DllImport("User32.dll", CharSet=CharSet.Auto)]
      public static extern bool RedrawWindow(IntPtr hWnd, IntPtr rect, IntPtr hRgnUpdate, UInt32 flags);

      To do such a thing in Java would require quite a bit more work. And, to be honest, Swing with a Win32 plaf is significantly slower and SWT still doesn't exactly look like a Win32 app (not to mention that I wouldn't even know how to get Office 2003 style menus with SWT). .NET does have its uses. If you have quite a bit of legacy code, or you want to do Win32 cheaply and easily, .NET is a fantastic toolset.

      The MONO team implimented P/Invoke as well (it's how the GTK# libraries work, if I'm not mistaken). This allows you to leverage all sorts of native platform code simply and easily without the sources.

      Just my 2 cents as a .NET developer.

    4. Re:The elephant in the room by Brandybuck · · Score: 1

      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.

      Because as much as they will deny it, the Mono developers/users really are in love with Microsoft. They came to Unix from the Windows world, and are now homesick for the "good old days." I am serious. Ask any Mono developer what the chief advantage to Mono is and he will tell you that you can "develop for Windows from any platform". Huh?

      Look at the names being Mono and dotGNU. These are the same people who say that Linux/Unix will never be ready for the desktop. To them Mono is just something that will allow them to write applications for the desktop, because they truly do not think it is possible from Linux/Unix any other way.

      --
      Don't blame me, I didn't vote for either of them!
    5. Re:The elephant in the room by bofkentucky · · Score: 1

      Pardon my ignorance here, but wouldn't that allow an untrusted C# app (like a java applet/activeX control in a browser today) to do some fairly nasty things to a users machine.

      --
      09f911029d74e35bd84156c5635688c0
    6. Re:The elephant in the room by Yaztromo · · Score: 1
      One huge advantage .NET has over java is it's pretty P/Invoke mechanism. With this, i can execute code from an arbitrary dll. This is exceptionally useful especially for developing Win32 applications as I can call into user32.dll or gdi32.dll (for example) whenver i need to, and it only takes two lines of code:

      Sorry, but I think you mis-spelled the word security nightmare.

      Yaz.

    7. Re:The elephant in the room by samael · · Score: 1

      Which is where the built-in security model comes in. You can lock down .NET so that it _can't_ call native code, or so that code running on your local machine can, but code running off the network can't, etc, etc.

    8. Re:The elephant in the room by bofkentucky · · Score: 1

      IIRC, some of the early JVM's had serious issues with apps "breaking out of the sandbox", and we all know about ActiveX's swiss cheese security model, what makes people think that .Net isn't going to go through the same teething process that java has.

      --
      09f911029d74e35bd84156c5635688c0
    9. Re:The elephant in the room by k98sven · · Score: 1

      I don't see how coming to Unix from the Windows world is a bad thing. At least not if you do want Linux to be viable on the desktop. Because that's where the Linux-on-the-desktop users are going to be coming from.

      These are the same people who say that Linux/Unix will never be ready for the desktop.

      That is so wrong, it's slanderous. Mono was started by Miguel de Icaza for pete's sake!!.
      The guy started Gnome, Gnumeric, Midnight Commander, Ximian and Mono. I cannot name any single person who has done more for Linux on the desktop than that guy. And you say he says Linux will never be ready for the desktop??!

      Well, jeez.. his actions sure had me fooled.

  38. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    Of course... all IDEs suck.

  39. A strange place to follow Microsoft-Shallow depths by Anonymous Coward · · Score: 0

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

    It's not so much "pinnacle", as simply "don't know any better". How many times have we read something here about Lisp, or Schems, or Smalltalk can do this or that while others are playing catchup? Face it, a lot of programmers don't have the breth of experience, either hardware or software to avoid the "marketspeak" that MS and others put out. "Oh Java has this, and C# has that! Wow!". Remember the VAX story, and the comparisons with the x86 platform? Or Mainframes for that matter. Reinventing wheels?

  40. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    I have looked at Python a number of times, but the blocking/flow/structure by whitespace just squicks me too much.

  41. Re:Linux is catching up by hey · · Score: 1

    There are better filesystems than ext3:
    XFS, JFS, ReiserFS.

    Don't just complain --- write something.

  42. Quantity over Quality. by Anonymous Coward · · Score: 0

    "For one, .NET has the Microsoft marketing machine behind it, allowing Mono to piggy-back off of that. Technical merits aside, this gets .NET/Mono more developers, which helps."

    You'd think that the "Mythical Man, Month" would have taught us that quantity isn't always better than quality. Now why would more developers who's code is used in CS to illustrate what NOT to do, is a good thing for Linux? Do any of you even have any pride in your craft, or is just any old thing good enough for you?

    1. Re:Quantity over Quality. by zaf · · Score: 1

      Not saying it's good or bad, just that's why this thing is making so much news right now.

      Either way, the platform is pretty powerful, and no matter the language, there will always be good developers and bad developers. You can't always blame that on the platform.

  43. Re:Why should "cross platform" always mean Java/.N by Graelin · · Score: 1, Informative

    I mean, take Python! (my favorite high level cross-platform programming languate)

    No, Python is a SCRIPTING languate [sic]. It is already being used in places where it makes sense to embed a scripting language. Website programming, app automation and some Linux distros use Python to build a lot of their tools. For the latter, I don't think Python is a good choice but that's another thread entirely.

    Java is a programming language. The differences between it and Python (as seen here) are largely semantic/structural. I would also add that the Java SDK supplies developers with FAR more common libraries than Python does which tends to cut development time. Semantically, Java is a pure-OO language. Python is not.

    Furthermore, a lot of the verboseness and non-compactness of Java provides a lot of flexability. 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.

    What I don't understand is that when people are talking about "cross platform" programming, it almost always is about Java or .NET/Mono.

    Maybe because nobody has a mainstream cross platform app that is written in a scripting language? Where as Java already has lots of exposure in that area thanks to Applets and other applications.

    I don't think you can think of .NET as cross platform yet. Mono is a huge step in the right direction but there are several large pieces of .NET that are not ported to Linux or OSX yet. Winforms, to name one and RDBMS access is another. I'm not sure how RDBMS works under Mono but I imagine it's different from Win32.NET. Can someone prove me wrong here? Please?

  44. Re:Why should "cross platform" always mean Java/.N by globalar · · Score: 1

    "What's so special about Java or .NET that makes them the talk of the day..."

    Marketing.

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

    2. Re:Evaluation applies to any VM language by I_redwolf · · Score: 1

      In the general theoretical sense, there isn't much difference between Java and .NET. The success of each will depend on the implementation.

      And the fact that .NET is officially supported on I believe two platforms.

    3. Re:Evaluation applies to any VM language by Anonymous Coward · · Score: 0

      Autoboxing, String variable format (printf style!), generics -- all are in Java 1.5, now known as Java 5.0. Finally I get to use the old MS vaporware line -- it's coming in the next release!

    4. Re:Evaluation applies to any VM language by Anonymous Coward · · Score: 0

      And the fact that .NET is officially supported on I believe two platforms.

      Windows 2000 and Windows XP?

  46. I may sound like a noob so I post anonymously by Anonymous Coward · · Score: 0

    I cannot execute the example file.

    I did :

    $ chmod 777 v27e2.exe
    $ ./v27e2.exe
    bash: ./v27e2.exe: cannot execute binary file

    What am I doing wrong? What am I missing?

    1. Re:I may sound like a noob so I post anonymously by Anonymous Coward · · Score: 1, Informative

      You need the mono runtime and libraries installed. Then you can either do a "mono v27e2.exe" to execute the .exe like java does or if you have bin_fmt support in your kernel you can do modify some files to have bash execute it directly. $./v27e2.exe

      Debian does modify the bin_fmt configuration so you can execute it directly, but I'm not sure about other distros.

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

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

  49. Re:Why should "cross platform" always mean Java/.N by SvendTofte · · Score: 1

    Python lacks enterprise backing.

  50. Re:Why should "cross platform" always mean Java/.N by PommeFritz · · Score: 1

    Python is a SCRIPTING languate [sic]
    Define 'scripting language'. Without a sound definition (and probably also with a definition), I don't agree with this statement.

    Even though I also don't agree with the other points you're making about Java, it was not my intention to talk about the language differences between Python and Java, but the "cross-platform" aspects of them.

    Indeed it seems likely that because Java gets much more marketing exposure, it's Java that's talked about most. But to me, it often looks like a knee-jerk reaction: "cross-platform bla bla" - "Ah, you mean Java"...

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

    I hear what you say. It's just that Sun doesn't advertise this fact for some reason, and we don't tend to hear much about it.

  52. Re:Why should "cross platform" always mean Java/.N by PommeFritz · · Score: 1

    You'd rather have a big mega corp behind it? Strange, people always seem to get angry on the subject of Microsoft that's controlling .NET, or Sun that's controlling Java.

  53. A harsh truth... by Mongoose+Disciple · · Score: 1

    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?

    I should think the answer to that would be obvious: In any industry, if a company with 95% market share decides they're going to do something a certain way, whatever they've decided? That's the standard now.

    A standards committee can go a different direction if they like, but it's akin to that guy in Hitchhiker's Guide to the Galaxy (I think, it's been a while since I read it) who decides that only he is sane and he needs to wall the rest of the universe into an asylum.

    At the risk of turning this political, I think we can agree that heterosexuality is pretty much the "standard" human mating behavior, and the last time I saw numbers on it, even that didn't have a 95% "market share." Technology shouldn't be much different. (cue jokes.) Whether you like Microsoft or hate them, the way they do things, even when they're retarded, becomes the standard.

    1. Re:A harsh truth... by Anonymous Coward · · Score: 0

      By that logic, spam is now the standard for email and compromised windows machines on DSL are the standard for sending email!

      Thankyou Microsoft!

    2. Re:A harsh truth... by Anonymous Coward · · Score: 0

      Sure. Don't think for yourself, let the majority decide for you.

    3. Re:A harsh truth... by Mongoose+Disciple · · Score: 1

      You're welcome to make up your own mind and do it whatever way you like, but if you think that makes your choice the standard, you might need a dictionary.

  54. generics support? by ThreeToe · · Score: 1

    Microsoft's upcoming .NET rev has support for generics. Will MONO have this support soon?

    I've found that generics, carefully applied, can save huge amounts of development time. It'd be great to see MONO support this soon.

    (Oh, and for those wondering: Microsoft's rev gets generics right. This ain't the "we can't quite handle value types" variety of generics that plagues JDK1.5.)

    1. Re:generics support? by arhra · · Score: 1

      It already does. (and has done for quite a while now... the generics support was considered feature-complete at version 0.31...)

    2. Re:generics support? by ThreeToe · · Score: 1

      Really? That's surprising considering that (as I understand it) Microsoft is still finializing details for Whidbey generics.

    3. Re:generics support? by Anonymous Coward · · Score: 0

      as other's have said, shouldn't generics be called "specifics"? I hardley find generics the end all of language features. It might save a little bit of typing, but it is hardley a critical feature.

  55. Simple by mackstann · · Score: 1

    Because of the great power of mono! Behold:

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

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

    I mean, in Python, it'd be like:

    matches = re.match(regex, input)

    That doesn't look like great power to me.

    (all joking aside, I found the article interesting, and if it weren't for the (potential) legal issues, I would probably be playing with C#)

    1. Re:Simple by The+Wookie · · Score: 1
      I went so far as to redo the whole program in Python, although I'm sure a Python guru would have done it better, also I had to remove some -'s because they triggered the lameness filter. It just feels cleaner than Java or Mono:
      from sys import *
      from re import *
      from string import *

      def Usage():
      print """
      -------------
      %s usage:

      \t%s [Input String]

      \t[Input String]: An input string that should be tested against
      \t the prompted expression

      -------------
      """ % (argv[0], argv[0])

      if len(argv) < 2:
      Usage()
      stdin.readline()
      exit

      input = join(argv[1:], " ")

      print 'Enter a regular expression to test the string "%s":' % (input),
      regex = stdin.readline().strip()

      matchstr = ""
      if not match(regex, input): matchstr = " NOT"

      print '"%s DOES%s Match %s"' % (input, matchstr, regex)
    2. Re:Simple by ArsonSmith · · Score: 1

      Sorry I had to do it:

      #!/usr/bin/perl
      #

      if ( @ARGV \;
      chomp $regex;

      print $input;
      if ( $input =~ m/$regex/ ) {
      print " DOES Match ";
      } else {
      print " DOES NOT Match ";
      }
      print $regex, "\n";

      --
      Paying taxes to buy civilization is like paying a hooker to buy love.
    3. Re:Simple by ArsonSmith · · Score: 1
      crap stupid lt eaters:
      #!/usr/bin/perl
      #

      if ( @ARGV < 1 ) {
      print <<EOF
      \t$0 [Input String]

      \t[Input String]: An input string that should be tested against
      \t the prompted expression
      EOF
      ;
      exit;
      }

      $input = join(" ", @ARGV);

      print "Enter a regular expresion to test the string \'$input\':";
      $regex = <STDIN>;
      chomp $regex;

      print $input;
      if ( $input =~ m/$regex/ ) {
      print " DOES Match ";
      } else {
      print " DOES NOT Match ";
      }
      print $regex, "\n";
      --
      Paying taxes to buy civilization is like paying a hooker to buy love.
    4. Re:Simple by mackstann · · Score: 1
      I wouldn't dare call myself a guru, but here's some tweaks:
      import sys, re

      def Usage():
      print """
      %s usage:

      %s [Input String]

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

      """ % (sys.argv[0], sys.argv[0])

      if len(sys.argv) < 2:
      Usage()
      raw_input()
      sys.exit(1)

      text = ' '.join(argv[1:])

      regex = raw_input('Enter a regular expression to test the string "%s":' % text).strip()

      matchstr = ""
      if not re.match(regex, input):
      matchstr = " NOT"
      print '"%s DOES%s Match %s"' % (input, matchstr, regex)
      comments: string module isn't very useful anymore; most of its functionality is now in str. input is a built-in function; assigning the name to something else doesn't really hurt, but IMO it's preferable to not do that. I had to remove the dashes altogether to avoid the lameness filter. (man, formatting this on /. sucks)
  56. Re:A strange place to follow Microsoft-Shallow dep by Anonymous Coward · · Score: 0

    It's not so much "pinnacle", as simply "don't know any better". How many times have we read something here about Lisp, or Schems, or Smalltalk can do this or that while others are playing catchup? Face it, a lot of programmers don't have the breth of experience, either hardware or software to avoid the "marketspeak" that MS and others put out.

    Yes, but sadly you don't either if you think that those differences don't matter or are just based on Microsoft marketing. C#'s support for value classes and unsafe modules, and C#'s template semantics make it a different language from Java--enough different to make a real difference to many people.

    If you don't believe me, look up what the JavaGrande forum recommended as additions to Java half a dozen years ago: C# implements their recommendations, Java still doesn't. And the JavaGrande members weren't gullible Microsoft customers.

  57. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    The people you are talking about are the kook/student-fringe that hangs out on /. etc. This is also the same delusional crowd that thinks Ruby or Lisp is just about to take over the world.

    Most developers understand the value of industry backing.

  58. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    That's not my point. My point is, that unless technology X is backed by huge corp Y, then corp Z will be less eager to adopt it. Given standard PHB theories, and so on. .NET and Java are backed by huge corporations. That's a good thing, to many people (I'm not taking sides). Python is used by some big people, but, AFAIK, is NOT backed by something like IBM. And backed in this context, really means made by, or aggressively marketed/pushed.

  59. Similarities by SuperKendall · · Score: 1

    Well, you may consider those self-evident truths, but there are many people who don't. For example, there are subtle but very important differences between the C# and Java languages (even with JDK 1.5). There are also many people who don't want cross-platform support.

    So what would you say these differences are? There are (even in 1.4) many more similarities than differences. And as I said the tool and platform support (like Ant) is much better with Java. .Net is like a shanty town with facades of real tools all around, where you go inside and find it's not quite finished... eventually some of those houses will be finished but right now there are plenty of other towns with real buildings, and original architecture.

    And for a second we can even forget Java, and just think about all of the other tools (like TCL/TK or Python or many others) that have more advanced GTK support than MONO does just yet.

    Any way you look at it, it makes little sense to go with MONO if you are considering tools to build a project.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Similarities by dekeji · · Score: 1

      So what would you say these differences are?

      Value classes, unsafe modules, pointer arithmetic, call-by-reference, templates (implemented differently from Java), multidimensional arrays, operator overloading, to name some.

      There are (even in 1.4) many more similarities than differences.

      And Madeleine Albright also has many more similarities with Claudia Schiffer than differences; which one would you rather have as your date? Differences can matter, even between things that are, over all, pretty similar.

      And as I said the tool and platform support (like Ant) is much better with Java.

      I think that's making lemonade from lemons. Java needed Ant because Java's compilation model was so odd that traditional UNIX tools didn't work. C# actually works very well with traditional UNIX tools because its compilation model is much closer to C/C++.

      A year ago, some important tools were missing for Mono, but today, everything I need is there; Java may have more quantity, but how many tools do you need?

      Any way you look at it, it makes little sense to go with MONO if you are considering tools to build a project.

      It may make little sense to you. To me, Mono is already more useful than Java (and I have developed in Java for half a dozen years). Java never managed to replace C++ for my work because it just had too many limitations. C#, on the other hand, looks like it is going to eliminate C++ from my work once and for all.

  60. Java does not really force handling... by SuperKendall · · Score: 1

    Java provides for checked exceptions, but also unchecked - I found long ago that I prefer to use unchecked exceptions in my own code and checked exceptions at the boundaries of API's.

    That I think is the best way - it gives the user some idea of what errors may occur, while freeing your code to throw exceptions at any level that get cought by a higher level handler that can deal with them and pass them on in a nice manner.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Java does not really force handling... by dekeji · · Score: 1

      That I think is the best way

      I think the best way is to do what C++ does: it also gives you both declared and undeclared exceptions, but it makes the "can throw everything" case the default for every function.

    2. Re:Java does not really force handling... by Anonymous Coward · · Score: 0

      I think the best way is to do what C++ does: it also gives you both declared and undeclared exceptions, but it makes the "can throw everything" case the default for every function.

      Java and C++ are very different when it comes to exception specifications. C++ doesn't have the notion of a "checked" exception. Also, C++'s behavior when an exception specification is violated is also very different from Java's. Most experts agree that C++'s implementation of exception specifications is garbage and should rarely be used. See here and here.

  61. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    The JVM is a runtime for Java. Yes you can target other languages at the JVM, but not very well (no pointers, runtime type checks, runtime array index checking, even if you don't want them). The CLR is a much better target for other languages to compile to since its more flexible.

  62. 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
  63. Re:Why should "cross platform" always mean Java/.N by eidechse · · Score: 1

    The term "scripting" language is almost meaningless now. So...what do you mean?

    Both Java and Python are byte-compiled and run in a VM. The only difference is the separate compilation step for Java and this difference is only due to the nature of their respective type systems.

  64. 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 pyrrhonist · · Score: 1
      Bittorrent?

      Zope is a much better example than Bittorrent!

      The Python Bittorrent client is a bad cross platform app...

      --
      Show me on the doll where his noodly appendage touched you.
    2. 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. =)

    3. Re:Wrong, wrong, wrong by ultrabot · · Score: 1, Informative

      There's no true data hiding, for example.

      What's the relevance of data hiding in OOP?

      There's some inconsistencies that look bad (why str(foo) and not foo.str()?)

      Well, there is __str__ which is "magic", and every objects implements one.

      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.

      Of course they are objects, they just weren't subclassable in older Pythons. They were still normal referenceable objects.

      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.

      Even if you don't use it, it's still there (and that's the way it must be). Everything you see are objects and names bound to objects. That's what I consider pure OO, not the B&D imposed by Java that enforces the use of *classes* for everything.

      --
      Save your wrists today - switch to Dvorak
  65. 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
  66. 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.

  67. ECMA covers FRAMEWORK by TheConfusedOne · · Score: 1

    Not the libraries.

    Go ahead, read through that whole thing and tell me where Win.Forms and ASP.Net are.

    This is the challenge/danger of Mono. They are reverse engineer implementing equivalents of these packages using OSS pieces. This is currently working but they'll always be playing catch-up and there's got to be at least one or two buried patent mines waiting to bite them in the arse.

    --
    --- I wish I could hear the soundtrack to my life. That way I'd know when to duck.
  68. Re:Why should "cross platform" always mean Java/.N by BigJimSlade · · Score: 1

    No, Python is a SCRIPTING...

    Could you tell me what, in your mind, is the difference between a "programming" language and a "scripting" language? The lines blur too much for me to really say. Maybe you meant that Python can be embedded in an application and used to script it; it's probably harder to do the same with Java. And I can certainly write a variety of full-fledged applications (web or desktop) with Python, just as I can with Java.

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

    Are you trolling, or have you just never looked at the Python Standard Library? I programmed in Java for 3 1/2 years before touching Python, and I can't think of anything in the Java Class library that is not in the Python Standard Library. Could you give an example?

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

    Please elaborate on what a "pure-OO" language is. I would argue that since everything in Python is an object (there are no primitives), it's probably closer to "pure-OO" than Java is, in that respect. Of course, it has sprinklings of functional programming as well, so maybe that's what you meant by not being "pure-OO"

    Furthermore, a lot of the verboseness and non-compactness of Java provides a lot of flexability.

    This one seems to be purely opinion, so I'll leave it alone ;)

    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.

    Again, be specific. What kind of control do you need over reading the descripter[sic]?

    Not trying to troll here, myself. Just pointing out that it's silly to make blanket statements such as these without backing them up with facts. And I'm no Python appologist/Java basher; while Python is my prefered environment, I know it has some limitations. Just making sure the facts are out there.

  69. Re:Why should "cross platform" always mean Java/.N by renoX · · Score: 1

    While I agree with nearly all your comment, I disagree with this one:
    > I can't think of anything in the Java Class library that is not in the Python Standard Library.

    Well Swing and AWT belongs to the Java "standard" class, IMHO both are worthless:
    -AWT is ugly
    -Swing was (is still?) buggy as hell: I tried programming in Java a long time ago and Sun took *years* to correct serious bugs.

    But still Python standard library doesn't have the equivalent of Swing as far as I know.. wxWindows doesn't belong to Python standard library.

  70. Delegates by SuperKendall · · Score: 1

    .NET supports delegates, which are effective "safe" function pointers. The .NET Framework libaries use these as the mechanism for event-driven programming models as opposed to Java which requires listeners interfaces. Although its debateable, I personally find this produces much more elegant code, although there are others who disagree with me - the point is, listener interfaces can be implemented in .NET too. In Java, you don't have a choice.

    A form of Java delegates is possible.

    In a simialr fashion, .Net is missing Dynamic Proxies, for which there is a similar .Net solution here.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  71. Mono...Sounds Familiar by mattdev121 · · Score: 0

    I thought I had mono once.

    Turns out that I was just tired from reading slashdot 22 hours a day.

    --
    mattdev@server$ touch /dev/genitals
    cannot touch `/dev/genitals': Permission denied
  72. 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.
    1. Re:But, why? by WorldMaker · · Score: 1

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

      Unlike Java, C# (and .NET in general) have something of a large focus on "P/Invoke" aka "Platform Invoke" aka "I have this C/C++ library and I know the function I want to call so call the damn thing".

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

      Why is a virtual machine necessarily slower? .NET and Mono JIT compile virtual machine bytecodes to native bytecodes and run at comparable speeds. Sure, a GC slows things down, but I'd rather have a good GC than "fastest performance possible".

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

      Reread the earlier mention of P/Invoke. Now, comes the fun part, another focus of .NET and Mono as a platform is that you can compile any language to Intermediate Language bytecode. Microsoft provides (for free as in beer) an optimizing C++ compiler that can (and does) target the CLR. (Of course, to use more of the fun stuff like GC and whatnot you have to delve into the "Managed Extensions for C++", which the latest "2.0" release is in the process of ECMA standardization.) Bytecode for bytecode, if you build the app with cross-platform in mind it will run in Mono. The Mono Project, I've heard, has been experimenting with Open Source C++ compilers in the hopes of building their own similar compiler.

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

      Who cares? It all comes down to GUI Builders. I certainly don't want to build windows by hand in source code. I've got better things to do with my time.

    2. Re:But, why? by gillbates · · Score: 1

      Yes, but the idea behind using interpreted code is that you are willing to sacrifice some performance loss for the sake of portability. If you use P/Invoke, you might as well compile to a native executable, because your code won't be portable across differing platforms. And Mono is even worse than C/C++ in this regard - even though #ifdefs are ugly, at least I can compile the same source tree on different platforms. Without the #ifdefs, a Mono programmer has to split source trees if he uses even a single P/Invoke. Worse, his code will still run slower than the C++ equivalent.

      And, incidentally, this is one of the reasons why I think .Net was such a bad idea. Why would I bother to accept the performance hit of a virtual machine if my code would only run on Windows? I'm better off using a native executable, because, at least in that case my users don't have to install the .Net runtime (which would require them accepting any EULA, no matter how onerous it may be).

      --
      The society for a thought-free internet welcomes you.
    3. Re:But, why? by Anonymous Coward · · Score: 0

      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?

      I think I speak for all of us when I say "pfffft"! Are you not into reusing tried-and-true libraries or something?

  73. Re:Linux is catching up by sanityimp · · Score: 1
    How about an AI instruction taker that you can tell it "Delete all files older than 2 weeks" and it will do it
    Thats brilliant... do that...
  74. Re:Linux is catching up by Z4rd0Z · · Score: 1

    What will happen if I ignore your dire warning?

    --
    You had me at "dicks fuck assholes".
  75. 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.

  76. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    That's true, but you can use jython to write swing apps using python, and then squirt it out as a .class file, with the end user totally unaware that jython was used in the process.

    I think Python is a better language than either c# or Java, which to me, try to be too much like C++.

    Python is byte compiled, so it really is more like C#/Java than say php, but then again there's now PHP compilers, and python itself can be compiled to a bin with distutils.

    I do a lot of app programming in python and then I can run the script on osx, windows, linux, etc..., but if I want to distribute a dumbell version for windows, distutils allows me to squirt out windows binaries without having to have python available on the end user's machine.

    This is better than Mono in my opinion, because an app written in C# still needs a .Net runtime, but a program written in Python can easily be compiled into platform specific binaries using distutils.

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

  78. You are vastly overstating differences by SuperKendall · · Score: 1

    Value classes, unsafe modules, pointer arithmetic, call-by-reference, templates (implemented differently from Java), multidimensional arrays, operator overloading, to name some.

    Yes, those are some differences. But even taken altogether, they are not so great. Just about anything you can do in Java you can do in .Net (or vice-versa), like delegates (for which there is an approach in Java) or Dynamic Proxies (for which there is also a .Net approach). A number of the items are just syntactic sugar which does not overly affect the architecture of a program. And frankly I would not list having operator overloading as a strength.

    And Madeleine Albright also has many more similarities with Claudia Schiffer than differences; which one would you rather have as your date? Differences can matter, even between things that are, over all, pretty similar.

    More like Madeleine Albright vs. Margret Thatcher. In the end it goes into a VM that does just about the same stuff.

    I think that's making lemonade from lemons. Java needed Ant because Java's compilation model was so odd that traditional UNIX tools didn't work. C# actually works very well with traditional UNIX tools because its compilation model is much closer to C/C++.

    Funny that one of the first projects that started up was NAnt...

    I would be curious to hear exactly what features of C# make it more amenible to using make than Java. As far as I know the same issues would still exist, as the platforms are virtually identical in features. I can also use Make with Java, it just turns out that it does not work nearly as well.

    A year ago, some important tools were missing for Mono, but today, everything I need is there; Java may have more quantity, but how many tools do you need?

    Well, on top of the myriad IDE's (which I don't even need anyway as I just use Emacs for almost everything) what about profilers (like OptmizeIt) or memory tools? and how many debuggers do you have for really tricky multi-threaded issues? You don't need them all the time, but they can really make the difference.

    I guess if you are writing a toy app then what is there now would suffice. But if you are writing anything real I would be hesitant to throw away the advantage of a wide range of analysis tools. And it only gets better in JDK 1.5 with a LOT of really nice monitoring features built into the VM.

    It may make little sense to you. To me, Mono is already more useful than Java (and I have developed in Java for half a dozen years). Java never managed to replace C++ for my work because it just had too many limitations. C#, on the other hand, looks like it is going to eliminate C++ from my work once and for all.

    There's the key. For you C# is a better C++, and with that I would absolutley agree. For me, C# is not a better Java because of limitations, lack of established tools and platforms it works on.

    Java I find to have a much heathier and large community as well, which is important.

    My personal replacement for C++ is Objective C.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:You are vastly overstating differences by dekeji · · Score: 1
      Value classes, unsafe modules, pointer arithmetic, call-by-reference, templates (implemented differently from Java), multidimensional arrays, operator overloading, to name some.


      Yes, those are some differences. But even taken altogether, they are not so great.

      Those differences are roughly what the JavaGrande forum recommended in 1998 for making Java suitable for high performance computing. Java still doesn't implement most of them, despite Sun's assurances that they would do this to the contrary.

      So, maybe those differences don't matter to you, but they matter to people trying to write high-performance code: Java just doesn't cut it, while C# does.

      what about profilers (like OptmizeIt) or memory tools? [...] But if you are writing anything real I would be hesitant to throw away the advantage of a wide range of analysis tools. And it only gets better in JDK 1.5 with a LOT of really nice monitoring features built into the VM.

      What good do profilers do me if Java doesn't support high performance computing in the first place? What good is a memory profiler if Java doesn't give me the tools to control the layout of data structures?

      In any case, code optimization doesn't require complicated tools or GUIs; a simple profiler that prints a textual report is sufficient. Anything really tricky requires careful manual instrumentation anyway.
    2. Re:You are vastly overstating differences by Anonymous Coward · · Score: 0

      The CLR doesn't support "high performance computing" with the Microsoft implementation and mono is much slower. The JVM outperforms Mono for the same tasks right now.

      Since you don't really write software, I don't imagine a memory profiler would do you much good. But for someone using the memory sucking Java platform to actually write software, they would be pretty useful. They'd be useful for anyone that used the memory-sucking .NET platform to write software, too, but you obviously don't meet those requirements anyway.

      But to both of you, there are a handful of profilers available for .NET. None of them are overly special, but maybe if you weren't both ignorant fucking rejects one of you could use Google to find out for yourself.

    3. Re:You are vastly overstating differences by Anonymous Coward · · Score: 0

      The CLR doesn't support "high performance computing" with the Microsoft implementation and mono is much slower.

      The C# language and the CLR do support high performance computing, in the JavaGrande sense. The Java language and JVM do not support high performance computing in the JavaGrande sense.

      Microsoft's and Mono's implementations of C# and the CLR may not be as fast as Sun's implementation, but people are working on it. Improving the performance of an implementation is routine. Fixing a language is hard, and for Sun to implement a few simple six year old recommendations is apparently impossible.

      The JVM outperforms Mono for the same tasks right now.

      What good does me a fast JVM do if the language and JVM lack the primitives I need for writing high performance software? Java does the wrong thing really fast, with no real hope that it will ever to the right thing.

      Since you don't really write software,

      Well, see, that's another one of your misconceptions about the world.

      But to both of you, there are a handful of profilers available for .NET. None of them are overly special, but maybe if you weren't both ignorant fucking rejects one of you could use Google to find out for yourself.

      Mono comes with a profiler.

    4. Re:You are vastly overstating differences by Anonymous Coward · · Score: 0

      The C# language and the CLR do support high performance computing, in the JavaGrande sense.

      The CLR doesn't provide high-performance computing in reality, which is all that matters.

      Well, see, that's another one of your misconceptions about the world.

      No it isn't. You're no one. You write nothing.

      What good does me a fast JVM do if the language and JVM lack the primitives I need for writing high performance software?

      It lets you solve real problems and does so faster than Mono. All of your hand-waving aside, Mono is a slower, less complete, and fairly unimpressive platform when compared to the Java platform. It'll be a slower, incomplete, half-assed effort three years from now, too, and in the mean time people will continue to develop solutions using Java that actually do what they need, because it works.

  79. Psst. Ruby handles Regular Expressions far better by Merk · · Score: 1
    irb(main):001:0> re = Regexp.new("foo")
    => /foo/
    irb(main):002:0> re.match("food")
    => #<MatchData:0x402c3aa4>

    Or even easier:

    irb(main):003:0> /foo/.match("food")
    => #<MatchData:0x402bc178>

    Anyhow, I can't wait until Parrot and Mono get far enough that your choice of language is decoupled from your choice of platform / runtime.

  80. Re:Why should "cross platform" always mean Java/.N by nikster · · Score: 1

    i am an expert in Java and a dabbler in Python. i love python for its clean syntax and fully-OO model (everything is an object). also for the elegance with which it can process strings or files.

    but i found it lacking in GUI support. Tcl/tk is _not_ the state of the art in GUI building. Far from it, actually.

    I was considering writing a client app fully in Python. But then i found that i needed tabbed panes, tables, tree views, as well as the ability to draw graphs in all varieties.

    AFAIK Python as none of that. Java has (great!) tables, tabbed panes and tree views built-in, as well as multiple open source frameworks for graphing (i used JFreeChart).

    i also found it irritating that i didn't have the strict java package/class name/file name structure. but i assume it can be done in python, too and it's just not enforced.

    Oh, and Eclipse. There is nothing like it for Python. I guess there are python plugins, but they don't come with the wide range of tools that are available for Java (refactoring, etc). Those are huge, huge time-savers, too.

    I am perfectly willing to give beautiful Python another chance if somebody can provide Python-equivalents for all of the above.

  81. Re:Why should "cross platform" always mean Java/.N by killjoe · · Score: 1

    Again. Why? If you like python you use the python interpreter (VM). If you like java you use the JVM.

    I just don't get why somebody would want to do such a silly thing.

    --
    evil is as evil does
  82. Re:Linux is catching up by sik0fewl · · Score: 1

    Just don't click said button if your installation is over two weeks old.

    --
    I remember when legal used to mean lawful, now it means some kind of loophole. - Leo Kessler
  83. 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
  84. Uh... by rd_syringe · · Score: 1

    The reason for making the first letter of the method names upper case is because the programmer chose to do that. If you don't want to, you don't have to.

    I uppercase the first letters of my methods, lowercase the first letters of my properties, etc. Gasp--I organize my shit.

    This sort of goofy knee-jerk reaction illustrates just how closed-minded and out of touch some of you guys are. When all Linux desktops are based on Mono in five years and we're trading .NET binaries back and forth between Linux and Windows, will you still be complaining about "mangled conventions?" Go ahead and stick with your C language if you want.

  85. Java by rd_syringe · · Score: 1

    Yeah, and Java really took off now, didn't it?

    Meanwhile, compare to the massive level of support out there for .NET already. And the next version of Windows is replacing Win32 with .NET, so it's only a matter of time before it's everywhere.

    Nobody's imposing conventions any more than C imposes conventions or GTK imposes conventions.

    I'm sorry, but .NET is taking off, and taking off a lot more successfully than Java. I've never even seen a Java application on Windows before. I run across .NET binaries all the time, and companies like Adobe are already talking to Microsoft and examining .NET solutions for their products.

    1. Re:Java by Anonymous Coward · · Score: 0

      You've never tried Azureus? Never known anyone that tried NetZero back in the boom? Never given IDEA a spin? Have you really never used Maple?

      I don't even like Java. Programs eat heap like crazy, the language lacks considerable static type safety while being exceedingly verbose, its first two major non-Microsoft graphical toolkits were a bucket of ass, and it's trumpeted by a group of zealots that give Mac users a run for their money. Given all of that, I've still seen Java programs running on Windows. It also has far more robust libraries available--right now. And .NET programs suffer from the same memory woes and Windows Forms is pretty shitty.
      As far as I'm concerned, most of the people interested in the platform so far are people looking to reinvent the wheel for something fresh. Maybe someday it'll have something to show for itself, but right now it's sort of funny how unadopted it is given Microsoft's monopoly. Almost nothing uses it, and what does is often just a half-assed reimplementation of something you already have installed.

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

  86. Answer by rd_syringe · · Score: 1

    If you're honestly comparing .NET/C# to wxWidgets, it's clear you've never even cracked open a book or read a single webpage about .NET and the CLR.

    1. Re:Answer by immytay · · Score: 1

      I believe the poster's point is relative to Mono and how it's being pitched for cross-platform development. The poster also points out that there are potential problems with using either GTK or winforms across platforms, and how it is likely to lag pure MS .Net.

      I'm glad that Mono is being developed to bring the CLR technology to other platforms, but I understand the poster's skepticism for using the GUI APIs across platforms.

    2. Re:Answer by kollivier · · Score: 1

      No, that would clearly be an apples to oranges comparison. Actually, what I was reacting to was some comments in the article suggesting that Mono+GTK# is some long-awaited alternative to Java for developing cross platform GUI applications. The conclusion certainly seems to imply that Java was the only real "cross platform" language+toolkit out there before Mono+GTK#, and the author(s) sound almost ecstatic that there is now a way other than Java to develop cross-platform GUI apps without going with "low level" languages like C/C++. Hence my response of "uhm, I've been doing this for years already". ;-)

      I've actually programmed with .NET, though not extensively, and I do understand why this is useful to some people. But I would dispute the point that this is the first "non-Java" way to really get cross-platform, and in some cases it may not even be the best one.

  87. Mods: he's trying to be funny by Anonymous Coward · · Score: 0

    He's trying to be funny about the diasese called mono for those who didn't get it.

    Clue #1: ...(and a possible cure, please?)
    Clue #2: This is gobily-gook! (gobbledygook) http://en.wikipedia.org/wiki/Gobbledygook

    Ref for Mono:
    http://www.wlu.ca/~wwwhs/mono.shtml

  88. 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 Anonymous Coward · · Score: 1, Interesting

      Well, then you get into murky legal territory.

      When Microsoft standardized the .NET CLR, the include a large number of libraries. Go ahead and write all the code for any platform you want that use System.Threading, System.Security, System.Regex or basically all of the framework that lets you develop the core of your application (about 95% of .NET as a whole), and never worry that Microsoft can take legal action against you for it - they've released their right to prosecute those patents.

      The problem is that System.Forms was not in the standard - In theory, Microsoft could issue a cease and desist order to the Mono group ordering them to remove support for the System.Forms library from Mono.

      Now, Microsoft has never done anything akin to that before (for instance, they've never attempted to prosecute their patents against the developers of Wine) but that doesn't mean if backed into a corner, they wouldn't. If Mono is to become an integral part of the Linux Desktop, we must use only libraries that the community has an unimpeachable legal right to use.

      Besides, seeing as there aren't that many System.Forms apps in the Win32 world yet, if we get GTK# right, get good support for it in MonoDevelop and get strong Win32 support for it, we can talk even developers targeting Windows to use it. I think Microsoft's worry about that is one of the reasons they're moving to release free versions of Visual Studio .NET.

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

    3. Re:Gtk#? Conservative GC? Hack? by Anonymous Coward · · Score: 0

      So instead of making the current generation of applications truely cross platform and well tested on each platform, we have competing standards... How is this in any way better?

      I would focus on making Windows.Forms support rock solid..

    4. Re:Gtk#? Conservative GC? Hack? by Anonymous Coward · · Score: 0

      Gtk# isn't a ridiculous idea, but Mono blundered when they decided on the wine dependency implementation of Windows Forms. Now they've scrapped that idea and are going with a fullymanaged implementation based on Cairo and I guess GDI for windows, with theming support - similiar to what the dotgnu guys are doing.

      If they hadn't made that bad decision and had worked with the Pnet guys, we would have a kickasss SWF themeable implementation right now.

    5. Re:Gtk#? Conservative GC? Hack? by zyridium · · Score: 1

      I totally agree. What I have an objection to is that people try to suggest that Gtk# is all you need and we can just throw wine at Windows.Forms. But I suppose with open source you have to follow the enthusiasm of the community...

      Some people might think that Gtk# is 'cooler' than Windows.Forms (although I would disagree) but I don't think it is as beneficial to the success of Mono...

    6. Re:Gtk#? Conservative GC? Hack? by Rick+BigNail · · Score: 1

      Gtk# and libraries like that are very important to some people who like C# but are reluctant to use Windows.Forms from Microsoft due to patent issue.

  89. I'll give you a good reason by Anonymous Coward · · Score: 0
    For many years, the number 1 issue leading to CERT security alerts has been caused by buffer overflows that allow arbitrary code to be executed. This does not change despite the lectures about buffer overflows being the programmers fault, be more careful.

    Moving to a language that manages your memory for you gets rid of this security issue with no extra effort on your part. That class of bug simply doesn't exist.

    Now that isn't an argument for using Mono, it is just an argument against using C or C++ when you don't have a good reason to. Now let me answer your list from the point of view of a Perl programmer (which I am).
    1. Irrelevant to me since Perl is not a knockoff of Microsoft software.
    2. Have you heard of CPAN? Plus you can put wrappers around existing modules, in fact with Inline::C and relatives, it can be amazingly easy to do that.
    3. Figure out your performance requirements and react appropriately. My code runs on servers that users access. If there is a performance bottleneck, it is likely to be on the database. Furthermore we can scale by buying servers. In fact one programmer's salary for a few months would easily buy our entire set of webservers. If a faster alternative environment took just one more developer because it requires us to do extra work, then we're losing money.
    4. I already know Perl. Furthermore if you're unwilling to learn new environments, then you're in the wrong business.
    5. I already addressed the memory leak issue. It is not that I make that mistake often in C, it is that it is irresponsible to the point of being unethical to needlessly force my employer's security to rely on my care in managing memory. When there is need, then fine. If there is not need, then that's just plain stupid.
    6. I'm using a well-understood set of technologies.

    As for the rest of your points, the first 2 address kinds of work that I don't have to do. If I needed to do those jobs, then I'd choose an appropriate language. But they are irrelevant for building a website. The point about cross-platform is irrelevant since building cross-platform web applications is easy. And in terms of ease of programming, Perl is sufficiently different in terms of productivity to justify a switch from C or C++ to Perl (if your problem set makes it feasible).
    1. Re:I'll give you a good reason by Anonymous Coward · · Score: 0

      C++ can manage your memory and check array bounds for you. It's in the standard library. You can also garbage collect C++ if you so desire.

      Of course, a programmer that can't count and can't remember what resources he's allocated is going to be writing code that's crappy in all sorts of other ways, no matter how many memory management training wheels the language has.

      But these two particular hoary old points just aren't a valid criticism of C++.

    2. Re:I'll give you a good reason by gillbates · · Score: 1

      Regarding #2, I am willing to learn new technologies, but I don't see the point if it doesn't do anything for me.

      1. In the beginning, programmers wrote in machine code. But using toggle switches and numbers was difficult and error prone, so assembly language was born.
      2. Assembly language was good, but it was still hard to read. Many common structures, such as loops, could not be visually parsed. Hence, C was born.
      3. Because C compilers would accept inline assembly, those who switched to C could simply wrap their assembly libraries in C functions, and continue to use them. C was good, but the paradigm of structures and functions had its limitations. Hence C++ was born.
      4. C++ compilers, likewise, would compile C code. So switching to C++ didn't mean throwing out your C function libraries. C++ added the class, and later, templates and exceptions.
      5. C++ memory management was initially error-prone. Though later additions such as a the STL and garbage collection libraries addressed this, some programmers still thought it would be a good idea to build a language with automatic garbage collection - they called it Mono. But instead of maintaining backward compatibility with C++, they threw out some of its most useful features, such as templates and overloaded operators. So a programmer can't switch to Mono without taking a substantial loss, and, as history shows, the dominant players in the market are those who are backward compatible.
      6. I agree with your defense of Perl. If anything, you've convinced me that I'd be better off learning Perl than Mono.
      --
      The society for a thought-free internet welcomes you.
  90. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    Obviously, two major reasons are that (1) you get to reuse all of the Mono and some .NET libraries out of the box without having to create bindings for your particular language. And (2) is because when you write something in Python then you have this huge framework/runtime that you have to worry about the end-user having.

    the .NET libraries/runtime will be ubiquitous on windows platforms eventually and most linux distros will package up Mono.

  91. Question 40: Will MS change the spec? by Anonymous Coward · · Score: 0
    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.

    The question seems to be evaded.

    The point of Mono seems to be to have a cross platform framework. If MS changes the spec, then Mono is out on its own. It seems a bit naive to think that Yet Another Framework with a small user base would stand by itself.

    Alternately, MS could just claim the whole thing under its patents and then just sit on it to keep lock -in.

    1. Re:Question 40: Will MS change the spec? by Anonymous Coward · · Score: 1, Interesting

      The point of Mono seems to be to have a cross platform framework.

      No. The point of Mono is to have a modern programming platform for Linux that is (1) open source, (2) not controlled by a big company, and (3) doesn't suck technically.

      Yet Another Framework with a small user base would stand by itself.

      Yeah, I know. It's also naive to think that Yet Another Operating system with a small user base would stand on its own, like Linux. And it's naive to think that Yet Another Gui Library with a small user base would stand on its own, like Qt or Gtk+. In fact, we should just all roll over dead an pay a few thousand bucks to Microsoft and Sun each.

      Alternately, MS could just claim the whole thing under its patents and then just sit on it to keep lock -in.

      No, they couldn't because Microsoft doesn't have "patents". Microsoft has a patent on .NET, a patent that clearly does not affect most Mono users because they aren't using .NET.

      And I'll take a hypothetical threat of a possible Microsoft lawsuit over a platform that comes shipped out of the box with lock-in, like Sun Java. With Sun Java, we don't have to guess whether Sun claims ownership, they already own it.

  92. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 0

    ...because it's not officially "java" at this point, probably because Sun won't bless them with certification.

    Hava Jython and Kawa gotten "certified" from Sun?

  93. Re:Why should "cross platform" always mean Java/.N by Ambassador+Kosh · · Score: 1

    An even better reason to use python is that you can target these various platforms. Currently you can just write python and it will work in cpython and jython. Fairly soon it will work on the CLR http://ironpython.com/ and at a pretty good speed also and it will likely get faster with time. From what I can see I can write my apps in python and will be able to deploy them on almost any kind of platform that is around in many ways.

    Overall I see no reason to use java,c# etc but the java runtime and the .NET CLR could be useful and I don't have to change languages to use them or their libraries.

    --
    Computer modeling for biotech drug manufacturing is HARD! :)
  94. Re:Why should "cross platform" always mean Java/.N by Ambassador+Kosh · · Score: 1

    The python standard library has tkinter. Currently it looks ugly but that is being worked on however it is easy to write for and it runs quickly and I have had almost no bugs working with it at various times.

    Although based on looking at tkinter and some of the other toolkits it really doesn't look that bad it just does not look as good as the more modern things like qt and gtk both of which have good python bindings also.

    --
    Computer modeling for biotech drug manufacturing is HARD! :)
  95. That proves absolutely nothing by kaffiene · · Score: 1

    ECMA does not prevent patents on standards, nor charging for those patents.

  96. Re:Why should "cross platform" always mean Java/.N by kaffiene · · Score: 1

    How about performance?

  97. Re:Why should "cross platform" always mean Java/.N by Brandybuck · · Score: 1

    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.

    Get a clue, because that is what will happen with .NET. Your managers will fall in love with the promises Microsoft whispered in their ears, and demand you use .NET under Windows.

    --
    Don't blame me, I didn't vote for either of them!
  98. Re:Why should "cross platform" always mean Java/.N by Brandybuck · · Score: 1

    because when you write something in Python then you have this huge framework/runtime that you have to worry about the end-user having.

    And how is this different from .NET?

    --
    Don't blame me, I didn't vote for either of them!
  99. Re:Why should "cross platform" always mean Java/.N by 55555 · · Score: 1

    The eric3 Python IDE http://www.die-offenbachs.de/detlev/eric3.html

    It uses QT so it's only free on Linux.

    It's the reason I don't want to switch from Python, nothing else has as good an IDE.

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

  101. Mono? WTF? by Anonymous Coward · · Score: 1, Interesting

    Guys, I hate to say this, but Mono offers absolutely nothing new. It's essentially a clone of .NET, which is essentially a clone of Java, which is fuller featured, more mature, and more system independant than Mono/.NET will be in a long time. I've heard C# is nicer than Java. Ok, that's great.

    But why is no one talking about Python and Perl?

    Python and Perl are capable of doing everything that these languages can do, and they essentially do it better. And with the introduction of Perl 6 and the Parrot VM, Perl 6 and Python will both run on the same framework, leveraging the two most successful free languages created.

    See, Parrot, Python, and Perl are 100% free software innovation. They aren't a reimplementation of some crap Microsoft put on the table. Why are we always trying to play catch-up? Why do we ignore the good stuff we have going for us?

    Why use .NET? Why even bother? According to the Mono FAQ, stuff written in Mono won't even necessarily run on .NET. They claim it's not even intended to. Fine, but look how many people are already confused about this. Developers are going to think (mistakenly) that they can write Java-style write once run anywhere code with Mono and they will be sorely, sorely mistaken. Then they (and their managers) will get upset, and Mono will be assumed to be broken, because it doesn't do what the PHBs thought it was supposed to do.

    And this will be bad PR for Open Source. First, it looks like we're ripping off MS's ideas, because, well, we are. Then, it looks like we can't even get it to work. Then, people rightfully wonder why when we have two systems that are essentially very similar, ie, Java and C#, we decide to back MS technology instead of more mature, more widely available Sun technology.

    I say fuck 'em both. If you want a statically typed language, write one to run on Parrot (it's already been done, from what I understand). Why go with some proprietary BS?

    Oh, did I mention Parrot is FAST?

    1. Re:Mono? WTF? by Anonymous Coward · · Score: 0

      Who gives a fuck about Parrot? Nobody. All you can do is write Parrot assembly language right now. Mono and .NET are here now. Parrot is years and years off (if ever) for production use. Of course the Mono guys had the ECMA 334 and 335 specs to run with so they're just doing an implementation.

      By the way, I believe both Python and Perl can run on top of .NET right now. It's not as much about the language C# as it is about an advanced IL and runtime that is much more conducive to multi-language targetting than Java bytecode and its runtime ever will. Heck, Sun wouldn't even change the runtime to support propert generics. They went with type erasure which means its just a compiler trick.

      Maybe Parrot will turn out to be a kickass bytecode/runtime at some time, but you're way to early to be pushing it.

    2. Re:Mono? WTF? by Anonymous Coward · · Score: 0

      Parrot is FAST! Too bad it can't do anything!

    3. Re:Mono? WTF? by mitchy · · Score: 1

      I agree with you wholeheartedly, except for one simple fact - which just happens to be the reason that Mono must exist for us to have meaningful access to cross-platform apps on mainstream hardware:

      .NET comes preinstalled on anything that says 'Windows'. The others (perl, python, jython, parrot, php, php-gtk, wxWindows...) do NOT.

      Got it? I love python, and think it is a much more useful environment - but it is NOT preinstalled on Windows boxen. And if Joe Schmoe has to download and install something first in order to run your app, he ain't gonna do it.

      And don't get me started on the understaffed, underpaid, overworked Corporate IT schmoes who will have to download and install python on 18,000 desktops just so your calendar application will run...

      We've proven repeatedly that we have the resources, skill and determination to outdo Microsoft at anything we want to do; and now the most important challenge has nothing to do with the technology, but how it is made available to the Windows desktop.

      I believe that this is the only reason that Mono will survive, as it is currently the only platform that we can develop with and know that it will execute on a Windows box, out of the box.

      --
      "The mind is a terrible thing to, um, uh, oh bollocks." -- Me
  102. 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.

    1. Re:C# vs. Java - NOT by Anonymous Coward · · Score: 0

      You could compile C++ to the JVM, too. As long as you don't want to interact with the Java platform, you can implement whatever language you want for the JVM. The same is true for the CLR. Want type-safe variants with pattern matching? No problem, we can do that. Want to make it available anywhere else? Nope. Sorry.
      No one is going to use a Eiffel component from C# (and the Eiffel implementation is probably the best of third-party languages). There currently is no Python compiler for the CLR, however IronPython is in development. There's no Perl compiler either, but ActiveState developed an inefficient bridge. I have no idea if there's a Ruby compiler for the CLR, but I'll bet a bagel there isn't. Nermerle is an incomplete toy language. None of the ML compilers for the CLR are complete. I don't know or even care if there's Oberon or Pascal compilers for the CLR, because they're not useful. There's no way I'm going to waste my time deploying Fortran on the CLR, either.

      On the other hand there are all sorts of compilers and interpreters for the JVM for all sorts of languages. Jython, several schemes, and who knows what else. They suffer from the same woes, but whatever. You're a tard and you're speaking out of your ass and I've humored you more than enough already.

  103. Not that kind of tour... by xheotris · · Score: 1

    "Over the coming weeks, Ars Technica will be taking a look at Mono, including a basic introduction to Mono,...

    At first read, I thought you meant you'd found a girl who would kiss geeks and nerds!
    Oh well.

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

  105. Re:Why should "cross platform" always mean Java/.N by Anonymous Coward · · Score: 1, Informative

    For GUIs did you look at wxPython? PyQt? PyGTK? I've used wxPython which is very complete and native on Windows and Mac (think it uses GTK on Linux which is a shame but there ya go). I have touched PyQt briefly a few times and it seems nice and high quality too.

    As for IDEs, eric3 is good. Very good. You talk about time savers - eric3 will kick your ass!! It is written using PyQt though so not sure whether it runs on Windows. Personally I still use a text editor tho.

  106. Kissing up to Redmond and you'll get MONO! by kupci · · Score: 1
    It always amuses me to see company after company get cozy with MSFT only to watch in disbelief when they are squashed like a little bug. Think Sybase (squashed by SQL Server) and Siebel (soon to be squashed, maybe) and many others. Perhaps at this point Miquel will walk away and say, we'll this was only an intellectual exercise anyway. I wish I had time to waste like that.

    In addition to being naive, I agree that there seems to be a little bit of MSFT adulation to blame from what I've read by Miquel. It seems he is entirely unaware of other competitive solutions such as, most obviously, Java.

    MSFT uses it's monopoly to brilliant advantage against various adversaries. Had not Linus written Linux, I believe MSFT would own the server market in addition to desktop, having wiped out each overpriced, proprietary Unix one-by-one. Why those folks don't spend their valuable time working against MSFT instead of in their favor is beyond me.

    It's sort of like Ralph Nader running for office and wondering why Republicans are supporting him. Suckers! They know the more successful Nader is the more votes taken away from the Dems!

    Finally, here's what Sosnoski thinks, he's a rather sharp programmer living "in the Shadow of Redmond" so I think he knows what he's talking about, and he too points out that, while the Mono team is nowhere close to anything competitive to .NET, *even* if they do eventually get close, they will be talking to the lawyers.

    My thoughts are, from past history, they won't even need to bother with lawyers. MSFT will just use it's old tricks they used against Borland and all the others, i.e. poorly documented or unpublished APIs, secret hooks, etc.

  107. Miguel a Weirdo? by Anonymous Coward · · Score: 0

    What's up with Miguels gay-ass monkey fixation? Does
    he have a monkey fetish?

  108. Re:Psst. Ruby handles Regular Expressions far bett by mackstann · · Score: 1
    You can do something along the lines of your first example in Python as well. (assuming your point was to show that you can have regexp objects)
    >>> r = re.compile("foo")
    >>> bool(r.match("food")) # the returned r object has some more complex / useful methods, but it can simply be checked for truth
    True

    And I don't really like regexps being built into a language's syntax, but that's just a matter of opinion. (it doesn't make me nauseous, I just prefer simple syntax)

    Parrot does seem really cool to me too, I can't wait to see where it goes in the future. :)

  109. Python fanatics by Anonymous Coward · · Score: 0

    Have you noticed how 'sensitive' Python developers are?? They remind me of the Mac and Amiga zealots. I don't know how people can get so worked up over a silly little scripting language like that.

  110. 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
  111. Re:Why should "cross platform" always mean Java/.N by killjoe · · Score: 1

    Because the .NET VM puts certain restrictions on the language. For example it prohibits multiple inheritance. In the end all .NET languages have to look like C#, if they have additional features then they have to abandon those features.

    It makes no sense to develop for .NET in any language other then C#.

    --
    evil is as evil does
  112. Re:Why should "cross platform" always mean Java/.N by Brandybuck · · Score: 1

    Uh, you missed my point. Mono or .NET both have a large runtime that the user needs to install. If people don't want to download Python in order to run Python scripts, or even download a JRE to run Java executables, what makes you think they'll want to download .NET to run a C# program?

    Of course, Microsoft is going to "provide" this on all Windows platforms, but that still doesn't help Macintosh, Linux, Solaris, BSD, etc.

    --
    Don't blame me, I didn't vote for either of them!
  113. Re:Why should "cross platform" always mean Java/.N by killjoe · · Score: 1

    MacOSX, Freebsd, and linux distributions come with python just like all windows will come with .NET. I don't know or care about solaris. Java is SOL because nobody wants to carry it by default, maybe if they open sourced the thing it would be different.

    --
    evil is as evil does
  114. Why, why, why ??? by Fuzuli · · Score: 1

    Please explain to me why should i choose Mono for cross platform development instead of Java ? Ok, you may say, another alternative is always good, the freedom to choose bla bla.. but when i compare the most important factors for me, i can't find any reason to use Mono. First of all, Java has many years of cross platform usage, not only the language and platform is cross platform, great development tools like netbeans and eclipse are also cross platform. Believe me, this is important. If you are making a living by writing software, you know that "it is possible to do it" and "it's done easily" are not the same things. Yes, somehow someone can come up with a development environment for mono, but why should i bother to switch to that environment and lose time to learn it, when i have eclipse and netbeans ? Also, swing may be a pain in the a*s to use, but when used, does it job pretty well, and enables cross platform gui development also. I have to do gui work a lot, and java provides that too, in a consistent enough way (there are minor issues in swing, but nothing that'll create a big problem)
    There are tons of documentation and already written open source code in Java.

    Ok, now that I've mentioned the user interface development, and development tools issues, let's come to the enterprise development part. .NET uses COM+ for application server related jobs. And com+ is , ummm, well COM in an application server !! What will mono guys do, to give me application server functionality ? Do i need to mention i have free and pretty well options in Java ? (Again also cross platform)

    And about the future of Java, i have no doubt that it will be strong in future. Any other big player than MS is supporting it. IBM, SUN, ORACLE. Eclipse and netbeans are constantly under development with MUCH larger developer and user bases. And why should i choose MONO ? with it's compatibility issues with .NET ? Has anyone bothered to take a look at .NET framework 2.0 beta ? Avalon, Indigo ? These are huge leaps forward for .NET, and please convince me that MONO team has the resources to keep up with MS team.

    IF you are talking about a new toy to play around, experiment in your spare time, MONO is ok. But i really, can't imagine myself trying to use it for production of software that i'll be paid for. It may become an alternative after some time, but i don't believe it will come close to Java in terms of scope of available tools and development environments.

    1. Re:Why, why, why ??? by Anonymous Coward · · Score: 0

      Please explain to me why should i choose Mono for cross platform development instead of Java ?

      Because Java sucks? :-)

  115. Re:Why should "cross platform" always mean Java/.N by turgid · · Score: 1
    Get a clue

    I've got plenty already thanks.

    I know what stupid PHBs will do. I've worked for them in the past. The point I was trying to make is that Microsoft has done at least one thing right with .NET, and that is offer several official, or at least, semi-official languages for it, unlike Sun who refuses to acknowledge that anything other than Java (language) will run on the Java Runtime Environment.

  116. Re:Why should "cross platform" always mean Java/.N by samael · · Score: 1

    It means that when I'm working in C# and I want a component to do Y, I can download one written in any .NET language, not just one written in C#.

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

  118. Re:Why should "cross platform" always mean Java/.N by Snaapy · · Score: 1

    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?

    As a Java and Python developer I have at least one reason: executing speed. Python is very dynamic language. It makes it sloooow... e.g. Python lacks primitives. This might be a good idea from a programming theory viewpoint, but in practice the speed limit of HW always hits the application at some point unless you are doing "just" scripts.

    .NET and Java don't need special commands (map, etc.) to optimize for loops away.

    Also, Python gives great freedom to a developer. This leads easily to unmaintainable code. Of course good developers can avoid this, but rarely *all* developers have that good skills.

  119. No mono by 12357bd · · Score: 1

    1 - Mono is designed to be a second player (to play catch-up with MS is a 20 years old game).
    2 - Any effort put in mono is an effort taken from java (do you like to favour MS?, me no.).
    3 - Instead of playing MS games why not to build an OSS cross platform environment (or force Sun to fully open java)?

    4 - The three previous items contains the 'MS' letters, that's the problem, that's why I don't like mono.

    --
    What's in a sig?
  120. Re:Why should "cross platform" always mean Java/.N by peti · · Score: 1

    Well, to answer you claims:

    1. Cobol has been around far longer than Python or Java, but that does not make it better for today's SW development tasks.
    2. Java runs on ALL modern server and desktop platforms and on most modern mobile phones. That's hard to beat.
    3. If we start counting "features" that make code shorter or development quicker, then Perl is the definite champion. But does this help redability and mantainability? What about learning curve?
    4. Huh?? That's a requirement for any SW platform, not a competitive advantage!

  121. Re:Why should "cross platform" always mean Java/.N by Seahawk · · Score: 1

    1. How is Python performance?

    2. Syntax - the learning curve from c++ to Python in MUCH steaper than going to java/c#. I must admit I have no great experience with Python, but when I wanted to give it a try, I was appaled by its lack of {} and ;'s - plus that the whitespacing is important for syntaxing - It just doesnt seem intutive to an old c/c++/java/c#/php developer.

    There might be valid reasons for the "weird" syntax - but if it makes the language harder to learn for alot of people, it will doom(for a lack of better word) the language.

    Not trying to start a flame war - but that is why I dont use python.

  122. Catching Errors by fforw · · Score: 1
    Errors indicate a serious virtual machine malfunction.

    That means that the same malfunction or a resulting one may serioulsy hinder your ability to execute any code at all which makes it somehow difficult to implement a decent handling.

    --
    while (!asleep()) sheep++
    1. Re:Catching Errors by Anonymous Coward · · Score: 0

      Errors indicate a serious virtual machine malfunction.

      That means that the same malfunction or a resulting one may serioulsy hinder your ability to execute any code at all which makes it somehow difficult to implement a decent handling.


      Are you saying that OutOfMemoryError, an Error which is fairly common and can be caused by simply attempting to allocate a huge array, can seriously hinder your ability to execute any code at all? I hope that isn't the case, and that was my primary point. I'm fully aware of what errors are normally used to signify.

    2. Re:Catching Errors by fforw · · Score: 1
      Are you saying that OutOfMemoryError, an Error which is fairly common and can be caused by simply attempting to allocate a huge array, can seriously hinder your ability to execute any code at all? I hope that isn't the case, and that was my primary point. I'm fully aware of what errors are normally used to signify.
      While OutOfMemoryErrors are surely more common while allocating large amounts of memory, they can also occur during the allocation of small objects in which case your options to handle them may be seriously reduced.
      --
      while (!asleep()) sheep++
    3. Re:Catching Errors by e-Motion · · Score: 1

      While OutOfMemoryErrors are surely more common while allocating large amounts of memory, they can also occur during the allocation of small objects in which case your options to handle them may be seriously reduced.

      While that seems to be the case at first glance, once you take unwinding of the stack and the execution of finally blocks (as well as the unlikeliness that the error will even be thrown when allocating a small object) into consideration, it becomes apparent that it is extremey unlikely that handling an OutOfMemoryError will prove to be difficult unless that handling uses a lot of memory, which would be foolish, given the type of error that occurred.

      IHMO, the reason that handling an OutOfMemoryError may be difficult has little to do with the need to allocate memory within the handling code. The simple fact is that most Java code was not written with OutOfMemoryErrors in mind and assumes that the application will terminate when one occurs. This assumption is hardly ever documented. Unfortunately, a lot of server-side code has to remain running even when such errors occur. Unless the code specifically documents the fact that OutOfMemoryErrors are handled gracefully, then you have to assume that the internal state of the objects used could be corrupted.

      As an example, consider a method that must update two Hashtables inside of an object, and it is required that both succeed (updating only one would violate the contract provided by the object). In most Java code, if the first update succeeds, and the second fails due to an allocation failing (possible but unlikely), the object's state will be corrupted. After an OutOfMemoryError, figuring out what state your application is in can be hard, if not impossible, unless every piece of the executing code does not assume that OutOfMemoryErrors are grounds for termination.

      It could be that I'm taking out of memory conditions too seriously. I did come from a C++ background, and C++ programmers tend to write their code with low memory conditions in mind. Java programmers, on the other hand, seem to mostly ignore memory allocation failures.

    4. Re:Catching Errors by e-Motion · · Score: 1

      Errors indicate a serious virtual machine malfunction.

      What you are describing is actually VirtualMachineError, not Error. The Error class is merely for exceptions that you probably won't want to catch. OutOfMemoryError is derived from VirtalMachineError, but that's probably not a good idea, considering that the other classes derived from that class (InternalError, UnknownError, StackOverflowError) are far more serious.

  123. {0} by alex_tibbles · · Score: 1

    What is that formatting control character? It appears to be the equivalent of %s in C. Does it provide a compile-time check that the number of arguments is sufficient? If not, then it's regressed from C++ (where std::cout Excess parameters are ignored, in C++ at least.

  124. Re:looks promising but what is it really against? by Anonymous Coward · · Score: 0
    magine 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.

    That's called Plone.

  125. Re:Why should "cross platform" always mean Java/.N by bay43270 · · Score: 1

    You didn't even read the text you quoted. It refers specificly to .net libraries. Of course you still have to write extra code to access COM. .Net DLLs can be accessed by any .Net language easily.

  126. Primitive by SuperKendall · · Score: 1

    Yes MONO has profilers, but most ofthem are pretty primitive - not much beyond the output from -Xhprof stuff in Java, and soon to be eclipsed by 1.5.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  127. "high performance"? by SuperKendall · · Score: 1

    So, maybe those differences don't matter to you, but they matter to people trying to write high-performance code: Java just doesn't cut it, while C# does....
    What good do profilers do me if Java doesn't support high performance computing in the first place? What good is a memory profiler if Java doesn't give me the tools to control the layout of data structures?


    That might mean something to me if .Net were not currently slower than Java. But I guess no matter how slow a platform is, as long as it has "high-performance" support it must be better? I see...

    And what "tools to control layout of data structures" are you talking about? Now you are just insane. I would love to hear what that even MEANS, much less how there are not ten or twelve superior implementations for Java.

    Here's a free clue for the day - most of your performance losses are going to come from algorithmic issues, not platform ones. Those are what you use profilers to detect and fix. I was able to get a very responsive Swing app going on a 486/66 (remember those?) with only 32MB of memory just by profiling the app and seeing what needed overriding in Swing for performance. No matter how much "high performance" support your platform has, if you code it wrong the performance is going to suck. And no programmer is immune from using a collection wrong once ina while or having complex system interactions give rise to big performance hits.

    While I'm sure your mortgage calculator or whatever other toy app your are writing in C# is performing just fine, out here in the real world we like to write responsive apps and not just let code that adds 50% to compute time sit there.

    To claim that C# is so superior for High Performance computing, when it does not yet run on computers that are meant for same, just goes to show how far out of whack your vision of reality really is.

    And you know, things have changed just a little since 1998. If I were you I'd stop using MSN as your search engine and us something that can provide a little more relevant results - like this.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:"high performance"? by dekeji · · Score: 1
      That might mean something to me if .Net were not currently slower than Java. But I guess no matter how slow a platform is, as long as it has "high-performance" support it must be better? I see... To claim that C# is so superior for High Performance computing, when it does not yet run on computers that are meant for same, just goes to show how far out of whack your vision of reality really is.

      Let me spell it out for you:
      • The C# language is better than the Java language for high performance computing
      • Current CLR implementations are not as good as current JVM implementations for their common subset of functionality.

      One is about the language, the other is about the implementation. The Java language has problems for HPC.

      Now, let's look at a few more issues:
      • Sun has had the JavaGrande proposals on their table since 1998 and they haven't implemented most of them; in fact, they have stated that they will never implement most of them.
      • Mono is a couple of years old and already has a decent JIT, far ahead of where Sun's Java implementation was after two years.

      So, every indication is that (1) the Java language won't get any better in these areas and (2) C# implementations are improving rapidly.

      Here's a free clue for the day - most of your performance losses are going to come from algorithmic issues, not platform ones.

      Here is your free clue for the day: when I need to fit almost 2 billion instances of a SinglePrecisionComplex number class into a 16G memory, I can do it with C#, whereas I need between 32G and 64G with Java. Try fixing that with algorithms.
  128. More on "high performance" by SuperKendall · · Score: 1

    I said C# was slower than Java, but thought people might like a few numbers to back that up. Take a look Here.

    Now it's true that in these benchmarks Java wins some, and C# wins some. But for some of the most common cases, Java is far superior. FOr example - Hashmaps. People use hashtables all over the place in code, this is probably the most common form of collection next to a list. The C# version is about wice as slow dealing with a lot of hashmaps.

    Furthermore, C# also seems to be very slow using lists. And to top it off Java was again about rwice as fast doing matrix operations!!! How does THAT make C# superior for high performance computing? What good is operator overloading for you if all your code runs twice as slow?

    And these tests were all on the Microsoft VM, who is famous for writing REALLY good compilers. How would MONO fare? I'm betting not as well.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:More on "high performance" by dekeji · · Score: 1

      I said C# was slower than Java, but thought people might like a few numbers to back that up. Take a look Here. [tommti-systems.de]

      You're barking up the wrong tree. I know that the C# implementation I'm using (Mono) is generally slower than Sun Java for comparable operations right now since I benchmarked it myself. But whether a language is better for HPC doesn't depend on whether a particular implementation is faster at this moment in time.

      Furthermore, C# also seems to be very slow using lists. And to top it off Java was again about rwice as fast doing matrix operations!!! How does THAT make C# superior for high performance computing? What good is operator overloading for you if all your code runs twice as slow?

      Well, if the factor is just 2, then the case is settled: C# already wins. Why? Because it's cheaper to write correct code that works but runs a little more slowly than to spend several times as much time trying to write code to fit into the Java straightjacket and then still having to spend extra time chasing down bugs resulting from the unintuitive way of expressing stuff.

      Note also that C# makes it trivial to use truly high performance native libraries or even to write inner loops in C/C++ or Fortran myself, something that is hard in Java. Once you leave the Java straightjacket of poor language design, WORA, and JNI, things become a lot easier.

      And these tests were all on the Microsoft VM, who is famous for writing REALLY good compilers.

      You should go less by what you hear and think a bit more for yourself.

  129. Same in Java by SuperKendall · · Score: 1

    In Java you can assume that any method may throw an undeclared unchecked exception - you can try to catch it if you like.

    The only "problem" in Java might be an overuse of standard exceptions in some of the API's - IO in particular has a lot of exceptions you have to deal with. On the other hand it's good to know the variety you can catch to deal with seperate situations.

    For a good use of unchecked exceptions in Java, consider the Collections API - it makes heavy use of unchecked exceptions so you don't ever have to write exception code for working with collections, but can still handle odd cases gracefully if you like.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Same in Java by Anonymous Coward · · Score: 0

      In Java you can assume that any method may throw an undeclared unchecked exception

      That's the worst of both worlds: not only does the language have the wrong default for what methods can throw, it also fails to accomplish anything with its exception declarations.

      you can try to catch it if you like.

      I don't need to--I have been using Java since pretty much the day Sun put out the first tar file on their FTP site, and I was wrapping Sun's idiotic checked exceptions long before Sun added wrapping to their APIs.

  130. No argument there by SuperKendall · · Score: 1

    I will say I've used JNI and it's not too bad - but I absolutley agree that .Net makes getting to native code easier as you've said. I'm not sure if Java has improvements under way on that front or not...

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  131. 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
  132. Let me type that one paragraph again by SuperKendall · · Score: 1

    I managed to type so fast that I really mangled a whole paragraph beyond understanding. Here it is again:

    Now with C#, the situation is much more murky. C# over C++? Sure. But C# over Jvaa, there are just not enough distinguishing differences to make it worth shifting over to a similar 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.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  133. I do not yet see the compelling reason for Mono by Anonymous Coward · · Score: 0

    It is a nice article with a good intro to Mono. However, I do not see any compelling
    advantage to using Mono yet. For example, I can replicate the GTK#
    example in Python through the following code snippet:

    ------

    #!/usr/bin/env python

    from wxPython.wx import *
    import re

    class MyWindow(wxFrame):
    def __init__(self):
    wxFrame.__init__(self, None, -1, "Linux.ars")

    main_boxsizer = wxBoxSizer(wxVERTICAL)
    istring_value_id, regex_value_id, result_value_id = (wxNewId(),
    wxNewId(), wxNewId())
    istring_sizer, regex_sizer, result_sizer = (wxBoxSizer(wxHORIZONTAL),
    wxBoxSizer(wxHORIZONTAL), wxBoxSizer(wxHORIZONTAL))

    # create the labels and text fields
    self.istring_value = wxTextCtrl(self, istring_value_id, "")
    istring_sizer.Add(wxStaticText( self, -1, "Input String: ", size=(150,20), style=wxALIGN_RIGHT ))
    istring_sizer.Add(self.istring_value, 1, wxALL|wxEXPAND)

    regex_sizer.Add(wxStaticText( self, -1, "Regular Expression: ", size=(150,20), style=wxALIGN_RIGHT ))
    self.regex_value = wxTextCtrl(self, regex_value_id, "")
    regex_sizer.Add(self.regex_value, 1, wxALL|wxEXPAND)

    result_sizer.Add(wxStaticText(self, -1, "Result: ", size=(150,20), style=wxALIGN_RIGHT ))
    self.result_value = wxTextCtrl(self, result_value_id, "")
    result_sizer.Add(self.result_value, 1, wxALL|wxEXPAND)
    main_boxsizer.Add(istring_sizer, 1, wxALL|wxEXPAND)
    main_boxsizer.Add(regex_sizer, 1, wxALL|wxEXPAND)
    main_boxsizer.Add(result_sizer, 1, wxALL|wxEXPAND)

    EVT_TEXT(self, istring_value_id, self.do_update)
    EVT_TEXT(self, regex_value_id, self.do_update)

    self.SetSizer(main_boxsizer)
    self.SetAutoLayout(1)
    main_boxsizer.Fit(self)

    def do_update(self, event):
    try:
    if re.match(self.regex_value.GetLineText(0), self.istring_value.GetLineText(0)):
    self.result_value.SetValue("Matches")
    &nbsp ; else:
    self.result_value.SetValue("Does Not Match")
    except:
    self.result_value.SetValue("Invalid Regular Expression")

    #-------
    class MyWindow_app(wxApp):
    def OnInit(self):
    mywin = MyWindow()
    mywin.CentreOnScreen(wxBOTH)
    mywin.Show(true)
    return true
    #------
    app = MyWindow_app(0)
    app.MainLoop()

    --------------- ----

    It seems the Python code is significantly more compact and as easy to read,
    if not easier. And it is cross platform too! I am sure there is a lot more to Mono
    than what was in the article. So any pointers on potential benefits of Mono over
    Python would be a useful discussion.

    Pranab Banerjee
    Logan, Utah

  134. 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
  135. Re:Linux is catching up by thinkninja · · Score: 1

    FS: You've just described Apple's new Spotlight feature. It'll be copied by both Microsoft and the FOSS community given time.

    "Delete all files older than 2 weeks"

    heh...genius.

    --
    "The number of Unix installations has grown to ten, with more expected." (Unix Programmer's Manual, 2nd ed.; june 1972)
  136. Why did you ignore my link? by SuperKendall · · Score: 1

    There are HPC variants that use the Java VM. I see you ignored that.

    Who cares if possibly in the distant future it could be better, when you can use Java now?

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  137. Fallacy by SuperKendall · · Score: 1

    Well, if the factor is just 2, then the case is settled: C# already wins. Why? Because it's cheaper to write correct code that works but runs a little more slowly than to spend several times as much time trying to write code to fit into the Java straightjacket and then still having to spend extra time chasing down bugs resulting from the unintuitive way of expressing stuff.

    Note also that C# makes it trivial to use truly high performance native libraries or even to write inner loops in C/C++ or Fortran myself, something that is hard in Java. Once you leave the Java straightjacket of poor language design, WORA, and JNI, things become a lot easier.


    Now you are just waffling. Have you considered that in fact Java might be a factor of 100x or more faster according to your own argument, because chances are there are already high performance or completed frameworks availaible for Java whereas you have none for C#? It's always fatser to use something existing, and with Java you have a huge variety of stuff - some of it even built in, the new NIO packages are really fast and the reason Java spanks C# in IO performance (incidentially also of use in HPC).

    Furthermore JNI is not THAT hard. I've wrapped a number of native API's, and it does not take that long to do. If you just write a thing wrapper around a C API JNI is really easy to use, which is most of what you'd do to interface with a DLL - few people write code that spans both worlds to a great degree.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Fallacy by dekeji · · Score: 1

      Have you considered that in fact Java might be a factor of 100x or more faster according to your own argument, because chances are there are already high performance or completed frameworks availaible for Java whereas you have none for C#?

      Hard as that may be to believe, some people have to write that software. People like me, for example.

      It's always fatser to use something existing, and with Java you have a huge variety of stuff, some of it even built in,

      And most of it useless, duplicated junk. Besides, if Java doesn't let me add matrices using infix operators and if Java doesn't have value classes, libraries aren't going to fix that.

      the new NIO packages are really fast and the reason Java spanks C# in IO performance (incidentially also of use in HPC).

      Oh, stop confusing languages and platforms: Java is a platform, C# is a language.

      Besides, with Mono on Linux, I get memory mapping and direct access to mapped files, in addition to full access to the POSIX APIs.

      Furthermore JNI is not THAT hard.

      JNI is comparatively high overhead, and Java lacks primitives for accessing native data structures efficiently. Furthermore, JNI requires the use of an entirely separate compiler and language.

      All the arguments you make could be made for Fortran 77: "it's not that hard", "there are lots of libraries", "lots of people know it", etc. And, unlike Java, Fortran 77 is at least free, patent unencumbered, and mature. But, the fact is, better languages matter. C# is an open standard and it improves on Java in just those ways that experts on HPC themselves recommended Java be changed 6 years ago. Java failed to adopt those recommendations, Microsoft did and called the result "C#". It really is a no-brainer.

    2. Re:Fallacy by SuperKendall · · Score: 1

      Hard as that may be to believe, some people have to write that software. People like me, for example.

      So you're telling me that given the choice between a an existing production quality system, and spending the time and effort to write it from scratch in an almost identical if more immature language, you would take the latter option? You must be a manager.

      And most of it useless, duplicated junk. Besides, if Java doesn't let me add matrices using infix operators and if Java doesn't have value classes, libraries aren't going to fix that.

      Do you even KNOW Java? What's so wrong with a class with public members, if you are really wanting a value class? You are just like the guy that argued C# was way superior because it suppotred operator overloading - having obviously never worked on a project of any size that used said feature lived to see the monster it became.

      I hardly see where writing new, immature junk for a platform not as stable or as featureful is of any use to you.

      And what are you going to do if that program needs high performance IO, or advanced imaging support, or any one of the myriad features Java supports but C# does not? Guess you are screwed, but you seem determine to screw yourself over anyway so go ahead.

      Oh, stop confusing languages and platforms: Java is a platform, C# is a language.

      Yes, but one only running on the .Net platform. Thanks for pointing out another advantage of Java though.

      JNI is comparatively high overhead, and Java lacks primitives for accessing native data structures efficiently. Furthermore, JNI requires the use of an entirely separate compiler and language.

      Yes, I'm not srguing Java has the upper hand here. But considering the similarity of the syntax it's more than manageable. I take it YOU'VE written a lot of JNI code then? Cause I have.

      All the arguments you make could be made for Fortran 77: "it's not that hard", "there are lots of libraries", "lots of people know it", etc. And, unlike Java, Fortran 77 is at least free, patent unencumbered, and mature.


      That's odd, Mono is the one with potential patent issues. If you took even a second to leave your .Net/MONO shrine to look up the facts you might notice that Java is singularily non-patent encumbered, as any proposial to the JCP has to grant perpetual rights to any patented technologies that are part of the proposial. That alone makes it vasty superior to writing in a platform with a large MS patent hammer hanging right overhead.

      And in case you had not noticed - lots of people STILL use Fortran, as it's a damn good language for what it does. You sound like a freshman in college. And indeed what has really come along to challenge it? Certainly not C#/.Net.

      But, the fact is, better languages matter. C# is an open standard

      Java is more open, I can contribute to the JCP. Can you contribute to ECMA? And who do you think controls that standard anyway? Wake up and smell the Java.

      and it improves on Java in just those ways that experts on HPC themselves recommended Java be changed 6 years ago. Java failed to adopt those recommendations, Microsoft did and called the result "C#". It really is a no-brainer.

      Indeed, you'd have to be without a brain altogether to use a language where free implementation have patent issues, the sole controller of the standard goes where they like without thoughts to backward compatibility (.Net 1.0 to 1.1) and potential security holes you could drive a truck through. The icing of course is the complete immaturity of the platform, tools and OS'es it can run on - but a sane person would have already discarded it as a choice long before so it hardly matters.

      Enjoy your C# work while it lasts!

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    3. Re:Fallacy by dekeji · · Score: 1

      What's so wrong with a class with public members, if you are really wanting a value class?

      What's wrong with it is that it takes more than twice as much memory as the value class, plus extra pointer dereferences for member access, plus heap memory allocation for many operations. What is wrong with it is, in short, that it is horrendously inefficient.

      So you're telling me that given the choice between a an existing production quality system, and spending the time and effort to write it from scratch in an almost identical if more immature language, you would take the latter option?

      C# is a mature language; after all, C# is basically just Java with a few problems fixed. C# implementations are less mature than Java implementations, but not by much, and they are catching up fast.

      You are just like the guy that argued C# was way superior because it suppotred operator overloading - having obviously never worked on a project of any size that used said feature lived to see the monster it became.

      You are obviously not even a little bit of a manager if you let the presence of operator overloading become a problem in your projects. If you don't want it, don't need it, or can't handle it, just forbid it in your coding conventions.

      Java is more open, I can contribute to the JCP.

      Yes, you can contribute unlimited amounts of your time and money to Sun for free, who then end up owning your work. Great kind of "openness".

      Can you contribute to ECMA?

      Under ECMA rules, yes. But, more importantly, ECMA is just a standard: I can implement it or change the language it defines in whatever way I like. I can't do that with Java because Java is proprietary and can be implemented only under license from Sun.

      Indeed, you'd have to be without a brain altogether to use a language where free implementation have patent issues,

      Yes, languages like Java, where Sun holds numerous patents on key implementation features and where free implementations have serious patent issues. Fortunately, C# doesn't.

  138. Re:Why should "cross platform" always mean Java/.N by bay43270 · · Score: 1

    So because you can communicate between two languages using COM already, there is no reason to have .net? That's a hell of a leap. You assume that the only reason .net was created was to provide a common runtime for multiple languages. That was just a nice side effect. The real goal was to move Windows into a managed environment. They would have used Java bytecode as the foundation for that environment had Sun let them extend it to be platform specific. Luckily they didn't, and a entirely new platform was created.

  139. Re:Linux is catching up by atezun · · Score: 1

    Nothing really I just find mozilla tabs to be quite an innovation, not to mention a timesaver.

  140. You just ignored everything I've been saying by SuperKendall · · Score: 1

    What's wrong with it is that it takes more than twice as much memory as the value class, plus extra pointer dereferences for member access, plus heap memory allocation for many operations. What is wrong with it is, in short, that it is horrendously inefficient.

    What members? I was talking about a class with public fields!! And how does it take "twice as much memory" to store exactly the same values. It has a slight amount of overhead for being a class, that is it.

    There is no inefficency. Value classes are essentially semantic sugar and gain you nothign at all in the end.

    C# is a mature language; after all, C# is basically just Java with a few problems fixed. C# implementations are less mature than Java implementations, but not by much, and they are catching up fast.

    Yes, it's nice to use a language almost identical to another except that it's two years behind. Java has hundreds of companies working on improving implmentations, Microsoft has - Microsoft, and MONO. They are improving sure, but Java is also a moving target and is improving at a faster rate. If you are going 60 miles an hour ina car, how long will it take to catcah a guy ahead going 120?

    You are obviously not even a little bit of a manager if you let the presence of operator overloading become a problem in your projects. If you don't want it, don't need it, or can't handle it, just forbid it in your coding conventions.

    I would. I'm just saying that that's the kind of people who promote C# as superior. Like yourself.

    Yes, you can contribute unlimited amounts of your time and money to Sun for free, who then end up owning your work. Great kind of "openness".

    No, the community owns the results - for instance if I contribute to a JCR the results could also end up in GCJ, or in Jikes, or wherever. That's what it means to have a truly open process instead of a puppet standards body.

    Under ECMA rules, yes. But, more importantly, ECMA is just a standard: I can implement it or change the language it defines in whatever way I like. I can't do that with Java because Java is proprietary and can be implemented only under license from Sun.

    How? Where are proposed changes to C# that I as a public member can comment on?

    You can indeed do the same thing with Java, the spec is right there. How do you think GCJ can be written? You are just displaying a vast load of igorance here and showing yourself as a true microsoft puppet believing what they tell you. Dumber than a bag of hammers since I already pointed out what you said is false, but you continue to parrot the party like.

    Yes, languages like Java, where Sun holds numerous patents on key implementation features and where free implementations have serious patent issues. Fortunately, C# doesn't.

    Look moron, I told you that ANY PART OF THE JAVA SPEC HAS FREE AND UNENCUMBERED USE OF ALL PATENTS INVOLVED. That means ANYONE can make use of the technologies, and Sun or other patent holders have explicitly given up all rights to those patents.

    Compare with C# where Microsoft holds all the cards, and can use them any time they like.

    Since you just continue to ignore this point I have to conclude you are an MS troll and/or an imbicile. I just can't make it any clearer, Java has zero patent issues by definition. Go read the JCP charter docs and then choke on your heaing helping of humble pie.

    That's about it for me, you are a waste of time since you obviosuly can't learn anything. and have ignored every point I have made about ACTUAL performance in Java being superior vs theoretical performance boons you will never see. Perhaps by the time you gratuate from community college you will have seen the light - more likley you'll be stuck in a series of dead-end jobs as a McCoder fixing up ASP apps.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:You just ignored everything I've been saying by dekeji · · Score: 1
      There is no inefficency. Value classes are essentially semantic sugar and gain you nothign at all in the end.

      Consider:
      class Complex {
      float re,im;
      Complex(float re,float im) {
      this.re = re; this.im = im;
      }
      Complex plus(Complex other) {
      return new Complex(this.re+other.re,this.im+other.im)
      }
      }

      ...
      Complex data[] = new Complex[1000*1000];
      for(int i=0;i<data.length;i++) data[i] = new Complex(rand(),rand());
      Complex total = new Complex(0.0F,0.0F);
      for(int i=0;i<data.length;i++)
      total = total.plus(data[i]);
      So, how much does the array of 1000000 Complex numbers take? In Java, it's 20 Mbytes (4 for each pointer, 8 for each header, 8 for the data). In C#, it's 8 Mbytes (8 for each data item).

      How many heap allocations does the summation take? In Java, it allocates 8 Mbytes of garbage with 1 M calls to the storage allocator. In C#, it allocates no garbage and makes no calls to the storage allocator.

      Look moron, I told you that ANY PART OF THE JAVA SPEC HAS FREE AND UNENCUMBERED USE OF ALL PATENTS INVOLVED. That means ANYONE can make use of the technologies, and Sun or other patent holders have explicitly given up all rights to those patents.

      No, the "moron" is you, because that simply isn't true. Sun likes to pretend that that's the situation, but if you actually read the licenses, you'll see that it is not true.

      That's the problem: not only is Java highly proprietary, Sun is lying about it. And I'm not alone in my views, the FSF has come to similar conclusions.

      No, the community owns the results - for instance if I contribute to a JCR the results could also end up in GCJ, or in Jikes, or wherever. That's what it means to have a truly open process instead of a puppet standards body.

      That, too, is wrong. Take a look at the legal verbiage that comes, with, say, the Java API XML Parsing Specification, final release: it is owned by Sun and you can only use it if you agree to detailed and specific compatibility requirements.

      Sun may tolerate the implementation of open source versions for now, but they can change their mind at any time.

      How do you think GCJ can be written?

      Gcj is not a Java implementation: neither is it compatible, nor is it certified. Furthermore, even in its incompatible and incomplete state, gcj probably violates Sun's intellectual property. And letting software developers fall into the trap of starting to rely on patented ideas and then assert the patents and other rights a few years later has become a common strategy. Developers need to be smart about it, and the smart thing to do with Java is not to touch it.

      That's about it for me, you are a waste of time since you obviosuly can't learn anything.

      Not from you. But you could learn something from me.

      and have ignored every point I have made about ACTUAL performance in Java being superior vs theoretical performance boons you will never see.

      For the applications that interest me, C# is already faster than Java simply because Java lacks the necessary primitives. And I'm sure Mono will catch up performance-wise with Sun's Java implementation quite quickly. And while Mono's Microsoft heritage is not something I particularly like, Mono's and C#'s legal situation is still far better than Java's.
    2. Re:You just ignored everything I've been saying by SuperKendall · · Score: 1

      Well, I guess it's just to be expected you code as poorly as you argue. Your creating a new class for every addition... well, lets just say it's breathtaking.

      The nice thing about Java as I've said is the huge variety of ready-made code. Rather than your freshman first-year version, of a Java class, let's look through the first example googled from the web:

      public class BasicComplex
      { //Properties
      double real;
      double img; // Constructor that initializes // the values
      BasicComplex ( double r, double i)
      { real = r; img = i; } // Define an add method
      public void add(Complex cvalue)
      {
      real = real + cvalue.real;
      img = img + cvalue.img;
      } ...
      }

      Do you see how in something coded by someone with sense three is no stack abuse from new objects? Take a look at your code modified to use this: ...
      Complex data[] = new Complex[1000*1000];
      for(int i=0;iNo, the "moron" is you, because that simply isn't true. Sun likes to pretend that that's the situation, but if you actually read the licenses, you'll see that it is not true.

      That's the problem: not only is Java highly proprietary, Sun is lying about it. And I'm not alone in my views, the FSF has come to similar conclusions.

      Did you read the text you linked? No, it talks nowhere about patents. In fact it even talks about GCJ, the Free implmentation of Java. I've already read the whole thing thanks, and pretty much agree that people should try to keep things runnable with GCJ if possible - as that's what it actually says, not what you imagine it to.

      That, too, is wrong. Take a look at the legal verbiage that comes, with, say, the Java API XML Parsing Specification, final release: it is owned by Sun and you can only use it if you agree to detailed and specific compatibility requirements.

      You brainless idiot!! Try reading the text before you post. I did:

      Sun hereby grants you a fully-paid, non-exclusive, non-transferable, worldwide, limited license (without the right to sublicense), under Sun's
      intellectual property rights that are essential to practice the Specification, to internally practice the Specification solely for the purpose of
      creating a clean room implementation of the Specification that: (i) includes a complete implementation of the current version of the
      Specification, without subsetting or supersetting; (ii) implements all of the interfaces and functionality of the Specification, as defined by Sun,
      without subsetting or supersetting; (iii) includes a complete implementation of any optional components


      Yes Sun owns the COPYRIGHT for the spec. But that doesn't matter because you are granted a license to use the spec as you will for the creation of an implmentation. If you'll look at ECMA, it's the same way only rights to the patents used in the spec ARE NOT transferred to you.

      I cannot believe you are so dumb as to confuse the rights of the document with those of an implmentor!!

      Not from you. But you could learn something from me.

      You are dumber than a bag of rocks and just about as dense. You really need to stop arguing the legal angle as you are so far out of your depth it is scary. And come to think of it, your coding is almost as poor. Have you thought about a carreer as a bus driver? On the other hand I don't think I would want to have peoples lives depending on your ability to make wise choices...

      For the applications that interest me, C# is already faster than Java simply because Java lacks the necessary primitives. And I'm sure Mono will catch up performance-wise with Sun's Java implementation quite quickly. And while Mono's Microsoft heritage is not something I particularly like, Mono's and C#'s legal situation is still far better than Java's.

      If you code anything like the code above, you sure could use a profiler. Too ba

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    3. Re:You just ignored everything I've been saying by dekeji · · Score: 1
      Well, I guess it's just to be expected you code as poorly as you argue. Your creating a new class for every addition... well, lets just say it's breathtaking.

      No, it's called "data abstraction". C++ supports this kind of data abstraction efficiently. C supports it efficiently. Pascal and Modula do. That kind of efficient data abstraction also was a key goal of Fortran 9x, and Fortran 9x supports it efficiently as well. C# supports it efficiently. The JavaGrande group recommended it for Java, but Java still doesn't support it efficiently half a dozen years later.
      public void add(Complex cvalue)
      {
      real = real + cvalue.real;
      img = img + cvalue.img;
      }
      If I wanted to write code like that, then I might as well use Fortran 77: it has even better compilers than Java, after all. But that style falls apart when writing more complicated expressions.

      C#, like dozens of languages before it, supports the abstractions I like to use for writing code. Java doesn't. That just makes C# a better tool for me, as well as many other people interested in writing numerical, graphics, scientific, and engineering software.

      Yes Sun owns the COPYRIGHT for the spec. But that doesn't matter because you are granted a license to use the spec as you will for the creation of an implmentation.

      Sun owns the copyright for the spec, in addition to patents on the technology. You can implement the specification only under license, otherwise you violate both Sun's patents and Sun's copyright. Some of the conditions that you have to agree to in order to implement the specification are listed in the section you quote. And those conditions place significant restrictions on implementors, so it is false to say that you can implement the spec "as you will".

      Did you read the text you linked? No, it talks nowhere about patents. In fact it even talks about GCJ, the Free implmentation of Java.

      The text I linked to states that FSF has concluded that the Java specification is not implementable without restrictions and that this causes problems for OSS development, and that is also my point.
    4. Re:You just ignored everything I've been saying by SuperKendall · · Score: 1

      No, it's called "data abstraction". C++ supports this kind of data abstraction efficiently. C supports it efficiently. Pascal and Modula do. That kind of efficient data abstraction also was a key goal of Fortran 9x, and Fortran 9x supports it efficiently as well. C# supports it efficiently. The JavaGrande group recommended it for Java, but Java still doesn't support it efficiently half a dozen years later.

      But it has improved efficencies in things like short-lived objects, so it's not as far off as you think. By your own admission it's only off by a factor of two for storage even for the poor implementation you wrote.


      public void add(Complex cvalue)
      {
      real = real + cvalue.real;
      img = img + cvalue.img;
      }

      If I wanted to write code like that, then I might as well use Fortran 77: it has even better compilers than Java, after all. But that style falls apart when writing more complicated expressions.


      No, it's just a slightly different way of thinking about the problem. Your code shows that you are way too stuck on operator overloading, and will probably only produce trvial implementations in any language.

      Sun owns the copyright for the spec, in addition to patents on the technology. You can implement the specification only under license, otherwise you violate both Sun's patents and Sun's copyright. Some of the conditions that you have to agree to in order to implement the specification are listed in the section you quote. And those conditions place significant restrictions on implementors, so it is false to say that you can implement the spec "as you will".

      Funny, the only text I've been able to find says that when you join the JCP any patents used in a spec must grant all users non-exlcusive, world-wide rights of use forever. But if you'd like to find text supporting your poisiton, then by all means do so. I've already pasted legal text that supports my position, you go find anything that supports yours.

      The text I linked to states that FSF has concluded that the Java specification is not implementable without restrictions and that this causes problems for OSS development, and that is also my point.

      It's true to say you cannot officially lable a project with the "Java" trademark. But that is it - as for writing something exactly the same as Java, anyone can do it. What does it matter if it carrys the logo if it all works? All of the specs, bytecode and everything, are all published and anyone can make works based on them. Normally I agree 100% with RMS, but I think he's a little off here.

      Again, if thigs were really so bad GCJ and the CLASSPATH project could not exist. But they do. The reason why they are behind is not one of license, but of workers willing to work on a project like GCJ. It's hard to find people where there are already so many free (not Free) implmentations out there. That's why there is som much pressure for Sun to open-source Java, so people can use the Freed Java code to beef up GCJ.
      Not a bad idea, but also not absolutley nessecary at this point.

      I wonder what RMS thinks about MONO? I'm pretty sure he would dislike the patent laden spec it's built on quite a bit more.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    5. Re:You just ignored everything I've been saying by dekeji · · Score: 1
      But it has improved efficencies in things like short-lived objects, so it's not as far off as you think. By your own admission it's only off by a factor of two for storage even for the poor implementation you wrote.

      No, you still don't understand.

      The factor of two storage overhead is intrinsic given Java's semantics--it's not a question of compiler optimization.

      The overhead in terms of running time is far larger than a factor of two, even with the best current compilers, and it is due to several factors: lack of locality, extra overhead on accesses, lack of vectorizability, lack of aliasing information, calls to the heap allocator that simply can't be eliminated, and garbage collection overhead, to name just a few.

      There simply is no way to get anywhere near the efficiency of value classes without actually having value classes.

      No, it's just a slightly different way of thinking about the problem. Your code shows that you are way too stuck on operator overloading, and will probably only produce trvial implementations in any language.

      You bet I am stuck on operator overloading and that I only produce trivial implementations in any language anymore--numerical code is way too hard to write, debug, and understand otherwise, and numerical methods (the kind I myself come up with) have become far too complicated.

      20 years ago, I used to write code in the style you suggest because that was the only way to get it to run fast. These days, we have languages that support abstractions efficiently. Languages like C# and C++. Java is just stuck in the past.

      But if you'd like to find text supporting your poisiton, then by all means do so. I've already pasted legal text that supports my position, you go find anything that supports yours.

      No, the text you pasted contradicts your position. Read it carefully:

      Sun hereby grants you [... specific rights ...] under Sun's intellectual property rights that are essential to practice the Specification [...]


      So, Sun explicitly talks about their intellectual property rights that are "essential to practice the specification"; they only give you a license for that intellectual property subject to specific conditions. And they have the intellectual property that puts meat into that legal language: they have numerous patents related to Java, as well as the copyrights on the specs themselves.

      What are the conditions?

      (i) includes a complete implementation of the current version of the Specification, without subsetting or supersetting; (ii) implements all of the interfaces and functionality of the specification, as defined by Sun, without subsetting or supersetting; (iii) includes a complete implementation of any optional components


      Those conditions are hard to meet. Furthermore, it is unclear whether there is any way you can independently prove that you have, in fact, met them. Even if you have met them, Sun can kill your work by changing the specification when they want to--they own the specification.

      It's true to say you cannot officially lable a project with the "Java" trademark. But that is it - as for writing something exactly the same as Java, anyone can do it.

      No, that is not the situation. The situation is that Sun owns the copyright on the specification and they own patents on key Java technologies. In order to practice the specification, you need a license for both. They only give you that license under specific, restrictive conditions, conditions that nobody has been able to meet for a full Java implementation so far.

      I wonder what RMS thinks about MONO? I'm pretty sure he would dislike the patent laden spec it's built on quite a bit more.

      Quite to the contrary. The FSF and RMS support both Mono and Portable.NET, two separate implementations of C#.

      In contrast, RMS cautions people and asks them to stay away from Java.
    6. Re:You just ignored everything I've been saying by SuperKendall · · Score: 1

      No, you still don't understand.

      The factor of two storage overhead is intrinsic given Java's semantics--it's not a question of compiler optimization.


      You don't understanding anything about optimization or coding, do you?

      Imagine an implmentation that just used arrays behind the scenes, for example. There are any number of ways to eliminate that overhead if you really wanted. Meanwhile your "stellar" C# implementation uses 8MB of stack it doesn't even have to! And you call that scalable?

      So, Sun explicitly talks about their intellectual property rights that are "essential to practice the specification"; they only give you a license for that intellectual property subject to specific conditions. And they have the intellectual property that puts meat into that legal language: they have numerous patents related to Java, as well as the copyrights on the specs themselves.

      What are the conditions?

      (i) includes a complete implementation of the current version of the Specification, without subsetting or supersetting; (ii) implements all of the interfaces and functionality of the specification, as defined by Sun, without subsetting or supersetting; (iii) includes a complete implementation of any optional components

      Those conditions are hard to meet. Furthermore, it is unclear whether there is any way you can independently prove that you have, in fact, met them. Even if you have met them, Sun can kill your work by changing the specification when they want to--they own the specification.


      Do you realize what any of those words mean when you type them? The "conditions are hard to meet" - unless you write a complete implmentation of the spec, which is the whole point!! If you write a whole implentation you meet all obligations. The only thing Sun is trying to prevent is half-assed implementations that fail to meet the spec.

      These Specs are not defined just by Sun you know, but a REAL standards body - mode up of reps from companies and people like me.

      No, that is not the situation. The situation is that Sun owns the copyright on the specification and they own patents on key Java technologies. In order to practice the specification, you need a license for both. They only give you that license under specific, restrictive conditions, conditions that nobody has been able to meet for a full Java implementation so far.

      Wrong as I have said, and you cannot comprehend.

      To close, this was in Stallmans paper:

      Sun's latest license for these specifications prohibits release of anything less than a full implementation of the specification.

      Which is what you pasted above. I do not see why it is such a problem to release a complete version of a spec, indeed I would expect it.

      You are at least right about Stallman and MONO.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    7. Re:You just ignored everything I've been saying by Anonymous Coward · · Score: 0

      Imagine an implmentation that just used arrays behind the scenes, for example.

      Look at the recommendations of the JavaGrande forum--experts on numerical algorithms. They (like me) considered value classes a very important feature. Their recommendation is based on decades of experience with implementations of many languages, including Java-like languages, and the conclusion is: nobody knows how to build implementations that do this "behind the scenes". It's naive for you to think that magically, Sun will figure this out over the next year or two.

      The "conditions are hard to meet" - unless you write a complete implmentation of the spec, which is the whole point!! If you write a whole implentation you meet all obligations. The only thing Sun is trying to prevent is half-assed implementations that fail to meet the spec.

      To you, that may be acceptable, to me it is not. But whether you like or don't like the conditions Sun imposes on implementors, the fact is and remains that Sun owns Java, owns patents on Java, and owns the specifications--that is what allows them to impose those conditions. When it comes to languages and platforms, I don't want a benevolent dictator, I don't want a dictator at all.

      These Specs are not defined just by Sun you know, but a REAL standards body - mode up of reps from companies and people like me.

      With people like you involved in the JCP, it's not surprising that the Java platform has taken such a disastrous turn technically.

  141. Why should MS stop Mono? by marcello_dl · · Score: 1


    Has never occurred to anyone that MS could want Mono to succeed in making the whole .NET infrastructure available for Linux? Think about it, they may:

    1) let Mono become a .NET replacement and lots of Mono/.NET apps be written

    2) Use patents, Passport, or the trusted computing stuff, or whatever other legal excuse to make Mono on linux unattractive for business users (this is the ??? part)

    3) Mono users have the official .NET framework as the only way to keep using their already deployed Mono apps. Mono becomes the trojan horse for migration back to a Microsoft OS. In other words: Profit!!!

    --
    ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
  142. Code section destroyed by Slashdot. by SuperKendall · · Score: 1

    Here's the text SLashdot dropped:

    Do you see how in something coded by someone with sense three is no stack abuse from new objects? Take a look at your code modified to use this: ...
    Complex data[] = new Complex[1000*1000];
    for(int i=0;idata.length;i++) data[i] = new Complex(rand(),rand());
    Complex total = new Complex(0.0F,0.0F);
    for(int i=0;idata.length;i++)
    total = total.add(data[i]);

    Honestly, I can't believe you actually posted that code.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Code section destroyed by Slashdot. by dekeji · · Score: 1

      Great, now try porting a complex Airy function to Java using those kinds of definitions. Welcome to writing numerical code in what amounts to assembly language.

  143. I don't have to, as it's already done by SuperKendall · · Score: 1

    Great, now try porting a complex Airy function to Java using those kinds of definitions. Welcome to writing numerical code in what amounts to assembly language.

    You don't get it, and seemingly never will.

    The great thing about Java (I think I've mentioned this before) is I don't have to port that code - it's already been done, and by people smarter than me and certainly a lot smarter than you!

    CERN Java Libraries

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:I don't have to, as it's already done by dekeji · · Score: 1

      The great thing about Java (I think I've mentioned this before) is I don't have to port that code - it's already been done, and by people smarter than me and certainly a lot smarter than you!

      I write that kind of code. That's where those kinds of libraries come from. Someone has to write them. And Java just sucks for writing them.

      CERN Java Libraries

      As far as I can tell, the CERN Java libraries don't contain complex Airy functions.

      And look at the date: those pages have been updated for the last time in 2002. It's another indication that people have largely given up on Java for scientific computing because Sun has failed to make the necessary changes. I tried. Other people tried. We gave Sun years to get their act together. They just haven't.

    2. Re:I don't have to, as it's already done by SuperKendall · · Score: 1

      I write that kind of code. That's where those kinds of libraries come from. Someone has to write them. And Java just sucks for writing them.

      You are an idiot for writing them if someone elase has already done so. Twice the idiot if you insit on rolling your own when a faster langauge has libraries already written.

      Do you imagine you can code HPC stuff better than the CERN folk?

      As far as I can tell, the CERN Java libraries don't contain complex Airy functions.

      Well that's a surprise. Did you try a search on the page? Perhaps for the word "Airy"? If so you might find this under cern.jet.math:

      Tools for basic and advanced mathematics: Arithmetics and Algebra, Polynomials and Chebyshev series, Bessel and Airy functions, Function Objects for generic function evaluation, etc.

      And look at the date: those pages have been updated for the last time in 2002. It's another indication that people have largely given up on Java for scientific computing because Sun has failed to make the necessary changes. I tried. Other people tried. We gave Sun years to get their act together. They just haven't.

      Actually it's a new focus by Gosling. But in the meantime, what additions to the library would YOU make? There's something to be said for a complete library.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    3. Re:I don't have to, as it's already done by dekeji · · Score: 1

      Well that's a surprise. Did you try a search on the page? Perhaps for the word "Airy"? If so you might find this under cern.jet.math:

      First of all, those are real Airy function.

      Second, I pointed you at the complex Airy code in Fortran to give you an example of the kind of code people write using numerical data types like complex. If you manage to find an implementation of a complex Airy function in Java, all the better: compare it side-by-side with the Fortran code and note how much harder it is to understand.

      You are an idiot for writing them if someone elase has already done so.

      I don't re-implement Airy function; I write new kinds of numerical software. It just happens to be the case that the issues involved in that are comparable to the issues people face when porting code using complex numbers from languages like Fortran to languages like Java.

      Actually it's a new focus by Gosling.

      It's been a "new focus" by Gosling for half a dozen years. Sorry, but I'm tired of waiting. The biggest problems with the Java language have been fixed and the result is called C#, and it's here now.

  144. Furthermore, on performance... by SuperKendall · · Score: 1

    Taking a look at the colt libraries again, I note this on the same page you found regarding updates:

    Version 1.0.1 is here - and just broke the 200Mflop barrier. Due too further library tuning, benchmarks now show the 100% pure Java matrix-matrix and matrix-vector multiply running only about 2.5 times slower than the algorithms from the Intel® Math Kernel Library. The latter is essentially beautifully hand crafted assembler code taking full advantage of the PentiumIII specific architecture and instruction set. More matrix performance results from 1.0.1, running on IBMJDK1.3, RedHat 6.1, 2 x PentiumIII@600 MHz.

    Now that was from 2001. The 2002 update doubled the performance, which means if it was only 2.5 time slower than hand-coded assembly before it's now only about 50% slower - than hand-coded assembly! I'm not sure how you think .Net is going to beat native assemby (but I'm sure you'll try to explain anyhow).

    Yes some of the constructs in .Net lend themselves to slightly easier HPC implmentations, but since all you really have is Java slightly dressed up it's still got a long way to go comapred to real HPC languages like C/C++ or Fortran 90. So you are going to have to wait about two years for performance in your VM to catch up to Java - when Java is also undergoing changes at the same time, including work on a Java dialect explicity built for HPC and not just tacked on like in C#.

    At ever y stage you have shown yourself to have little common sense, only bling adherance to C#. What kind of idiot ties themselves to just one platform like that? I'm an advocate of Java but I know when not to use it - and while sometimes Java makes the most sense for any project, the way things are now C# and .Net neevr make any sense for nay project. Not even converting VB code, which is a tangle all by itself!

    If you want a platform inferior in every way, and playing catchup to other languages for eternity, then by all means stay the course you are on. While you are struggling to write libraires that get within 100% of the performance of existing Java libraries I'll actually be coding programs that do work.

    The sad thing is in a few years you'll probably realzie your folly and only then will you appreciate what I've been trying to tell you. Hopefully this lopsided battle has at least shown other people the light and they will not suffer the same fate you seem determined to suffer.

    Good luck - you'll need it!

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Furthermore, on performance... by dekeji · · Score: 1

      At ever y stage you have shown yourself to have little common sense, only bling adherance to C#. What kind of idiot ties themselves to just one platform like that?

      You misunderstand. I actually do most of my coding in C++ still, because it is a mature and efficient platform and there are tons of libraries that I reuse as needed. Neither Java nor C# even come close at this point.

      The sad thing is in a few years you'll probably realzie your folly

      No, what I realize half a dozen years later is that it was folly to support Java: Sun's promises of openness were empty and Java has been going nowhere technically. I'm not going to commit that folly again, which is why my adoption of C# is more cautious.

      But with C#, much more is already on the table: the language definition is already decent, the standard is open and unencumbered, and the only thing that remains is for implementations to mature a little more. We have every indication that they are doing that, and it looks like in maybe a year, everything is in place to make a big switch.