Apprendimento di C # in modo univoco [chiuso]

2

Le tecnologie Microsoft continuano a migliorare, ma lo fanno a scapito dell'aggiunta di un altro livello di astrazione ogni volta. Nelle fasi iniziali giocavamo con codice C # e procedure SQL per eseguire operazioni CRUD. Quindi i generici arrivarono con ADO.NET, DataSet, Entities. Successivamente, LINQ arrivò offrendo LINQ a SQL, a XML, a Entità, a Oggetti. Per ottenere più facile e più confuso, EF 4.1 è arrivato. C # continua a evolversi e aggiunge nuovi livelli di astrazione ancora e ancora.

Il risultato finale è che sono così confuso che non so quale sia quale e quando usare quale. Quando provo a seguire i libri, alcuni insegnano EF mentre alcuni sono bloccati con ADO.NET. Seriamente non ho la più pallida idea del perché ci siamo evoluti così tanto per la manipolazione dei dati

Per essere onesti, tutto quello che so è la sintassi C # e alcune cose di base. La manipolazione dei dati è fuori dalla finestra e lo sono anche le funzionalità avanzate.

  • C'è un modo unificato per imparare C #? Non voglio usare Entity Framework e LINQ quando non li capisco o cosa offrono. Voglio solo avere una comprensione approfondita dal Livello 0 al Livello 10.
  • Inoltre, sto pensando di imparare PHP contemporaneamente perché sento che imparare un altro linguaggio potrebbe aiutarmi a capire meglio C #. È questa la cosa giusta?
posta Pankaj Upadhyay 02.12.2011 - 07:52
fonte

6 risposte

3

Sei confuso? La situazione è molto peggiore nel mondo Java, dove ogni mese è in voga una struttura web diversa.

Il mio consiglio: non è necessario imparare C #, lo sai già. Al giorno d'oggi i datori di lavoro raramente cercano super competenze linguistiche. L'enfasi si è spostata verso gli strumenti e le strutture, verso l'"ecosistema" IT (MS o Java). Non preoccuparti di PHP.

Cerca di coprire l'intero stack di sviluppo dell'applicazione, interfaccia utente / lato server / database. A meno che non vivi negli Stati Uniti, consiglierei un approccio orizzontale: cerca di imparare molte cose, ma non troppo profondamente. Preparati "progetti" di 3 mesi e concentrati sempre su una cosa alla volta. Non correre, non farti prendere dal panico:)

Scegli prima le tecnologie più popolari, ciò che puoi vedere maggiormente negli annunci di lavoro. Ma non imparare nuove lingue (script / dinamico, funzionale) proprio ora, quelli possono aspettare qualche anno. Imparare nuove lingue è una miniera d'oro da un punto di vista professionale, purtroppo nel mercato del lavoro un solido portafoglio di strumenti / tecnologie è più importante.

    
risposta data 02.12.2011 - 11:16
fonte
3

Ecco il mio consiglio:

  • Impara LINQ - Linq è utile in molte situazioni e per scopi diversi.

  • Non impara EF in dettaglio finché non ne hai davvero bisogno. Certo, dovresti sapere a cosa serve, ma a meno che tu non abbia intenzione di creare una nuova applicazione di database con un gruppo di classi di modelli di dominio, non ne avrai bisogno.

  • Imparare il PHP sarà utile per capire meglio PHP, ma probabilmente non tanto C # (ma chissà cosa troverai lì). Ci sono altri linguaggi che potrebbero essere più adatti di PHP se vuoi vedere le cose da una prospettiva diversa - ti suggerisco di provare un linguaggio funzionale come Lisp, Scheme, Haskell, F # o un linguaggio tipizzato debole come Python.

risposta data 02.12.2011 - 08:07
fonte
2

EF, LINQ, ADO.NET ecc. sono tutti gli strumenti che utilizzerai in alcuni casi e li butto via in altri. Proprio come in una cassetta degli attrezzi di un artigiano, non troverai uno, ma dozzine di cacciaviti di diverse dimensioni e forme . Perché non usare un cacciavite per tutto? Perché non funziona in questo modo.

Questo significa anche che uno sviluppatore esperto deve avere familiarità con tutti questi strumenti . Significa anche che hai due approcci:

  • Inizia a imparare tutto in una volta,
  • Inizia a imparare qualcosa che capisci meglio, quindi impara a usare altri strumenti, ecc.

Sono abbastanza sicuro che la maggior parte degli sviluppatori preferirebbe il secondo approccio, ma credo anche che per alcuni il primo funzionerà meglio. Puoi anche mescolarli entrambi: vai a vedere di cosa parla EF mentre inizia ad imparare ADO.NET ad esempio. Dopotutto, prima di scegliere quello che capisci meglio, devi prima provarli tutti un po '.

Dopo aver appreso queste tecnologie per un po 'di tempo, sarai anche in grado di individuare quelle che ti saranno utili, personalmente . So che nel mio lavoro quotidiano non ho assolutamente bisogno di EF. Non perché è cattivo, ma solo perché il mio lavoro non lo richiede. Potrei quindi concentrare i miei sforzi di apprendimento su altre tecnologie che uso ogni giorno . Forse nel tuo lavoro quotidiano, EF sarà il tuo strumento preferito e non avrai mai bisogno di ADO.NET. Allo stesso modo, potrei avere un'idea di cosa sia Workflow Foundation (WF), mentre altri sviluppatori devono avere una profonda conoscenza di questa tecnologia se vogliono trovare un lavoro nel loro settore.

Also, I am thinking of learning PHP simultaneously. Because I feel learning some other language will might help me understand C# better. Is this the right thing?

Non lo farei. Soprattutto con PHP. Non vorrei nemmeno imparare C # e un linguaggio normale, come Python, allo stesso tempo: è probabile che farà più confusione che aiuto . F # potrebbe essere una scelta interessante se sei interessato a LINQ e come scrivere codice in un modo LINQy, ma ti consiglio comunque di posticipare l'apprendimento di F # fino a quando non conosci abbastanza C #.

Se questa particolare domanda ti interessa, puoi cercare altre domande su Programmers.SE, in particolare sull'apprendimento di più lingue contemporaneamente .

    
risposta data 02.12.2011 - 09:43
fonte
2

La tua domanda è piuttosto difficile da rispondere in dettaglio perché la risposta coprirà una lunga discussione sui molti punti che hai sollevato, ma cercherò di trattare qui i concetti fondamentali. Inizierò con:

Also, I am thinking of learning PHP simultaneously. Because I feel learning some other language will might help me understand C# better. Is this the right thing?

Beh, se sei una persona con un QI medio, è difficile imparare PHP e Microsoft Stack (C #, EF, LINQ, ADO), ... etc + diversi framework, ..., tutti insieme allo stesso tempo. L'affermazione di cui sopra è la mia opinione e ovviamente non è scientifica.

Quindi, in primo luogo, determina cosa vuoi fare con tutto questo. Stai costruendo un sistema per te stesso, vuoi un lavoro come sviluppatore professionista, ecc. Questo è molto importante.

Successivamente, presumo che dovresti iniziare concentrandoti su ONE technology stack (o event 1 tool).

Supponendo che tu vada con Microsoft, devi quindi scegliere un modello di applicazione (ad esempio Silverlight, WPF, ASP.NET o Windows Form). Anche questo è molto importante perché ognuna di queste tecnologie ha il proprio framework ed è necessario avere familiarità con altre tecnologie correlate al modello di applicazione selezionato (ad esempio, HTML è necessario per ASP.NET ma non per WPF).

Ora arriviamo alla parte del database. Scegli no-sql, solo XML o SQL RDBMS (come la maggior parte di essi)

Diciamo che vai con SQL RDBMS, hai ancora una combinazione di scelte da fare per quanto riguarda come accedere a questi dati dal tuo codice:

  • ADO.NET (con o senza LINQ)
  • EF con LINQ
  • Uso di un ORM di terze parti (non entrerò qui perché è un argomento molto lungo)

ADO.NET ha funzionato per i primi giorni di .NET e rappresenta una base importante per l'accesso ai dati, quindi l'apprendimento è importante.

Dici:

I don't want to use Entity Framework and LINQ when I don't understand them and what do they offer.

Se il tuo obiettivo è essere uno sviluppatore professionista con Microsoft Technologies, devi sapere LINQ (e ti suggerisco di aggiungere EF) in una certa misura anche se non li usi direttamente nel tuo progetto corrente. Conoscere queste tecnologie aprirà un mercato più ampio rispetto a conoscere solo ADO.NET.

" Alla conferenza degli sviluppatori professionali di Microsoft nel novembre 2009, il leggendario Don Box, un ingegnere distinto presso Microsoft, ha dichiarato: "Se sei un entità di sviluppo .NET La struttura è dove stiamo andando. Siamo lì. Sali a bordo, è ora. "

...

" L'Entity Framework di ADO.NET si è trasformato in diventare i dati principali di Microsoft piattaforma di accesso per la creazione di applicazioni .NET "- Dal libro: Programming Entity Framework di Julia Lerman.

L'EF con LINQ consente di programmare l'utilizzo degli oggetti business anziché la programmazione diretta sulle tabelle dati. Alcuni degli altri vantaggi sono elencati qui:

Funzionalità di Entity Framework

Nuove funzionalità in Entity Framework 4.0 (V2)

    
risposta data 02.12.2011 - 10:17
fonte
2

Il mio consiglio è che impari LINQ per 2 buoni motivi.

Sebbene LINQ sia solo uno strumento e non sia adatto a tutti gli scopi, è uno strumento molto potente con molte possibili applicazioni. Ovviamente è utile per l'accesso db LINQ to Entities di tipo EF, ma può anche fare cose carine come questa aggregazione di testo di file .

In secondo luogo, imparando LINQ ti esporrerai a molte delle nuove potenti funzionalità di C # e le estensioni del linguaggio .NET come le variabili implicite, i tipi anonimi, gli inizializzatori dell'oggetto, le espressioni Lambda, i delegati, le funzioni di prima classe, i generici, gli itteratori che usano rendimento e metodi di estensione. Molte delle funzionalità che hanno migliorato C # come linguaggio e .Net come piattaforma supportano direttamente o sono indirettamente coinvolte con LINQ. Se vuoi entrare in profondità in C # sarebbe la direzione sensata da prendere.

Il libro C # di Jon Skeet in profondità è eccellente e copre queste cose, anche se sicuramente non è il primo libro in C # che dovresti leggere (e probabilmente neanche il secondo)

    
risposta data 02.12.2011 - 10:37
fonte
0

Penso che se impari PHP in parallelo a C #, vedrai i valori comuni nei linguaggi di programmazione e questa è un'azione molto di supporto che puoi intraprendere. E quando inizi a studiare PHP noterai che ci sono anche molti framework. E tutte le tecniche che hai elencato sono alcuni strumenti che puoi usare nei tuoi progetti quando ne hai bisogno. Ma il ramo principale di una lingua e in generale cos'è un linguaggio di programmazione, è la tua conoscenza principale del mestiere, quindi rendilo più strong finché puoi.

Ad esempio, puoi provare a utilizzare nuove funzionalità del linguaggio C # come la programmazione funzionale, oggetti anonimi (forse li conosci già). Da lì puoi passare a linguaggi più dinamici come Javascript, Lisp ecc.

    
risposta data 02.12.2011 - 09:48
fonte

Leggi altre domande sui tag