Microsoft takes .NET open source and cross-platform
561–570 of 937 posts
Re: Microsoft takes .NET open source and cross-platform
#562Earlier quoted context omitted.
- Stacker - Netscape - SCO And many others besides. Companies have reputations just like people do (that's why we call them 'incorporated') and just like you can lose your trust in a person you can lose your trust in a corporation. This is not about Microsoft just doing 'stupid stuff sometimes' it is about institutionalized criminal behavior sanctioned at the highest level of one of the largest software companies in…
>This is not about Microsoft just doing 'stupid stuff sometimes' it is about institutionalized criminal behavior sanctioned at the highest level of one of the largest software companies in the world. Welcome to American corporate culture :) You have to keep in mind that Microsoft had a monopoly for a very long time. While their actions may, in your world view, be "criminal", as a corporation Microsoft was acting comp…
I wish for a world where this utterly dishonest lame duck trope stops appearing as frequently as it does.
Re: Microsoft takes .NET open source and cross-platform
#563Earlier quoted context omitted.
- Stacker - Netscape - SCO And many others besides. Companies have reputations just like people do (that's why we call them 'incorporated') and just like you can lose your trust in a person you can lose your trust in a corporation. This is not about Microsoft just doing 'stupid stuff sometimes' it is about institutionalized criminal behavior sanctioned at the highest level of one of the largest software companies in…
Much like countries, it doesn't necessarily make sense to treat companies like people when it comes to reputation. You shouldn't hold a grudge against a country forever, many of the people inside of it may have disagreed with its actions and more importantly the leadership could be completely different now. Similalrly, if most of the employees at Microsoft today are different than in the 90s and the leadership is com…
Re: Microsoft takes .NET open source and cross-platform
#564Now, with a patent promise amd a MIT license, any chance that android could build on .Net going forward? That would take more than a few non public meetings betweenn G and MS I guess but possibly better than having to tiptoe around Oracle in the long run?
Really other than the C# language itself, there's not much to recommend the .NET core stuff over the ART runtime (which is in the process of replacing Dalvik). .NET has much broader library support, but that has to be balanced against the need to ship a lean(ish) runtime (c.f. the installed size of a Windows Phone image vs. Android!).
And if Google really wanted to play games with source language (which they don't seem to), there is no shortage of very decent JVM-targetting environments either.
Re: Microsoft takes .NET open source and cross-platform
#565Earlier quoted context omitted.
>At the end of the day, this is a huge inner-framework anti-pattern over the same procedural syscalls that every other language handles procedurally. No, you have a tiny, very simple type that allows for type safe IO. It also happens to make haskell a more powerful imperative language than most imperative languages, as IO actions are first class and can be passed around and manipulated like anything else. >So, basica…
To be fair, understanding I/O in Haskell takes quite a bit of mental gymnastics. :) The I/O monad modifies the Universe that contains the set of all functions that comprise your program (if I even understand the concept correctly).
The right half is usually empty, except when you use the `>>=` operator (or flatMap) on an existing action, e.g.
let c = a >>= f
That operator chains the function `f` can take the value produced by the first IO action and produce another IO action. After we apply that operator, the result `c` is a cons cell where the left part is the original action `a` and the right part is the function f which takes the value produced by a and produces the next action. Its sort of like a cons cell in regular lists, except the next value is provided by a function. A lazy cons cell, perhaps :)
The final result is a lazy chain of I/O cons cells (called "main", of course :P). Its passed to the Haskell runtime, which executes that chain as a recipe, alternating between doing I/O actions and evaluating the function to decide what to do next.
So what does this buy us? Mostly just referential transparency. What does referential transparency buy us? Easy refactoring. We can replace any expression with its value, even stuff like `putStrLn "test"`. We can say `let writeTest = putStrLn "test"` at the top of the file then write `do writeTest; writeTest` in main.
Another neat thing is that do syntax isn't limited to just IO, but works with anything that implements `flatMap` (and `unit`, which I forgot to mention). That means we can build our own imperative DSLs that produce IO-like monads which are then interpreted by our own interpreter, and the users of those DSLs can use the same do syntax. Which is pretty awesome. Here is a simple example: https://gist.github.com/tonymorris/b5dba9d7d877051d0164 and a much more complex one http://augustss.blogspot.com/2009/02/more-basic-not-that-any... :)
Re: Microsoft takes .NET open source and cross-platform
#566It's funny how Nadella has moved the needle more for developers in 9 months than Ballmer did in the last decade or so, and all that without running around like a madman too. Pretty good. I'll never switch back to MS for what they've done in the past but it is nice to see them try hard to become a nicer player in the software eco-system. Google and Apple need some other party to keep them sharp, it might as well be MS…
Seeing comments like this “I'll never switch back to MS for what they've done in the past” always reminds me of this post from Hanselman http://www.hanselman.com/blog/MicrosoftKilledMyPappy.aspx
That is not true. Microsoft was convicted because they told 3rd party computer manufacturers that they could not purchase Windows if they intended to install any additional browsers. Not only is that illegal, but it demonstrably harmed innovation in web browsers for years.
I don't believe Microsoft killed my pappy, and I use MS software every single day. But I also don't believe in minimizing or misrepresenting the facts of the past.
Re: Microsoft takes .NET open source and cross-platform
#567Earlier quoted context omitted.
> They are just a technology company and are trying to sell the product. If you reword things enough, nothing makes sense. For example: "I don't see why Stalin receives such hatred. He was just a politician, and tried to stay in power so he could keep following his vision."
Where are the millions of people killed by Microsoft?
But since you brought it up: who knows? How can anyone measure how many people were put out of business and killed themselves because of the ruthless tactics of huge corporations? How many people have wasted how many hours paying for their inferior products, or trying to make them work, and to how many human lifespans does that add up? It's impossible to claim any company "killed X people" that way, but to think the net effect is somehow clean and unbloody is also naive. To put it crassly, some people didn't take to the boardrooms because that is more humane, but because it's more effective, because robbing and killing people is inefficient. Doesn't it make it as bad as Stalin, but since Stalin isn't the baseline for how bad something has to be to be unacceptable, that is irrelevant.
Also, imagine a world where Linus Torvalds had done something else, and a bunch of other factors had worked out slightly differently; as far as open source goes, Microsoft DID try to kill it, they spread as much FUD as they could, they handed out their products to schools and universities for fear of them breaking free, and only now when they still lost they are starting to play nice. So as far as software and software freedom is concerned, Microsoft did kill plenty.
And now imagine repelling the Conquistadores; not because they reconsidered, but because even giving it their best shot, they could not kill enough to totally submit everyone like they originally planned, and had to regroup or be wiped out themselves. And now I am supposed to be grateful and let bygones be bygones? No. Others can do that, but I can't respect them for it, at best despite of it. And you know what, I don't like Apple either. So I'm the position of loving computers and programming, but none of the big players, anymore. And I don't have to chose a side, I can find them all lacking. Because they are not to be compared to each other, but to the behaviour of intelligent humans with dignity, and the vision of an actual information age that empowers and liberates people, instead of just seeking to capture them, so they can be fed any old uninspired BS that is made shiny and big with all the capital leeched off the masses. This doesn't change in a few years or decades, or without fines or even prison sentences, for that matter. I'm not buying it for one second.
Re: Microsoft takes .NET open source and cross-platform
#568Earlier quoted context omitted.
> Do you know anything about cache hierarchy and memory models on modern CPUs? Yes I do. Worked 3 years on a soft real-time system with massive load, profiled the shit out of everything. There's an interesting discussion we could have about when immutable data-structures work best, when they've got problems and when it doesn't matter, especially given the extra benefits in dealing with accidental complexity. This isn…
Well, that's good, sorry for asking. I've had a lot of people point at the big-0 notation of that linked-list append and tell me that it's faster than an ArrayList append on average. Usually this is right after telling me that "I just don't get it" with immutable collections. So I hope you can see why I'd react that way. As I'm sure you know, when it comes to real-world situations, reducing inter-thread communication…
True, but you know how it is in practice :-)
For example I found that using persistent data-structures work best when you've got single producer, multiple consumers scenarios - so you mutate some state and you want to signal it over asynchronous boundaries to multiple consumers. With an immutable data-structure you just signal it, worry free and then you can keep on changing that state, completely non-blocking / wait-free and with good algorithmic complexity.
Actually non-blocking logic becomes really easy, as you can always shove an immutable value into an atomic reference (note - I'm not saying "wait free", which still takes a lot of work :))
So really, persistent data-structures are great in a multi-threading context, as long as you don't have multiple producers pounding on the same reference holding such an immutable value - if you do that, things can get bad, when compared to specialized concurrent mutable data-structures - because a good concurrent data-structure is able to distribute the contention in multiple buckets instead of just one. But then again, having multiple producers pounding on the same resource is just asking for trouble and has to be avoided, because Amdahl's law.
Also, as you've hinted at, the problem with a normal linked List is the level of indirection. And in general, persistent data-structures imply the usage of trees, which also implies indirections. More advanced persistent data-structures are much better than the linked list is and this is an active area of research, but on the whole there's still much room for improvement.
On the other hand, in my opinion when speaking about performance, the first problem one has is to actually use the available CPUs (e.g. getting CPU usage over, say 70-80%). Which usually is hard to achieve if you have a combination of CPU-bound and I/O-bound tasks and your I/O stuff is not asynchronous. Only after that you can then move on to optimizing the memory access patterns for cache locality and for minimizing the stop-the-world freezes.
Speaking about GC, that's another topic - persistent data-structures have a tendency to generate junk that is neither short term or long term and that invalidates the assumptions that current GCs are making. The JVM at least has really good GCs, but without paying for a pauseless one (like that one from Azul Systems), you can still end up into trouble if you don't pay attention - but then you fire up YourKit's Profiler, find the source for those STWs, optimize and it works out well.
All in all I encourage everybody to find a good library that implements persistent data-structures and integrate them in their toolbox.
Re: Microsoft takes .NET open source and cross-platform
#569Earlier quoted context omitted.
- Stacker - Netscape - SCO And many others besides. Companies have reputations just like people do (that's why we call them 'incorporated') and just like you can lose your trust in a person you can lose your trust in a corporation. This is not about Microsoft just doing 'stupid stuff sometimes' it is about institutionalized criminal behavior sanctioned at the highest level of one of the largest software companies in…
> - Netscape If you are referring to Microsoft's bundling of IE, that did not kill Netscape. It just buried the rotting corpse. Before IE was bundled with Windows, it was sold in stores as a boxed product, right next to Netscape's boxed product. Going head to head in retail software stores (Egghead, CompUSA), IE massively outsold Netscape. This is what killed Netscape. The reason IE outsold Netscape at retail was sim…
Re: Microsoft takes .NET open source and cross-platform
#570Earlier quoted context omitted.
So, you'd rewrite in JavaScript versus dealing with Mono?
Not sure I follow you here, rewrite what?
Either way, I meant that even before this announcement, Mono was a choice (I use it at fairly high-scale server apps) in many cases. It wasn't C# and Windows or Java for anything else.