Live data from Hacker News

A History of .NET Runtimes

mattwarren.org

41–50 of 102 posts

Re: A History of .NET Runtimes

#41
post #7

I think the history of the internal politics at Microsoft in regards to .NET and also the external industry trends is fascinating. The common thinking is that C# & .NET was a ripoff of Sun Java because of the "write once run anywhere" threat. That's sort of true but missing some nuance. I'm not a MS insider but here's my understanding of what happened. We have to separate the C# language from the CLR runtime. In the…

It does seem like all these .NET projects are reactions to rival technologies. C# is a Java clone, C# generics are an (arguably improved) Java generics clone, .NET Micro is J2ME, Silverlight is Flash, etc. What are some examples of where C# / .NET paved the way and others followed? Maybe popularizing async/await? I’m definitely not claiming MS as a whole is always a follower. It seems like Direct3D led the way for th…

How come C# generics are a copy of Java when they were invented first and the only reason they didn't make it to 1.0 was not to delay the release schedule?

Java annotations are based on .NET atributes, and initially had a clusmy implementation requiring an annotations processing tool until they finally got integrated into javac.

LINQ paved the way to more FP acceptance among enterprise developers. Check "confessions of a language salesman" from Erik Meyer.

Also .NET always had AOT/JIT from the very beginning, whereas AOT was tabu at Sun and only commercial JDKs always had it as option.

Re: A History of .NET Runtimes

#42
post #7

I think the history of the internal politics at Microsoft in regards to .NET and also the external industry trends is fascinating. The common thinking is that C# & .NET was a ripoff of Sun Java because of the "write once run anywhere" threat. That's sort of true but missing some nuance. I'm not a MS insider but here's my understanding of what happened. We have to separate the C# language from the CLR runtime. In the…

It does seem like all these .NET projects are reactions to rival technologies. C# is a Java clone, C# generics are an (arguably improved) Java generics clone, .NET Micro is J2ME, Silverlight is Flash, etc. What are some examples of where C# / .NET paved the way and others followed? Maybe popularizing async/await? I’m definitely not claiming MS as a whole is always a follower. It seems like Direct3D led the way for th…

> C# generics are an (arguably improved) Java generics clone

That one at least is incorrect - C# had generic types long before Java

Re: A History of .NET Runtimes

#43
post #29

Earlier quoted context omitted.

Yeah, I think this was a far bigger contributor to the failure of .NET to achieve dominance. Silverlight was only ever a slightly weird sideline intended to compete with Flash, which became DOA the moment the iPhone launched and Jobs killed Flash overnight by saying the iPhone would never support it. Microsoft's biggest internal teams turning against .NET during Longhorn created a schism that the company has never re…

>Microsoft's biggest internal teams turning against .NET during Longhorn created a schism that the company has never resolved. From the fragments of leaks I read about the internal strife, the .NET code had huge performance problems and the C++ team was frustrated that "DevDiv" couldn't solve them. ("DevDiv" is Developer Division that owned NET Framework.) Therefore, they ripped a lot of "managed code" out and redid…

The thing is, if they actually collaborated with each other, the outcome would surely look quite different.

Re: A History of .NET Runtimes

#44
post #18

Earlier quoted context omitted.

Yep, they were forced to sort out the mess introduced with WinRT, UAP, UWP, by making UWP .NET Standard 2.0 compliant, and now making Forms, WPF and EF 6 runnable on top of .NET Core 3.0. However given the last Office related announcements, it appears that the reorganization did little to sort out those political issues.

To further tangent: I don't think the last Office related announcement says anything about UWP that people think it does. From my understanding, the Office apps that were killed were supposedly forked from the web apps and actually ran as UWP HTML/JS. Meanwhile, Office has also announced plans to move forward with more UWP XAML Islands to integrate more Fluent Design in the UX starting soon after the Windows October…

Lets see, I watched the Office sessions at BUILD, so that was my understanding until the announcement came last week.

Re: A History of .NET Runtimes

#45
post #44

Earlier quoted context omitted.

To further tangent: I don't think the last Office related announcement says anything about UWP that people think it does. From my understanding, the Office apps that were killed were supposedly forked from the web apps and actually ran as UWP HTML/JS. Meanwhile, Office has also announced plans to move forward with more UWP XAML Islands to integrate more Fluent Design in the UX starting soon after the Windows October…

Lets see, I watched the Office sessions at BUILD, so that was my understanding until the announcement came last week.

Yeah, BUILD's where most of where my impressions come from, especially from how pleasantly happy that the Fluent Design Team was with finally merging in some of Office's design resources and working to align Office towards dogfooding Fluent controls directly.

The implication I take from the UWP "Office Mobile" app shutdowns is that Office is now confident that if UWP returns to mobile it will do so with "real" Office, which was my takeaway from BUILD that that was the strategy they were pursuing.

I think it's another case of Microsoft not being able to properly spin "nuance" in a press release, because they don't want to comment on future plans or publicly commit to things still in flux/prototyping/development.

Re: A History of .NET Runtimes

#46
Back in 2008/9 I was a co-founder at a company (Red Five Labs) that created a .NET Compact Framework runtime for Symbian OS (featured on most Nokia & Samsung smartphones at the time). We got to a .NET CF 2.0 level of compatibility.

It was a venture-backed startup out of Johannesburg, South Africa.

Although we wrote the runtime ourselves, we made extensive use of some of the mono libraries until we were able to rewrite most of these optimized for Symbian.

[1] https://web.archive.org/web/20100112091803/http://www.redfiv...

Re: A History of .NET Runtimes

#47
post #34

Few more missed include (Device CLR's were in C, Desktop/Server in C++): (1) CLR for Sony/Ericsson phone OS and (2) Variant running on linux (in 2001/2002). I worked on the Compact Framework team back in the day so there's a few more things to point out related to the internal politics of Microsoft at the time. The devices strategy was a mess even back then due to Alchin/Valentine/Ballmers love of Windows desktop 'ev…

Was the framework you mentioned in (1) a Microsoft project, or something else?

As a matter of interest, what did you do on the CF team?

Re: A History of .NET Runtimes

#48

Earlier quoted context omitted.

Yeah, that's my understanding as well. But what I wonder is what would have happened if someone at the top had brought the C++ and .NET teams in and made some Jobsian declaration like "this isn't negotiable, the company is switching to .NET. All of your jobs depend on finding a way to make it work." Were those performance problems really insoluble, if all the engineering ability of the company were brought to bear on…

Right, it certainly sounded from the outside that a lot of the Longhorn performance issues were various sorts of sandbagging by one side or the other. There's an interesting leadership question there too if some of the worst sandbagging was intentional or just ADHD-style distractions due to a lack of a singular, focused vision for the product. (The biggest example being letting so much of the WinFS team get sucked in…

At RustConf 2017 keynote presented by Joe Duffy regarding Midori at a certain moment, he mentions that even with Midori running in front of them, WinDev guys were still not open to the idea of such kind of system being possible.

"Safe Systems Software and the Future of Computing"

https://www.youtube.com/watch?v=CuD7SCqHB7k

Sorry a bit lazy to track down the exact moment.

Re: A History of .NET Runtimes

#49
post #24
post #7

I think the history of the internal politics at Microsoft in regards to .NET and also the external industry trends is fascinating. The common thinking is that C# & .NET was a ripoff of Sun Java because of the "write once run anywhere" threat. That's sort of true but missing some nuance. I'm not a MS insider but here's my understanding of what happened. We have to separate the C# language from the CLR runtime. In the…

>.NET is still very popular but it definitely did not fulfill the more ambitious dreams that Bill Gates had for it. There is still time. It just recently got open-sourced, got a compiler written in itself and got a run-time unbundled form all the legacy crap. Those things held C#/.NET back. I feel this is a good time to adopt it for people who want to have reasonable performance, static typing and a mix of OOP/functi…

> 1. It is possible to write reasonably "functional" applications in .NET. The only problem I had with that is lack of built-in copy-on-write data types and prevalent nullity.

I've tried to minmise that pain over the past few years with my 'functional language extensions' for C# [1].

It's a library with most of the common monadic types (as structs so there's no null issues); Immutable collection types that don't have an unweildy naming scheme like like the System.Immutable.Collections library - which are all structs, so no nulls; A type called 'Record' which when you derive a type from it gives your type value-semantics (equality, ordering, GetHashCode, ToString, serialisation/deserialisation) by default; and tons more.

You still have to do stuff like build your own With method for immutable types. I have written of how these can be achieved _realtively_ easily [2]

C# has made great strides over the past 10 years to make it easier for those of us that want to work functionally to do it. It still has some way to go (discriminated unions, higher-kinds, record types, etc.) but it's already possible to write code functionally - you just need to do some boilerplate every now and then.

[1] https://github.com/louthy/language-ext

[2] https://stackoverflow.com/questions/38575646/general-purpose...

Re: A History of .NET Runtimes

#50
post #28
post #25

Earlier quoted context omitted.

> Bill Gates programmed in BASIC in the 1970s and not in low-level C/C++/assembly He didn't program in BASIC, he programmed a BASIC interpreter in 8080 assembly.

Thank you for the clarification. Yes that makes sense. I'm probably mixing it up with an interview where one of MS ex-employees (Joel Spolsky?) mentioned Bill's affinity for BASIC which is why early MS Word has WordBASIC (not Lisp or Pascal) as its first macro language. It later became VBA Visual Basic for Applications. This philosophy and influence continued all the way into the CLR languages VB.NET and C#. Bill was…

Excel BASIC, I believe.

https://www.joelonsoftware.com/2006/06/16/my-first-billg-rev...

Post reply on HN