Quale fornisce una base migliore per Java o .Net (C #, ASP.NET)? [chiuso]

-1

Non sto facendo questa domanda per avviare argomenti (le persone considerano spesso Java e .Net come religioni) ma che fornisce una base migliore e aiuta ad acquisire reali capacità di programmazione (di Computer Science e Sviluppo Web), ho lavorato con ASP .NET e C # ma la maggior parte del mio tempo spende trascinamento e rilascio Sono un programmatore C ++ e Drag and Drop mi irrita. Non ho provato Java, quindi voglio chiedere anche a Java. Famiglia di file (trascina e rilascia)?

    
posta Deadlocked_Thread 10.01.2011 - 06:24
fonte

5 risposte

15

Se tutto ciò che si ottiene da C # è che ci sono un sacco di strumenti di trascinamento della selezione, non si è arrivati molto lontano con la lingua. A dire il vero, a meno che non stavo facendo un'app winforms veloce o un'app veramente web brain-dead, non ricordo l'ultima volta che gli strumenti visivi hanno avuto un ruolo importante nel mio ciclo di sviluppo. Ma di solito scrivo il codice MVC di Asp.Net quando faccio roba web in C #, e nella maggior parte dei progetti reali che ho fatto ho trascorso più tempo a progettare il modello di oggetti che a occuparmi di problemi di interfaccia utente.

C # è molto più espressivo, come linguaggio, che Java. I costrutti funzionali come Linq (e le funzionalità che Linq richiedeva C # per offrire) e la convenienza di cose come i delegati (vs classi interne) e le proprietà automatiche sono davvero carini. Ma Java ha un ecosistema davvero avvincente di framework e pacchetti open source ben progettati, che in gran parte compensano il linguaggio scadente. Inoltre, occuparsi di librerie dipendenti con l'aiuto di strumenti come Maven o Ivy è molto più piacevole che in C #, almeno se si creano prodotti che si evolvono insieme ad altri set di strumenti. Recentemente, Microsoft è finalmente riuscita a rendere più razionale l'esperienza di gestione delle librerie nel processo di gestione della configurazione del software.

Rispetto a C #, Java richiede molto più codice standard che non fa molto per la leggibilità o la manutenzione, oltre al fatto che ognuno è abituato allo stesso livello di noia per ogni tipo di problema e nessuno lo trova sorprendente. Gli strumenti Code Gen sono almeno altrettanto comuni nello spazio Java come i visual designer sono in C # UI, ma il fatto è che, nell'ecosistema .Net, ho molti modi per evitare la necessità di usare quel tipo di strumenti visivi, mentre evitando tedio e code-gen in Java richiedono l'utilizzo di un altro linguaggio che funzioni nella JVM. Ma se vuoi distribuire il tuo codice su una macchina Linux o Mac, ti divertirai molto di più se lavori in Java, specialmente se passi alla realizzazione di qualcosa in WPF o Silverlight per l'interfaccia utente.

In Java, probabilmente trascorrerai più tempo a padroneggiare vari framework rispetto a quello che trascorrerai imparando la lingua, perché la lingua è davvero semplice e quasi minimalista. Le strutture spesso cercano tacitamente di aggirare i limiti della lingua. Non c'è niente di intrinsecamente male in questo, è solo una filosofia diversa. In C #, la convenienza e l'espressività del programmatore sono più apprezzate rispetto all'uniformità. C'è davvero qualcosa di molto confortante sulla rigidità di Java come linguaggio, specialmente se sei costretto a dare un senso al codice di qualcun altro. È possibile individuare le pratiche di codifica scadenti molto rapidamente. Nei linguaggi più espressivi, potresti dover dedicare più tempo a capire quali potrebbero essere gli effetti collaterali di una particolare scelta di sintassi.

Sono un fanatico della lingua, sia quando si parla di linguaggi di programmazione che di lingue naturali. Sono elettrizzato quando qualcuno mi lancia un progetto che trarrebbe beneficio da Ruby o Boo o Groovy o F # o qualsiasi altra cosa, perché posso sfruttare la fantastica espressività di quelle lingue. Non c'è niente di sbagliato nell'apprendimento di C # o Java, purché tu sia disposto a vedere le limitazioni che incontrerai lì onestamente, e specialmente se vai ed esplori altre opzioni al di fuori del mainstream di volta in volta.

Penso che sia meglio imparare entrambi, perché Java e C # sono un grosso problema nello sviluppo di applicazioni mainstream e faresti un disservizio a te stesso per non avere una buona comprensione di ciò che è là fuori. Ma non ingannare te stesso nel pensare che l'uno o l'altro ti renderà un programmatore migliore. Se stai confrontando Basic, PHP o Pascal con Java o C #, direi che stai meglio imparando Java o C #, ma non c'è una ragione particolarmente importante per il tuo sviluppo personale per decidere tra Java e C #.

Ma non esitare nemmeno dalle alternative. Lisp, Scala, Ocaml, Python, Ruby e anche cose come IO valgono la pena imparare.

Gli strumenti di trascinamento della selezione erano progettati principalmente in un'epoca in cui era davvero difficile costruire l'interfaccia utente. Era tedioso costruire un'interfaccia utente in C, C ++ o Pascal circa nel 1992. Strumenti come VB e Delphi rendevano questo meno doloroso. Quando è emerso .Net, era importante mantenere gli sviluppatori e i consulenti IT che Microsoft (e Borland) avevano avuto successo con l'aiuto di strumenti visivi. Ma ciò non significa che C # (o anche VB.Net) sia su trascinare e rilasciare. Questi sono solo aspetti dell'intero toolkit e, in realtà, non contano quasi quanto prima. L'era di "RAD" è passata per lo più, a favore della testabilità e della separazione delle preoccupazioni.

    
risposta data 10.01.2011 - 07:50
fonte
4

Ho programmato in entrambi. Sono entrambe buone capacità da avere e non direi che uno è intrinsecamente migliore dell'altro per sviluppare le tue abilità. Non hai davvero bisogno di scegliere, sarebbe bello se imparassi un po 'di entrambi. La loro sintassi è abbastanza simile e, per la maggior parte, quello che puoi fare in uno che puoi fare nell'altro.

Supponendo che devi sceglierne uno, qualcosa che potrebbe aiutarti a scegliere sarebbe il tipo di programmazione che vuoi fare quando inizi o dove potresti cercare un lavoro e scoprire quale area tende ad usare di più. Se andrai a scuola probabilmente ne avranno uno che si focalizzerà sull'altro.

    
risposta data 10.01.2011 - 07:07
fonte
1

La mia opinione è: scegli quella tecnologia in cui ti senti a tuo agio ma mal consigliato di studiare linguaggi come C / C ++ perché ciò ti aiuterà a creare i tuoi concetti in modo chiaro e sai poco più profondo di una persona C #

    
risposta data 10.01.2011 - 09:28
fonte
0

Sono con BitOff qui: entrambi sono buoni per sviluppare le tue abilità. Uno, tuttavia, è più incline a bloccarti nella linea di prodotti di un fornitore specifico. Anche con il progetto Mono, .NET è praticamente un ambiente Microsoft. Se non ti dispiace, usa l'ambiente .NET. È per molti versi un luogo più pulito rispetto al mondo JVM (anche se questo si sta lentamente ripulendo dal lato JVM). D'altra parte se non vuoi essere bloccato nel mondo di Microsoft e / o sei paranoico del presunto monopolio malvagio di Microsoft, potresti voler mantenere il lato JVM.

Personalmente, non faccio più roba Microsoft quindi se ho una scelta tra Java / JVM o C # /. NET, la scelta è chiara. La tua situazione e le tue esigenze saranno diverse e solo tu (e il tuo mercato del lavoro locale) puoi decidere.

    
risposta data 10.01.2011 - 07:23
fonte
0

Dici di chiederlo a causa della funzionalità di trascinamento della selezione in .NET che ti irrita ..

Durante lo sviluppo di moduli Web ASP.NET, è anche possibile scegliere di scrivere gli oggetti della GUI ASP direttamente nella vista codice HTML. Ho la vista codice impostata come predefinita in VisualStudio, quindi accedo alla vista grafica drag-and-drop solo in una rara occasione in cui voglio dare una rapida occhiata a come un cambiamento di design specifico potrebbe Assomiglia a.

Invece di trascinare un pulsante, puoi scrivere direttamente nel codice sorgente HTML:

<asp:Button runat="server" id="btnMyButton"
 Text="Click me!" onclick="btnMyButton_Click" />

Quindi nel codice C #, tutto ciò che devi fare è aggiungere il metodo del gestore:

protected void btnMyButton_Click(object sender, EventArgs e)
{
    // The onclick code goes here
}

In alternativa puoi connetterti manualmente all'evento nel codice C # (anziché onclick="btnMyButton_Click" nella dichiarazione del tag):

this.btnMyButton.Click += new System.EventHandler(this.btnMyButton_Click);

Questo di solito è fatto in Page_Init .

Se sviluppi qualcosa in WPF, hai anche la possibilità di non utilizzare il trascinamento inserendo il codice direttamente come tag.

    
risposta data 10.01.2011 - 13:05
fonte

Leggi altre domande sui tag