Gilad Bracha: Inside Newspeak and Objects as a Service

Download this episode

Download Video

Description

Lang.NET Symposium 2009 was held on Microsoft's campus (make sure you watch the talks, which are available for your viewing pleasure). We were of course there and conducted several interviews with some of programming language design's brightest thinkers.

Here, language design master Gilad Bracha discusses his Newspeak programming language. What is Newspeak and why was it created? What general problems does it solve that can't be done with already existing languages and tools? What does it facilitate, really? We dig into the fundamental ideas, history and future of Newspeak. Gilad was kind enough to keep the discussion at a level appropriate for a broad technical audience and not just for his fellow scientists.

Newspeak People say: "Like Self, Newspeak is message-based; all names are dynamically bound. However, like Smalltalk, Newspeak uses classes rather than prototypes. As in Beta, classes may nest. Because class names are late bound, all classes are virtual, every class can act as a mixin, and class hierarchy inheritance falls out automatically. Top level classes are essentially self contained parametric namespaces, and serve to define component style modules, which naturally define sandboxes in an object-capability style. Newspeak was deliberately designed as a principled dynamically typed language. We plan to evolve the language to support pluggable types."

If you want to understand the thinking behind the thinking of Newspeak, then tune in. Please go ahead and play around with Newspeak, Niners, and provide Gilad and team with feedback.

How far could the notion of Internet-distributed synchronizable objects, or objects as a software service, be taken? 

Enjoy

Embed

Format

Available formats for this video:

Actual format may change based on video formats available and browser capability.

    More episodes in this series

    Related episodes

    The Discussion

    • User profile image
      exoteric
      A superb presentation of the benefits of Newspeak!
      - capability based security
      - very generic module system
      - almost functional
      - network object synchronization
      - etc
    • User profile image
      Charles
      Now play with it, man!
      C
    • User profile image
      staceyw
      I was thinking about something like this today based on other Lang.Net talks.  Lets take a popular need like Quickbooks or MS Accounting.  Typically, the "store" runs on a pc/server at the office.  So to get remote to it to check a customer balance (for example) is kinda a lot of work and involves:
      1) fire up a browser.
      2) start gotomypc, or logmein or live mesh and get a remote desktop session.
      3) Login to remote windows.
      4) wait for desktop to paint remotely.
      5) start quickbooks or msAccounting
      6) login.
      7) find customer and drill in, etc.

      Not climbing a mountain, but a lot of work.  Now do it 10 times a day.

      Now say a remotable object represents behavior (UI) and data (a customers statement history) and security.  You can drag that onto your desktop from the service and have it sync automatically.  So at all times I can have that customer or many customers on my desktop that shows there balance (maybe I could even drag other View objects onto this object for skinning UI).  The comm part works via Azure to surface the Object and Azure backend talks to QB service via .Net Services.  You could have a another Object/Behavior that is a collection container to host a collection of Customers so you can orginize and summarize many customers in a list.  So now you have a virtual desktop app that is composable and how you want to see and organize your data on your desktop - like a custom Dashboard.  But it is just soft links (i.e. shortcuts) to URIs in the cloud.  You can even email your customer their own account link so they can have it to review and print stuff they way they like.  Colaboration/interaction becomes the next plus.  Maybe now send all your customer links to a 3rd party to handle AR (invoices, statements) and collections, address changes, etc.  Same ideas with vendors and checking accounts.  See account balances in "gadget" objects, post a check or visa charge to have it recorded back to mother, etc

      Trying to get my head around how this compares/contrasts to using things like LiveMesh sync and ClickOnce today - because you could do much of this today without remotable objects using more brute force methods.   Interesting space.
    • User profile image
      rhm
      Haven't had time to watch the video yet, but I have to ask: Is Newspeak a reference to George Orwell's 1984, or is it just a co-incidence? Smiley
    • User profile image
      vesuvius
      It is Nineteen-Eighty-Four Big Smile

      I must confess thinking the same though.
    • User profile image
      JasonOlson
      I don't know the official answer, but my guess is that yes, it is most definitely a reference to 1984. In his Lang.net talk, he introduced himself as being from the Ministry of Truth Smiley.
    • User profile image
      Charles
      Indeed. Gilad explains the reasoning behind the name in the documentation for the language. Orwell's Newspeak has a vocabulary that grows smaller over time. This is a characteristic that programming language vocabularies do not have; they typically increase in size over time as they evolve to enable more expressiveness to compose solutions to new problems (and for comaptibility reasons removal of language features is almost always a bad idea...). And, by now, you should get Gilad's sense of humor Smiley

      C
    • User profile image
      JasonOlson
      Pure and utter WIN is that name. You just have to love Gilad Smiley.
    • User profile image
      Charles

      Very thoughtful, staceyw. In fact, I think a Newspeak object service on Azure would be a fun project and would provide for really compelling applications that evolve, at the object level, without the need for explicit recompilation by the author. Further, imagine the model where the objects you use can come from some distributed service in the cloud and the pain of versioning is completely removed from your plate, by design. You could imagine an ecosystem of developers who write and maintain object services that you consume at design time once, then the runtime system takes care of the synchronization with the cloud, object versioning, etc - you don't need to compile to incorporate updates, etc.

      I posed this idea to Gilad after the interview and he smiled approvingly. So, this is not insane. Smiley As mentioned in the interview this aspect of Newspeak is not fully baked and is on Gilad's plate of futures.

      C

    • User profile image
      Charles
      You know it. Gilad is a treasure. I'd love to see him at Microsoft. He'd be a very welcome addition to our IQ Smiley
      C
    • User profile image
      Charles
      He talks about this at 05:40 in this conversation. SPend 30 minutes with this. It's well worth the time. I seldom watch videos I'm in, but this one is different given the concepts. Watching it now.

      C
    • User profile image
      aL_

      so there is no "new" in newspeak i guess? only factory methods? interesting stuff Smiley
      the synchronized objects are cool but it seems very hard to find one solution for this that works for everyone.. consider TPL, there are so many ways to do concurrency that its not good to have it in the language and thus lock it in.. anders talked about that a while back i belive.
      but if gilads vision of a shrinking and mutable language comes to pass however, this might be less of a problem Smiley (still a problem though i think)

      @25:00
      surely gilad knows that wpf is available for xp? :O maybe it wasnt available at the time..



    • User profile image
      dpratt71
      I found this very thought provoking. More like this, please Smiley

      On the subject of capability-based security (and keeping in mind that all I know of Newspeak is this interview) I would have to wonder if this might increase coupling between components.

      For example, suppose that create a class that manages session state. In v1, session state is always maintained in memory. In v2, I would like to be able to have the option of session state being pushed to the DBMS. If this were implemented in Newspeak, does this mean that consumers of my session state class have to be re-coded to provide my class with a DBMS "facility"?
    • User profile image
      THeavey

      I tried the Lang.NET and "watch the talks" links but was not able to get to those pages. Any tricks?

    • User profile image
      Charles

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.