Vi un comentario / comentario donde decía algo, en relación con LINQ / lambda, en la línea de: "Escribe código legible para los humanos, en lugar de legible para tu computadora".
Creo que esta declaración tiene mucho mérito, sin embargo, considere al desarrollador (como yo) que ha pasado por toda la gama de lenguajes de desarrollo desde Assembly, procesales, OO, gestionados, aprovechando soluciones paralelas de tareas de alto rendimiento .
Me he enorgullecido de hacer que mi código sea lo más legible y reutilizable posible y de adoptar muchos de los principios del patrón de diseño de GOF para ofrecer sistemas y servicios de calidad de producción en una gran cantidad de sectores comerciales dispares.
La primera vez que me encontré con la expresión lambda pensé: "¡¿Qué demonios es eso ?!" Fue inmediatamente contra-intuitivo a mi sintaxis declarativa explícita familiar (y por lo tanto cómoda). ¡Los chicos menores de 5 años en el trabajo, sin embargo, lo lamieron como si fuera maná del cielo!
Esto se debe a que, durante años, pensar como una computadora (en sentido sintáctico) se tradujo muy fácilmente en sintaxis de codificación directa (independientemente del lenguaje). Cuando haya tenido esa mentalidad computacional durante alrededor de 20 años (más de 30 en mi caso), debe apreciar que el shock sintáctico inicial de la expresión lambda puede traducirse fácilmente en miedo y desconfianza.
¿Quizás el compañero de trabajo en el OP provenía de un entorno similar al mío (es decir, había estado en la cuadra varias veces) y era contra-intuitivo para ellos en ese momento? Mi pregunta es: ¿qué hiciste al respecto? ¿Intentó reeducar a su compañero para que comprenda los beneficios de la sintaxis en línea, o los ridiculizó / excluyó por no "estar con el programa"? El primero probablemente habría visto a su compañero de trabajo acercarse a su línea de pensamiento, el último probablemente los haría desconfiar aún más de la sintaxis de LINQ / lambda y exacerbar así la opinión negativa.
Por mi parte, tuve que reeducar mi propia forma de pensar (como Eric infiere anteriormente, no es un cambio mental insignificante, y tuve que programar en Miranda en los años 80, así que he tenido mi parte de experiencia en programación funcional) pero una vez que pasé por ese dolor, los beneficios fueron obvios pero, lo que es más importante, donde su uso se usó en exceso (es decir, por el simple hecho de usarlo), más complejo y repetitivo (considerando el principio DRY en ese caso).
Como alguien que no solo todavía escribe mucho código, sino que también tiene que revisar técnicamente mucho código, era imperativo que entendiera estos principios para poder revisar los artículos de manera imparcial, aconsejar dónde el uso de una expresión lambda puede ser más eficiente / legible, y también para que los desarrolladores consideren la legibilidad de expresiones lambda en línea altamente complejas (donde una llamada a un método, en esos casos, haría que el código sea más legible, mantenible y extensible).
Entonces, cuando alguien dice que "no tienen lambda?" o la sintaxis LINQ, en lugar de calificarlos como un ludito, intente ayudarlos a comprender los principios subyacentes. Después de todo, pueden tener antecedentes de "vieja escuela" como yo.