Announcement

Collapse
No announcement yet.

I love mono and C#!

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

  • #11
    Mono hatred is mostly irrational FUD, ignore it.

    Comment


    • #12
      Originally posted by tball View Post
      Two last questions. Is a .NET implementation not allowed to be implemented on other OS'es than windows? Or why doesn't there exist a Linux version?
      Nobody knows if it's allowed or not, as large parts of .Net are not a part of the ECMA standard. Mono people are trying to reimplement .Net for Linux, but this is basically the same thing as trying to reimplement WinAPI, which is what WINE is doing -- there's lots of guessing, Microsoft keeps changing things and introducing incompatibilities, so it is essentially a windows-only technology.

      From wiki: The Microsoft compatibility stack provides a pathway for porting Windows .NET applications to GNU/Linux. This group of components include ADO.NET, ASP.NET, and Windows.Forms, among others. As these components are not covered by Ecma standards, some of them remain subject to patent fears and concerns.

      You CAN use C# by sticking only to the international standard, and avoid any .Net extensions, but you are still under threat of patent litigation. And then there are many safer options, the first of all being Java.

      Why does Microsoft invent a language such as C#, instead of just using plain C or C++?
      Control. They are the only ones with a complete implementation.

      With C++, if you don't want to pay MS anymore, you switch to a different compiler, maybe even a free and open source one. With C#, you can't do it. The Mono guys are trying to offer C# users such a possibility, by reimplementing the standard from scratch, but many people in the Linux world don't feel comfortable depending on such technology.

      Developing Linux apps for Mono/C# is almost the same as developing apps using Windows API and running it through WINE. It might work, but there are more free options that work just as well.

      Just to be able to have a similar language such as JAVA, with their own extensions? I don't see the point in having something similar as JAVA, if you are not targeting multiple platforms.
      There are advantages to running your stuff over a VM. Android is doing it (Dalvik), and many languages such as Perl and Python are doing it.

      There are also disadvantages, of course.
      Last edited by pingufunkybeat; 27 July 2011, 02:53 PM.

      Comment


      • #13
        Originally posted by bwat47 View Post
        Mono hatred is mostly irrational FUD, ignore it.
        While Microsoft and their partners hold patents[citation needed] for the CLI and C#, ECMA and ISO require that all patents essential to implementation be made available under "reasonable and non-discriminatory terms". In addition to meeting these terms, the companies have agreed to make the patents available royalty-free.

        However, this does not apply for the part of the .NET Framework which is not covered by the ECMA/ISO standard, which includes Windows Forms, ADO.NET, and ASP.NET. Patents that Microsoft holds in these areas may deter non-Microsoft implementations of the full framework.[17]


        That software is openly violating MS patents. You are free to be almost compatible, but not to run Windows C# programs.

        Use it if you feel comfortable. Base your whole business on it if you want to

        Just keep it out of Linux.

        Comment


        • #14
          Originally posted by tball View Post
          Hi guys.

          I just started to learn C# out of curiosity. First now I realize that the binary file compiled by mono can actually execute on both linux and windows! This is great. I do not know why there are so many mono haters out there, because it is brilliant in its way of not needing to be recompiled in order to run on different platforms.

          I have a couple of questions though.
          1. Please explain why you have so much against mono?
          2. How fast is the mono implementation versus the visual studio implementation of C#?
          3. How fast is mono versus java, which I assume works in a similar way as JAVA?

          Thanks
          1 Mono and .NET are being forced down my throat.
          Ubuntu has ditched Gimp saying there was no room. But they keep even more room for the Mono runtime and some applications which can easily be replaced with other ones.
          Parts of .NET are patented.
          It's like allowing Microsoft to control everything. They want to destroy their competition, it includes Linux and many other companies and software projects.
          Lately they are pretending to be nice but actually aren't.

          2 Mono, and this is more important than performance, is very incomplete.
          There are a lot of things not implemented. If you start in Linux. You're going to find bugs or missing features you would want to use.
          The Mono developers also added some things that aren't in .NET on windows so the reliability that everything would work on windows goes out of the window.

          You're actually better off with java. Which is more accepted and actually cross platform.
          The binary fine is actually compiled to MSIL Microsoft Intermediate Language with is programming language independent and only should contain .NET Framework Class Library calls.
          The file can thus be compiled to machine code on the users computer if a suitable .NET environment is found.

          This idea of an intermediate language is also what java does.
          In terms of java versus mono, it's not about the technologie concepts but the speed of the software/implementation that matters here.

          Don't you find the creators of java en the Java Virtual Machine equally brilliant then?
          Also all scripting languages e.g. Python also do this. http://www.python.org/

          And if you're interested in binary file compatibility look for Java and Parrot Virtual Machine.
          http://en.wikipedia.org/wiki/Comparison_of_application_virtual_machines


          Comment


          • #15
            Mono is awesome, don't listen to the haters. It's fast, stable and versatile - just avoid the windows-centric technologies (WPF, WinForms), and you'll be fine.

            Binaries do run everywhere without recompilation (I have worked on two 0.5-1 Mloc projects that work fine) and can also be ported to Android/iPhone/WP7 with little trouble.

            If you need to distribute a Mono-based application to people without Mono/.Net, you can embed a cut-down version of the Mono runtime in ~4MB. Mono haters won't even realize you are using Mono, then

            Finally, just ignore the bile in this thread. These haters are a tiny minority of a tiny minority. Normal people don't care what programming language you use - just pick something you are productive with and code away

            I love C#, F#, Boo (as well as Python, Ruby, Ocaml and many more) - if one or two people refuse to use my products due to not being written in object-oriented assembly, that's their loss.

            My 2cc.

            Comment


            • #16
              It largely has the same advantages as any virtualmachine based language/runtime and sucks less than Java.

              I have the following reservations about C#/mono.

              1) .Net is microsoft centric technology. Microsoft is a very large company and while I am guessing that the team making .Net may have their intentions in the right place I don't trust other parts of the company not interfere if there is profit to be made by sending in the lawyers. (look at what is happening with Microsoft and companies using Android). If I were starting a large project I would take this into consideration.

              2) Collary to this a lot of companies doing .Net are very Microsoft centric. In most cases (not all) I rather expect Linux support to be an afterthought.

              3) It's yet another runtime I have to installed. So far I don't have any must have .Net based software yet so getting me to install your .Net based app involves getting me to install the runtime. The applications I have looked at so far have hardly been inspiring.

              4) As a developer I am already really happy with Qt for cross platform development (I can see some merit to using a VM based language in some instances) but I generally prefer native applications and Qt development is really quite pleasant (about as pleasant as I think C++ can get).

              Comment


              • #17
                This is what blackstar is talking about -- very current:

                At Oscon 2011, Gianugo Rabellino, Senior Director for Open Source Communities at Microsoft, said as long as the APIs, protocols and standards for the cloud are open, that is, open surface, customers don't care about whether the underlying platform is open source or closed source. Microsoft also announced a new version of Azure SDK for PHP is now available and the company is announcing new tools to cloud enable open source applications for Azure.


                Platform doesn't matter as long as MS is controlling the language and the standard. Salud!

                Comment


                • #18
                  Blackstar is contradicting himself.

                  Mono is fast because of the underlaying technologies, not mono itself.
                  Any other thing (Java, Parrot) is also fast.

                  And Mono is NOT stable on much .NET content made with the official windows centric .NET framework.

                  He says binaries run everywhere without compilation but then mentions porting, as in adapting a program to run on something.
                  This completely destroys the reason for .NET/MONO and actually places java ahead of doing this better.


                  His last paragraph about F#, of which the idea is kinda neat.
                  Boo is boo because MS changed things, there for making it incompatible with the official Python stuff.

                  Now why would anyone do such a thing instead of just working with the python organization to straighten out the problems?

                  This is typical MS, they want you to use their environments and specifically patented, proprietary extensions to all kinds of stuff.
                  Which in most cases don't have any technical added value. Or could be integrated in the official real stuff.
                  Which MS doesn't try to do.

                  Also his reason for rejecting, the object oriented assembly does not make sense.
                  Other languages support non-object oriented way of programming.

                  Darkstar is telling a bunch of nonsense.

                  Comment


                  • #19
                    Originally posted by kayosiii View Post
                    It largely has the same advantages as any virtualmachine based language/runtime and sucks less than Java.

                    I have the following reservations about C#/mono.

                    1) .Net is microsoft centric technology. Microsoft is a very large company and while I am guessing that the team making .Net may have their intentions in the right place I don't trust other parts of the company not interfere if there is profit to be made by sending in the lawyers. (look at what is happening with Microsoft and companies using Android). If I were starting a large project I would take this into consideration.
                    You meant Oracle and the companies using Android? (Oracle sued Google for using a variant of Java, Microsoft has nothing to do with this).

                    2) Collary to this a lot of companies doing .Net are very Microsoft centric. In most cases (not all) I rather expect Linux support to be an afterthought.
                    Indeed. These companies would be Microsoft-centric regardless of whether they use .Net or not. (At least with Mono they stand a slightly better chance of porting their applications to Linux if they ever wish).

                    3) It's yet another runtime I have to installed. So far I don't have any must have .Net based software yet so getting me to install your .Net based app involves getting me to install the runtime. The applications I have looked at so far have hardly been inspiring.
                    You do need a runtime, true, same as with Python, Ruby, Perl or even C++. This is a very reasonable objection that application developers must take into account when developing a new application.

                    For some kinds of applications, there is a valid workaround: embed the runtime into a native launcher. A ~4MB version of Mono provides most features a modern cross-platform game would need (i.e. xml, networking, I/O, reflection, scripting, OpenGL, OpenAL, a garbage collector and the whole standard library). To get the same features in C++, you'd need libstdc++, TinyXML, boost a separate scripting language (Python, Lua, ...) and you'd still miss a garbage collector. Add this stuff up and you'll see it needs significantly more than 4MB - especially since you need separate 64bit and 32bit versions.

                    What I am trying to say is things are not as clear cut as they seem at first. It's probably not a good idea to require a separate 4MB runtime for a 4KB utility but what about a 100MB application or game? What if the runtime is pre-installed and shared among all applications in the system?

                    4) As a developer I am already really happy with Qt for cross platform development (I can see some merit to using a VM based language in some instances) but I generally prefer native applications and Qt development is really quite pleasant (about as pleasant as I think C++ can get).
                    100% agreed.

                    And if Qt 5 drops MOC in favor of boost facilities or C++1x features, I think I'd be in heaven!

                    Comment


                    • #20
                      Originally posted by plonoma View Post
                      Blackstar is contradicting himself.

                      Mono is fast because of the underlaying technologies, not mono itself.
                      Any other thing (Java, Parrot) is also fast.
                      What about Python and Ruby?

                      Btw, Java is faster than either Mono or .Net.

                      And Mono is NOT stable on much .NET content made with the official windows centric .NET framework.
                      Indeed, and that's why you shouldn't develop on Linuz using windows-centric .Net technologies. Use GTK# or Qyoto instead. (Duh?)

                      The cross-platform parts of Mono work fine.

                      He says binaries run everywhere without compilation but then mentions porting, as in adapting a program to run on something.
                      This completely destroys the reason for .NET/MONO and actually places java ahead of doing this better.
                      This is nonsense. Applications must adapt to the OS they run on. On Mac, they must show an application menu; on KDE they should show native file dialogs; on Windows, OK/Cancel buttons should be in the correct order.

                      Java example fails on all these accounts.


                      Boo is boo because MS changed things, there for making it incompatible with the official Python stuff.
                      Please don't confuse Boo with IronPython. IronPython was written by Microsoft and may or may not suffer from what you say (never used it, so I don't know).

                      Boo is a completely separate, open-source language that has nothing to do with Microsoft or Python.

                      Also his reason for rejecting, the object oriented assembly does not make sense.
                      Other languages support non-object oriented way of programming.
                      Do you even know what I was getting at with the "object-oriented assembly" reference? It's just an obscure way of referring to C++. C is often called "portable assembly". In this sense, C++ is "portable assembly" with "object-oriented" features on top.

                      What I am getting at: as long as an application does what it's supposed to do, the programming language is irrelevant to the end-user. What programming language is Phoronix written on? Is it PHP? Python? Ruby? C#? Do you know? Do you care?

                      Did you know that Twitter and GitHub are written in Ruby, the slowest goddamn language in the entire world? It's 1000x slower than C# - but the sites do what they are supposed to do and that's all that matters.

                      What about apt/yum/pacman/portage? Are they C? Bash scripts? TCL scripts? Lisp macros? Does it matter?

                      So you don't want to use a program because I wrote it in portable assembly instead of object-oriented portable assembly? Well, be my guest. Your loss, not mine.

                      Comment

                      Working...
                      X