Live data from Hacker News

Microsoft takes .NET open source and cross-platform

news.microsoft.com

851–860 of 937 posts

Re: Microsoft takes .NET open source and cross-platform

#851
post #799

Earlier quoted context omitted.

> But MS can't just throw out the bad half of features, which makes C# practically unimprovable. Scala has a similar problem. How? Scala has been throwing out bad features in pretty much every single release for the last 5 years. It's nothing breathtaking, it just gets done, people are happier and the language gets better.

Scala has hardly the user base of C# developers.

So how has Scala "a similar problem"?

Plus, for this question, the size of the user base doesn't matter: If a developer has to adapt his code to a new language version, he/she doesn't care whether ten or ten-thousand other people have to do the same.

Re: Microsoft takes .NET open source and cross-platform

#852

Earlier quoted context omitted.

C# as a language is better than Java, but not as good as Scala.

Why would you compare C# (although they keep adding functional programming concepts to it) to Scala, instead of comparing F# (which can commingle with C# wherever you need it) with Scala? I haven't looked into F# or Scala too much, but I bet F# comes out looking far better, because it was so deeply inspired by Haskell (but made practical).

> I bet F# comes out looking far better, because it was so deeply inspired by Haskell (but made practical)

Eh what? Scala is a lot closer to Haskell than F#/OCaml, and can express roughly the same things, while F# is a lot less expressive.

Re: Microsoft takes .NET open source and cross-platform

#853
post #839
post #727

Earlier quoted context omitted.

The biggest problem with this culture is that it means that when the One True Way is wrong , we suck it up and use it anyways. I mean, Entity Framework is great, WebAPI is slick, and MVC has its moments, but there are some real trainswrecks. I've used all three XML serializers in the .NET framework and they're all cringeworthy. ASP.Net WebForms could have been something spectacular with open development instead of th…

>I've used all three XML serializers in the .NET framework and they're all cringeworthy. XmlSerializer, DataContractSerializer, and what is the third? I agree and was about to point out the same thing though; XML serializers in .NET are a joke but because they exist in the core libraries there is not really a compelling open source alternative. That being said, it seems like the Asp.Net Web API is actually using Json…

XamlServices serializer. Technically it serializes Xaml, but afaik it can be prodded to produce vanilla XML.

Re: Microsoft takes .NET open source and cross-platform

#854
post #316

Earlier quoted context omitted.

Microsoft has been playing catch-up on developing that "nice things" like trying to build an open-source community. NuGet, open-sourcing the ASP.Net and EF stacks, etc. A long way to go, but they've recognized their big failing and are moving on it. MS makes some great technology and some terrible tech... but the problem is the terrible tech gets the same blessing as the great tech. An open-source community is the be…

I'm not so sure I believe that they're trying to do a "nice thing" out of the goodness of their hearts. They've held pretty tightly to .NET because in order to deploy anything developed in .NET you needed to buy Windows licenses. Recently that hasn't played out so well. Software developers look to minimize costs and overhead that doesn't contribute to their mission (e.g. licenses and license compliance). There's just…

I agree with you on the Azure vs "nice things". I also think their long-term strategy doesn't rest with the .NET framework.

However, I think they know that if they completely abandoned the .NET framework, there would be a community of very upset devs that have spent their entire careers investing in Microsoft. Instead, they're doing a slow withdrawal and "giving it to the community".

I think that in the long term, they're going to be focusing more on Sharepoint, SQL Server, and Azure; less on .NET. That's just IMHO.

Re: Microsoft takes .NET open source and cross-platform

#855
post #440

Earlier quoted context omitted.

I'm a fan of C#, although I prefer F#; however I have to agree, I think the choice of for generic definitions was a real mistake, it can be so hard to parse. The side effect of this is that first-class functions (Func ) are chronically underused by C# programmers. Annoyingly F# brought them along for the ride too, although you rarely have to explicitly write them.

What would you have used for generic arguments? I think they work fine, and make use of Func often.

I haven't tried out many alternatives, but there's something about nested that seems to throw me off each time.

I wrote a library of monads for C# [1], and implementing the SelectMany method is a good example of how messy it can be:

    public static RWS SelectMany( this RWS self, Func> bind, Func project)
    {
    }
I quite like F#'s alternative syntax for single type generics:

    Option
Can be written:

    int option
Obviously it's a personal thing, so I doubt I would be able to suggest anything that would change your mind; I just had a quick go at an alternative, and I quite like this:

    public static SelectMany R W S T U V ( this self : RWS R W S T, bind : Func T (RWS R W S U), project : Func T U V) : RWS R W S V
    {
    }

    class Thing int
    {
    }

    class Thing T : BaseThing T
    {
    }
It's moot anyway really, it is what it is. I've just found it cognitively challenging over the years.

[1] https://github.com/louthy/csharp-monad

Re: Microsoft takes .NET open source and cross-platform

#856
post #799

Earlier quoted context omitted.

Scala has hardly the user base of C# developers.

So how has Scala "a similar problem"? Plus, for this question, the size of the user base doesn't matter: If a developer has to adapt his code to a new language version, he/she doesn't care whether ten or ten-thousand other people have to do the same.

It matters for the language designers, how much people they want to make angry for breaking their code.

Scala's smaller user base means there are a lot of less people to get mad.

Re: Microsoft takes .NET open source and cross-platform

#857
post #61

I'm a hardcore *nix guy but boy do I love me some C#. Up until now it's been the best language I have worked with but the worst platform due to it's lack of 'nice things' that we just expect from languages/ecosystems these days. Where 'nice things' is defined as being open-source, having open-source ecosystem of developer tools etc. This isn't so much the beginning (as good stuff has been happening for a couple of ye…

I actually have this conversation frequently with my developers (most of them are .NET), so I'm really happy to hear someone else say this as well. I've done about a an even split in my career with C# and Java and feel as competent as the next guy bouncing between the two languages and delivering projects for clients, but I like writing C# the most, by far. The language is more modern, things like async/await, Linq,…

I've been using c# since beta and I love it but agree that IIS is a cluster fuck, and working with msbuild is no picnic, and supporting windows services is macabre at best. There are efforts to ease the pain with projects such as a topshelf/katana (owin) http://msdn.microsoft.com/en-us/magazine/dn745865.aspx

so MS is aware that this process should be more light weight for many situations, and appears to head in the direction of node.js type hosting for times when you don't need all the IIS features.

Re: Microsoft takes .NET open source and cross-platform

#859
post #764

Earlier quoted context omitted.

Oh aren't you so smug. I was at the 2000 PDC when they announced C#. We are now just shy of 2015. My 15 is more accurate than your 12.

Announcing occurs at vaporware stage. Realeasing is what makes it real. So do your math again.

Do your math again. We were given Tech Preview CDs at the time that contained a preview versions of .NET. So yes, we were able to write and experiment with C# and VB.Net code back then.

I was actively looking for a cross-platform replacement for Perl at the time and while C#/.NET was exciting it was also a huge disappointment because it was yet another "runs on Windows only" Microsoft technology.

I don't see how you can tell me that I am wrong when I was sitting there with the CDs in MY hand 14.5 years ago actively disappointed because .NET was NOT cross platform like Perl and Java.

I'm done arguing this. This is stupid.

Re: Microsoft takes .NET open source and cross-platform

#860
post #495

Earlier quoted context omitted.

Pointing to CBF is a complete straw-man. You're rarely actually going to _see_ that signature (the docs actually simplify it for you), and in practice, it's completely meaningless to 99.9% of Scala you'll ever see. You might as well consider it pixie-dust. + for one, ++ to add a collection, the others are generally going to apply to Cons-like. It takes all of a couple minutes to let these sink in. Use a mutable.Mutab…

It isn't FUD: It's just the kind of thing that turns newbies out of Scala. Your typical Java developer is used to just look inside the code of whatever library they are using, and find a very straightforward implementation. Scala collections avoid a lot of boilerplate with canBuildFrom, SeqLike and suck, but simple and straightforward they are not. It takes quite a while before it stops reading like Japanese. And IMO…

Maybe this is a Java developer thing.

Everybody decried Ruby's 107 methods on Array. Then Fowler came out with "fluent-interfaces", and how often do you see someone make the claims that Ruby's Array is indicative of a general badness because it has a lot of methods and you can't memorize them all in an hour as a newbie?

scala.collection is the same deal.

:\? Sure it's not a good idea. I wouldn't debate that. Who uses that? foldLeft/foldRight.

And what's the deal with trying to memorize the entire interface anyways? 8 or so years with Ruby, writing libraries with over 4 million downloads (https://rubygems.org/profiles/ssmoot), and there are definitely methods in Ruby's Array I'm unfamiliar with.

So what?

While :: and ::: look a little foreign, I don't think asking people to learn them if they want to work with Lists in a Functional manner is anymore difficult than learning what the "spaceship operator" does in Ruby. And it's optional. You don't have to use them. But they're usage will probably be the smaller part in the grand scheme of things. Pattern Matching and accomplishing functional recursion with immutable data is the bigger picture. Outside of that context (and the REPL I guess, for convenience) you're just not going to see either of those operators very often (IME).

You don't use a "splat" (aka 'punched in the face'? That's a new one to me) operator very often. It's actually one of the few semi-pattern-matchy areas of Ruby so it comes pretty naturally for me.

You don't become a pro overnight. You can trust I'd be teaching infrequently used idioms in Ruby to a developer who'd only been using it for six months. Been there, done that. ;-)

I guess where I'm coming from is using CBF to claim Scala is a confusing, indecipherable language. Everyone's had that argument. I don't know that anyone wants to stand up and claim it's the best. But it works. Actually using it is a non-issue since you don't actually explicitly use it. And look at the docs. They're actually pretty great overall.

It just bothers me I suppose that someone interested in exploring Scala would be dissuaded by something that's only ever been a problem for 1% of 1% of Scala developers.

If you're just looking to swap in Play to replace Rails, odds are you'll never run into any of these CBF "concerns". At all. That's the very definition of "FUD" IMO.

For every CBF in Scala there's a Calendar in Java. Languages aren't perfect. CBF is probably a wart. But it's a hidden one. If you let it scare you off from Scala that's sad, because it really has about as much to do with day to day Scala development as array.c (https://github.com/ruby/ruby/blob/trunk/array.c) has to do with Ruby development.

Post reply on HN