Sono un grande fan di Linux e ho ignorato .net, C # e visual basic a causa della loro relazione con Microsoft. Sono io che li rendo solo per la loro relazione?
C'è qualche vantaggio nell'apprenderli, quando sei principalmente un utente Linux?
Sono un grande fan di Linux e ho ignorato .net, C # e visual basic a causa della loro relazione con Microsoft. Sono io che li rendo solo per la loro relazione?
C'è qualche vantaggio nell'apprenderli, quando sei principalmente un utente Linux?
Sono completamente installabili su ambienti Linux usando il framework Mono che non è controllato da Microsoft. Direi che ignorarli perché ti piace Linux sarebbe un errore. Se non ti piacciono le lingue per altri motivi, come la sintassi o l'overhead della memoria o qualsiasi altra cosa, va bene, ma non li cancellerei perché sono basati sul lavoro svolto in Microsoft e parzialmente supportati da Microsoft.
Per quanto riguarda i vantaggi da usare, hanno un ricco ecosistema alle spalle anche attraverso Mono, quindi tutto dipende solo da ciò che si vuole fare. Voglio dire, se tutto ciò che fai sono le web app, allora RoR o PoD probabilmente ti andrebbero bene. Se vuoi dilettarti con un linguaggio a livello aziendale che ti permetta di usare la programmazione funzionale e combiniamo liberamente con un linguaggio ancora più funzionale che si integra pienamente con esso, allora Mono diventa un'interessante alternativa alla JVM o alla creazione di un'idra C ++. .NET e Mono sono stati progettati per utilizzare Common Language Interface, progettata fin dall'inizio con l'interazione linguistica in mente. La JVM potrebbe avere un vantaggio in termini di esecuzione in tutto il luogo (anche Smart Card) ma l'interoperabilità è stata meno "progettata". Per lo più sarà una questione di gusti o di uso forzato.
Sì. Impara loro.
Le lingue sono per i programmatori come i martelli per i carpentieri.
La stragrande maggioranza della mia esperienza professionale è stata LAMP dev, eppure la mia laurea si concentra su VB.NET - metà perché ho pensato che se lo pagassi comunque, potrei anche imparare qualcosa di nuovo, e metà perché l'alternativa era Java. ;)
Imparare queste lingue per me è stato come imparare a correre all'indietro. Ha cambiato il modo in cui concettualizzo i problemi programmatici (e le soluzioni programmatiche): contesto, astrazione, schemi. Per lo meno, le abilità (anche quelle che usi raramente) conferiscono sempre il valore dell'esperienza acquisita aggiungendole.
HTH:)
Ci sono alcuni motivi per cui potresti voler imparare .NET:
C # è un ottimo linguaggio.
C # viene mantenuto attivamente. Più attivamente di Java. Ha alcune caratteristiche interessanti, che aiutano molto ad essere produttivi.
Ci sono altre lingue che potresti imparare dalla curiosità, come F #.
Ci sono anche framework (ad esempio Windows Workflow) o librerie esterne (Reactive Extensions) che hanno approcci interessanti. Se sei curioso, guarda di che cosa trattano e prova ad estrarre da loro qualcosa che puoi usare in un ambiente più familiare, in linguaggi di programmazione, ecc.
ma anche alcuni motivi per non apprenderlo nel tuo caso:
Esistono già lingue molto usate dagli sviluppatori Linux. I problemi con quelle lingue sono noti, documentati e probabilmente risolti. Anche con Mono, i linguaggi .NET non sono molto usati sulla piattaforma Linux, quindi sii pronto ad affrontare i problemi che presto o poi non incontrerai mai prima (o incontrato, ma mai risolto o documentato).
Se stai cercando un lavoro come sviluppatore di LAMP PHP, ad esempio, sono abbastanza sicuro che le aziende ignorerebbero semplicemente la tua esperienza in C #. È una delle cose più stupide da fare quando si ingaggia uno sviluppatore, ma, purtroppo, anche uno dei più frequenti.
Suppongo che non userai Windows. Ciò significa che non utilizzerai Visual Studio. Usare l'ultima e la più grande versione di Visual Studio è un grande vantaggio: non solo si sta utilizzando un IDE molto ben fatto, ma si ha anche un facile accesso a una grande quantità di strumenti che rendono più produttivi: contratti di codice, codice statico analisi, metriche del codice, ecc. Manca tutto ciò che rende C # un po 'più "solo un altro linguaggio di programmazione".
Suppongo che ci siano lievi differenze tra il codice C # in esecuzione su Windows e un codice simile in esecuzione su Mono. Se è così, praticamente ogni parte di codice disponibile su Internet si rivolge a Windows, quindi danneggerà la tua produttività per scoprire costantemente che il codice trovato non funziona sulla tua macchina.
Avere familiarità con C # non può farti del male. L'esposizione con altre tecnologie ti consentirà di prendere decisioni migliori in futuro su ciò che sei bravo e su quale strumento è più adatto per il lavoro. Se decidi che non sono per te, va bene se stai prendendo una decisione istruita.
Per inciso, se conosci Java, avrai un buon feeling con le basi di C #. Tuttavia, ci sono cose che sono state aggiunte in .Net 3.0 / 4.0 che saranno diverse come LINQ e espressione lambda che lo distinguono.
Se preferisci Linux a Microsoft, entrare in .Net non è davvero una buona idea. .Net è fondamentalmente legato a Microsoft.
C # è un linguaggio abbastanza carino ed è vero che puoi usare Mono su Linux. Comunque non è esattamente un posto comodo per essere - Mono non è al 100% compatibile con Microsoft .Net e probabilmente non lo sarà mai. Ciò è dovuto alle minacce di brevetto, alle varie funzionalità specifiche di Windows e al fatto che anche se C # stesso è standardizzato da ECMA, la maggior parte del resto della piattaforma .Net non lo è. Inoltre, l'ecosistema Mono a sé stante è piccolo rispetto ad altri linguaggi open source.
Penso che sarebbe molto meglio guardare ai nuovi linguaggi JVM (Scala, Clojure, JRuby, Groovy sono probabilmente i più promettenti). Motivi:
vb.net è in uscita:
Bob Tabor: "Mentre ho iniziato con VB, non ho visto molti documenti / video / articoli / libri utilizzando VB per Win8 o altre tecnologie recenti. Sempre più mi sembra personalmente come C # sarebbe un buon investimento. "
C # è la strada da percorrere. Ma puoi sempre usare mono per c # su Linux.