From a Microsoft employee in 2005:
C# 3.0: Lambda expressions. I don't like it that much....
http://blogs.msdn.com/b/abhinaba/archive/2005/09/17/469568.aspx
From 2008, regarding Jon Skeet's book's love for them, with reply by Skeet:
Lambda expressions: Dangerous Madness
http://bytes.com/topic/c-sharp/answers/829866-lambda-expressions-dangerous-madness
From 2010 on StackExchange, upvoted 33 times:
Does the usage of LINQ and Lambda Expressions lead to less readable code?
http://programmers.stackexchange.com/questions/24940/does-the-usage-of-linq-and-lambda-expressions-lead-to-less-readable-code
https://www.google.com/search?q=lambda+expressions+suck&oq=lambda+expressions+suck
http://www.google.com/trends/explore#q=Lambda%20Expressions
July 2007 is when it hit big, but seems to have hit India before the US, which doesn't spike until January 2008.
===================
The first one, from 2005, at one point says these gems:
Why I don't like lambda expression in C#
C# has originally developed from C++ /Java and is (was :^) ) a strongly typed object-oriented language. The new features being introduced like closure, continuation (yes, yes very limited continuation) in C#2.0 and now type inference, lambda expressions are de-generating the language. Even though there are people go gaga about
continuation and
lexical closures these are fundamentally functional language features and should be left to that. Introduction of bits and pieces of functional language features are not going to add value to C# and at the same time the surface area of C# is growing beyond what most developer can grasp.
Every language has a domain of application and an audience. Most people who work in C# developing web-services and web-based applications today are not necessary computer science grads. For them these concepts are a huge variation from the way C# used to behave. Functional programming is for the academia and not from the industry and should be left as such.
If I am asked, whether I'll use these language features, my answer will be maybe, and that is because the code written by me will be reviewed and maintained by people in MS who are fairly conversant with these. However, I think these features add burden to the learning curve of people who are not super interested in C# and should be avoided in favor of easier language constructs’ that might take couple of lines of code more, but would be more readable and maintainable.
These are just my opinions and I'm sure the designers of C# had given a lot of thought before adding them, but I strongly feel that these features are just adding more surface area to the language and will mostly go unused by the masses.
Some comments were like this:
"
I think your comments about keeping C# "easy" so the web monkeys can understand it are off base. That's why we have VB.NET.
Keep VB simple and leave C# to the real developers."
Joe Chung
6 Mar 2007 10:07 PM
#
I think it's funny how all these C# programmers like to look down on VB.NET programmers because they're Morts, but give them something that isn't absolutely trivial to understand, then all of the sudden they're becoming incredibly uncomfortable with the notion that they're just Morts that like curly braces.
Suck it up and learn how to use it. It's going to become part of C#. Or admit that you're just a Mort that likes curly braces.
Alexandre Grenier
27 Nov 2007 1:10 PM
#
Wow, this post is so old, yet still going!
My take is you can't just take one of the C# (1.0, 2.0, 3.0, etc) language feature and dice them up like this.
If you go beyond the vertical examination of the language as a computer scientist, and you apply those concepts horizontally as an architect or developer, you will see how the lattice is interwoven.
Pete, please don't give us the non academic and business semantics crap. Non academics are usually the ones writing the business efficient pragmatic code that makes it to production.
As for wasting business dollars on IT, blame the business men hiring the cheapest IT staff, not staffing an architect, and pushing through without a plan. The choice of language is hardly ever the cause of software project failures.
It's usually the business nerds coming up with arbitrary Gantt charts that screw things up before the first line of code is ever written. If you have a time and cost schedule before you have a team and a platform, your project is failed already.
Back to Lambda expression, they solve a very real need in both the business and development worlds, to express problems with the least possible syntactic pollution.
If the developer can't figure out the problem expressed in Lambda, then the only part they can figure out in an alternative syntax is that very syntax. The problem expressed will be obscured and even less understood by the developer. This goes back to the business nerds hiring idiots that code for cheaper.
Another good read: