Announcement

Collapse
No announcement yet.

Mono Developing A New .NET Interpreter

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

  • #11
    Originally posted by Hi-Angel View Post
    On Windows it does. But on GNU/Linux you don't generally see it because of α) poor .net integration and bugs (saying from a 1 year old experience, maybe it got better), β) lack of a place in the ecosystem. Indeed, why would you code your GUI using immature native framework of C# and poorly integrated debugger, when you can use an excellent quality Qt with mature gdb which is supported pretty much everywhere.
    Honestly I've heard very little Windows related but then again I don't spend time around Windows.
    Speaking of which, I'm pretty sure gdb could support .net very well if only people from mono have written a backend. But instead they went NIH way, and here we are…
    A lot of people simply don't want to get tangled up with GPL or working with teams well set in their ways. NIH isn't always bad, lets face it much innovation comes from finding a better way. Nobody yet has convinced me that .Net is a better path though. A lot of things have caused me to wonder about the future of .Net, I hardly see it listed as a job requirement anymore.

    Comment


    • #12
      .Net is mostly used inside the corporative environment, since it's a very straightforward/productive language. Also, as CuriousTommy said, Unity Engine, which is being largely used theses days, is also written in .Net.

      I'm not a big fan of MS, but I have to admit that C# language is amazing and probably one of the reasons why C++ has evolved so much last years (i.e. version 11 and beyond). If I would start a project with no critical performance concern, I would choose C# for sure.

      Comment


      • #13
        I'm guessing Microsoft released so much of .NET as open source specifically because they saw the world shifting to Linux. I would also expect that if the move works at all to boost .NET popularity in a big way, it will take a while to work.

        Now that the stuff is under an MIT license, I've got nothing against it. 95% of my own server-side experience is with Java, but that doesn't mean Java is generally better. It's just more familiar. I never did anything with Java EE.

        Comment


        • #14
          Originally posted by Michael_S View Post
          I'm guessing Microsoft released so much of .NET as open source specifically because they saw the world shifting to Linux. I would also expect that if the move works at all to boost .NET popularity in a big way, it will take a while to work.

          Now that the stuff is under an MIT license, I've got nothing against it. 95% of my own server-side experience is with Java, but that doesn't mean Java is generally better. It's just more familiar. I never did anything with Java EE.
          All the linux-compatible "core" .net stuff is still very new, and most apps haven't been ported from the old versions with windows-specific api so it's not surprising that it isn't showing up a lot on linux yet. In a few years, maybe it will be - or maybe not, I'm not sure yet how I see it going. It is still used a lot on Windows though, and I don't see that going anywhere. It's simply far superior there to Java, which is it's main competition.

          I do know the new version of MS SQL 2017 now works on linux, perhaps that will inspire some more MS-centric tech like .net to get used more as well as windows devs shift over to linux, but it's hard to say at this point.

          Comment


          • #15
            Originally posted by wizard69 View Post
            Honestly I've heard very little Windows related but then again I don't spend time around Windows.
            On my ex-job C# was heavily used. Software per se was not their business though, it's mostly an electronic company. Not long before I quit the job they decided to port some corporate app to mobile phones, and went C# too (I have to admit, they had a reason — it'd allow them to reuse a bunch of already written in .net internal libraries).

            I am not sure, though, how good of an example this is, because they even have some legacy written even in Object Pascal

            Though I've got a lot of C# experience, but nowadays I'd prefer not to use it, I am allergic to that language
            Originally posted by wizard69 View Post
            A lot of people simply don't want to get tangled up with GPL or working with teams well set in their ways. NIH isn't always bad, lets face it much innovation comes from finding a better way. Nobody yet has convinced me that .Net is a better path though. A lot of things have caused me to wonder about the future of .Net, I hardly see it listed as a job requirement anymore.
            NIH is always bad, an innovation comes when there's a reason for recreating anything. E.g. Servo is not a NIH, it's used as the main testing platform for Rust, and initially was probably just a proof-of-concept. Also Rust mitigates many common problems from C/C++, and enables a compiler with more information for optimizations.

            The mono debugger on the other hand is NIH — they didn't aim for innovation, they just set themselves to write a new debugger, but in another language, and worse (you don't see the flexibility of gdb there, right?).

            Comment


            • #16
              I think C# is a really nice language, but the ecosystem and ide support isn't that great, especially when you look on the Linux side.

              Ecosystem
              .net core 1.0 was a mess on Linux, you couldn't even resolve a hostname....
              .net core 2.0 fixed a lot of these shortcomings, but made the API very wide.

              Bindings to common UI systems like QT or GTK are poorly maintained and ide support is just lacking.

              They have some sort of orm mapper called entity framework, but good luck getting this working with anything but SQL Server, if you don't want to use a very old version and are ok with strange mapping bugs / missing features.

              LINQ on the other hand is a really nice feature, but seen in other languages as well. (Not a language feature per se)

              ​​​​The compilation into an intermediate language isn't that big of a performance killer, but most VMs executing that IL don't optimize for the CPU architecture and use things like the SIMD extensions, so you either need to use external C libs or accept slow performance for some operations...
              there is no way to access things like AVX from IL code, cause this would break backward compability.

              Comment


              • #17
                Originally posted by Spacefish View Post
                I think C# is a really nice language, but the ecosystem and ide support isn't that great, especially when you look on the Linux side.
                I do not think C# is a nice language. Its destructors doesn't work upon coming out of scope, which complicates the code. Type inference of templates is basically non-existent. Oh, and by the way, did you hear that C# frees you from manual memory management? Well, too bad it's not true — it only frees you from calling "delete()", but then again, you rarely use it in C/C++ code either! On the other hand you can't just declare a class object and hope the compiler will sort it out — you have to manually call "new" every time, and ashes on your head if you forget it.

                There's too much hype around C#. That said, I do see its upsides — when you're new to programming, C# is much easier than C++, because the later have got too many corner cases that would leave you frustrated until you get better. But for experienced programmers C++ much better than C#.

                Comment


                • #18
                  Hi-Angel, I couldn't disagree with you more. There are a lot of cool things in there: Lambda's, LINQ, class extension, and the .Net framework. A while ago there was a slashdot article taking about how the new C++ standard was introducing a consistent way to access the file system. This is 2017! It wasn't that meany years ago they finally came out with a standard threading api. Aint nobody got time for that. C# is essentially a better implementation of Java that adheres closer to C++ syntax. The Visual Studio integration, and unit test frameworks that just plugin, make it very nice for professional/commercial development. Its hard going back to C++. When start talking about PaaS micro-services... C# really outshines C++. But most people on this forum aren't interested in a business case... they are interested in performance and gaming.

                  Comment


                  • #19
                    Originally posted by bpetty View Post
                    Hi-Angel, I couldn't disagree with you more. There are a lot of cool things in there: Lambda's, LINQ, class extension, and the .Net framework. A while ago there was a slashdot article taking about how the new C++ standard was introducing a consistent way to access the file system. This is 2017! It wasn't that meany years ago they finally came out with a standard threading api. Aint nobody got time for that. C# is essentially a better implementation of Java that adheres closer to C++ syntax. The Visual Studio integration, and unit test frameworks that just plugin, make it very nice for professional/commercial development. Its hard going back to C++. When start talking about PaaS micro-services... C# really outshines C++. But most people on this forum aren't interested in a business case... they are interested in performance and gaming.
                    C++ also have lambdas, and algorithm and functional headers. Class extensions I agree are neat, although I prefer rather to stick to functional style, and to pass arguments explicitly instead of having some invisible semi-global variables encapsulated in a class (which is hard to do in C# btw, because you can not declare a stand alone function).

                    The filesystem remark I don't understand — C++ standard provides for decades a way to open/write/read a file, unless you're meaning something else…?

                    Now, talking of integration — C# have got zero integration with any of widely used Vim or Emacs. 2 years ago when I was researching on the topic, the best I could find was Omnisharp for completion which didn't work that great; and nothing for debugging. Tell me if something changed nowadays…?

                    Comment


                    • #20
                      Originally posted by Hi-Angel View Post
                      C++ also have lambdas, and algorithm and functional headers. Class extensions I agree are neat, although I prefer rather to stick to functional style, and to pass arguments explicitly instead of having some invisible semi-global variables encapsulated in a class (which is hard to do in C# btw, because you can not declare a stand alone function).

                      The filesystem remark I don't understand — C++ standard provides for decades a way to open/write/read a file, unless you're meaning something else…?

                      Now, talking of integration — C# have got zero integration with any of widely used Vim or Emacs. 2 years ago when I was researching on the topic, the best I could find was Omnisharp for completion which didn't work that great; and nothing for debugging. Tell me if something changed nowadays…?
                      I think a lot of the reason people on this forum are so confused is that C# was created by MS for people who prefer to develop on Windows. This hasn't magically changed suddenly, just a couple things happened.

                      Mobile became a thing and MS has a pretty terrible presence with Windows Phone, so Xamarin is their best bet to try and slip in the back door.

                      Their new CEO is an Azure guy, and they are majorly investing in it and reaping the dividends. You can check out how much money Azure is making them since they added the ability to run a Linux box on there.

                      Core is a naked attempt to pursue the money on both of these avenues. The improvements during the 1.x run and the changes to 2.x support this directly. If your plan is to develop on a Windows machine and deploy to a Linux box (especially on Azure) you would be their target developer. Most people on this forum aren't in that target demographic. There are plenty of C# jobs, but they are largely for big corporate entities, which a lot of people on this forum aren't interested in.

                      Comment

                      Working...
                      X