Announcement

Collapse
No announcement yet.

Open-Source .NET On Linux Continues Maturing

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

  • #41
    Originally posted by opensource View Post
    If you care about the FOSS GNU/Linux world then don't use C#.
    why? standard is definitely more free than java for example. being that they published Roslyn under Apache license. that it self says they grant all patent rights covered and Roslyn it self takes care about previous ECMA unsure situation. as far as the rest of the stack you can always write application which cares about FOSS and use things like gtk#

    i wouldn't disagree if you stated MS libraries not published under OSS license. those should be avoided like plague. but, considering Oracle/Java fiasco, .Net sure looks promising

    Comment


    • #42
      Originally posted by justmy2cents View Post
      why? standard is definitely more free than java for example. being that they published Roslyn under Apache license. that it self says they grant all patent rights covered and Roslyn it self takes care about previous ECMA unsure situation. as far as the rest of the stack you can always write application which cares about FOSS and use things like gtk#

      i wouldn't disagree if you stated MS libraries not published under OSS license. those should be avoided like plague. but, considering Oracle/Java fiasco, .Net sure looks promising
      I'd definitely avoid Java too, not just C#

      Comment


      • #43
        Originally posted by nanonyme View Post
        I'd definitely avoid Java too, not just C#
        yet, you didn't answer why

        Comment


        • #44
          Originally posted by rdnetto View Post
          I disagree, and I say that as someone who is familiar with (Linux) kernel programming. The main thing you get from C is that you easily see the assembly the code maps to by just reading it, without needing to look at the definitions of the types and functions involved (except where macros are used). In C++, operator overloading means you can't rely on that, and you also need to worry about method overriding, as well as the cost of the vtable lookups.
          No one is forcing you to use those features. If you don't want to pay the price of a vtable look up, don't override (or expose) virtual methods. As for assembly, I have reversed a lot of C++... its basically the same. Extern C your signatures and you don't even have to worry about name mangling. You can write straight ASM in C++ if you want. You gain nothing. Now Managed vs Native... that is a big deal. That said, I found this:

          CoreCLR is the runtime for .NET Core. It includes the garbage collector, JIT compiler, primitive data types and low-level classes. - dotnet/coreclr


          It would be interesting to see an open source C# native compiler. I'd also like to see LLVM get to where it could run managed C# efficiently... something like VMKit. Of course it wouldn't be MSIL... but I don't care about that.

          Comment


          • #45
            Originally posted by rdnetto View Post
            My initial impression was that D supports many of the same features as Ceylon, but after reading through the introduction, it really does have some very nice syntax, particularly around its type system. D can achieve union types using a Haskell-style Either, but it's definitely not as clean as using an operator for it.

            That said, I do have some doubts about it being JVM-based. If you're going to use a compiled language, you might as well compile it to machine code and take advantage of that opportunity to optimize it, rather than attempting to the optimize it at runtime when you have significantly fewer resources and less time. Of course, the same is true of C#, but as I understand it, Java also has a lot of undefined behaviour (similar to C), and it's not clear if all JVM-based languages are subject to that.
            Ceylon compiles to JVM bytecode AND JavaScript VM. In future, it might add its own VM or it might go native allthough at this point they say it is not on the roadmap. It has fully reified generics, unlike Java(it was actually thought that you can't have full reification on JVM, but they did it), it will have something like LINQ in version 1.3 I think (1.2 is almost done and it doesn't have it, but it is on roadmap for future).

            I don't know what undefined behaviour you specifically mean, all languages have some.

            Comment


            • #46
              Originally posted by Luke_Wolf View Post
              Thanks for the detailed answer.
              No problem.

              There was a reason I only referred to language features, as opposed to OOP. OOP is a design pattern - much like functional programming, you can do it in any language which supports certain features; the only question is what overhead is implied by it.
              That the kernel already uses OOP in places is itself proof that you can do OOP in C. As a result, you don't gain much from writing it in C++, but you do get all kinds of problems associated with using C++ features.

              Comment


              • #47
                Originally posted by gnufreex View Post
                Ceylon compiles to JVM bytecode AND JavaScript VM. In future, it might add its own VM or it might go native allthough at this point they say it is not on the roadmap.
                Multiple implementations are always a good thing.

                It has fully reified generics, unlike Java(it was actually thought that you can't have full reification on JVM, but they did it), it will have something like LINQ in version 1.3 I think (1.2 is almost done and it doesn't have it, but it is on roadmap for future).
                It looks like the Iterable interface already supports map, reduce, etc.
                Since LINQ is just functional programming with SQL-like syntax and a data store abstraction, I assume all that remains is database drivers which expose the requisite interface.

                I don't know what undefined behaviour you specifically mean, all languages have some.
                When I wrote that, I was referring to things like the modulus of negative integers, but researching it now, it looks like that's actually well-defined in Java. I probably just mixed it up with C, so ignore that bit. :P

                Comment

                Working...
                X