Anders Hejlsberg, Herb Sutter, Erik Meijer, Brian Beckman: Software Composability and the Future of
- Posted: Jan 18, 2007 at 8:32 PM
- 96,553 Views
- 35 Comments
Loading User Information from Channel 9
Something went wrong getting user information from Channel 9
Loading User Information from MSDN
Something went wrong getting user information from MSDN
Loading Visual Studio Achievements
Something went wrong getting the Visual Studio Achievements
Right click “Save as…”
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
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?
It's one of the best I've been a part of... Re RoundTable: I'm not too fond of the quality it produces today and I think a camera works fine for this. Robert Hess will be innovating the RoundTable format. I want that to be his signature. I'll stick with OldSchool.
C
This kinda reminds me of some experients that were done on children of varying ages when asked "which of these two straws is taller". The children were individually sat down at a table with two identical straws (length, colour, etc). However, one of the straws was moved further away. The three year olds (I'm not actually sure of this age, but it'll do) always selected the straw furthest away. In other words, the problem was actually a mismatch between the experience of the questioner and answerer. The questioner's definition of "taller" was more refined than the child's. However, once those children had been shown what was actually meant by the question, they moved the straws next to each other, and (effectively) answered "they are both the same".
PS: Hey, I couldn't resist given Anders' little dig about Academics and functional programming...
REALLY good interview !
Sheva.
Agreed too.
THis video is very cool. The topics answer some good questions, although other stuff could have been answered there.
On the whole its a very good interview. (Now if we could have had the VB team there too (Amanda Silver and the others) it would have been even better.
I hope this gets repeated again, because its like a dream come true for alot of people including me, for all the lead devs in the languages discussing the future and the existing problems that devs face today and how to solve these.
I agree that Locks in threads are very limiting and this whole model must be gone and replaced with a new multi-threading sub-model, where things are faster without the problems surrounding locks.
Linq is I think the best thing that happened to .NET in quite a while, and its adoption in the .NET would make .NEt even more attractive. I am a big fan of Linq because it makes programming fun and more productive on the whole.
If we can only find a way to emplement a zero-tolerance policy on tampering with MSIL as it goes form dev machine to users machine to CLR, I would be a very happy .NET developer and I think alot of people who depend on .NET to develop would be happier too.
All I can say, keep the good stuff coming!
Onward!!!
Talking rain have been featured at C9 several times.
And sparkling water is the win anyways!
How many of you have experiene with functional programming? What do you think about the trend towards a comingling of imperative and functional?
C
One of your very best Charles.
Congratulations and thank you.
The trend is towards the CLIFF:
Composable Languages Imperative Functional Fussion (CLIFF)
I would have been more interested in a discussion about how Microsoft language developers intend to improve support for concurrency and transactional software in the next versions of their respective languages. Workflow Foundation looks like it has potential, but it would be great if there were better support for it in the languages and good examples of how it would actually be useful in real world application development scenarios.
Good discussion to watch nonetheless. One of the first in a long time I actually watched from beginning to end.
i just graduated from college and i remember studying lisp as a freshman and haskell as a junior ..together with the traditional ones(C/C++/java/assembly) .. didnt like functional programming that much, they seem unnatural to me and i didnt see why i had to learn them(especially lisp) but i enjoy seeing(and using) traces of them in python.
this video just brough back memories(painful ones about functional programming) ...
this was very educational
I say yes we need better concurrency abstractions for sure. But until then, we will still need tooling, static analysis, and runtime analysis to help me answer the following:
1) Do I really need a lock here? Might an interlocked or something else be better. Maybe no lock is even needed in some cases - why or why not?
2) How many times am I taking this lock? How hot is it? Am I needlessly taking it multiple times? Should I refactor with finer grain locking or would that just add more overhead? Tool should help me discover this easily and help me refactor.
3) Where am I at risk of dead-lock or live-lock?
4) We need a way to gaureentee a method (or property) is always called in a locked context. Likewise I may want a gaureentee a lock is not held when a certain method is called. A set of invariants could also have such compile and runtime debug checks. Attributes would seem reasonable here. This would seem easy for the computer to do for me, but hard to do manually as programs get complex.
5) Runtime collection performance analysis. Should I be using a linked list here or a List<T>. What would be the projected pros or cons using this or that?
6) Should I be using a closure here or a plain delegate and method. I should be able to know the cost easily.
7) Need easy dynamic code for user level changes to behavior:
RunThis(true,
delegate(string s)
{
x = x + 1; // may what dynamic change
}
);
Why is it so hard just to replace 1 line with something else at runtime? All I really want to do is allow user to plug-in "x = x +5". But today, they need to write and compile a dll, I need to figure out how to load the assembly and find right namespace and call a delegate and somehow get versioning correct, etc, etc. I may also want this in a sandbox, with certain things the user code and do and not do.
I think we're kind of late to the party on the sofware side though. The hardware is already here, and we don't know how to use it yet. We should've been better at predicting this "crisis" and moved to FP much sooner.
Very interesting video Charles! It really fills me with hope for the future.
I'm so thrilled you that enjoyed this! I know I did. You can bet that we will be talking with these innovators again. Consider this an introduction (teaser). When they are able to discuss specifics (of course they are not ready to disclose publicly at this time the amazing work they are doing today to make programming tomorrow a real treat for us all) you will be the first to know; right here on Channel 9!
Keep on coding,
C
Glad to hear it! The future is bright indeed. The folks in this interview are top of the line language innovators and they're doing some truly excellent things in their respective languages. Don't worry. Software advances will once again outpace hardware innovation
Just to add another. Ability to step thru anon delegates like normal code. It seems to jump around a bit spastic and highlight the whole block which feels wierd. Maybe just me and not know how to debug anon block right yet.
I have done programming in Haskell and i completely LOVE the functional way that languages are going!
Haskell put programming in a complete new light for me. I try to program in C# like I did in Haskell. Sometimes it's possible, sometimes it isn't. I'm always trying to see my code in a functional way: that makes me understand better (see the big picture) and describe better what I try to do!
I'm a big fan of functional programming, although I'm aware that not everything should be done in a functional way...
Just a thought. I am sure this is a vast oversimplification, I see many problems already.
In the video they point out several times that we really need to be able to statically verify what code has side effects, and what kind of effects, and what doesn't. That to me implies purely functional programming. So where's the mix?
I'd love a language like Haskell, but where some of the cool concepts are made a bit more accessible. Eric Meijer points out that while you can do everything they're talking about right now in Haskell, including side effects with static localization guarantees, it is a bit painful to use. I'm not sure that this is necessarily a bad thing (we do want people to use side effects sparingly right? So perhaps making it extremely explicit and verbose is a good way of discouraging its use)?
Anyway, my point is that this is not inherently something wrong with the Haskell way of doing things on a semantic level (purely functional by default, with ways of encapsulating effectful programming).
Take the ST monad for example, this gives you a way of using mutable states in pure functions (ensuring statically that no effects "leak out"). This is possible to do very much in the flavour of a library in Haskell, which is also the reason it's a bit clunky to use. Take the following Haskell code for example, which uses mutable variables (for no good reason) to add two numbers (and a couple of pure versions for comparisons below):
-- this defines an imperative function using mutable state
(btw, note the "but it looks like a dynamically typed language"-effect above, though it is all 100% strongly typed)
Now, clearly the first version is not as elegant as the following two versions. But there is no reason for why the language couldn't have a more convenient built in syntax for doing all this with a C-ish look and feel. The "assembly" like programming style that you must use to do mutable state in purely functional languages is syntactical. There is no reason for why a C-like version of the function above couldn't insert the "readSTRef" style commands automatically with some translation rules (I'm handwaving the details here).
I think a lot of really cool concepts in Haskell could be put in a language just the way they are now (i.e. without sacrificing purity) by just adding a bit of syntacic sugar. For example local mutable state (ST), transactional memory (STM) and IO (IO). The imperative bits of Haskell would thus get a little extra sugar and special translation rules to make it look more like C# or something, without losing the ability to guarantee that a function doesn't have side effects (and thus can be exectued safely on a separate thread if the runtime system decides that it would be apropriate).
What I'm saying is different from what's happening in C# 3.0 because they're taking some of the more superficial aspects of FP and plugging it into an impure imperative envirnoment, which while cool completely misses out on the main benefits of being pure (from a reasoning stand point).
What I'm proposing is the other way around. Start out with a functional language, and add features to make the encapsulation of imperative features within this language be just as convenient as in languages which are imperative at the core. This would seem to me to be the best strategy going forward because it errs on the side of "not losing your ability to reason about the program" which, as we heard in the video, is critical for the compiler and runtime system's ability to do smart stuff with our code (like running it on multiple CPUs). And as they learn more stuff they might make it easier to do imperative programming in this functional environment, but the critical philosophy is that you should start in the pure side of things, because there is no way to add purity later.
oh.. its possible to edit posts.. sheet...
Funcutional Languages learn and use 35 - 55 years old.
Natural Languages ... learned and used for at least thousands or 10s of thousands of years.
The downward trend in Java is interesting.
TIOBE Programming Community Index for January 2007 January Headline: Ruby declared TIOBE's Programming Language of 2006!
The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the world-wide availability of skilled engineers, courses and third party vendors. The popular search engines Google, MSN, and Yahoo! are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.
The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system. The definition of the TIOBE index can be found here.
Jan 2007
Jan 2006
Jan 2007
Jan 2006
Long term trends
The long term trends for the first 10 programming languages can be found in the line diagram below.
http://www.tiobe.com/tpci.htm
The long term trends for the first 10 programming languages can be found in the line diagram below.
[/quote]
What was it that happened in 2004?
A research project of compiling c# to javascript.
Leave any thoughts at the google groups
http://jsc.sourceforge.net/
C
We also get into all kinds of side issue like fifo and order of results. Sometimes you care, sometimes you don't. The service broker or port/queue model seem more likely to solve this problem cleanly, but is not API based. Plus tooling and diag are ~easy with that model as you have queues and can track work and see it flow. We know things like sql and service broker have this kind of thing near perfect or very close so how to factor that kind of thing into a language.
I've been playing with functional langauges, (mainly Lisp and Haskell), for about a year or two and have really been enjoing the new angle of looking at things. Some of these functional features that are now showing up in C# are some of my favorite features from other langauges that I always missed when I've used C++/C# in the past. I'm extremely happy to see them being added to C# and I'm really excited to see where the language will go in the coming years.
I am very much impressed with capabilities of functional programming as noted here. It is so good to see that aspects of functional programming migrate more mainstream making it evolve in such a nice direction.
Doei Erik
Remove this comment
Remove this thread
close