Saturday, July 26, 2014

From the Ashes of Google's Noop, Comes the Language Wake

The programming language Noop was not an official Google product, though it was often given credit for being so. Dedication to testability was what made Noop so unique and exciting, and what generated hype about its eagerly-awaited first release.

Unfortunately Noop fell the way of most languages, and was cancelled before its enthusiastic followers got a chance to try it out.

Now our small team is excited to announce that Noop's unrealized feature set has inspired Wake, a practical object-oriented language in Alpha release status. Anyone who was interested in Noop can now instead read Wake's sleek documentation, try it out online, or join the drive to V1.

Why Noop Didn't Die

The Java community is probably the most dedicated to unit testing, which is not reflected in the language's design or standard library. A couple of really bad ideas like URL equivalence reading from static DNS calls exemplify the lack of now-common practices such as Dependency Injection. It becomes a full career to explain how to write testable code (see: Misko Hevery, the author of that article I just cited on Dependency Injection). There isn't a language in existence yet which makes testability inevitable.

Wake, like Noop, resolves the issue entirely. In Wake your program startup is dependency injected. This means you can simply declare:
every Main is:
    needs Printer;
and your startup class will get a Printer, the Printer gets what it needs, etc. Then in your test cases you can pass in any Printer you wish to verify its output.
every MainTest is:
    provides Main, Printer <- MockPrinter;
    testSomething() {
        var Main from this;
        // Test code
    }
As you can see in this example, Wake has removed the new keyword, requiring all new objects to be created by injectable providers. This means statements you used to write as new Printer() are now Printer from PrinterProvider, a simple change that allows PrinterProvider to return any (more testable) implementation of Printer which it desires.

New Language, New Tricks

We didn't stop at testability.

A huge goal of Wake is to make the smoothest syntax of any statically-typed language. Type inference is one option, but it doesn't play as well with OOP languages as it does with functional ones. The easiest solution we saw was to stop requiring developers to name their typed variables.
greet(Person) {
    // code
}
Here we have a method that works on a Person, which in java we would've defined as Person person, or worse, Person p. This syntax is only possible in a language which scrapped static methods because they are death to testability.

This has an amazing side-effect on iteration. Since lists are also valid variable names, we have a completely new form of iteration in Wake.
var Entity[] = getEntities();
foreach(Entity[]) {
    save(Entity);
}
This foreach statement takes a list of Entity objects named Entity[], and lowers it to the variable Entity so that you can execute code on each. For those who are curious, foreach operates on expressions, not variable names. This means the above could have been written as foreach(getEntities()) save(Entity). This is a concept only possible in a language which understands your program's types, and lets your variables be named directly after them.

Current Status of Wake

Wake supports a huge array of features, including null-safe types, inheritance, method overloading, and generics. It even has a unit-testing framework, a mocking framework, and compile-time reflection. Tooling is in progress and some major features such as closures are still in progress. We won't call anything V1 until we have these features.

It is also worth noting that Wake currently compiles to Javascript. Not to spill too many beans, but we're hoping to create several more compile targets in the future. Maybe Wake will become a swiss army knife for our constantly diverging platforms.

If you are looking to try something new, advise the direction of the project, or even hack at the compiler (written in C++), then Wake might be the next (or at least the newest) language to be worthy of your excitement or contributions.

39 comments:

  1. Excellent post!!! Your article helped to under the future of java development. Being an open source platform, java is integrated in most of the software development industries to create rich featured applications.Java Course in Chennai | Best JAVA Training in Chennai

    ReplyDelete
  2. Really nice experience you have. Thank you for sharing. It will surely be an experience to someone.
    python training in pune | python training institute in chennai | python training in Bangalore

    ReplyDelete
  3. Thank you for sharing such great information with us. I really appreciate everything that you’ve done here and am glad to know that you really care about the world that we live in

    advanced excel training in bangalore

    ReplyDelete
  4. Wow it is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot. it is really explainable very well and i got more information from your blog.

    rpa training in velachery| rpa training in tambaram |rpa training in sholinganallur | rpa training in annanagar| rpa training in kalyannagar

    ReplyDelete
  5. Wow it is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot. it is really explainable very well and i got more information from your blog.

    rpa training in velachery| rpa training in tambaram |rpa training in sholinganallur | rpa training in annanagar| rpa training in kalyannagar

    ReplyDelete
  6. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
    java training in chennai | java training in bangalore

    java online training | java training in pune

    ReplyDelete
  7. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.
    Data Science training in Chennai | Data science training in bangalore

    Data science training in pune | Data science online training

    Data Science Interview questions and answers


    ReplyDelete
  8. Hello! This is my first visit to your blog! We are a team of volunteers and starting a new initiative in a community in the same niche. Your blog provided us useful information to work on. You have done an outstanding job.

    Best AWS Training in Chennai | Amazon Web Services Training in Chennai


    AWS Training in Bangalore | Amazon Web Services Training in Bangalore


    Amazon Web Services Training in OMR , Chennai | Best AWS Training in OMR,Chennai

    ReplyDelete
  9. Awesome post, continue sharing more like this.

    opencu
    Technology

    ReplyDelete
  10. I see some amazingly important and kept up to length of your strength searching for in your on the site Print Production

    ReplyDelete
  11. Yesterday I came to visit my sister and we decided to have fun and play online casinos, polazili on a bunch of sites and this one caught my eye unforgettable online cash casino Here we quickly figured out what was happening and began to think quickly about the strategy. and we found her now we take money out of here every day

    ReplyDelete
  12. Your good knowledge and kindness in playing with all the pieces were very useful. I don’t know what I would have done if I had not encountered such a step like this.

    devops online training

    aws online training

    data science with python online training

    data science online training

    rpa online training

    ReplyDelete
  13. I always enjoy reading quality articles by an individual who is obviously knowledgeable on their chosen subject. Ill be watching this post with much interest. Keep up the great work, I will be back
    Microsoft Azure online training
    Selenium online training
    Java online training
    Python online training
    uipath online training

    ReplyDelete
  14. Very well great blog post. This is a wonderful article, Given so much info in it, keep sharing.


    Data Science in Bangalore

    ReplyDelete
  15. I am impressed by the information that you have on this blog. It shows how well you understand this subject.
    date analytics certification training courses
    data science courses training

    ReplyDelete
  16. I recently found many useful information in your website especially this blog page. Among the lots of comments on your articles. Thanks for sharing.
    pmp certification malaysia

    ReplyDelete
  17. I have a mission that I’m just now working on, and I have been at the look out for such information
    Data Science Course in Pune

    ReplyDelete
  18. Attend The Python training in bangalore From ExcelR. Practical Python training in bangalore Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Python training in bangalore.
    python training in bangalore

    ReplyDelete
  19. I see some amazingly important and kept up to length of your strength searching for in your on the site





    Data Science Course malaysia

    ReplyDelete
  20. Home Mart is a site about Home Improvement, Furniture, Home Appliances and many more.
    Check out the best
    coffee table nz
    bookshelves

    ReplyDelete
  21. It has fully emerged to crown Singapore's southern shores and undoubtedly placed her on the global map of residential landmarks. I still scored the more points than I ever have in a season for GS. I think you would be hard pressed to find somebody with the same consistency I have had over the years so I am happy with that.Data Science Courses

    ReplyDelete
  22. Excellent Blog! I would like to thank for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well. I wanted to thank you for this websites! Thanks for sharing. Great websites!digital marketing course in singapore

    ReplyDelete

  23. I have express a few of the articles on your website now, and I really like your style of Python classes in pune blogging. I added it to my favorite’s blog site list and will be checking back soon…

    ReplyDelete
  24. You completed certain reliable points there. I did a search on the subject and found nearly all persons will agree with your blog.
    data analytics course malaysia

    ReplyDelete
  25. Thank you so much for helping me out to find the Data analytics course in Mumbai Organisations and introducing reputed stalwarts in the industry dealing with data analyzing & assorting it in a structured and precise manner. Keep up the good work. Looking forward to view more from you.

    ReplyDelete
  26. thanks for Sharing such an Awesome information with us.

    I learned World's Trending Technology from certified experts for free of cost.i Got job in decent Top MNC Company with handsome 14 LPA salary, i have learned the World's Trending Technology from Python training in pune experts who know advanced concepts which can helps to solve any type of Real time issues in the field of Python. Really worth trying Freelance seo expert in bangalore

    ReplyDelete
  27. Attend The Artificial Intelligence Online courses From ExcelR. Practical Artificial Intelligence Online courses Sessions With Assured Placement Support From Experienced Faculty. ExcelR Offers The Artificial Intelligence Online courses.
    ExcelR Artificial Intelligence Online courses

    ReplyDelete
  28. the development post you provided is great post azure online training

    ReplyDelete
  29. Very nice blog here and thanks for post it.. Keep blogging...
    ExcelR data science training

    ReplyDelete