YODA the Programming Language

Now that LINQ is out the door, so to speak, I can start focusing my efforts on the next next technology here at Microsoft. Ever since I joined up with the C# team nearly two years ago I’ve been frustrated by my inability to wax poetic about all the goodness we were working on. I was sworn to secrecy. Mum was the word. Perhaps if you were paying attention to the work in C# 2.0 and C-Omega, you may have guessed what was to come. Looking back, it’s easy enough to recognize it in the design of Generics, Iterators and Anonymous methods. The existence of Nullables in there as well should have made it obvious. We were planning ahead for the big pay off, language integrated query.


You may be amazed that so much planning goes on in the features that we roll out version to version. Sometimes big ideas and far-reaching visions take many releases to come to fruition. You cannot always do them in one release. Sometimes you have to take a risk and dole them out piece by piece. This may cause a bit of confusion at first, when no one can truly understand why a particular feature was included and not others, or why one design was chosen. Yet once all the pieces are together you can finally make sense of it all, and then as if by magic it all just seems right.


Of course, this time is no different than the last. We planned ahead and baked in features into C# 3.0 that will lay the foundation for the next big thing. LINQ is only the start of the revolution. Yet, unlike last time, the features we added now make it rather obvious what is coming next. If you connect the dots in your mind and extrapolate just a bit you’ll see what I’m getting at. You’ll begin to notice that’s its not just about query in the language, or first order functions or everything else that seems to be borrowed from languages of yore. No, these pieces are just stepping stones for what is yet to come, something truly original; a next generation programming language.


The evidence is there right now, plain to see. The query expression exhibits it quite clearly. Yet, that’s just for starters. Eventually, the same degree of innovation will influence the rest of the language, and then you’ll have something quite different, a language the likes of which you have not seen before, one that is simple and elegant, yet secretly powerful: a YODA-like programming language.


You see, putting the ‘from’ ahead of the ‘select’ was not by accident. Soon the whole language will be re-arranged in an effort to make expressing intent easier and more logical.


Instead of the cryptic c-like syntax below:



public void Main(string[] args) {

   Console.WriteLine(“Hello World”);




We will now have eloquent YODA-like syntax:



(args of string many are they) Main is what they seek yet return they do not.


Brace you must

     Written it is, the Console. “Hello World”



I know it’s difficult to believe, as strange as it seems. Yet, sometime in the future, everyone will be writing software this way. Knowing this, it makes my work so much more invigorating. I can literally feel the electricity in the air around here. It’s like some queer energetic force.


But I digress



Comments (41)

  1. Frankly I’m lost 🙁 are you serious or just kidding. ’cause somethings in C# 3.0 have got me scared and I can’t bear more 🙂

    We do have some Yoda fans here in MS India and they’d be delighted

  2. Frank Pistorius says:

    Hmmm, this sounds like an excellent one for your next hols-project. I am sure there are lots of Yoda fans willing to add to the grammar…

    Many are they, written it is, excellent!

  3. jonaxse says:

    I’m getting tired of this.

  4. Anon says:

    FUD alert… 🙂

  5. Keith Farmer says:

    Surely you mean:

    "Main Line" to the Console is written. Hmm?

    Rest. Yes, rest this program must. And soon, forever sleep.

    replace, it does:

    Console.WriteLine("Main Line");


  6. : YODA ( — ) S" is a FORTH programmer!" TYPE CR ;

    When fooling around he is, Postscript he uses. Mmmhh ?

  7. We’ve been spending a lot of time in the language design meetings trying to flesh out the rest of the details. We’ve spent the last six months debating which name to use: YODA or YPL, or YTPL.

  8. Sean Chase says:

    Sucks this does. Even more verbose than VB it is. 🙂

  9. I suspect that YADDLE will become the open source YODA, equally powerful but not as well known.

  10. Dave says:

    That was hilarious! And to think people were upset over "From" 😛

  11. dhchait says:

    It’s true, from Yoda himself: "There is no try."


  12. You can also see signs of the YODA language in the type inference feature.

    var var = binks;

  13. Vincent says:

    Quite cool it is.

    It evades me, the reason.

    Extremely lengthy it is.

  14. Wouldn’t be easier to simply write a love letter (a letter of intentions) to the compiler which then would analyze it and try to understand what you’re up to? A bit like an intelligent functional analysis.

    Well, I mean it seriously. I think very little AI is used these days. Why wouldn’t Visual Studio look behind your typing some resources (webservices) up and suggest possible algorithms or real-time FxCop analysis?

    Adaptive behavior in function of the coder, self-modifying code.

    Ah well, let me dream on 😉 Loved this blog in any case.

  15. Jemm says:

    There is no try. Catch exceptions you should.

    Seriously, I’m interested in what’s coming 🙂

  16. foris zoltan says:

    this is not the future… this will be the past…

    how a class will look like?

    or no oop in the future at MS ?

  17. Hey Matt,

    Very neat examples by inference. If for example you were to extend the concept of the SQLServer CLR implementation and you were, for example, to introduce create and delete keywords. You could, possible, create a very powerful meta-programming model with, for example, a unified approach to data (temporary, distributed and persistent) and control logic (compiled, infered and enforced).

    Mmmmm, yes, really quite neat.


  18. Udo Güngerich says:


    Open source YODA? Equally powerful, but less known?

    Whenever "the" open source community thought it worth to reconstruct something from MS – as it did not happen very often, because most of the time much better concepts were already born long before – it outperformed the commercial solution by miles. Having said this, I have to point out that this also happened to other companies: Although I doubt that Postgres is reconstructed from oracle, it outperforms it by far, and yes, it IS LESS KNOWN but not EQUALLY POWERFUL, it’s even more sophisticated. This is no flame war, but it had to be said.

    By the way, Perl already is able to speak a latin syntax and many more dialects. I wouldn’t wonder if there’s a Lingua::YODA out there soon as there is an Acme::Yoda-module available on CPAN already 😉

  19. Maybe the open source YODA is not YADDLE after all, maybe its YADDLE’s kid sister, YADA YADA YADA.

  20. Keith Farmer says:

    Yada Yada Yada?

    Any relation to Rosanne Rosannadanna?

  21. Big Ray says:

    Kind of reminds me of effed up AppleScript.

  22. carloszanini says:

    Ojala desaparezcas de la faz de la tierra vos y tu idea ridicula.

  23. Dark Side says:

    In YODA there is no try()

  24. daniel says:

    stupid proposition, typical of microsoft, instead creating new languages, they should fix the thousands of bugs vs2005,2003 have, or maybe search for real beta testers

  25. Steve Hiner says:


    This is a long way off topic… It’ll only make sense if the answer is yes.

    Do you use MovieMask?

  26. It looks like YODA the programming language has already been done! Here’s a reference from slash-dot from 2001.


    Variable x to 10 be setting.

    1 to x you add.

    This times 10 you be repeating.

    I wonder if they thought to patent? No? I’m on it!

  27. Martin says:

    The idea of actual programming if write less code, no more.

    With this idea i do write more code 🙁

    But this is original… for funny i say.

  28. chuawenching says:

    It seems to have some similarities to Ruby language.. english readable 🙂

    Nice stuff 😛


    Chua Wen Ching

  29. YODA similar to Ruby? Rubish.

  30. Pietro says:

    No semi-colons, you’ll let in the dark side.

  31. Grimm says:

    This is probably the funniest blog I’ve ever read on MSDN 🙂

  32. Well, wouldn’t know about Yoda-speak, but you can already program in Latin: http://www.csse.monash.edu.au/~damian/papers/HTML/Perligata.html

  33. Morphy says:

    Oh, so ugly it is!

  34. Avihoo Ilan says:

    I don’t know about this syntax, in fact, I wouldn’t want to imagine a small yoda talking everytime I open my project, but the idea is nice… I mean, instead of a structural syntax, you -explain- the compiler what stuff are; imagine something like this:

    Main is a function which accepts many string arguements and returns nothing; it orders the Console to Write "Hello World"

    or if we had this C syntax:

    function ReturnBigger(int A, int B) //considering that one of them is bigger


    if (A > B) return A;

    else return B;


    it could be:

    ReturnBigger is a function which accepts the integer B and the integer A and returns an integer; if A is bigger than B return A, otherwise return B

    I know the above sounds ridiculous at the moment, just like everyone in the world uses computers these days, in the future, everyone would literally talk to their computer, and that’s the step, at least.

  35. I see no chance of getting to write meaningful comments about these links anytime soon, so I guess I had better post them as is before they get totally stale: Maintainable Programmers [@lesscode.org]HornWare: SharePoints LRB | Eliot Weinberger : What

  36. C que sabe! says:

    Instead of the cryptic c-like syntax below:

    public void Main(string[] args) {


  37. <Rolog> says:

    Earlier I posted about C# Version 3.0 . I found this blog entry on C# 4.0 (codenamed Yoda) – http://blogs.msdn.com/mattwar/archive/2005/10/09/479008.aspx

  38. High Volume Email Deployment The Daily Show dealing with spammers as only they can do. [YouTube:dfhO9s7CZAk]