Play Ask Anders Anything

The Discussion

  • User profile image

    Have you considered generic reifiable types to make parametric polymorphism implemented as generics as a first-class feature in TypeScript instead of generic type erasure? (i.e. type system is not erased during compilation)

  • User profile image

    Have you considered better alternatives to MSIL like compressed syntax trees and to JIT like Trace Tree compiling? After all, this is the very heart of .NET. Michael Franz, the man behind the Mozilla JavaScript compiler has done a lot of research on it.

    From one of his Abstracts:

    Except for the fact that they operate at run-time and use smaller compilation units, just-in-time compilers have otherwise been quite similar to traditional batch compilers: they all first construct a model (graph) of a program's control flow, which is then traversed while generating code.
    My research group at UCI has been investigating an alternative technique in which the compiler never even attempts to build a complete control flow graph. Instead, our technique uses a novel (and patent pending) intermediate representation, the Trace Tree, which is constructed lazily on-demand while the program is simultaneously executed, incrementally compiled, and optimized.
    Our compilation technique is surprisingly competitive at much lower implementation complexity. Our academic prototype Java compiler has been able to attain a performance similar to commercial production
    compilers while using only about 1/7th of the memory footprint, 1/30th of the compile time, and 1/100th of the actual compiler size. Early experiments showed an even greater benefit for dynamically-typed languages such as JavaScript.
    Our academic experiments are now being validated in one of the largest "real world" trials imaginable. Mozilla recently selected our Trace Tree compiler as the new JavaScript engine for Firefox 3.1, with an
    expected 400 Million installations to come. Even in the current beta version, the Trace Tree compiler's JavaScript performance is a surprising 700% higher than that of FireFox's 3.0, and a staggering 15 times (1500%) faster than that of Internet Explorer. On the other hand, Google recently launched their Chrome browser, which uses a superbly well engineered but "traditional" control-flow based JavaScript compiler. As both browsers mature, the performance competition between them is likely to settle the question whether or not one should base future compilers on Trace Trees.

  • User profile image

    What will the Impact of the new Language (M#?) of Joe Duffy be on the .NET Framework?

  • User profile image

    is there going to have a minecraft app on windows 10?

  • User profile image

    1) C#-style async-await-keywords are easy to learn but have a lot of traps in real-world use. Both the reactive extension way (pure LINQ), and F# -way to do async operations are bit harder to learn, but avoid these traps. Why did you still choose the C#-style async-await for TypeScript?

    2) How will Microsoft return the credibility of Azure, Office365 and TFS-Online to not leak the data to NSA (and possibly from NSA to US competitors)? From the point of view of non-US customers? Can customers control the data movement to not cross the borders to US?


  • User profile image

    Your session was amazing. You seem a humble person first and foremost.

    In recent years Microsoft is claiming that companies which use linux and other open source projects are infringing on its 'families' of patents, and as a result Microsoft is collecting licensing fees from these companies. What's your opinion on that?. 

  • User profile image

    will hololends have minecraft multiplayer feature?

  • User profile image
    H Mirebrahimi

    is microsoft going to expert windows phone for other nokia android devices like nokia x and nokia xl???????please answer

  • User profile image

    My favorite part:

    Q: C# started as an object-oriented, imparitive programming language, and has gained more functional programming concepts. Will this continue and where would you draw the line?

    A: "We're proving over the time that there isn't a line. No functional programming language is purely immutable because you have to produce output at some point. It's a question of how immutable you are. Functional languages tend to favor immutability heavily, whereas object-oriented languages tend to favor statefull and imperitive. We're all exploring the intersection between those."

    "The projects I've worked on recently, Roslyn and TypeScript, a lot of the techniques we used inside the compiler, for example, are functional programming techniques and a lot of immutable data structures."

    "Just because in this world of cmoputing that you have now you have mutable state, and you have multi-threading. You can have one or the other, but never do both. That would be a recipe for pain. If you want mutability, you have to be really careful with having threads modify your state. But if you're immutable, you can share with zero cost. You can had off a reference that's never changing. So you can have many threads *reading* the same data. That's always safe and is a liberating way to think about the problem. That's why I find immutability to be very attractive as programming tool."

  • User profile image

    While any static-type language is an improvement over JavaScript, I dream of the world where JavaScript's (and its supersets/workarounds') monopoly as the only programming language for the web browser operating system is over.

    To that end, JavaScript engines built into modern browsers seem to be fast enough to have a C# and/or Java interpreter/debugger written in JavaScript and working in all major browsers.

    I am sure Andres thought about this. It would love to know why this is not being done.

Add Your 2 Cents