Announcement

Collapse
No announcement yet.

Why Mono Is Desirable For Linux

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

  • 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


    • Originally posted by n3wu53r View Post
      According to Wikipedia, firefox is written in many languages.
      "C/C++, JavaScript, CSS, XUL, XBL"
      No one disagree with you of the language is Firefox written.
      The question is which tools developer use? Are they free or very low priced.

      Like:
      - VTune: http://users.alliedmods.net/~dvander..._callstack.png (David Anderson is one main JavaScript developers).
      Licence price? http://software.intel.com/en-us/inte...r-xe-purchase/ - On Windows/Linux starts from 899 dollars
      - it uses Mercurial in part because it has good Windows integration (TortoiseHg, VisualHG)
      LibreOffice is the same: a lot of developers use Windows to work with LibreOffice codebase and they do use paid tools (at least for paid contributors category area), why shouldn't they.
      So a developer in Firefox team most likely has either OS X (like the site www.arewefastyet.com which targets Mac OS X 32/64 bit) tools like XCode (which is proprietary) or Visual Studio (which is not Express)

      If you take C# kind of the world, the tooling is overall much cheaper (even the underlying language is free, the compiler is a part of .Net/Mono. In fact I know that just one vendor is overall pricier as component vendor and tools than average priced C++ tools on Windows.
      But as C# is easier to make it tool-aware, it has more tools. And last incarnations of MonoDevelop look for me to be great tools: they allow simple static analysis, improved code refactors, a decent visual editor. May you say to me another free Gnome IDE that has feature parity with MonoDevelop for developing Gtk+ applications? I know that QtCreator can target Qt, and Qt can use Gtk backend, but is not Gtk by far. How Yorba develops in Vala? Using their plugin in GEdit: http://blog.yorba.org/eric/2012/05/g...-for-vala.html
      Last edited by ciplogic; 17 September 2012, 04:06 AM.

      Comment


      • Originally posted by mateli View Post
        Java do not consume more CPU than C++ and at most a few megabytes extra ram.
        Java consumes a whole bunch of extra RAM. Even the most basic types consume a whole bucket of memory when created.

        Hotspot is fast, don't get me wrong - and faster than Mono's Boehm GC certainly - but it is not remotely competitive on RAM consumption.

        Comment


        • Originally posted by ciplogic View Post
          May you say to me another free Gnome IDE that has feature parity with MonoDevelop for developing Gtk+ applications? I know that QtCreator can target Qt, and Qt can use Gtk backend, but is not Gtk by far. How Yorba develops in Vala? Using their plugin in GEdit: http://blog.yorba.org/eric/2012/05/g...-for-vala.html
          Not sure if it's really on par with MonoDevelop (I haven't used either), but I've heard good things about Anjuta: http://projects.gnome.org/anjuta/

          Comment


          • Originally posted by directhex View Post
            Gay slurs? That's a fascinating insight into what kind of person you are.
            Go fuck yourself. Balmer is an asshole. You know it, I know it, everybody knows it.

            And it's the choice of developers as to which OSes they want to support. Some developers use C and support multiple platforms. Some use C++. Some use Java. Some use C#. It's their choice what to use, and their choice as to what to support, not yours.
            On the contrary, it IS my choice what platform they support. If they fail to support the platform *I* choose, they fail to earn money I may consider spending on their product. THE CUSTOMER IS ALWAYS RIGHT!!!

            So using cross-platform tools is the best option, and using cross-platform .NET is lazy and ignorant. Your cognitive dissonance can't track arguments between more than one line?
            It is lazy and ignorant because IT DOES NOT AND ABSOLUTELY SHOULD NOT EXIST!!!!

            Wrong. Oracle sued over seven patents in addition to the copyright claims:
            • 6,125,447 - Protection Domains To Provide Security In A Computer System
            • 6,192,476 - Controlling Access To A Resource
            • 5,966,702 - Method And Apparatus For Preprocessing And Packaging Class Files
            • 7,426,720 - System And Method For Dynamic Preloading Of Classes Through Memory Space Cloning Of A Master Runtime System Process
            • RE38,104 - Method And Apparatus For Resolving Data References In Generate Code
            • 6,910,205 - Interpreting Functions Utilizing A Hybrid Of Virtual And Native Machine Instructions
            • 6,061,520 - Method And System for Performing Static Initialization


            They did, however, lose.
            What are you smoking?
            Bold is WHAT I SAID.

            Correct. Mostly. There are a small number of patents Apple sued Samsung over which are part of the base Android OS. These can be quickly worked around.
            NAME ONE.
            Oh, don't have one?
            I understand. You're just being a douchebag.

            Wrong. FAT32 extended file name support. They were sued for supporting and using filenames longer than the old 8.3 format (i.e. FILENAME.FOO). This layer is commonly referred to as "VFAT", and is patented by Microsoft.

            Notably, FAT32 is the mandatory filesystem used on Secure Digital High Capacity memory cards. If TomTom had stuck to 8.3 filenames on their SD cards, they wouldn't have been at risk under this specific set of patents.

            ExtFat doesn't exist. If you mean exFAT, then no, that wasn't the filesystem causing issues (although that filesystem is patented).
            WTF are you talking about?
            I don't give a fucking rat's ass about why or how MS sued who, only the fact they did.
            If you want to get your panties in a knot over "ex" vs "ext" vs "nofuckingext", take it up with steve balmer or michael larabel. ALL I DID IS QUOTE CHARACTER FOR CHARACTER FROM THE LINKED ARTICLE.

            As for crap32 being "mandatory" for sdhc... regardless of ASSHOLE ANTI-COMPETITIVE PRACTICES dumping that crap into some specification somewhere, it is absolutely NOT in ANY WAY required or applicable.
            Go ahead and format your sdhc as btrfs or ext, or whatever you like.
            Oh, it works? Amazing, isn't it?

            Except it doesn't. It's unrelated.
            It couldn't be more related. Too bad your puny mind is incapable of understanding.

            Comment


            • Originally posted by droidhacker View Post
              Go fuck yourself. Balmer is an asshole. You know it, I know it, everybody knows it.
              I never said anything about Ballmer, and neither did you. You went off on a gay sex tangent: "Now if you happen to be gay and like taking it up the arse, power to you, this solution may satisfy you."

              On the contrary, it IS my choice what platform they support. If they fail to support the platform *I* choose, they fail to earn money I may consider spending on their product. THE CUSTOMER IS ALWAYS RIGHT!!!
              You're one person, and are really quite irrelevant in the grand scheme of things. If a company can have 15,000 customers when porting their existing code, or 15,003 by porting to a more "acceptable" platform at a cost of tens of thousands, they'll go with the former.

              It is lazy and ignorant because IT DOES NOT AND ABSOLUTELY SHOULD NOT EXIST!!!!
              Not your decision. You don't gt to assert your own version of the universe.

              What are you smoking?
              Bold is WHAT I SAID.
              "- Oracle was attacking Android's Java for copyright issues (no patents, sic!)"

              You claimed their lawsuit was only over copyright and not patents. You were wrong.

              NAME ONE.
              Oh, don't have one?
              I understand. You're just being a douchebag.
              Google are the ones who've acknowledged it.: "Most of these don't relate to the core Android operating system"

              of course, Phoronix forum trolls know way more about patents than large companies with lawyers, I forgot.

              However, while we're on the topic, name the patents Mono violates. Oh, you don't have one?

              WTF are you talking about?
              I don't give a fucking rat's ass about why or how MS sued who, only the fact they did.
              If you want to get your panties in a knot over "ex" vs "ext" vs "nofuckingext", take it up with steve balmer or michael larabel. ALL I DID IS QUOTE CHARACTER FOR CHARACTER FROM THE LINKED ARTICLE.
              You don't care about accuracy? That's already pretty clear.

              As for crap32 being "mandatory" for sdhc... regardless of ASSHOLE ANTI-COMPETITIVE PRACTICES dumping that crap into some specification somewhere, it is absolutely NOT in ANY WAY required or applicable.
              Go ahead and format your sdhc as btrfs or ext, or whatever you like.
              Oh, it works? Amazing, isn't it?
              If a piece of plastic has "SDHC" written on it, it needs to come with FAT32 as the file system. Of course other file systems may work. That's not in doubt. The point is that SDHC support *requires* FAT32, and FAT32 support *does not* require use of (patented) VFAT.

              It couldn't be more related. Too bad your puny mind is incapable of understanding.
              "Oranges, therefore apples"?

              Join up your thinking, or you come across as incoherent and rambling.

              Comment


              • Originally posted by droidhacker View Post
                Go fuck yourself. Balmer is an asshole. You know it, I know it, everybody knows it.
                He is right. Using such slurs does give an insight as to what kind of person you are...
                Ballmer being an ass does not change that.


                On the contrary, it IS my choice what platform they support. If they fail to support the platform *I* choose, they fail to earn money I may consider spending on their product. THE CUSTOMER IS ALWAYS RIGHT!!!
                No it is not. You only have the right to ask for support, and refuse to buy the product if they do not support your platform. You do not tell developers of a product what they should do. This is called entitlement. They are not obligated to your every whim. You can not dictate to them their choice of programming language.

                It is lazy and ignorant because IT DOES NOT AND ABSOLUTELY SHOULD NOT EXIST!!!!
                You're opinion that it should not exist does not explain in anyway, shape or form as to WHY it is lazy or ignorant.


                What are you smoking?
                Bold is WHAT I SAID.
                Are you skimming or actually reading what people post? You don't seem to pay attention to what people say other then yourself. Then again you might not even be paying attention to what you say either, judging by your posts.
                If I must, let me spell it out for you. You said Oracle had no patents, patents in their suit (thereby implying they sued only for copyright). He correct you saying that Oracle DID have patent claims and even NAMED the patents. Oh and judging by your remarks, I garuntee if he merely said they DID have patent claims, without naming them, you would have screamed NAME ONE. When someone does name something, you simply ignore it.

                NAME ONE.
                Oh, don't have one?
                I understand. You're just being a douchebag.
                US Patent No. 7,864,163 - Portable electronic device, method, and graphical user interface for displaying structured electronic documents
                US Patent No. 7,469,381 - List scrolling and document translation, scaling, and rotation on a touch-screen display

                I named 2. It took me 5 minutes to find them.
                Software patents are bullshit, but the courts don't think so. So yes Apple can sue Google, however if they lost that suit they could never sue anyone else using android. Same with MS. They are much happier collecting royalties.

                WTF are you talking about?
                I don't give a fucking rat's ass about why or how MS sued who, only the fact they did.
                If you want to get your panties in a knot over "ex" vs "ext" vs "nofuckingext", take it up with steve balmer or michael larabel. ALL I DID IS QUOTE CHARACTER FOR CHARACTER FROM THE LINKED ARTICLE.

                As for crap32 being "mandatory" for sdhc... regardless of ASSHOLE ANTI-COMPETITIVE PRACTICES dumping that crap into some specification somewhere, it is absolutely NOT in ANY WAY required or applicable.
                Go ahead and format your sdhc as btrfs or
                ext, or whatever you like.
                Oh, it works? Amazing, isn't it?
                Formatting it as btrfs or ext? You don't live in the real world do you.....
                For real people who do live in the real world, they cannot use ext or btrfs. Only linux desktop users can. You don't seem to think about practicality at all do you. You just want your favorite technology used, regardless if it is practical.
                SDHC also MUST be fat32.


                Don't care about who MS sued and why? Moronic. Every suit originating from MS is wrong, and evil right! Again, you can't face reality.
                While there is no question about many MS lawsuits being total bullshit, automatically assuming so for their every suit without even looking is irrational. Even though the vast majroity of MS litigation is BS, I think their suit against Lindows was legitimate. It obviously violated their trademark. They settled that out of court though. MS purchased the Lindows trademark from Lindows Inc, for 20 million. Lindows changed their name to Linspire.

                It couldn't be more related. Too bad your puny mind is incapable of understanding.
                Yes with your vocabulary, your mind is WAY better.
                /sarcasm.
                Enlighten me, how is FAT related to Mono, C# or .net?
                It isn't.

                If you are trying to say MS has a history of suing people you're argument does not hold up.
                They do not sue because it is fun, but because they benefit from it and it servers their own interests. Mono serves MS interests.
                Like I said, many parts of C# and .NET are ECMA standardized. Those parts can't be sued for, and neither can the gnome/*nix specific stuff either. The only thing people complain is non-standardized, windows-compatibility parts. If that happens Mono has stated they will just work around the patent(s) with new mechanism but the same API. That's pretty plausible. They can also just find prior art to invalidate it. If that fails, they remove infringing code.
                Simple.

                Then people say MS directly helps Mono, if that is true and then they later sue, Xamarin (company behind mono) can argue in court that the help from Microsoft constitutes approval of the project. Promissory Estoppel.
                Last edited by n3wu53r; 17 September 2012, 10:46 AM.

                Comment


                • Originally posted by mateli View Post
                  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?
                  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++.
                  Java is not as fast or faster tehn C or C++. Saying so is BS. Most programming benchmarks are dubious at best. One of the few reliable ones:


                  Let's take a look at one of the charts.


                  And again, programming "benchmarks" are a bit unreliabe at best.
                  Even the author of that site says so.


                  It says Fortran is the fastest. C is 30% slower then fortran, C++ is 34% slower then fortran, Java 7 is 61% slower and Mono 180% slower.

                  C and C++ are way faster. This does not include memory either. Java has skyrocket memory use. Every Java app I have used uses hundreds of megs Minimum. I have had Mincraft hit 2gb often, IntelliJ and Eclipse both easily use 500mb. Vuze up into the hundreds of megabytes regularly when I used it. Mono is way better in RAM but still worse then native.

                  Now, Java will always be worse then C++ or C. Both in Memory and CPU. It's by nature, going to slower then a compiled language. The same for any runtime. Runtimes impose overhead.
                  For server side stuff and middlewar, java is fine. However I literally avoid desktop applications done in Java, just because it's so bad for the desktop. Both in performance and it's looks. Swing looks awful. The only not super awful thing in Swing I have seen is IntelliJ when it is set to emulate GTK. But still anyone can see it's out of place. Everything else in Swing has been really, really, bad.
                  SWT is better but still awful.

                  What does performance matter if the RAM use is so high that to the user, it feels like it's running at a snails pace?

                  Yeah running C/C++ as bytecode will improve it as shown by FreeBSD which have switched to Clang and LLVM.
                  Clang and LLVM are regular machine code compilers jus like GCC. The binaries are a bit slower then GCC but compiling takes less RAM and time. It's also BSD licensed. Clang is not a VM.

                  You could use the LLVM IR to run C/C++ as bytecode though.

                  Perhaps you should Google.
                  There are Qt bindings for both Java and .NET...
                  No good ones. There is Qt Jambi for java which latest release is a beta release for Qt4.7. How old is 4.7?

                  There was Qyoto but that project has been dead for years and years. It has been revived recently into https://gitorious.org/assemblygen and is now the current maintaned version of Qyoto.
                  It was hard t find a Qt C# binding.

                  Comment


                  • Originally posted by eSPiYa View Post
                    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.
                    Good for you! Ignore all the bullshit here. This is common on phoronix.

                    But don't only develop on Mono. It is never good to rely on one language/framework.

                    but maintenance of code for every platform will take too much time and resources.
                    Also, have you tried C++ with Qt?

                    Comment


                    • Originally posted by mateli View Post
                      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.
                      Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite


                      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.
                      1.) freebsd didn't switch cuz is faster/better/cooler or whatever they switch basically for licensing because for some reason they don't seem to like GCC gpl3 license and there is the fact that clang/llvm have good testing over BSD kernels, so is more natural for the bsd ecosystem <-- Mac OS X[i think openbsd/dragonfly will switch eventually too]

                      2.) anything higher than AS/C/C++/Pascal/fortran/cobol consumes more CPU time by default and the higher the level of abstraction in the language the higher the penalty is and the same apply to memory[welcome to computing languages 101] and there is a reason for it you need many additional processes like garbage collection[no matter how good is the implementation it always has a big memory footprint], jit compilers/VM/bytecode/IR[and each step provide penalty], preloading of dependencies and libraries and assemblies, jit linker for external referencing[low level language access] and many other techniques

                      3.) about you template question, if you don't get why i won't bother answering so google C++ templates and see how they work internally and why when preperly used you can save some cpu time

                      4.) about your java vs C++ question is simple[if you bother in read my previous post ...] in unoptimized or simplistic code java can catch up to c++ but in instense code [take BLAS or recurrent FFT algorithms or IDCT/DCT algorithms or CABAC algorithms, etc] properly optimized ASM/C/C++ are on a entirely different league unreacheable by any interpreted language[mono, java, python,etc are interpreted the fact that is using jit or VM doesnt make them compiled languages] in performance or memory footprint, due to micromanagement/CCOT[cumulative cycles over time] and the fact is compiled[0 additional baggage].

                      5.) about googling links if you have any sort of understading of how interpreted languages work you will know they are useless at best
                      1.) they don't measure the entire process tree just the fake process created by the jit <--- memory reading is useless
                      2.) they normally compare uber simplistic algorithms and the c++ code is normally ridicuoluosly under optimized <-- cpu comparison useless
                      3.) in most cases the compiler flag are missing or incorrect or blatantly underperformant[-O0].
                      4.) they mostly use VC which has many important optimization disabled by default[check msdn]

                      6.) if you want a good example make this, write yourself an IDCT algorithm using MxM technique with floats values <-- very easy to optimize and very simd friendly
                      1.) write version A in plain C++ without anything too complex[play a bit with flags until you get a nice time]
                      2.) write version B and optimize it until you trully believe do it in ASM in the only thing left to do[same]
                      3.) write version C in your favorite interpreted language
                      now run each 100 1000 1000000 times looped and use timestamps to measure an aprox execution time and after that use kcachegrind/valgrind on each executable and compare it

                      7.) about java memory number if you take enterprise applications like zimbra for example for 1000 users is insane do it without at least 16/32GB ram otherwise either get slow or the VM crash but i've been experimenting with Kolab/Cyrus2/samba4 AD/PGsql and horde[php Ajax] and a simple old dual core Opteron with 2gb or ram handle those 1000 users like a charm[harder to admin tho]. Additionally i've a client that uses JBOSS and everytime they ask for a server 64GB is like the ultra minimal memory requirement, so after a while i proposed to them to port some of the java middleware code to C++ to reduce costs in that cluster and in some operation we had upto 50:1 performance improvement[harder to manage tho][i had similar cases with .NET too], so sure many sites out there can claim anything but in my experience with real life enterprise enviroments interpreted languages are faster to deploy but eat resources like monsters and at the end of the day many intensive bussiness logic has to be implemented in lower level languages to keep hardware costs under control. ofc you won't notice this writing amarok in mono/java or an inventory system with 10 users

                      Comment

                      Working...
                      X