6 ms·
MS 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 excep
by V-2 12y ago
MS 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)