Anders Hejlsberg on LINQ and Functional Programming
In this video interview, Anders Hejlsberg, the chief architect of C#, describes features in the next release of C#, code named Orcas. Anders first describes how LINQ solves the impedance mismatch between the code that lives on a database server and the code we write with standard programming languages such as C# or VB. He then outlines the new capabilities that functional programming will bring to developers.
Anders has been involved in several other big changes in programming style. He helped to create the modern IDE, helped bring object oriented programming to the main stream, helped establish visual programming, and with C# he helped move people to managed code. He is now involved in a similar evolutionary change in programming styles, as we learn to mix imperative and functional programming styles.
In this interview Anders explains, in terms that all programmers can understand, why LINQ and functional programming will change the way we develop applications. As Anders sometimes says, functional programming allows developers to describe what they want to do, rather than forcing them to describe how they want to do it. If you are interested in LINQ, lambdas, expression trees, deferred execution, composability, functional programming or concurrency, then you should watch this interview.
Comments
Anonymous
January 26, 2007
You've been kicked (a good thing) - Trackback from DotNetKicks.comAnonymous
January 26, 2007
Great video Charlie. Thank you so much for making it available for download too. Is there any chance that in future you'll be providing all your great interviews with stream or download viewing options?Anonymous
January 27, 2007
Mi viejo conocido Charlie Calvert (otro ex-Borlander) ha publicado en su blog otra entrevista a AndersAnonymous
January 27, 2007
Charlie, Great interview, txs! Also great is that introduction of yours, which tells in few words the story of the (professional) lives of many of us. http://geeks.ms/blogs/ohernandez/archive/2007/01/28/otra-gran-entrevista-a-anders.aspxAnonymous
January 27, 2007
Linq will be great, and especially welcome to those of us who have been using similar capabilities in Visual FoxPro since the early 1990s.Anonymous
January 28, 2007
If you haven't been bitten and infected by the LINQ bug yet, go see this video interview with AndersAnonymous
January 28, 2007
Great video Charlie. Anders' explanation about the loss of information that occurs when you "over specify" how to do something, as opposed to what you want to do, and the options that open up when you take a more declarative approach was awesome. He has a real gift for explaining things very simply and clearly. Thanks for bringing it to us.Anonymous
January 28, 2007
I think that (Anders Hejlsberg) want to CONJOIN all programming languages Ideas in one language, it's name (C#). Don't He? If this happend I think (Anders Hejlsberg) CONJOIN all programmers in one programming Language.Anonymous
January 29, 2007
what version of media player does this require as the video looks awful and if one trys to fast forward you lose the audioAnonymous
January 29, 2007
Great interview on a geat subject. Thanks folks!Anonymous
January 29, 2007
How much effort can one man go to to avoid using the word "Monad" ? Joking, joking ... The elephant under the carpet is indeed concurrency. Understanding Monads might just be a requisite part of reclaiming the lounge room. It would help greatly if people like Anders would at least attempt to explain where and how Monads fit in to Linq etc., instead of sweeping them under the carpet too. We now have two elephants under the carpet .... concurrency and Monads.Anonymous
January 29, 2007
How much effort can one man go to to avoid using the word "Monad" ? Joking, joking ... The elephant under the carpet is indeed concurrency. Understanding Monads might just be a requisite part of reclaiming the lounge room. It would help greatly if people like Anders would at least attempt to explain where and how Monads fit in to Linq etc., instead of sweeping them under the carpet too. We now have two elephants under the carpet .... concurrency and Monads. I have been researching options for this problem as well. Check out my open concurrency library at www.codeplex.com/pcr. It is composable, etc. Don't have lambas yet as no language support yet, but can do closures and predicates cleanly.Anonymous
January 30, 2007
I often hear that Reporting is a different beast. I think with LINQ that beast will go away.Anonymous
January 30, 2007
Learn C# Team Video's Interview with Anson Horton Interview with Karen Liu and DJ Park Luca Bolognese:Anonymous
January 30, 2007
someone have a text of this interview?Anonymous
January 31, 2007
I hope to see less large changes to C# because it should not ever be what C++ was specified. Do not try to include every programming language feature. It will make C# code as unmaintainable/expensive as C++.Anonymous
January 31, 2007
I am build a MDA system using C# and SQl 2005, this is the missing piece i need. When is the next CTP, or a roadmap on the release schedule.Anonymous
February 01, 2007
Welcome to the twentieth Community Convergence. I'm Charlie Calvert, the C# Community PM, and this isAnonymous
February 03, 2007
this guy is REALLY bas at explaining thingsAnonymous
February 04, 2007
El lunes pasado 3 ninios miembros de una de las 50 familias seleccionadas para probar Windows Vista apretaronAnonymous
February 05, 2007
Anders Hejlsberg on LINQ and Functional ProgrammingAnonymous
February 05, 2007
There are a number of powerful design concepts and constructs available in programming languages likeAnonymous
February 06, 2007
The unmaintainability of functional programming code (e.g., Lisp) is well known and is the primary reason why it should be avoided. C# should have a few stable years of minimal changes to let it mature. It would be more benefical to get a POSIX like standard for the generic parts of the .NET Framework (file IO, sockets, directory, date/time, timers, message passing, etc.) and then use that standard to build a thunk layer to replace Win32 with .NET framework only API calls. This would greatly allow .NET code to be multi-platform (xbox 360, pda, desktop, cell phone, etc.).Anonymous
February 07, 2007
The comment has been removedAnonymous
February 07, 2007
microsoft decided to remove my last comment, saying that the guy isnt very good at explaining thingsAnonymous
February 08, 2007
Well, that was a mind expanding experience.Anonymous
February 13, 2007
Great introduction for the LINQ (the new tool),I think in future as we move to higher level of abstractions it leads to requirement of more memory space. Specially in embedded world you do not have luxury of multicores and tons of memory. if you can add memory optimization feature in this tool this will be definitely helpful for embedded folks or you should provide APIs to use external memories like SD cards etc... Anyway from embedded programming point of view this may not be the right tool.Anonymous
February 14, 2007
Thanks for this great interview!Anonymous
February 14, 2007
The comment has been removedAnonymous
February 15, 2007
For those thinking that they are throwing too much stuff in C# you are missing the point. This is an attempt to keep things generic so they don't have to throw tons of stuff in it. And comparing this to DLL's and thunking and such is just so far off the mark it shows you are not coming close to understanding the issues in play.Anonymous
February 16, 2007
I agree; several of the changes being made are an attempt to provide powerful functionality which is missing from C#. This is being done currently without major changes at all to the MSIL.Anonymous
February 16, 2007
Wouldn't it have been much easier to work with the NHibernate team than to re-invent their software? I'd say the same about NAnt and NUnit. Your design is good, but now I have to go learn something new that, again, only applies to MS products.Anonymous
February 19, 2007
Great Show! LINQ is going to make development a whole lot easier.Anonymous
February 22, 2007
AAaaarrrghhhh. You guys just don't have any idea what you're doing to me! I DIG this stuff, and I WANT it - but now I have to go back to clunky old DALs and boiler-plate code. Or dig my way through a hundred web pages to try and work out which generator is going to do the stuff I want! Is Linq going to replace Stored procedures? I doubt it. But if it replaces 90% of the one-table CRUD stuff, bring it on! Oh, and thank you to the person at Microsoft who decided to PAY people to tell us about all this. There are other companies who get US to pay to be told!Anonymous
February 24, 2007
thanks, i appreciate c# team's efforts, c# is being teremendously developed we can not say no this won't make our knowledge mature but we have to keep up with the language powerfull features, i really fall in love with c# 2005, it's very RAD, very productive, we still want more support for mobility .... other platforms are waiting fot .net programmers too, linux is the most important one of these platformsAnonymous
February 25, 2007
Definition of LINQ: C# syntax wrapped around Yield Prolog. See: http://lambda-the-ultimate.org/node/1732Anonymous
February 25, 2007
I just can't seem to get enough of LINQ (Language Integrated Query) - if this is new to you, then it'sAnonymous
February 26, 2007
The comment has been removedAnonymous
February 27, 2007
Great Interview, LINQ is Great Stuff, but i wonder if this is not too difficult for mainstream (noob) programmers. So will it really be come a hype? It really is a shift of paradigm, a way of thinking, how to solve the riddle. For every day problems people will stick to solution strategies learned long ago. For me its a flashback, but then, my first programming language was lisp :) (On a MacIntosh!)Anonymous
February 28, 2007
The February CTP (aka as the March CTP) is now available for download as a regular install and as a virtualAnonymous
March 01, 2007
Community Convergence in a nutshell : The March CTP for Visual Studio, creating Art with LINQ, videosAnonymous
March 02, 2007
The comment has been removedAnonymous
March 05, 2007
The comment has been removedAnonymous
March 06, 2007
Great vid, looking forward to linqAnonymous
March 08, 2007
It is a good interview. Anders is a likable guy, but I think he stopped short of calling LINQ what it really is: Microsoft Embedded Lisp. Isn't is amazing how excited everyone's becoming over concepts that were developed in 1958, and have been in constant use since (but, unfortunately, not owned by Microsoft).Anonymous
March 09, 2007
Functional programming has existed far longer than C++. Why Microsoft keeps bringing somethings old but bragging they are "New Paradigms"? I have been using Scheme for a while and believe functional way of programming is not something like moving from C to C++ (OOD). It is a whole lot more difficult. First of all, can you write a program without ANY variables? If you feel comfortable with that, then there you go...Anonymous
March 09, 2007
The comment has been removedAnonymous
March 11, 2007
February/March Orcas CTP Now AvailableAnonymous
March 15, 2007
just an uneducated opinion from an individual with no formal training in programming who has have never worked a single day as a programmer for a company (other than at my kitchen table). Think about "Blade Runner" and the scene where Harrison Ford is using verbal commands to guide the futuristic photoimaging software program (pan left, zoom in 400 %, stop, pan right, etc). The real future of computer language development is aimed at end user's who are not programming geeks. For a Financial analyst/bean counter it might be as Anders suggests (with a little help from our geek computer friends): fetch these product annual revenue streams from the DB. Now apply these hypothetical direct costs for my "product objects" against them and give me as a 1 dim-array result set of contribution margin each yaer. Now for each result year, subtract these matching annual fixed overhead projections from this xml strore, then give me the MIRR from the resulting modified array of projected profit streams before income tax. My point is, to unleash the real power of programming language, you (programmers) place the ability to query and massage the data with detective (Blade Runner) or bean counter, or chemist or physicist or actuary.Anonymous
March 17, 2007
People usually thing that functional programming is very obtuse and only maths-types (like me!) find it comprehensible However, things are not always as they seem. Some years ago a colleague of mine did some stats on a computing MSc course that took students from a mix of science and arts/huanities background. As expecetd the arts studenst were not as good as the tech students at procedural programming and even worse at circuits, logic and electronics. However, counter to expectations the arts/humanities students did better at the functional programming than those with a science/engineering background ... it seems procedural thinking maybe somthing you learn as an engineer, but is not so natural.Anonymous
March 17, 2007
Please provide the Hejlsberg's LINQ approach on msdn2.microsoft.com as an article, if not more than the transcript of the video? And more articles on C# integrated functional programming. Best wishes, Petri V. Ticklén deixia.comAnonymous
March 19, 2007
"Some years ago a colleague of mine did some stats on a computing MSc course" Did your colleague publish the findings? If so, where can the general masses read about this study? (i.e. how it was formulated, demographic selection criteria...etc)Anonymous
March 23, 2007
Man, I could listen to Anders talk all day about programming. I'm really excited for LINQ to come out. I think it is the greatest advance in software development that we've seen in a while.Anonymous
March 23, 2007
This is quite an interesting idea, I will investigate Linq and see if it is as flexible and easy as he says.Anonymous
March 27, 2007
an opinion from one opinionated ... I disagree with the evolution and constant development of new "Languages" and "techniques". They are infact making lives harder, constantly trying to learn new technologies, configurations, integrations, best practices and LANGUAGES is a constant struggle and challenge. Don't "They" understand that after many years of a particular techniques, for example , Data Access (since is the subject at this point) creates a fully evolved understanding and technique, which many generations of programemrs understand, which in turn also has it's complimentary tools (Thet everyone knows about) which are developed for the ease and facilitiation of this well Oiled and understood technique. Then "They" bring out a new "Way" LINQ for example that some wll know, some will now, only after some more headache whhich achieves the status quo ... Although i do agree with developing the infrastructure, the platforms that will facilitiate stabilty of any application ... and minor evolutionary iterations on current practices that won't drasticall "Change the way we work./think?" I think any "Technology" being develoepd should ask itself, "Is this really required ?"Anonymous
March 28, 2007
Ex-Borlanders and current Microsofties Anders Hejlsberg and Charlie Calvert discuss LINQ and functional programming inAnonymous
March 29, 2007
The talk was good indeed. you seemed quiet amused by all those hand movements that Anders was doing. lolAnonymous
April 18, 2007
What will become of all the homeless database programmers?Anonymous
April 23, 2007
Hejlsberg videó a funkcionális programozásról Charlie Calvert blog: http://blogs.msdn.com/charlie/archiveAnonymous
April 30, 2007
I'm looking forward to using functional programming/linq in a select few very special cases for my projects. I am definitely not looking forward to living with linq code from other developers given the propensity of recent college graduates to force the use of a language feature, library or pattern into a project where it does not fit. That is not a new issue given that most of those mis-applications of new technologies/methods is resume driven development.Anonymous
May 07, 2007
I’ve been playing around a bit lately with computational genomics (I’m doing a project for my parallelAnonymous
May 09, 2007
The comment has been removedAnonymous
May 10, 2007
Well, Anders, it took you long enough. All the power has been there since the late 60s or early 70s pent up in isolated applications. I was wondering when you'd get to this and help us make everyday use of it, like you did with OO and Visual Programming. I did have the honor of shaking your hand and thanking you for that a few years back. Now it looks like you and your friends have done it again. Again, Thanks and Congratulations! :-)Anonymous
May 11, 2007
This is a great interview, for all newbies to the functional programming world and of course LINQ. I admire Anders Hejlsberg. Thanks Charlie Calvert for a very good interview on a difficult topic.Anonymous
May 11, 2007
I think it's a good idea of Microsoft. But, they need start to think about versioning, because everytime someone release a new version, for example, in the middle the last year Microsoft releases C#2.0, and now, there is a C# 3.0 (or C#4.0)...Anonymous
May 15, 2007
The comment has been removedAnonymous
June 19, 2007
The comment has been removedAnonymous
June 19, 2007
I'm trying to pull together lists of available C# videos. I'll be working on this list over time, butAnonymous
June 20, 2007
Is LINQ project still alive? Is it supported on the .net 3.0 and 3.5? Thank for your help ReinerAnonymous
June 20, 2007
How do I download linq? I have downloaded Bling and it says I need linq, but it is NOT obvious where this software is? thanks AdrianAnonymous
June 25, 2007
Two words: expression templates.Anonymous
June 29, 2007
This will be a great boost to the existing functionality!!! I'm sure it will be a hit Vishal KhannaAnonymous
July 05, 2007
The comment has been removedAnonymous
July 18, 2007
Very good video. Looking forward to the release. I hope that there will be an easy and cost-effective migration from previous releases.Anonymous
July 23, 2007
Great overview and a superb way of making the concepts understandable very quickly. I took a whole year of functional programming at university (ML) and all the lambda stuff and I didn't get half as much out of it as in this half hour. Thanks!Anonymous
July 24, 2007
In continuation to my post on Linq-TSQL I was drowing on web to know more about LINQ and how-to in relationAnonymous
August 02, 2007
The comment has been removedAnonymous
August 09, 2007
I would like to explore these concepts and put them to use before I comment on LINQ. But very good video, Thanks alot Jasmine, if ASP Programmers have trouble getting queries to work then they need more training.Anonymous
August 18, 2007
Hi This is Narayanan from chennai, i went through the document of XLinq, but how do i try that do i need to download. Currently i'm having Visual studio 2005, please guide me in this, because i wanted to learn this technology.Anonymous
August 30, 2007
Its great stuff. However, the interview portrays as if Anders Hejlsberg is inventor of O/R mapping and he started a perticular way and then came up with a break through in software technology. I am using Linq myself and its great stuff and please take it like a constructive criticism. Its not invented by Anders or Microsoft. Microsoft provided only one nice implementation of the concept already out there.Anonymous
September 26, 2007
Let me see if I've got this correct. We had a handful of simple commands. Through in code comments they became modules. These became functions. Now, sometime in the 80's, to add a gui to our apps, we're given a collection of thousands of functions. This became too much, so we abstracted it down to hundreds of functions. Now we've got a gui. In the data realm, we aggregrated data into a single form for our purpose. We then were told to aggregrate data in any form. So we created a bunch of new functions, err..modules, err...objects. Now a new layer of abstraction to eliminate some of the functions we've just finished writing. And perhaps a neat feature would be to simplify the syntax while we're at it. At some point, I'd like to finish my app. HAve it run for awhile and not have to scrap it for the sake of a new 'paradigm'. The app should at least be able to survive long enough to recoup it's development cost. I'd like to add new features to my app that my customers want not what IT dictates. And lastly, I'm tired of being told that my old shoes are brand new. Sorry, about the rant. This discussion is only the last straw. not the entire camelAnonymous
October 18, 2007
Some interesting news emerging from the Visual Studio and F# team appears that language appears to movingAnonymous
October 20, 2007
I am always amazed by how Anders explains new concept, deep but somehow easy to digest.Anonymous
October 20, 2007
The comment has been removedAnonymous
November 04, 2007
The comment has been removedAnonymous
November 04, 2007
A terrible loss for borland / codegearAnonymous
November 09, 2007
The comment has been removedAnonymous
November 19, 2007
I can't comment on LINQ yet I am only just about to review it, however I would like to comment on the growing cluttering of C# with needless new keywords. One of the benfits of C type languages is there commonality and small subset of keywords. Please stop cluttering it: anonymous methods, automatic properies, automatic constructors it will begin to look like COBOL. These keywords are just for lazy coding and I beleive save little time, keep the language clean and smallAnonymous
November 22, 2007
I am working with linq in SQL 2005, I need know if LINQ work with ORACLE??? Thanks.. Wilmer Garzón Bogotá, Colombia wgarzon@gmail.comAnonymous
November 22, 2007
Great interview.. it helps to clear some doubts that i have because I saw an online conference about the features of VS 2008 and talk about LINQ, but with this information is better. tksAnonymous
December 11, 2007
Thanks very mach. It's so helpfull to me.Merry Christmas, Best wishes to youAnonymous
December 13, 2007
The comment has been removedAnonymous
December 13, 2007
The comment has been removedAnonymous
December 16, 2007
何谓LINQ程序语言随着时间演进,一再沉淀经验与抽象后,以简练直观的语法解决具有共通特征的各式问题。VisualStudio2008(程序代码名称为Orcas)、C#3.0与VB.NET...Anonymous
January 05, 2008
In order to solve a complex problem, you need to stop thinking at the level that created the problem in the first place. You need to think at a level much higher. Acronyms, syntax, paradigms, frameworks... These are all illusions. The problem is, all too many of you spend your life in the matrix of these illusions. Try this paradigm: do more, do more fast, do more amazing, do more now, analyze. Let's allow the eccentrically brilliant low-level thinkers do what they do best, so we can increase our capacity, so 20% of our effort amounts to 80% of productivity. Or better yet, so that 1/1000 of our effort amounts to 99.99% of our productivity. Think of what would become of us if we could produce solutions to problems exponentially faster, with less manpower, without having to spend years learning the low-level implementations that get us nowhere in the long-run. Compound the efforts of a virtual community. The best inventions are merely improvements to those already exist. To the complainers -what did you do today?Anonymous
January 26, 2008
Very informative video indeed. Functional Programming / Declarative Programming Approach would certainly help developers focus on problem at hand better by offering abstraction & smart way to code. Looking fwd to using LINQ...Anonymous
February 01, 2008
Francesco Franconi - are you in Software or Marketing? I have never read anything so full of glib, cliche-ridden tripe in a while.Anonymous
February 05, 2008
great video!! it works on my 360 too.. is there an mp3 version available ?(as this is a purely audio-based interview)Anonymous
March 13, 2008
Is this available in an open format so we can actually watch the video?Anonymous
March 28, 2008
It's a bit rainy and snowy today in Redmond. What an excellent time to curl up by the fire and watchAnonymous
April 23, 2008
The complete programming community is just now getting sold on Object Oriented programming. How is a divergence to Functional programming going to be accepted. This is obviously the long term goal. Does it really work hand in hand with OO programming? I don't think that it really does. Do we all really want to be programming in a LISP like language 5 years from now.Anonymous
April 26, 2008
The comment has been removedAnonymous
April 29, 2008
The comment has been removedAnonymous
April 29, 2008
Wow, never realized how many programmers are Luddites.Anonymous
April 29, 2008
The comment has been removedAnonymous
May 01, 2008
It's too bad so much energy is consumed trying to whitewash the real issue of mismatch between the program domain and the data[base] domain. Someday this mismatch will be solved and these approaches will be recognized as a diversion. I would have preferred to see the .Net environment / c# support Domain Specific languages instead of overloading the language with more complexity and gee-whiz features. Support of DSL would allow me to chose which solution best solves the issue at hand.Anonymous
May 23, 2008
Wow, I never realized how programmers who sound so smart can be so dumb. Glad I didn't listen to the ones who thought Object Oriented Programming was a fad.Anonymous
June 28, 2008
This was a very good video and shows why Microsoft are market leaders. The only issue I have with LINQ is that all the programmers at my company are thick, hence if they upgraded to c# 3 then they would not allow me to use these features.Anonymous
July 10, 2008
.net merges the world of memory “non-management” and objects and pretty much solves a lot of rapid application development issues. Even data access is basically simple when done right in .net. Instead of creating applications, whole groups of highly paid developers spend time hiding proper language use with what can be described as a “.net Bean”. You then spend your time debugging the tool instead of getting any work done, or learning data access the way .net intended it. Which, by the way is pretty easy, if you ask me. Why programming managers get caught up in these things that eventually ruin the language with overhead evades me. You have programming hiring managers asking questions about linq instead of whether you can get a running application in the market. Dave CarlsonAnonymous
October 17, 2008
The comment has been removedAnonymous
October 25, 2008
The comment has been removedAnonymous
October 25, 2008
I apoplogize,but I did not record my phone number correctly. It is 336-202-2723. Email: gmnaquin@naquin.orgAnonymous
November 08, 2008
Thank you sooooo.........much for sharing this great vedio...Anonymous
January 09, 2009
I've played with LINQ and my initial reaction was very positive and it is fine for small pet projects, but I will never LINQ larger, scalabale, performance intensive applications. LINQ is designed for lazy and dumb developers who take shortcuts like wizards etc to write their SQL codes. You have to ask yourself, is SQL/ADO.Net really that hard to use?Anonymous
February 11, 2009
varma.bt, I would think the whole purpose is to market a new product as when you buy a new car with new gadgets...i.e. mp3, harddrive etc...And I hope that you agree ....for those who have to develop low-level complex tier solutions it is suggested to stick with the most robust product.Anonymous
February 17, 2009
The download link does not work.Anonymous
February 19, 2009
hi,today i want to download your linq videos but it does not work,can you mail me some docs ? thanks! my e-mail:wengyuli@gmail.comAnonymous
February 19, 2009
hi,today i want to download your linq videos but it does not work,can you mail me some docs ? thanks! my e-mail:wengyuli@gmail.comAnonymous
March 24, 2009
I have been using LINQ in my past three ASP.NET applications, and I can't believe that people are still using plain ol'ADO for their database calls. It has sped up my development tremendously. Keep up the great work!Anonymous
November 04, 2009
This Linq is all good and well if coding for design time but how would I set attribute information at runtime. How would I change the System.Data.Linq.Mapping.DatabaseAttribute at runtime for example? If anyone has some source code or suggestion email me at steve_44@inbox.comAnonymous
January 20, 2010
Looking back on this from 2010, I have to say all of the LINQ nay-sayers in this thread certainly have egg on their faces.Anonymous
December 10, 2010
I used to work with Charlie Calvert. We took a Maui vacation together once and my wife Mary Ann and I were really enamored with Charlie and his wife Margie. They are the best! I have also met Anders a few times and he is also a seriously cool guy and seriously smart. How great is it to be a nerd at this time in history?!?!?Anonymous
September 27, 2012
Nice interview.