Announcement

Collapse
No announcement yet.

Why Mono Is Desirable For Linux

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Originally posted by directhex View Post
    Typically Mono implements features before Microsoft.NET. Feature gets announced at conference; Mono does preliminary implementation; Microsoft ships beta version with changed behaviour; Mono updates to match latest version of feature, where applicable; Microsoft ships stable version

    As an example, .NET 5.0 will ship a REPL shell called "Roslyn" when it is released (the latest stable is 4.5), whereas Mono has shipped a REPL called "csharp" since 2008

    Libraries are another matter. Fortunately, most of these are either Windows-specific so not interesting on Mono, or Microsoft has started shipping their implementations under FOSS licenses (e.g. ASP.NET MVC 1,2,3,4; IronPython; IronRuby; Dynamic Language Runtime; Entity Framework; Razor templating framework)
    Ooh interesting.
    Still doesn't make me like Mono (or most high-level languages for that matter). :P
    Perhaps I would be more interested if there was a GTK3 or Qt binding.

    Comment


    • Originally posted by n3wu53r View Post
      I just want to weigh in here.
      I don't like mono. I don't like .net. Not because of microsoft or patents. I just don't like it from a purely technical perspective. Almost all the apps I have used running Mono (or java for that matter), have had poor stability and performance compared to native apps. I didn't like C# or Java all that much from the little time I spent with the language(s).
      Poor performance is a bug. Often, it's a bug in underlying C code. A recent famous case of unbearable performance in Banshee when shuffling was due to a bug in the latest version of (C-based) SQlite, for example.

      Also GTK# still only binds to gtk 2.x, no 3.x supports yet. Besides I prefer Qt anyways.
      There's a blocking GTK+ bug right now preventing the release of GTK# 3, and upstream aren't interested because it only messes with statically typed languages which bind to GTK, such as Java or C#

      But Mono having patent issues is total bullshit. C# was ECMA standardized and there was the whole community promise thing from MS that says they won't sue anyone using the ECMA standard parts of C#/.net.
      The conspiracy theory states that this means Mono is at more risk, not less. The specifics of why are never shared, nor why other things under the same community promise (e.g. IPv6) are safe.

      The only things you have to worry about are non-standardized parts. The parts that Mono needs for windows compatibility, like Windows.Forms. If MS sues for that then:
      http://www.mono-project.com/Licensing#Patents

      So it won't kill off mono. (1) sounds very plausible, and many software patents are bullshit and have prior art for them. Actually patenting software is bullshit but that is another story.
      Correct on both counts.

      If Microsoft is directly helping out Mono, and then they later sue, Xamarin (company behind mono) can argue in court that the help from Microsoft constitutes approval of the project.
      This is called Promissory Estoppel, in legalese.

      Comment


      • Originally posted by n3wu53r View Post
        Ooh interesting.
        Still doesn't make me like Mono (or most high-level languages for that matter). :P
        Perhaps I would be more interested if there was a GTK3 or Qt binding.
        A new (apparently good) Qt binding now exists, although it's not been packaged in any distros AFAIK.

        https://gitorious.org/assemblygen

        Comment


        • Originally posted by directhex View Post
          A new (apparently good) Qt binding now exists, although it's not been packaged in any distros AFAIK.

          https://gitorious.org/assemblygen
          Looks interesting. Doesn't seem to be a stable release yet but I'll check that out.
          Does it matter if no distro has it packaged? Won't apps produced using this only have dependencies on Mono and Qt?

          Poor performance is a bug. Often, it's a bug in underlying C code. A recent famous case of unbearable performance in Banshee when shuffling was due to a bug in the latest version of (C-based) SQlite, for example.
          I'm not talking about bugs. Just that runtimes in general add a nice big overhead. Maybe I'm just nitpicking. I also find high level languages are much more tolerant when it comes to sloppy programming.

          There's a blocking GTK+ bug right now preventing the release of GTK# 3, and upstream aren't interested because it only messes with statically typed languages which bind to GTK, such as Java or C#
          You sure? Java-gnome has 3.x support. http://java-gnome.sourceforge.net/
          I would like a link to this bug.

          Still, you can never expect co-operation from gnome upstream. Ever.

          Another thing. Why is mono bad but WINE and CrossOver a miracle? Can someone give me a rational answer without trolling. I would really like to know. Not sarcastic here.

          Comment


          • Originally posted by lapis View Post
            Opensource the tools of development are important.but firefox writes a software using c language.C is a standard and runs a lot of open source compilers .Firefox case is different.
            According to Wikipedia, firefox is written in many languages.
            "C/C++, JavaScript, CSS, XUL, XBL"

            Comment


            • Originally posted by n3wu53r View Post
              Looks interesting. Doesn't seem to be a stable release yet but I'll check that out.
              Does it matter if no distro has it packaged? Won't apps produced using this only have dependencies on Mono and Qt?
              Generally speaking, your app would also have dependencies on the Qt binding assemblies, that would have to be provided somehow (e.g. bundled with your app or in the distro)

              I'm not talking about bugs. Just that runtimes in general add a nice big overhead. Maybe I'm just nitpicking. I also find high level languages are much more tolerant when it comes to sloppy programming.
              Some worse than others. Mono's pretty decent on this score compared to, say, Python. If developers are going to use high-level languages, Mono's one of the best on the CPU and RAM front.

              You sure? Java-gnome has 3.x support. http://java-gnome.sourceforge.net/
              I would like a link to this bug.
              https://bugzilla.gnome.org/show_bug.cgi?id=679232

              Comment


              • Originally posted by hoohoo View Post
                Comme ci, comme ca.

                It's layers on top of layers, with some features added at each layer.

                When I say .NET is a wrapper, I mean MS has not re-written Windows or it's major apps AFAICT to replace the COM/DCOM/ActiveX heritage - mostly MS has obscured that heritage with .NET.

                I did not mean to imply that .NET is a species of ActiveX.

                If you write a native C+ app on Windows all that COM/DCOM/ActiveX stuff is still there to be used.
                Of course .NET is a wrapper. So is Java and Qt. What is your point?

                What do the rest of that sentence have to do with anything? The Windows and the .NET ecosystem is a complete different thing, even if they have bindings so that code written for Windows can coexist with code written for .NET. Why would Microsoft have re-write its Windows applications to be .NET applications? How would they make money out of that. Microsoft are rewriting parts of their applications and replacing COM/DCOM/ActiveX. It is called phasing it out. They have no reason to rush things faster than that.

                No not really. On Winodws RT there are no COM/DCOM/ActiveX - only.NET assemblies even for native applications. Yes the old Win32/64 compatibility layer supports those and will be around for a while. However this shows that Microsoft are phasing Win32/64 out and .NET in.

                Comment


                • Originally posted by hoohoo View Post
                  I see you are writing in a dialect of English that features the STRAWMAN construct!
                  Exactly how do this dialect of English work in order to squeeze a strawman construct into that?

                  Comment


                  • Originally posted by jrch2k8 View Post
                    no way in hell stop bullshitting.

                    the only way this is even remotely possible is to take the most barbaric form of crappy code a human being can code in C++ running on a pentium3 vs the most optimized java code ever seen running on a 10 cores Xeons <-- the same applies to mono/.NET and let skip memory consumption <-- mono/.NET fail miserably here too

                    i can believe mono[due to llvm] can be faster than crappy java code but thats is as far as im willing to believe without actual code to prove it
                    Google is your friend. Java is WAY faster than mono, there are plenty of tests proving that if you bother to Google. There are also plenty of tests proving Java is as fast as or faster than C++-

                    LLVM is also WAY slower than HotSpot, which in turn are WAY slower than Azul Zing.

                    Can you please explain your wild claims on how Java, .NET or mono "fail miserably" in memory consumption?

                    Comment


                    • Originally posted by jrch2k8 View Post
                      yes write wine in C# so linux user will need 64 CPU and 4 gpu to open office on it and ofc finally break the barriers and set the 16 GB minimal memory requirements but ofc running C/C++ code as bytecode will improve it <-- WTF
                      Yeah right. You really know what you are talking about right?

                      Yeah running C/C++ as bytecode will improve it as shown by FreeBSD which have switched to Clang and LLVM.
                      http://www.phoronix.com/scan.php?pag...tem&px=MTE4NDQ

                      Pulling ridiculousness numbers like that out of your ass just makes you look like a fool. Java do not consume more CPU than C++ and at most a few megabytes extra ram. So that is only a problem for small programs where a few megabytes is a lot of extra weight.

                      Comment


                      • Originally posted by jrch2k8 View Post
                        this exactly prove my point, that is a horribly written C++ code running on VC that by default have many optimizations turned off like SIMD <--- aka that code is using x87 LOL

                        take that code unroll it, add SSE/AVX, check the types, properly use templates and atomics[c++11], optimize the memory handling and use ICC or GCC with at least -O2 -march=native and -msse2 and compare it to java again
                        Do you have any evidence that HotSpot is not as good as VC or GCC on using SIMD? How exactly would Templates make any difference? And Java have atomics so that should not make any difference.

                        Comment


                        • Originally posted by mateli View Post
                          Of course .NET is a wrapper. So is Java and Qt. What is your point?

                          What do the rest of that sentence have to do with anything? The Windows and the .NET ecosystem is a complete different thing, even if they have bindings so that code written for Windows can coexist with code written for .NET. Why would Microsoft have re-write its Windows applications to be .NET applications? How would they make money out of that. Microsoft are rewriting parts of their applications and replacing COM/DCOM/ActiveX. It is called phasing it out. They have no reason to rush things faster than that.

                          No not really. On Winodws RT there are no COM/DCOM/ActiveX - only.NET assemblies even for native applications. Yes the old Win32/64 compatibility layer supports those and will be around for a while. However this shows that Microsoft are phasing Win32/64 out and .NET in.
                          WinRT is built on Win32/Win64 and .NET too.

                          Comment


                          • Originally posted by frantaylor View Post
                            JIT will NOT help you write fast loops.
                            No compiler will help you write fast loops. That's entirely up to the developer. However JIT can optimize loops better than static compilation.

                            Originally posted by frantaylor View Post
                            The JIT runtime will not fit in the processor's cache, your program will score many cache misses and the loops will slow down.
                            Of course not. Neither will your C++ runtimes. No your programs will not score more cache misses because of JIT and loops will not slow down. I have seen this false claim more times than I can your remember, but never seen any evidence of it.

                            Originally posted by frantaylor View Post
                            Your processor is running at many GHz, but main RAM is terribly slow, you don't want your loops to be fetching from RAM on every instruction."
                            No I don't. And your point is? You are probably trying to imply that Java does this, but where are your evidence? The old Java Interpreter used to do that, but that is ancient history. Both HotSpot and JRocket have been around for quite some time.

                            Originally posted by frantaylor View Post
                            If you carefully hand-code your loops you can fit the whole thing in the fast cache and the loop will scream."
                            No, you will get the opposite. On a processor with less cache your data will not fit into the cache. On a processor with more cache you will underutilized your cache, which in a multi-threaded application may be even slower. When you try to do the compilers job you often make things worse.

                            Originally posted by frantaylor View Post
                            As was otherwise pointed out, JIT will mitigate bad code, but if the code is solid in the first place, it's not going to help.
                            There are no such thing as solid code. All code have bugs. Also the JIT have many features that are useful no matter how good your code are.

                            Originally posted by frantaylor View Post
                            Use the right tool for the job! JIT gives you a VM, memory safety, and nice debugging features. It won't magically fix your bad algorithm or improve performance of an otherwise optimal program. JIT also means big runtime baggage and potential compatibility issues if the customer has a different version.
                            No language will fix your bad algorithm. JIT will improve performance on an optimized program, usually with the requirement that you know what you are doing. But in that last thing Java is no different from other languages. JIT in itself do not mean big runtime baggage, and it means far less compatibility issues than other execution environments. Java currently have a few megabytes off baggage which for a large application like an application server is irrelevent. But if you have a small program with a few kb of bytecode a few megabytes are a lot of baggage.

                            Comment


                            • Originally posted by n3wu53r View Post
                              Ooh interesting.
                              Still doesn't make me like Mono (or most high-level languages for that matter). :P
                              Perhaps I would be more interested if there was a GTK3 or Qt binding.
                              Perhaps you should Google.
                              There are Qt bindings for both Java and .NET...

                              Comment


                              • I'm following Phoronix for a year now for news about Ubuntu and games on Linux, just signed-up today because of most of the comments here are non-nonsense and/or about skepticism about the development tool. Sorry for my bad english, it is not my native language.

                                I am developer for more than 6 years, using C/C++, C#(.NET/Mono), Java, and PHP. But I embraced C# because it solves these challenges:
                                - Cross-platform(same with C/C++, Java, and PHP)
                                - Write once, run anywhere(same with Java[not on iOS] and PHP[not on most mobile devices])
                                - Very light for games/game development(Java usually fails here, C/C++ is a bit faster)
                                - Faster development and easier to maintain
                                - Great for middle-ware development(Java failed me on one of my projects here)

                                Using C#/Mono saves me lot of development time because of its feature is complete(since the implementation of .NET 2.0, .NET 1.1 is totally a crap re-invention of JVM) and run on most of known platforms(developed and deployed already on Windows, Ubuntu/Debian, Android, iOS, MacOS X, and Xbox360). New features of .NET3.0 and up aren't great, they are nice to have but not really required.

                                C/C++ is faster than .NET/Mono applications but maintenance of code for every platform will take too much time and resources. On Java, it have too many frameworks needed to learn, also its performance is really poor GUI and Web(I need to add more RAM on my test server(Debian) to make my J2EE app catch-up on my ASP.NET and PHP apps). But still using Java for scripting in PostgreSQL because Mono is not yet supported.

                                I doubt that M$ will sue the Mono-team because they are already providing lots of support on this project. This will ensure that their products or products produced by their products will reach the end-users who are on the other platforms. It is more of a marketing strategy than a trap as most of FOSS/Linux zealots believe.

                                I am happy developing on my Ubuntu machine using Monodevelop with PostgreSQL. My M$ Windows machine is used only for gaming and testing.

                                Comment

                                Working...
                                X