C#'s greatest mistakes
Russel Winder
russel at russel.org.uk
Mon Nov 29 01:46:26 PST 2010
On Sun, 2010-11-28 at 15:57 -0500, Roman Ivanov wrote:
[ . . . ]
> AFAIK, LINQ is _not_ SQL embedded into C# or VB. It's a mechanism that
> allows C# to examine expressions (written in C#, as strange as they
> might look) and translate them to SQL (or whatever).
I have no idea how LINQ is realized but I know what happens in Groovy
(and Python).
> LINQ can take two forms.
>
> First:
> var query = from s in names
> where s.Length == 5
> orderby s
> select s.ToUpper();
>
> Second:
> var query = names.where(s => s.Length == 5)
> .orderby(s => s)
> .select(s => s.ToUpper());
>
> They are semantically identical, but I like the second syntax much more,
> because it uses existing language features, works with auto-completion
> and is much more readable in complex cases.
Actually I prefer the former exactly because it is not an attempt to do
a DSL by suffering the constraints of the language parser.
> To support something like that a language needs to have tools for
> introspection of its own code.
Yes, and this is why Groovy, Python, etc. are good at this sort of stuff
and C, C++, Fortran, D, Go, etc., are generally less good at it.
Basically this is one of the benefits of a full meta-object protocol.
Something you really don't want in performance code.
> > 2-Having such an compiler plugin architecture, will enable you f.i to
> > seamless use Go, Lisp whatever within D.
> >
> > 3-Even if these plugins (please note > more than one) are just for SQL,
> > you got database access for free.
>
> LINQ for databases is a bit overrated. Writing real SQL queries is often
> simpler. LINQ query generator does some optimizations, but it also
> screws up in some cases. LINQ to objects is a different story, because
> it allows for much nicer declarative syntax to do mapping and projections.
The experience in the Groovy/Java community is that using a DSL in
Groovy rather than faffing around with strings and SQL directly, makes
this a lot faster of production, with fewer bugs. This is anecdotal
evidence only though so it may just be a perception thing rather than a
real effect.
> > 4- I am using such an EBNF driven tool (almost written by me) to
> > translate SQL scripts. // Create a new db from firebird to mssql..
> > including stored procedures, triggers etc.
> >
> > So sorry Denis, I know what I am talking about.
> > Bjoern
>
--
Russel.
=============================================================================
Dr Russel Winder t: +44 20 7585 2200 voip: sip:russel.winder at ekiga.net
41 Buckmaster Road m: +44 7770 465 077 xmpp: russel at russel.org.uk
London SW11 1EN, UK w: www.russel.org.uk skype: russel_winder
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20101129/01bde4e0/attachment.pgp>
More information about the Digitalmars-d
mailing list