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
Follow the Discussion
Oops, something didn't work.
What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in. You need to be signed in to Channel 9 to use this feature.What does this mean?
Following an item on Channel 9 allows you to watch for new content and comments that you are interested in and view them all on your notifications page.sign up for email notifications?
C
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.
I must confess thinking the same though.
C
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.
As mentioned in the interview this aspect of Newspeak is not fully baked and is on Gilad's plate of futures.
I posed this idea to Gilad after the interview and he smiled approvingly. So, this is not insane.
C
C
C
so there is no "new" in newspeak i guess? only factory methods? interesting stuff
(still a problem though i think)
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
@25:00
surely gilad knows that wpf is available for xp? :O maybe it wasnt available at the time..
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"?
I tried the Lang.NET and "watch the talks" links but was not able to get to those pages. Any tricks?
http://www.langnetsymposium.com/2009/talks.aspx
C
Remove this comment
Remove this thread
close