What's Microsoft's father of C#'s next trick?

What's Microsoft's father of C#'s next trick?

Summary: Microsoft Technical Fellow Anders Hejlsberg is working on something to do with JavaScript tools. Here are a few clues about his latest project.


Anders Hejlsberg is best known as the father of Microsoft's C# language. He's been working lately on Roslyn, Microsoft's so-called "compiler as a service" project. But it turns out that's not all Hejlsberg is working on.


Some eagle-eyed folks (hello, Felix9!) over on Microsoft's Channel 9 spotted a mention of an upcoming Hejlsberg appearance at the goto Aarhus software development conference in early October. Hejlsberg is slated to deliver a closing keynote on a "yet to be disclosed project in the Development Tools Space."

There's another interesting tidbit the Channel 9ers saw. Heilsberg's updated biography includes something that wasn't there before:

Anders Hejlsberg is a Technical Fellow in the Developer Division at Microsoft Corporation and works on Microsoft’s .NET and JavaScript development tools.

Wait... JavaScript development tools?

Microsoft has been working on its own set of JavaScript tools for a while. Microsoft offers various HTML5, CSS and JavaScript tools as part of Internet Explorer. JScript is Microsoft's implementation of the ECMAscript standard. And Chakra is the codename of Microsoft's JScript engine at the heart of IE 9.

But Hejlsberg hasn't been part of that effort. He's involved in something else, it seems.

This week, I asked Soma Somasegar, the Corporate Vice President of Microsoft's Developer Division, what Hejlsberg is doing for Microsoft in the JavaScript space. I didn't really expect an answer, but Somasegar provided a few clues nonetheless.

Microsoft could potentially add some new, interesting features to the JavaScript standard, Somasegar noted.

"Anders is thinking about this more from the language and tools perspective," Somasegar said. "In the past two years, we've been (thinking about) and working on this."

Another possible clue: Earlier this year, Hejlsberg was quoted by eWEEK as saying it was possible to write large JavaScript programs but not possible to maintain them.

Don't expect to see a brand-new "Microsoft JavaScript" implementation any time soon; that would make no sense, Somasegar stressed when I asked about this possibility.

"The JavaScript runtime is up-to-par now," Somasegar noted. "Now we're thinking about what can be done in the language."

(In spite of Somasegar's statement about the status of the JavaScript runtime, I noticed in a recent Microsoft job description a call for a senior engineer to help develop a "fast, standards-compliant JavaScript runtime.")

Somasegar said he believes Visual Studio 2012 and Blend 4.0 provide developers with "industry-leading" HTML and JavaScript tooling. Microsoft will enhance HTML and JavaScript support further in the Update 1 to Visual Studio 2012 release that is coming by the end of this year, he said.

What do you think Hejlsberg's "big reveal" will be in early October? Any guesses?

Topics: Software Development, Microsoft


Mary Jo has covered the tech industry for 30 years for a variety of publications and Web sites, and is a frequent guest on radio, TV and podcasts, speaking about all things Microsoft-related. She is the author of Microsoft 2.0: How Microsoft plans to stay relevant in the post-Gates era (John Wiley & Sons, 2008).

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.


Log in or register to join the discussion
  • C# to JavaScript

    Oh my good. Is this the dreaming C# to JavaScript Compiler? I hoping for this since Silverlights death. But can it be real?
    Microsoft is mentions JavaScript as the new Assembler in an Channel9 video. And Roslyn is an flexible compiler. Not at least: Hejlsberg can do this!
    • Very interesting

      That could be very interesting to see. I wonder if they would really be able to support all the language features. For instance, async/await, etc.

      I think almost as much a challenge as the language itself are all the APIs. Even if you could compile C# to JavaScript, it's not like you could write .NET code and suddenly it runs in the browser. The native JavaScript APIs are *VERY* limited compared to what comes in .NET, and some of them are really designed for dynamic typing.
      • But a subset would work...

        Silverlight was initially designed to sit within the confines of the browser experience (and as such is a subset/fork of .Net). An office JS compiler could follow this as well.

        Should note that Microsoft's own Nikhil Kothari ‏has already sort of done this unofficially on his own. His project, Script#, compiles a subset of C# to Javascript today.

        Kevin Gadd has a similar initiative (JSIL).
        • Office = Official

    • dartlang is designed to be effecient when compiled to JS

      C# was not designed for the web in mind, whereas dartlang is designed by ex V8 team (fastest js engine on the market). If Google will work out nice gui toolkit (ala GWT) dartlang could be the Next Big Language for the web.
    • Probably not

      Hw want to expand JS language. If you need C# -> JS converter, there are plenty of this, both free and commercial.
    • It already exists

      Script# => https://github.com/nikhilk/scriptsharp

      Some microsoft employee already built this in his free time as a Visual Studio extension.
      From what he said a part of Bing Maps is built with it.
      It even supports generics and JQuery :D

      Maybe they put the original creator of C# to fully fledge it out.
      • I heard Office 365 was written in this...

        I heard parts or all of Office 365 were written using a modified vesion of this, as well. I can believe it.
    • C# to JavaScript...

      ..."compiler"? I think a program that translates C# to JavaScript would be called a "converter" rather than a "compiler".

      C# to JavaScript... for what reason? It doesn't make much sense to me. It would be way cooler if C# could be used as a scripting language, in a standardized way. And JavaScript the new assembler? That's a little bit too exaggerated IMO...
      • C# a scripting language? Mmmmm...

        I love C#. I call it my "native programming language". I also have a passion for JavaScript.
        I just don't think C# is a great scripting language. It's too strict and formal, which is super-great for some things, but not, IMO, for scripting.
        I've learned to love LINQ and the dynamic stuff added to C#, but the changes that would make C# a great scripting language would seem to take away some of the things people use it for. It just wouldn't be C# anymore. Maybe F# (which I don't really know) is better for something like that.
        Or perhaps IronRuby, IronPython, etc. if you are avoiding JavaScript, which I'm not saying you are (and I think is a mistake to do). :)
      • office = official

        Can't ... edit... post.. :)
      • A compiler..

        A compiler is any process that translates one language to another language. Generally it goes from a high level language to a"lower" level language. But that's not necessarily the case. No matter what you're doing, it requires a parsing of one language's tokens and creating the equivalent in the target language. Sometimes it's machine code. Sometimes it's byte code. Sometimes it's IL. Sometimes it's another language.

        C++, for instance, was originally a compiler that translated the new object oriented bits of C++ to C.. and then that C code was compiled to machine code.
        • No

          C++ is a language, not a compiler. It extended the C language in order to fuse the advantages of Object Oriented Programming to the C language which had excellent compilers which generated efficient binaries.

          Languages are defined via formal grammars.

          A compiler is a program that takes programs in a higher level source code outputs a binary file of machine language instructions to be executed later. A translator or bridge will take code in one language and output code in another language. An interpreter is a program that takes a statement in a higher level language and generates machine code which is immediately executed and then discarded. A virtual machine takes an instruction in its instruction language and sends an instruction in the host's native machine language to the host's runtime.

          C++, like many languages, may have been first compiled after a translation-to-C pass. This is not as efficient and will produce sub-optimal code as compared to a compiler that was written to work without the translation step. Being a superset of C, a C++ compiler should give you C compilation automatically, but maybe there's something I'm missing, and of course, there have a been a few slightly inconsistent C and C++ standards over the years. Also compiler vendors may publish language extensions that they support.
    • RE C# to JavaScript

      A compiler already exists for this. It is called Script# and is open source.
  • Are significant language changes even possible?

    His quote about the difficulty of maintaining large JavaScript programs is spot on. Most developers I talk to (myself included) really hate working with JavaScript for anything significantly complex. The majority of folks I know only do JavaScript because there is no other choice for web-based apps that work on all types of devices. It was never designed to support what is being asked of it today, but unfortunately the promise of the whole HTML5/JavaScript stack has been blown way out of proportion. The hype exceeds the actual capability and suitability for many type of apps.
    When they say they are looking at what they can do in the language, it will be interesting to see what they come up with. Because the JavaScript spec is being maintained by committee, changes will come slowly and certainly cannot be exclusively driven by Microsoft. Even if they can implement changes, they would probably have to fundamentally change the identity of JavaScript as a language – maybe introducing classes, introducing some sort of static typing, etc. In other words, making JavaScript into something that is fundamentally not JavaScript.
    I would be far more interested to see them investing in supporting other languages on the web, similar to what Google is doing with Dart. I guess this could take the form of either embedding Silverlight directly into IE or pushing it to more mobile platforms, or try to support C# natively with HTML. Folks can say what they will about Silverlight, but one really nice aspect to it is the ability to share code between the browser and server.
    • The biggest FUDers of the web stack are poor SL fans

      In a way i agree with you, web ain't easy.

      But it's the most F***ING exciting place to be by far. Check out github's language page. Number 1 language is JS. To me, github is the treasure chest of our time.

      You might consider Hejlsberg as a kind of a leader/hero/hacker, but I consider John Resig, Rayn Dahl, the creators of anjularjs, the creators of backbone, the creator of coffeescript, the creator of CodeMirror, etc. etc. as much more of leaders. Much more then any Microsoft appointed chief. By far. No contest.

      And these great minds are working on that difficult problem, that is that the web is hard. And the solution is/going to be OPEN SOURCE. The other era has ended. Really.

      Where would you steer your son/daughter today? To XAML/C# or to HTML/CSS/JS? Can you even call yourself a developer without knowing these?

      • Javascript just needs more TLC

        Because it's such a poor language.

        Noobs like yourself wouldn't know a good language if it hit you between the eyes.
        • A Good language

          Since you are an expert on good languages, pray tell, is lisp/scheme a good language?
          • Javascript is a software engineering disaster

            Let's see: WebOS - fail. ChromeOS - fail. FaceBook "we shall go for native" - fail. Google "we are moving to Dart" - fail. Intel "HTML5 is overrated" - fail.

            Let's face it. You cannot fail all over the place and still insist it's a good language. A language making it hard to maintain is an instant large projects killer.
          • Whoa

            And yet, it was javascript that got your wise words from your computer to this web page.

            I think the original post in this thread was on a correct track. While people use javascript all the time, it has a different flavor and behavior from the systems/application languages. Accordingly, people write translators hoping they can work in a more familiar paradigm and get performant javascript out. Often times, they trade one complexity for another.

            The question your post begs is that any language is a good one for maintaining large projects. I think contemporary marketing-uninfluenced thinking on that is no. Besides, if a large project started and shipped in one language, there are economic disincentives towards paying for a rewrite and another round of debugging. Twitter changed from Ruby to Scala, but that seems an exceptional situation, where it happened while the platform was growing and was funded by some serious VC money.

            My casual observation is that Microsoft is sensitive to how the developers for its platform do not like any language that wanders away from a C/imperative/object-oriented point of view. Javascript looks like C and looks like it might be object-oriented and imperative, but is functional and uses prototypes instead of classes. Close enough to be frustrating. Add in some scoping rules that can trip one up, and, well we see the impulse to find a transitional interpreter that smooths over javascript's idiosyncrasies. Microsoft might see this as a selling point for VS2014 or VS2016. With my cynicism engaged, I note that the tool doesn't have to be effective, only attractive for it to be a success. The goal is selling licenses, after all.

            Hjelsberg with his Delphi and C# accomplishments doesn't feel like the right guy. I'm not sure that he is the solitary force behind C#'s expansion into functional programming. I could be wrong.

            Do I think it likely that Microsoft produces a new awesome scripting language for performing client-side computation within a browser which is exclusive to developers using Microsoft's tools? I suppose, but it has to be platform-agnostic, meaning support goes into the major browsers. Do we see Google giving a hoot about putting this wonder-language into Chrome? Meanwhile, we do have things like coffeescript and clojurescript and node.js all available and actively developed.

            Now maybe the initiative is about a better backend to javascript's language. That means better performance of web applications in the IE's and that you can (maybe) sell. (Browsers are free, after all, and Microsoft doesn't make one for my os.) Or maybe javascript as a first class language for the CLR. That's an interesting idea.

            It doesn't really matter if it's a "good" language. It only matters that it is widely used.