THE SQL Server Blog Spot on the Web
This blog has moved! You can find this content at the following new location:
http://greglow.com/index.php/2008/02/25/linq-lessons-that-could-have-been-learned-from-languages-like-progress/
If you would like to receive an email when updates are made to this post, please register here
Subscribe to this post's comments using RSS
Progress was my first RDBMS, so SQL at first seemed upside-down to me!
FOR EACH table:
DISPLAY col1 col2 col3.
END.
... rather than SELECT col1, col2, col3 FROM table;
Enjoyed hearing about it again (it's still around, now called OpenEdge) but I agree it lost its simplicity & power trying to update to an Object-Oriented, GUI style. Still, it was (is?) VERY reliable.
Won't that be possible with LINQ for Entities?
Although it's not mentioned specifically, a Channel9 webcast on EDM/EF featuring Brian Beckman and Sam Drucker somehow led me to believe that would be possible.
Hi Ian,
Sort of but it's still very much an add-on rather than being fully baked into the language.
Regards,
Greg
Also, I should have mentioned that it only deals with the objects, not with the associated metadata.
>it's still very much an add-on rather than being fully baked into the language.
I remain somewhat perplexed by just what you mean by this. By definition LINQ is 'burned in'. This is the achievement that MS has accomplished. To imply that it's not fully baked in is like saying a woman is somewhat pregnant. It is or it isn't, you are or you are not:) Either a table/entity or projection can be represented as a variable or it cannot. That all these things 'can' be a variable of some type referenced in the language is the whole point of it no? Your use of 'add-on' seems to imply that LINQ is something external to the language much like an external 4GL like Progress. I don't think this can be further from the truth. In your interview with Pablo Castro he referred to Progress as an example of a language having 'direct line of sight from language to database'. Wasn't he struggling here to convey the idea to sql folks of the fundamentally different natures of the two? To bring the 4GL idea into contemporary languages one shouldn't expect they are going to be similar. And you seem to be implying that LINQ is not as 'natural' as Progress. How could it be? If you first have to define a query variable (table) you certainly can't expect to start your variable with a Select/Find. You define and then perform an action right? In t-sql 'Select @MyNumber' only makes sense if your first declare @MyNumber. Is LINQ any different? And in the sense that 'declare @MyNumber int' is burned into t-sql, isn't 'var customers = from c in db.Customers' burned into C#?
I do think sql folks should listen to your interview with Pablo. It is proving difficult for MS folks to convey just what they have done to those outside of net. What is worse, misunderstanding it or ignoring it? :) Shouldn't sql folks fully understand why MS thinks it's such an improvement over sql? So far I think either they don't or simply don't care.
Greg coming from a Progress background myself (and still working extensively with OpenEdge) I find the LINQ project really interesting.
What I find interesting about the LINQ extension to .NET is that the 3GL world is trying to simplify certain actions by applying 4GL principles (e.g. ForEach statements, etc) whilst at the same time those of us in the 4GL world are now moving towards 3GL style coding as well (using things like object orientation, etc).
I also understand what Alphatros means by SQL looking like it's on its head :) It's funny how different people perceive programming, it's almost a religious war.
Thanks for the post, I look forward to hearing more.
Gary