3 ms·
My own take on C#/.NET, and I bet a lot of others had this take as well, came down to 2 elements: 1. when it appeared, it looked a lot like somebody within Mic
by mkramlich 17y ago
My own take on C#/.NET, and I bet a lot of others had this take as well, came down to 2 elements:
1. when it appeared, it looked a lot like somebody within Microsoft said to some other guys, "Hey, go make us a Java. Like Java, but our baby." And they basically approached it by cloning it and then making several superficial tweaks and changes -- JUST enough, especially at a superficial level, so they could say with a straight face to people who were none to observant that this indeed was the product of internal R&D -- true innovation -- rather than being what it actually was. In short, it looked awfully like a student who turned in a paper which was a pretty blatant copy of another student's paper, except with some superficial textual changes made to make it look different and original. I know that both languages have drifted and evolved since C#'s debut, but I remember looking at programs written in the current dialects of Java and C# at C#'s debut and it was hilarious just how much it looked like the C# version was just a functional/semantic clone of Java, only with arbitrary syntax differences (keywords, case, etc.) Life is complex and they've both evolved since then, but there's no doubt in mind that C# started life with a "clone Java, change it's name/keywords" design strategy.
2. Microsoft's whole business model appears, to me anyway, and to other folks, as being basically about just copying what other folks are doing, putting their logo on it, offering it up for sale, and then once people are using it, to design features and systems in such a way as to create lock-in. Lure them in, then close the door. Or least, slowly start closing that door, so slowly and with enough distraction that the unwitting victim is not smart enough or quick enough to see it.
- torial 17y agoRegarding your #1 element: When I was coding w/ .Net PDC (e.g. pre- 1st beta) I would use the java reference docs to get some idea as to what to do because MS didn't have any real documentation for .Net at that time. Regarding your #2 element: A perfect example of this is their attempt to take Adobe on with Silverlight (e.g. vs Flash), and also with XPS (e.g. vs PDF/Acrobat). I'd be curious as to what you (or anyone else) see WPF as copying from as an example for that does not readily come to mind.
- mkramlich 17y ago1. funny! but doesn't surprise me :) 2. I like how even the name Silverlight pretty much tells you it's their Flash knock-off: silver + light = bright light or lightning = flash. It's like they're thumbing their nose and saying "neener-neener!" to Adobe. Quick Wikipedia read on WPF made me think of similarities to Flash and Apple stacks. But there can be non-malevolent explanations for this, and I don't know a lot about WPF (since I now try to keep my brain non-Microsoft, for efficiency's sake), so take with grain of salt.
- hga 17y agoObviously, C# and a good part of the the .NET libraries are Microsoft's attempt to do a better Java, with Anders Hejlsberg leading the effort AND trying to fix some Java mistakes while he and his team were at it. As far as I'm concerned that's just fine, competition is a good thing. Also note that this happened shortly before progress in the Java language became glacial and sometimes dysfunctional. (Also note that Java was hardly original when it came out; being able to do that in a useful way has become exceedingly difficult now that we're in the 5th decade of high level language design. If you disagree, please point out say half a dozen things in Java that had never been seen before in the lab or industry.) However note my comment "most especially the CLR [is a great idea]". This is where Microsoft can in theory win on the technology side of things. E.g. F#, their dialect of OCaml. Indeed it's "just copying what other folks are doing", but it is the first functional language with major vendor support, right? You can do functional programming on the JVM with e.g. Scala and Clojure, but the JVM runtime is not exactly going to go out of its way to help you (that's actually scheduled for the upcoming new version of the JVM). My bottom line is that focusing on C# rather misses the point when Microsoft from the very beginning made such an effort at a multi-language system. Your points about vendor lock-in are of course well taken, although I'd say Microsoft's abandonment of backwards compatibility with VB6 -> VB.NET is a lot worse. There's a difference between the old "IBM will take care of you" and Microsoft's untrustworthiness if you play the game by their rules.