Anders Hejlsberg and Guy Steele: Concurrency and Language Design
- Posted: Oct 06, 2008 at 6:27 AM
- 84,238 Views
- 19 Comments
Download
How do I download the videos?
- To download, right click the file type you would like and pick “Save target as…” or “Save link as…”
Why should I download videos from Channel9?
- It's an easy way to save the videos you like locally.
- You can save the videos in order to watch them offline.
- If all you want is to hear the audio, you can download the MP3!
Which version should I choose?
- If you want to view the video on your PC, Xbox or Media Center, download the High Quality WMV file (this is the highest quality version we have available).
- If you'd like a lower bitrate version, to reduce the download time or cost, then choose the Medium Quality WMV file.
- If you have a Zune, WP7, iPhone, iPad, or iPod device, choose the low or medium MP4 file.
- If you just want to hear the audio of the video, choose the MP3 file.
Right click “Save as…”
- High Quality WMV (PC, Xbox, MCE)
- MP3 (Audio only)
- MP4 (iPod, Zune HD)
- Mid Quality WMV (Lo-band, Mobile)
- WMV (WMV Video)
In this conversation Microsoft Technical Fellow and Chief Architect of C# Anders Hejlsberg sits down with programming language design legend and computer scientist Guy Steele (creator of Scheme and expert in several languages ranging from LISP to Java). I think Guy is one of the smartest people I've ever met.
The topic of conversation is the elephant in the modern general purpose programmer's living room: Concurrency. With today's widely-used general purpose languages like C++, Java, C#, VB, Ruby etc it's hard to express parallelism in productive ways. Anders et al are working on both language enhancements to C# and VB.NET and BCL support (Parallel Extensions to .NET for example). Today, Guy is working on a mathematical language (domain specific as opposed to general purpose) and runtime, Fortress, that is so concurrent it makes it hard for programmers to even write sequential code!
Listen in to two of the programming industry's most successful thinkers and get a sense of their perspectives on the future of general purpose programming languages now that Concurrency and Parallelism are entering the development status quo.
Enjoy. More JAOO coverage to come. You can watch Anders' keynote on language futures here.
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.
Follow the Discussion
What a way to begin!
Keep on downloading,
C
Technical Fellow at Microsoft is the highest ranking engineering title. In essence, Anders is as senior as a VP. Think of it as "Grand Master Engineer"
BTW, it was great seeing you at JAOO Charlie.
C
Awesome! Can't get enough of the videos featuring Anders, they're always thought provoking and insightful and right now are the perfect distraction from grim market news stories.
Guy Steele was my comparative languages professor back at CMU, he was hands down one of the best teachers I've ever had.
The man's simply amazing.
Don't get me wrong, I'm not being anti-change here, but any pitch to management about adopting this stuff needs to include a technically strong discussion of how architectures can be changed over time in such a way that they don't immediately and severely impinge on developer productivity. There is clearly more to the problem than just 'pepper your code with LINQ query statements' (I'm being deliberately provocative, not as an attempt to troll but because I think this part of the story is currently missing.)
No matter how much functional programming is useful, current languages will still be alive and kicking!
C
The appeal of functional programming to Anders (it seems) is when it comes to parallelize your code. The task parallel library is already working on a parallel for-loop. The next logical step in code, is any method where a time consuming task is present (work need to be done) like your lambdas. I think that that is why Anders extols functional programming, insofar as "the elephant in the room" and functional programming being used as a tool in concurrency issues.
I therefore see C# developing as a hybrid language or creating a hybrid developer, whereby if any parallel tasks need to be done, the best practice in your application is to use functional constructs, as they can be made to run in parallel. Learning F# is going to be the best way for .NET developers to leverage their existing .NET knowledge, without resorting to the extremes and complexity of Haskell.
I walked away from the video while it was running, and was suddenly struck by Guy Steel's voice... Carl Sagan talking computers.
...LOL.
We already have an ever-growing range of APIs in the CLR to let us dynamically compile code snippets into executables. The C# and VB compilers are "libraries" in that sense. They need to be reusable in different contexts, e.g. partial compilation for IDE intellisense as well as the "real" compilation process. And so why not implement those two languages as AST processors on the same general compilation engine. And then introduce a way to let you switch syntax libraries in the middle of a file, or in an expression.
For instance, let's say that I have a quad core computer, and I write software that scales amazingly to 4 threads. However, my intent was to actually scale to 8 or 16 or 32 threads, but I don't have the machine to test it.
Is there some kind of execution path analysis tool (perhaps Intel can help with this), which analyzes the binary code (or may be source) and says, "yes, your code scales to 256 threads, with the following data set, but no more than that"
Is there any research done in this area that anyone knows about?
Remove this comment
Remove this thread
close