Linq sta avendo un effetto soprannaturale sui programmatori .NET?

35

Molti di noi hanno iniziato a vedere questo fenomeno con jQuery circa un anno fa quando la gente ha iniziato a chiedere come fare cose assolutamente folli come recupera la stringa di query con jQuery . La differenza tra la libreria (jQuery) e la lingua (JavaScript) è apparentemente persa su molti programmatori e si traduce in un sacco di codice inappropriato e contorto che viene scritto dove è non necessario.

Forse è solo la mia immaginazione, ma giuro che sto iniziando a vedere un aumento del numero di domande in cui le persone stanno chiedendo di fare cose altrettanto folle con Linq, come trova gli intervalli in una matrice ordinata . Non riesco a capire quanto le estensioni Linq siano inadeguate per risolvere quel problema, ma ancora più importante il fatto che l'autore abbia appena assunto che la soluzione ideale avrebbe coinvolto Linq senza in realtà pensare su di esso (per quanto posso dire). Sembra che stiamo ripetendo la storia, allevando una nuova generazione di programmatori .NET che non riescono a capire la differenza tra il linguaggio (C # / VB.NET) e la libreria (Linq).

Che cosa è responsabile di questo fenomeno? È solo esagerazione? Tendenze della gazza? Linq ha acquisito una reputazione come forma di magia, in cui invece di scrivere effettivamente codice devi solo pronunciare la giusta formula? Sono appena soddisfatto di queste spiegazioni, ma non riesco a pensare a nient'altro.

Ancora più importante, è davvero un problema, e se sì, qual è il modo migliore per aiutare a illuminare queste persone?

    
posta Aaronaught 21.09.2010 - 19:42
fonte

8 risposte

51

È fondamentalmente perché la programmazione è fondamentalmente difficile. Richiede un sacco di pensiero logico e strutturato in un modo in cui molte persone non sanno come fare. (Oppure semplicemente non può fare, a seconda di chi ascolti.)

Roba come LINQ e jQuery rende alcune comuni attività di manipolazione dei dati molto più semplici. Questo è ottimo per quelli di noi che sanno quello che stiamo facendo, ma lo sfortunato effetto collaterale è che abbassa la barra. Rende più facile per le persone che non hanno idea di cosa stanno facendo per iniziare a scrivere codice e far funzionare le cose. E poi, quando si imbattono nella realtà e trovano qualcosa di fondamentalmente difficile che le loro tecniche semplici e di alto livello di astrazione non sono adatte, sono perse, perché non capiscono la piattaforma su cui è costruita la loro biblioteca.

La tua domanda è sulla strada giusta, ma proprio come la perenne polemica sui videogiochi violenti che "trasformano i bambini violenti", ha la direzione del collegamento all'indietro. Le facili tecniche di programmazione non rendono stupidi i programmatori; attirano solo persone stupide alla programmazione. E non c'è davvero molto che puoi fare a riguardo.

    
risposta data 21.09.2010 - 20:01
fonte
13

Per me è il nuovo fenomeno dei giocattoli. Viene fuori qualcosa di nuovo (LINQ) e ora tutti gli sviluppatori vogliono giocarci.

Vedono LINQ come un martello e ogni problema è un chiodo. A chi importa se è più semplice farlo in un altro modo? LINQ deve essere la risposta! Come quando tutti usavano XML per TUTTO! File di configurazione? XML. Memorizzare i dati? XML. Ecc ecc

    
risposta data 21.09.2010 - 20:03
fonte
10

Penso che LINQ offra davvero una buona opportunità in C # per risolvere i problemi usando un approccio più funzionale. Non dovremmo liquidare un nuovo stile di problem solving solo perché abbiamo già qualcosa che funziona.

Provenendo da un pesante background SQL, mi piace avere l'opzione di utilizzare la logica basata su set nel mio C # per descrivere meglio l'intento delle mie operazioni.

Detto questo; il contesto è re, e tutto può essere abusato.

    
risposta data 21.09.2010 - 20:25
fonte
2

LINQ e jQuery sono gli ultimi "giocattoli" e gli sviluppatori adorano mostrare come possono fare cose usando l'ultima cosa.

    
risposta data 21.09.2010 - 21:15
fonte
2

Se usi correttamente Linq e lo capisci, troverai tutti i tipi di nuove tecniche di programmazione all'avanguardia

Quindi, se pensi profondamente ai miglioramenti, sostengo che ti rende un programmatore migliore. Se un programmatore lo fa o no, non è colpa di Linq.

Lo stesso argomento può essere fatto per Object-Relational Mappers. Qualcuno scrive davvero query SQL raw sulle tabelle del database? :)

    
risposta data 21.09.2010 - 20:06
fonte
1

Alcune di queste pazzie sono perché le persone usano il martello sbagliato, altre perché stanno costruendo un super-martello davvero elegante, ma si sono imbattuti in un dettaglio strano che deve essere superato.

Ad esempio, se vedi una domanda sull'uso di linq per generare linq dinamico da usare contro linq non dinamico nove volte su dieci la persona è solo curiosa di sapere se è possibile, o abbaia dall'albero sbagliato, ma lì sono alcune cose che puoi risolvere in questo modo che sono difficili da risolvere in modo irragionevole.

Prendo questo tipo di domande in due parti:

  1. può essere fatto, e in tal caso come sarebbe
  2. dovrebbe essere fatto, esiste un rischio o un'alternativa migliore

Ho scoperto che li faccio quasi sempre in questo ordine. Risponde alla domanda e ti aiuta anche a trovare una spiegazione migliore per le potenziali alternative.

    
risposta data 21.09.2010 - 23:06
fonte
0

Non conosco alcun effetto paralizzante sulla mente degli sviluppatori, ma dai uno sguardo qui per l'effetto di strumenti / lingue incentrati sui tassi. Parla di abbassare la barra!

    
risposta data 03.05.2011 - 13:27
fonte
0

Sono d'accordo con Mason Wheeler. Tuttavia, non è del tutto matto cercare di risolvere link operando su una "sequenza". Il problema è che gli iteratori di Java e .Net non supportano tutte e 3 le operazioni: valore corrente, valore successivo e passaggio a successivo. Clojure può fare tutto il 3, e sospetto che in Clojure sia più facile farlo correttamente. Python ha anche delle co-routine, e voglio provarlo. link link

In effetti, se l'input è una sequenza infinita, come link , pigro è l'unico modo.

    
risposta data 26.06.2011 - 06:34
fonte

Leggi altre domande sui tag