8 ms·
I'm stealing one of the YouTube comments, because I actually thought it was pretty interesting. I started watching this thinking the interviewer was an idiot, b
by venantius 12y ago
I'm stealing one of the YouTube comments, because I actually thought it was pretty interesting. I started watching this thinking the interviewer was an idiot, but I think the issue is a little more complicated than it seems at first. Comment from YouTube user "tapo":
So in the 90's Sun Microsystems created Java, which has two components, the programming language and the runtime. The runtime (the Java you install) lets you run things written in Java on any device regardless of OS or CPU architecture. Write once, run anywhere. This was a huge threat to Microsoft. Why write Windows programs when you could write Java programs and they'd run on any computer?
So Microsoft wrote their own Java runtime called the MS JVM, and made it part of Windows, it extended Java to do Windows-only things, meaning there were now "Java" apps that could only run on Windows, destroying the whole point of Java.
This became part of the antitrust trial because it ruined Sun's product. In a separate case, Sun sued Microsoft and won.
- V-2 12y agoMS created Visual J++, and Visual J# afterwards. Ultimately C# was born out of these efforts and it's a much better language than Java nowadays (with some exceptions such as better enums in Java). The tooling is superb as well - Visual Studio is a kickass IDE. Although adding ReSharper to the party doesn't hurt.
- xxs 12y agoC# and .net had Delphi's mastermind, nothing to do with Visual J.
- V-2 12y agoYou are mistaken. After joining Microsoft, Hejlsberg led the company’s efforts in Visual J++ [...] Hejlsberg helped make Visual J++ the most popular and most productive Java IDE in the late '90s. http://www.microsoft.com/about/technicalrecognition/Anders-Hejlsberg.aspx http://www.microsoft.com/about/technicalrecognition/Anders-H...
- xxs 12y agoFair point, I always thought he joined in 1998.
- MichaelGG 12y agoOne if the major things .NET had in it's favor was MSR to actually figure out generics. MS Corp viewed it as an academic and experimental feature and would never have gotten it implemented on their own. From what I've heard, Delphi's mastermind was not in favor of them, but I don't have a quote for that. Furthermore, looking at C#'s first couple releases, it seems they were aiming for a slightly improved Java. Only after F# did C# reluctantly start to pick up functional features. To MS's credit, .NET did aim to be a true multi language runtime, back to Project 7. They got feedback from many people to make sure many languages could be accommodated (looks like they've since given up on this goal). Ironically, the JVM, with it's strictly less capable VM, boasts far more languages targeting it's runtime. Probably because Microsoft worked against releasing it for other platforms and is still a bit standoffish.
- tanzam75 12y ago> One if the major things .NET had in it's favor was MSR to actually figure out generics. MS Corp viewed it as an academic and experimental feature and would never have gotten it implemented on their own. From what I've heard, Delphi's mastermind was not in favor of them, but I don't have a quote for that. According to Don Syme's blog posts, certain "product team members" said that "generics is for academics only." However, he did not name Anders Hejlsberg as being one of them. Here's the blog post: http://blogs.msdn.com/b/dsyme/archive/2011/03/15/10141602.aspx http://blogs.msdn.com/b/dsyme/archive/2011/03/15/10141602.as... Also see: http://blogs.msdn.com/b/dsyme/archive/2012/07/05/more-c-net-generics-history-the-msr-white-paper-from-mid-1999.aspx http://blogs.msdn.com/b/dsyme/archive/2012/07/05/more-c-net-... Also see the story from the other side: http://blogs.msdn.com/b/scottwil/archive/2007/10/24/working-with-msr-cambridge.aspx http://blogs.msdn.com/b/scottwil/archive/2007/10/24/working-... I wonder if MSR's implementation of generics in .NET 2.0 was why F# got bundled into Visual Studio as a first-class language. IronPython, IronRuby, etc. never got that type of internal buy-in and got spun-off instead.
- MichaelGG 12y agoRight, I have no actual citation on Anders or other C# team members regarding their position on generics. Just personal conversion. Perhaps it's way off base. Yet, the lack of lambdas, inference, and the reluctant implementation in C# 3 (only the minimum for LINQ) suggests that was not the style they were looking for. Same for the handling of async in C# - instead of a general mechanism, it's another hardcoded intrinsic. More evidence: TypeScript also looks lackluster, despite being a big step up from JS. I've no real clue why F# was productized, but I'd like to think it was because MS realized it has to stay competitive. F# is probably the most advanced language with that level of tooling, support, libraries, etc. I know F# is the only reason I continue to target the CLR. At the same time, MS's F# support certainly feels like it's just lip service, even while their flagship language lacks basics like a REPL. (I know, Roslyn will cure all.) I've yet to see any marketing suggesting F# would be a better choice for many projects; only esoteric sciencey and maths usages see suggested. What'd really be forward would be for MS to support Rust or a project like that. (I believe they hired the guy behind BitC but I don't think it was for language design.)
- possibilistic 12y agoI've never done any Windows development, so I'm curious as to why C# might be considered superior to Java (especially Java 8). Is it simply better language features ( typing, generics, etc.?), or does the argument also include .NET and the CLR? Will Microsoft open up development on unix systems (not mono)? I've interpreted signals from the CEO as an indication this could happen. What about visual studio?
- MichaelGG 12y agoThe CLR is more flexible than the JVM, but if you're only using C# you'll usually only notice when doing C interop. With the major exception of structs and generics, which may provide large speed improvements. C# the language is superior in essentially every way to Java. Far less code = less bugs. F# takes it up another notch, while allowing you to keep interop. Microsoft has had plenty of opportunity to officially support Mono, but they have not. Their patent promise only extends to Mono as long as you don't run into other issues with Microsoft. If MS wanted, they could, at any time, start really supporting Mono and work to unify runtimes. But anything's possible.
- V-2 12y agoTo be fair, F# has its counterparts in the JVM world (like Scala or Clojure). I used the rather niche Kotlin lang on Android, for hobby projects so far, and it's pretty nice, too, even if not fully mature. More similar to Scala, I believe.
- pmoriarty 12y agoI don't think F# is particularly similar to Clojure. No more similar than OCaml or SML are to Lisp (which is not very).
- V-2 12y agoTrue, it's a different FP flavor. They (F#, Scala, Clojure) are in similar position though in that they're FP-centred alternatives to the main language of the platform (C#, Java)
- aleem 12y agoAbsolutely, I am not sure why the other comments are blaming the interviewer as being stubborn or thick. He was being pedantic and rightfully so. It sets a pretty good tone for the questioning, the right tone. He got multiple responses to the same question, which I think is a good thing. There is more opportunity for the questioner to get his desired response. At the 32 minute mark it comes to a head where Gates is reading a 3 line mail for a while, rocking back and forth. The email written by Gates read: "Do we have a clear plan on what we want Apple to do, to undermine Sun". Prior to that document being produced in the video, Gates spent a good 10 minutes or so on the arguing the use of the words, "competitive threat" and "undermine" and so forth. Gates also admitted to speaking directly with Steve Jobs on the phone. This was clearly anti-competitive behaviour. The next line of questioning then goes into pedantic details about Microsoft's discussions with Apple and the same game continues.
- ghshephard 12y ago"Gates also admitted to speaking directly with Steve Jobs on the phone. This was clearly anti-competitive behaviour." There is no law, implied, explicit, or otherwise that suggests CEOs of competing companies can't, or even shouldn't talk with each other. While there are many areas that are off limits to competitors (setting price levels, dividing markets, reducing supply) - there are lots of valid reasons for competitors to communicate on a regular basis around issues like standards, purchasing agreements, licensing agreements, etc... I'm sure that Boo-Keun Yoon (CEO of Samsung) and Tim Cook have frequent conversations trying to settle their differences.
- aleem 12y agoThe anti-competitive behaviour was the conversations with Apple regarding collusion to undermine Sun. These conversations spanned email, phone calls and meetings all within close proximity. The email was the clearest indication of it as it spelt out the "clear plan" on which Microsoft would proceed. As per the email, the phone call (which in itself cannot be proved but more matter is shared later on when Microsoft CFO/Treasurer met with Jobs and other documents came to light).
- wfjackson 12y ago>So Microsoft wrote their own Java runtime called the MS JVM, and made it part of Windows, it extended Java to do Windows-only things, meaning there were now "Java" apps that could only run on Windows, destroying the whole point of Java. The more important question is, was there anything that prevented Sun or anyone else from implementing those in the other OSes? Otherwise it looks like programs are limited to the most basic level everywhere. I do remember the MS JVM was significantly faster than Sun's. So the solution was to slow it down or for Sun to make it's own faster? It's in Microsoft's interest to make things run faster on it's own OS. For example of a similar issue, see Flash on OS X and Jobs' memo regarding how it sucked and made OS X look bad and refusal to allow it in iOS. How is that a good thing and what MS did bad? Instead of improving the JVM, Sun decided to make money by suing MS. No wonder that bloated piece of slow crap that looks like crap is dying a slow death and stopped being relevant. I remember using a popular bittorrent client called Azureus that ran on the JVM. My laptop would get super hot and slow to a crawl. Also remember how J2ME made mobile Java development a complete hell before Windows Mobile and iPhone came on the scene? http://www.zdnet.com/three-billion-devices-run-java-yeah-but-do-they-like-it-7000017911/ http://www.zdnet.com/three-billion-devices-run-java-yeah-but...
- xxs 12y ago>>I do remember the MS JVM was significantly faster than Sun's. This is not true, actually. JDK1.1 1997 had JIT. MS had basically exposed the Variant and COM, the windows handles and part of WinAPI. Overriding paint(Graphic) on a native AWT component (say java.awt.Button) did nothing either and so on. >>Instead of improving the JVM, Sun decided to make money by suing MS. No wonder that bloated piece of slow crap that looks like crap is dying a slow death and stopped being relevant. JDK1.3 with hotspot compiler (May, 2000) had the fastest JIT by far.
- wfjackson 12y agoFrom Wikipedia, http://en.wikipedia.org/wiki/Microsoft_Java_Virtual_Machine http://en.wikipedia.org/wiki/Microsoft_Java_Virtual_Machine > It was the fastest Windows-based implementation of a Java virtual machine for the first two years after its release.[1] Sun Microsystems, the creator of Java, sued Microsoft in October 1997 for incompletely implementing the Java 1.1 standard.[2] Which is the fastest JVM after 1997 is essentially a moot point after the lawsuit was filed. I also like how Apple completely sidestepped such kinds of situations in iOS by disallowing third party SDKs and alternate browser engines. If there can be no Netscape or Java, there is no threat and no need to kill something and potentially get into trouble. Same with Google and Chromebooks.
- doughj3 12y ago> So Microsoft wrote their own Java runtime called the MS JVM, and made it part of Windows, it extended Java to do Windows-only things, meaning there were now "Java" apps that could only run on Windows, destroying the whole point of Java. How does this differ from what Google did with Android, effectively leading to "Java apps that can only run on Android"?
- nikcub 12y agoIt doesn't. Sun, and then Oracle sued Google and lost (on syntax, on API it is still bouncing around): http://en.wikipedia.org/wiki/Oracle_v._Google http://en.wikipedia.org/wiki/Oracle_v._Google Sun settled with Microsoft before a verdict was reached, so the question of IP and if alternate implementations of a language syntax is allowed wasn't answered then. In the antitrust suit, all that was answered was that Microsoft used its advantage with its operating system monopoly to push its version of the Java runtime. The effect was that Microsoft were not allowed to bundle their runtime, but had to offer users the choice - they were not found to be violating Sun's IP in implementing a runtime. Syntax of a programming language not being IP protected is probably a good thing for developers, regardless of what you think of the Microsoft situation. The API being protected is a separate issue, as is the trademark on the name (which applied in the Microsoft case but not in Google's since they didn't use the trademark term in their implementation)
- yohanatan 12y ago> Syntax of a programming language not being IP protected is probably a good thing for developers, regardless of what you think of the Microsoft situation. The API being protected is a separate issue But in the case you cited, the API was found to be not protected (which is also the proper ruling in my opinion).
- V-2 12y agoNote that Google considered using C# instead of Java at some point :) "If Sun doesn't want to work with us, we have two options: 1) Abandon our work and adopt MSFT CLR VM and C# language - or - 2) Do Java anyway and defend our decision, perhaps making enemies along the way" http://www.fosspatents.com/2011/07/judge-orders-overhaul-of-oracles.html http://www.fosspatents.com/2011/07/judge-orders-overhaul-of-...
- MichaelGG 12y agoYet essentially every Java app's UI sucked, and the ones I see remaining still do. Extending Java to actually make it work for practical applications on Windows seems like a smart and useful thing to do. The whole "application should be consistent across OSes" was a pointless idea, and even today that remains true. Java also seems nonsensical for Sun. How were they supposed to make money off it? Especially as a hardware company, it seems a bit odd to target all platforms. And in the end, how could Microsoft not buy Sun for a measly $2BN?
- orbifold 12y agoThe idea that applications should be consistent across OSes is not really pointless, it just happens that for some reason the webbrowser is now one of the major platforms for applications instead of java running in the browser. Also in the 1990s there was not a clear indication that x86 would dominate the whole market and in particular for non customer facing applications there really was no compelling reason why they had to look good or "native", so Java certainly looked like a good idea, as did Smalltalk. The incentive for Sun probably was in part that they wanted their high end workstations to stay relevant and maybe eventually develop cpu's that accelerated java execution.
- MichaelGG 12y agoYet on mobile, we go out of our ways to make things look and feel native, even if the web's being used. The concept of run anywhere, from a code execution standpoint, is fine. That doesn't preclude using platform specific APIs to make the application better. Like using C# but targeting iOS's UI toolkits. Or using signals from a Mono application. While MS may have certainly intended to fragment Java, the core concept of platform specific APIs isn't inherently a bad thing. Also note that during this time, MS supported Windows on non-Intel architectures so I'm not sure about the x86 comment.
- AnimalMuppet 12y agoHow were they supposed to make money off it? It was supposed to help them sell servers (by making web programming and enterprise programming easier).