I am currently blogging from the Lang.NET symposium, held at the Microsoft campus. There are a number of interesting lectures today about Spec#, IronPython, Ruby.Net, AppleScript, etc, all today; there will even be more tomorrow and the day after.
I have met with Erik Meijer, Haskell coinventer, whose papers I have frequently based my posts on. Erik remarked that he and Paul Vick, VB dev lead, joked that I must have a mole at Microsoft. I plead the fifth and then slowly hid my invisibility cloak from view.
I took him to task for his comment in a channel 9 video in which he believed that we will always need multiple language for different specialized tasks. I believed that with better support for integrated DSLs, we could still actually have a single-uber language for all problems. Amanda, PM in the VB team, was also there.
I met with Anders Hejlsberg, technical fellow at Microsoft, and asked him two of my most pressing questions.
1) Support for declarative programming. I remarked to Anders that C# seems to headed towards greater support for embedded DSLs with the introduction of object initializers and expression trees.
2) Support for symbolic computation in the framework including computer algebra and theorem proving. I inquired whether that the incorporation of expression trees foreshadow such advancements.
In both cases, Anders indicated that, while my ideas are interesting, the focus, for now, was integrated query. Afterwards, Anders stated that he reads my blog and that I had some good posts. A few other attendees recognized my name from my blog.
In addition, I saw other well-known people for the first time, Miguel de Icaza, who heads the Mono project and previously commented about my XAML and standards post, Jim Huginin, developer of IronPython (now in RC1), Christopher Diggins, creator of the Heron and Cat programming language.
Heheh, I'm envious. Chatting with Anders, joking with Meijer, lucky guy. :)
One thing I'd like to ask Anders is, where does reliability and asynchrony fit into C#'s future? I find reliability and generally buggy code to be our #1 problem at work, followed closely by complexity of our multithreaded environment.
Unit testing and better design patterns has improved reliability and has reduced buggy code for us, but it's still not enough (which is why I'm really interested in NStatic!).
Multithreading is a very tedious thing for us to deal with at this time. We have a client/server app where the client communicates back & forth with the server using multiple threads. The server performs all sorts of database, file, and network I/O. Dear Lord, it's a hairy beast with all the concurrency and fudge-attempts at coodinating all of that! IMO, there needs to be more abstractions there.
It seems there are reseach projects at MS addressing exactly these 2 issues (which implies I'm not the only one suffering buggy code and multithreading complexity woes!): we've got Spec# to improve reliability and reduced buggy code, and Cw to provide more abstractions in writing asynchronous code. Of course, we've got the CCR in beta now as well, unfortunately without any documentation or any plans to publish as a standalone library.
From this point of view, it looks like C# 3 is only borrowing the Cw-like data accessors in the form of LINQ. While I think LINQ is a good idea with some really cool implications, it's not solving either of my 2 main problems. I'm not bashing LINQ, man, I think it will really help with our data layer and of course make writing anon. methods easier, but again, data access was not topping my "most wanted list" for C# 3.
So next time you talk to Anders, run these things by him for me, will ya? :)
Posted by: Judah | August 01, 2006 at 09:31 PM