Announcement

Collapse
No announcement yet.

I love mono and C#!

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

  • #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:

      http://www.zdnet.com/blog/open-sourc...en-source/9308

      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


            • #21
              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.
              Contradicting yourself there. How can the 4mb embedded Mono run on both 32 and 64? Does it somehow magically interpret itself?

              Comment


              • #22
                Originally posted by BlackStar View Post
                What about Python and Ruby?

                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.
                I think Twitter has switched to Java and Scala http://engineering.twitter.com/2011/...ster_1656.html

                Comment


                • #23
                  It's because 32bit binaries can also run on 64 bit.

                  Comment


                  • #24
                    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.
                    I meant that having to change source code when using cross platform software environments and it's frameworks and libraries is a fail.
                    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.
                    Confused the two. It's IronPython I meant.

                    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.
                    That's quite a load of nonsense you're telling there.

                    My point is that as long as using the application doesn't allow other people, companies, organizations to sue my ass off or that off other people, companies, organizations. Only then it's irrelevant what I use. And only then it matters that it does what it's supposed to do.

                    Second point, we are talking about a framework that is cross language. I'm not talking about languages and I said that I don't care if anything is object oriented or not.

                    Third point assembly does not matter.

                    I'm fine with scripts because the source can be read easily and the documentation of how functions work cannot be hidden without letting the environment, framework become commercially not viable,useless.
                    Last edited by plonoma; 07-31-2011, 07:52 AM.

                    Comment


                    • #25
                      Originally posted by curaga View Post
                      Contradicting yourself there. How can the 4mb embedded Mono run on both 32 and 64? Does it somehow magically interpret itself?
                      Exactly. The BCL (base class library) uses hardware agnostic IL that is magically interpreted (JITted) on the target hardware. Your native launcher links or embedsthe actual interpreter. You obviously need to ship a different native launcher for each hardware platform (that's what "native" means).

                      The point is that the BCL (i.e. the large part) is shared. You can fit two such launchers (x86/amd64) plus the useful parts of the BCL in a 4MB solid archive.

                      Comment


                      • #26
                        Originally posted by BlackStar View Post
                        What about Python and Ruby?

                        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.
                        I think Twitter has switched (parts?) of the their code from Ruby to scala and java

                        Comment


                        • #27
                          Originally posted by Akka View Post
                          I think Twitter has switched (parts?) of the their code from Ruby to scala and java
                          Quite possible, I'm not 100% up to date with happenings in the world of web development. I'm sure you can find enough big sites using Ruby successfully, despite its real or perceived performance shortcomings (every web startup seems to be looking for Ruby developers these days).

                          Comment


                          • #28
                            As java is a c family derived strongly typed language it simplified some aspects of the lower level languages like c and c++ which don't run on JVM's (both c/c++ compile to machine and thus are optimally performant for many types of problems but that performance comes at the cost of the increased complexity of the languages themselves. They require that you understand and care about pointers for example.

                            C# stands apart as a bit of a java clone made to run on Microsoft's CLI....though syntactically it is also very similar to c family languages.

                            As for how long it would take to learn it depends on how well you know java in the first place and on if the type of problems you wish to solve require the unique use of the low level constructs that are made available in c and c++ (pointers, garbage collection in particular) that in java and c# are taken care of for you by the virtual machine.


                            More Info : http://net-informations.com


                            Dov

                            Comment


                            • #29
                              Thread resurrection? Begone, foul lich!

                              Comment


                              • #30
                                Originally posted by directhex View Post
                                Thread resurrection? Begone, foul lich!

                                It is somewhat more relevant now that Microsoft is open-sourcing (parts of) .net .

                                Comment

                                Working...
                                X