Quali sono i vantaggi di Ubuntu rispetto a Windows come ambiente di programmazione?


59

Perché scrivere un programma in file di testo o tramite il terminale è un'opzione migliore (come ho letto) rispetto all'utilizzo di IDE come Visual Studio su Windows? Esistono le funzionalità fornite da un IDE (es. Mostrare errori di compilazione) o è un processo manuale?


16
Alcune persone hanno programmato per molto tempo e sono diventati molto efficaci nel fare ciò che fanno da un prompt dei comandi basato sul testo. Potrebbero anche trovare editor vima loro piacimento. Questa è un'area molto soggettiva! Molte persone usano gli IDE su Linux, quindi stai combinando più cose qui.
Warren P

3
Credo che gli IDE non siano il punto principale della domanda. Esistono molti IDE per i sistemi operativi Linux. Ad esempio tutti gli IDE JetBrains (IntelliJ / PyCharm ecc.) Funzionano su Linux. Eclipse funziona su Linux. QtCreator funziona su Linux.
Bakuriu,

12
Questa domanda su questo sito soffrirà di errori di conferma .
zzzzBov,

5
Nel tentativo di mantenere la domanda libera dalla meta-discussione, ho aperto un argomento Meta separato per affrontarlo in modo specifico .
Oli

4
Si prega di riformulare questa domanda per avere più senso, in particolare il titolo. Ubuntu non ti obbliga a evitare gli IDE e ad attenersi agli editor di testo per lo sviluppo del software più di quanto non faccia Windows.
Reinier Post,

Risposte:


87

Questo tipo di ipotetico potrebbe fare di meglio su Programmers.SE perché probabilmente sarà piuttosto unilaterale qui. Detto questo, sono stato uno sviluppatore .NET per alcuni anni e ho iniziato a dipendere da Visual Studio. Fa molto per te e sì, mi piace particolarmente il debugger integrato ... Tuttavia, penso che ci siano alcuni motivi per cui le persone scelgono Linux:

  • Ubuntu è gratuito. Windows e VS possono essere estremamente costosi.

  • Ubuntu è gratuito . Windows e VS ti danno pochissimo controllo su come li usi.

  • Ubuntu è un ambiente di programmazione pronto all'uso. Strumenti come Bash, grep, sed, awk. Windows è storicamente un grosso dolore in fondo alla sceneggiatura. I file batch sono terribili e anche con PowerShell, l'esperienza della riga di comando in Windows impallidisce rispetto a Bash e agli strumenti GNU. Puoi portarne un po 'su Windows ma non è la stessa esperienza.

  • Le configurazioni complicate sono facili da automatizzare e replicare apt-get, strumenti come Puppet , Chef , Juju , Fabric e semplici script.

  • Alcune cose non hanno bisogno di IDE complicati. Sono uno sviluppatore Python in questi giorni e sono perfettamente soddisfatto dei suoi strumenti e debugger integrati. Uso un editor di testo, la riga di comando e la struttura ... E ho molto più controllo di quanto non fossi in .NET. Posso creare, testare, eseguire il commit e distribuire le mie webapp con un singolo comando Fabric.

    Questo non vuol dire che non ci sono IDE monolitici. Eclipse e Netbeans. MonoDevelop. KDevelop4 e QT Creator. Tutti hanno i loro utenti che giurano per loro.

Ubuntu è meglio per te ? Chissà. È un sistema molto capace e molto personalizzabile. Se gli dai la possibilità e modifichi il tuo flusso di lavoro per consentirti di aiutarti, dovresti essere in grado di farlo rimanere.


18
"Gratis" riguarda sia i costi che i problemi. Uso un Mac, ma uno strumento come Vagrant semplifica la configurazione di una VM Linux pulita per qualsiasi progetto e lo elimina al termine del progetto. "Cosa voglio?" è l'unica considerazione, non "ho una chiave di licenza per questo sistema operativo e come faccio a riconoscerla ...?"
Nathan Long,

14
+1 Per rimanere obiettivi quando così tante persone trovano facile avere un istante "Windoze succhia tutto".
Phil

2
Una cosa da notare, Visual Studio è più libero di quanto non fosse una volta, ha supportato i file MAKE per un po 'di tempo e i plug-in consentono di scrivere ed eseguire il debug delle applicazioni Cygwin interamente all'interno di Visual Studio.
Scott Chamberlain,

6
even PowerShell scripts lack the power of Bash- Direi che non conosci molto bene PS allora; è immensamente potente e non ho incontrato nulla che tu possa fare in Bash che non puoi fare in PS
Mark Henderson,

4
@MarkHenderson Sì, quasi sicuramente non lo usa abbastanza. È stato introdotto proprio mentre lasciavo Windows e .NET alle mie spalle. Penso che Bash (e per "Bash" intendo davvero GNU) abbia portato con me perché lo usi ovunque e per tutto . PS ha richiesto così tanto Googling ogni volta perché tutto era sempre sempre super specializzato. È onestamente difficile da dire dopo tanto tempo con Bash.
Oli

37

Vorrei aggiungere un motivo in più, però; Ubuntu è ideale per sperimentare nuove librerie, lingue, IDE e compilatori. Tutto è a portata di mano.

Quindi hai sentito parlare di un linguaggio stravagante chiamato Haskell :

sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!

Oh, hai sentito un editor di fantasia per Haskell:

sudo apt-get install <fancy-editor-for-haskell>

Lo stesso con le librerie C / C ++ , solo tu, apt-get installi binari e le intestazioni vanno nelle cartelle giuste e puoi semplicemente #includeinserirli nei tuoi file sorgente senza nemmeno bisogno di controllare dove sono posizionati!

In sostanza, non si tratta della velocità con cui è possibile configurare l'ambiente di lavoro quotidiano. Riguarda anche la rapidità con cui è possibile configurare un ambiente sperimentale. Credo che sia ciò che accelera l'esperienza di apprendimento sotto Linux.


36
apt-gete la mentalità secondo cui tutto deve essere installabile in questo modo, è forse la cosa migliore di Linux. Né OSX né Windows vengono confrontati qui.
Nathan Long,

11
Sì, ma bisogna prendere installazione di ogni applicazione manualmente: il fatto che usano la stessa all'interno di installazione non compra molto di (fa risparmiare loro qualche sforzo). Non è lo stesso di un gestore di pacchetti integrato.
Inutile

2
@NathanLong Ho fatto esattamente la stessa cosa usando Macports: sudo port install ghc. Appena compilato dalle fonti. The MacPorts Project currently distributes 17699 ports. Una differenza è che si compila sempre.
alecail

2
@karadeniz: E questo è per non parlare yum, pacman, emerge, petget, pkgadd...
Aesin

2
Mi piacciono i MacPorts (e mantengo un paio di pacchetti lì e su Homebrew), ma non è davvero paragonabile a Debian. Questi progetti più piccoli non hanno il potere personale di mantenere un grande repository allo stesso standard. Lo stesso vale per cygwin e coapp sul lato Windows. La differenza chiave è culturale, penso, i gestori di pacchetti linux fanno parte del sistema e sono usati per tutto da tutti, non sono un po 'trascurati di componenti aggiuntivi.
jcupitt,

20

Ecco un'opinione di uno sviluppatore principalmente di piattaforme Microsoft. Se non stai prendendo di mira l'ecosistema .NET, direi che la tua migliore opzione è Ubuntu. Avrai un tempo molto più semplice per ottenere, configurare e utilizzare strumenti per quasi ogni altra piattaforma / lingua se sei su Ubuntu invece che su Windows.

Il valore della toolchain di Microsoft è che è ALTAMENTE integrato. Dall'IDE al controllo del codice sorgente, alla gestione dei progetti, alla creazione, alla distribuzione, al database, all'infrastruttura cloud, alla nausea . Microsoft lo rende MOLTO facile se stai andando a pieno ritmo con la loro piattaforma.

Come alcuni hanno già detto, deviare da Microsoft Way può essere una seccatura. Usare .NET per il tuo codice e Oracle per il tuo database ... è un problema.

Vuoi creare un'applicazione Web .NET e distribuirla su Amazon Web Services ... non molto semplice.

Ma se rimani all'interno dell'ecosistema Microsoft ... quel bambino canterà come un uccello beffardo per te. Nelle mani di uno sviluppatore di software competente, la piattaforma Microsoft è come PED per un atleta di talento. Non consentirà a un programmatore dilettante di creare il prossimo Facebook. Ma darà un vantaggio a uno sviluppatore di talento che capisce come i pezzi si incastrano.

L'argomento per il costo gratuito (come nella birra) di iniziare con Ubuntu è fuori dalla porta, ci sono una serie di programmi offerti da Microsoft che ti consentono di iniziare con i loro strumenti gratuitamente. Incluso Bizspark che offre alla tua startup 3 anni di licenze (comprese le licenze d'uso della produzione dei loro strumenti). E la scintilla del sogno che lo dà agli studenti gratuitamente.

Detto questo, se vuoi esplorare e imparare nuove lingue e piattaforme, troverai strumenti migliori per iniziare su Ubuntu e se stai cercando lavoro al di fuori dell'ecosistema Microsoft, dovrai avere familiarità con Ubuntu.


7
Sì, sono d'accordo. Dopo aver scritto per un po 'di codice C / Unix di basso livello in un ambiente Linux, ho deciso di prendermi una pausa e fare un po' di sviluppo della grafica C #, accendere il nuovo VS e, beh, è ​​stato liberatorio, per non dire altro. Non è così flessibile ma sicuramente rende le cose più facili se non ti dispiace vendere la tua anima a Micr .. Voglio dire, espandere i tuoi orizzonti!
Thomas,

3
Sì +1 per un antidoto di benvenuto al cecchino anti-MS mezzo informato.
Alan B,

15

Io uso entrambi gli strumenti, IDE e text-editor con C ommand- L ine I nterface (soffietto indicato come CLI ), ai programmi di scrittura.

Ciò che Linux offre è un'interfaccia della riga di comando utile a partire dall'installazione predefinita. Se non ne hai bisogno e stai comunque usando un IDE, allora non c'è più molta differenza (IMHO).

IDE

  • Gli IDE sono molto utili quando si tratta di integrare molte funzionalità e presentarle in una GUI grafica.
  • Il rovescio della medaglia è che può sopraffare qualcuno di nuovo in questo. Ora avrai due cose da imparare: l'IDE e il linguaggio di programmazione.

Editor di testo e strumenti CLI

  • Gli editor di testo e gli strumenti della CLI non richiedono molto tempo per imparare.
  • Se qualcosa non funziona, è facile vedere quale strumento non funziona come previsto.
  • È anche più facile cercare problemi con Google poiché tutto è basato sul testo.
  • La programmazione con editor di testo e strumenti CLI è più rapida e reattiva, soprattutto confrontandoli su hardware meno recente.
  • Puoi lavorare con loro anche su schermi a bassa risoluzione.
  • Ti consente di programmare ed eseguire il debug con risorse minime su un server remoto.

Faccio spesso la mia prototipazione con strumenti testuali. Più tardi, quando ci sono più file da gestire, apprezzo gli strumenti di refactoring offerti da un IDE.


8
Per riferimento futuro, CLI è un'abbreviazione per l'interfaccia della riga di comando. La CLI si riferisce in genere a un'interfaccia come aptitude che è simile a una GUI, ma nel testo. Vim sarebbe un editor CLI, ma grepnon sarebbe CLI, non ha un'interfaccia (sarebbe solo uno strumento da riga di comando)
kiri,

La disambiguazione è buona. Proveniente da un background di programmazione Windows, l'interfaccia della riga di comando potrebbe essere l'acronimo di Common Language Infrastructure .
jltrem,

Uso una GUI per sviluppare GUI e un editor di testo per sviluppare CLI o programmi / contenuti basati su testo. Non proverei mai a scrivere un'applicazione business pesante per la GUI in Vim, Visual C # rende la prototipazione di queste cose senza sforzo. Allo stesso modo, non farei mai sviluppo web (PHP / HTML / CSS / JS ecc.) In un IDE su Windows, perché farlo in Vim sul mio server web è infinitamente più efficiente e conveniente.
Dan,

@ minerz029 CLI è un programma in stile grep (un comando [linea] alla volta). Stai pensando a "applicazioni console", che è aptitude / vim-style.
Izkata,

4
@ minerz029 L'interfaccia per grepsono gli argomenti, stdin e stdout: la parola non implica nulla di grafico o pseudo-grafico. Altri tipi di interfacce includono API Web, protocolli seriali e così via.
Izkata,

12

Lancio la mia risposta sul ring (anche se credo che anche questi siano tutti buoni).

La risposta più semplice che puoi ottenere è che si tratta di filosofia.


Nel mondo Microsoft, è un po 'religioso - Hai gli dei sul Monte. Redmond, che deve presentare una petizione se si desidera implementare qualcosa. A volte ascolteranno, altre volte i tuoi sacrifici e le tue richieste cadranno inascoltati. Forse erano fuori a caccia. Microsoft controlla l'intero ecosistema: possiede il sistema operativo, possiede l'IDE e li accoppia in modi probabilmente inappropriati di cui parlare su una rete SE. Anche all'interno dei pezzi IDE sono strettamente accoppiati - può essere chiamato integratoma penso che l'accoppiamento sia più preciso. Se desideri cambiare un po 'le cose, Gates ti proibisce di voler modificare qualcosa in un modo che né i progettisti di Windows o Visual Studio non hanno espressamente consentito. E poi aggiungi tecnologie come IE, IIS, server Microsoft e MS SQL Server e Office ... e tutto è una bella famiglia felice. Ma se dovessi lasciare una parte della famiglia alle spalle? brivido !


D'altra parte, hai Linux, che eredita dalla filosofia Unix che ogni pezzo dovrebbe essere responsabile della propria piccola sfera di responsabilità. Dovrebbe fare una cosa e farlo bene. E preferibilmente, la comunicazione dovrebbe avvenire tramite stringhe di testo. Come altri hanno fatto notare, sed, awk, grep, ecc, sono perfetti esempi di questo. Fanno l' unica cosa per cui sono progettati e lo fanno molto bene. Se devi fare due cose, allora combini i due strumenti. Che è molto facile da fare.

Poiché sednon si aspetta nulla oltre l'ingresso in ingresso sarà il testo, ciò significa che tutto ciò che può produrre testo non deve reinventare la ruota. Possono semplicemente usare sed. E poiché sedproduce testo, tutto ciò che può leggere il testo può usare l'output di sed. Il testo è molto universale (ci sono alcune eccezioni a questo), ed è molto facile combinare questi tipi di cose insieme.

Non solo è facile combinarli, ma è anche molto facile dividerli a parte: se decido che non ho più bisogno di modificare uno stream, ma voglio filtrare i risultati, piuttosto che passare il mio testo a sed, posso passare a grepposto.

Ora, questa è la filosofia fondamentale alla base dello sviluppo in un ambiente Linux - quindi anche se si sale da lì, molti strumenti forniscono tipi simili di interfacce. Consentono di scomporli in parti o di interfacciarsi con essi tramite la riga di comando o le porte o HTTP.

E anche se non fosse così, hai anche un software open source. La maggior parte (se non tutti) dei software sulla piattaforma Linux è open source. Quindi, se non ti piace come è scritto, sei completamente, totalmente, assolutamente in grado di cambiare tu stesso il software. Questo è incredibilmente potente. Non riesci a separare quell'IDE nel modo in cui vuoi? Apportare le modifiche e inviarle nuovamente a monte o fork del progetto. Non sei sicuro del perché qualcosa si comporti in questo modo? Usa la fonte, Luke! Devi essere in grado di automatizzare qualcosa attraverso la riga di comando? Attacca il progetto e attacca le tue modifiche. Hai riscontrato un bug o un problema di sicurezza? Ehi indovina un po ': puoi risolverlo da solo, non devi aspettare che SP3.432vb89234.startdate1eQ esca.

Puoi combinare gli strumenti che desideri e di cui hai bisogno. E se c'è qualcosa che ti ostacola, sei al 100% in grado di farlo cambiare. Anche se non hai la possibilità, potresti sicuramente pagare qualcuno per sviluppare quel cambiamento - o persino suggerirlo a qualcun altro che ha il know-how.

Il motivo per cui questo è meglio per la programmazione è perché quando si incontra attrito , è possibile eliminarlo dal flusso di lavoro. Poiché lo sviluppo è difficile, ci sono molte cose a cui devi pensare per essere un programmatore di successo, e più devi pensare a più è difficile pensare ad altre cose .

Eliminare l'attrito è la chiave.

Quindi, se la religione dell'ecosistema Microsoft è dove ti senti a casa, e ti piacciono così tanto gli strumenti che non ti danno molto / nessun attrito ... beh, allora probabilmente va bene.

Ma se non si adatta a Microsoft Mold (tm), in attesa di brevetto, si verificherà un attrito. Lo sviluppo sarà un dolore. Ogni volta che desideri di poter fare qualcosa, ma non puoi, questo drenerà preziose risorse cognitive. E se è così, allora un ambiente di sviluppo Linux è probabilmente per te.


1
Mi sono davvero piaciuti i saggi che hai collegato, grazie.
Gareth Davidson,

3
Lodate Balmer e che tutti i suoi bit di parità siano impostati correttamente. ACK. ACK. ACK.
Warren P

9

Vorrei fornire i miei pensieri più generali alla domanda:

"Perché Linux è un ambiente migliore per la programmazione?"

Penso che il motivo più importante per cui sviluppare su Linux sia perché hai una visione completa della maggior parte dei software interni. Sei in grado di imparare come funzionano effettivamente le cose se sei interessato. Ciò ti consente di apprendere e adattare le buone o le cattive pratiche vedendole in azione. Ciò consente una maggiore diversità per le tue idee.


2
Buon punto. L'open source è un vantaggio naturale per tutti gli sviluppatori che hanno qualsiasi tipo di curiosità. Su Windows, sono le tartarughe fino in fondo!
Warren P,

È un buon punto. Hai un'idea degli interni di un software qui
Anwar,

Molti sviluppatori Windows lavoreranno per tutta la vita lavorativa sulla piattaforma Windows, programmando contro un'API che non vedranno mai dall'altra parte. Una specie di prigione per la mente, non credi?
Warren P

@WarrenP Se un'API è correttamente documentata, non ne imparerai di più guardando il codice sorgente. (Anche se ammetto che molte API non sono completamente documentate, in entrambi i mondi.)
svick

8

Perché Linux è meglio per la programmazione

IDE

Oltre a Visual Studio e Xcode, che servono a scopi specifici, gli IDE più popolari sono multipiattaforma. Potrebbe sembrare che ci siano gazillion di IDE per dozzine di lingue, ma alla fine la maggior parte di essi si basa su Eclipse , IntelliJ IDEA o NetBeans . Quello che hanno in comune è che sono tutti basati su Java. Java funziona in modo più efficiente su Linux, rispetto a qualsiasi altro sistema operativo sullo stesso hardware. In effetti, Java è più veloce del 20% su Linux, rispetto a OS X sullo stesso hardware. Molti di questi IDE sono pronti per l'installazione con un clic in Ubuntu Software Center.

Compiler

GCC è diventato molto lo standard del settore. Al di là di ogni dubbio, la sua piattaforma principale è Linux, dove è meglio supportato. Ed è gratuito e privo di royalty.

Strumenti aggiuntivi

Linux fornisce strumenti unici, non disponibili su altre piattaforme, come ad esempio Valgrind (uno strumento per il debug della memoria, il rilevamento delle perdite di memoria e la creazione di profili). Linux include anche strumenti di debug come strace e ltrace , che possono essere usati per eseguire il debug anche del codice di produzione (cioè non compilato con simboli di debug). Strumenti equivalenti per Windows sono inesistenti o molto costosi e non offrono la stessa funzionalità.

Facilità di installazione di OSS

Ubuntu ha un eccellente gestore di pacchetti. Nella maggior parte dei casi l'installazione del software è semplicissima apt-get install package-name(puoi farlo anche con la GUI, Ubuntu Software Center o Synaptic). Una volta installati, vengono automaticamente aggiornati dal sistema con le versioni bugfix. Il sistema di pacchetti inoltre tiene automaticamente traccia delle dipendenze, quindi non devi preoccuparti di altri pacchetti necessari; saranno installati automaticamente.

D'altra parte, in Windows devi scaricare e installare manualmente i pacchetti e se richiedono altri pacchetti, devi farlo anche manualmente. Non esiste neanche un aggiornamento a livello di sistema, ogni pacchetto software implementa il proprio fastidioso programma di aggiornamento o non si aggiorna affatto.

È probabile che le macchine di produzione siano Linux

Se stai facendo qualsiasi tipo di programmazione per back-end, web, cloud, ecc. È molto probabile che le tue macchine target siano Linux. Ci sono molte meno brutte sorprese quando stai sviluppando sullo stesso tipo di sistema operativo del tuo computer di destinazione.

Ovviamente, potresti sviluppare un'applicazione desktop per Windows, ma al giorno d'oggi questo è un mercato di nicchia per i programmatori.


Le app desktop per Windows sono un mercato di nicchia? Wha?
Alan B,

2
@AlanB: No, i programmatori di app desktop Windows sono di nicchia. Si stima che il 90-95% dei programmatori stia svolgendo uno sviluppo interno e per lo più non si tratta di app desktop. Inoltre, pensaci, quando è stata l'ultima volta che hai acquistato (come in denaro reale pagato) un'applicazione Windows, che non era un gioco (né un prodotto Adobe del resto)?
vartec,

Per quanto posso vedere quasi tutto nello spazio aziendale è ancora decisamente basato su desktop e pagato, nonostante le aziende incentrate sul cloud sostengano continuamente il contrario.
Alan B,

4
@AlanB: di nuovo, non sto parlando del mercato degli utenti finali. Sto parlando del mercato del lavoro per i programmatori . Ad esempio, una delle applicazioni di cui stai parlando è MS Office. Eppure tutto il team di Office in MS è solo circa 2.500 programmatori e molti di loro non stanno nemmeno lavorando alla versione desktop.
vartec,

7

Perché scrivere un programma in file di testo o tramite il terminale è un'opzione migliore (come ho letto) rispetto all'utilizzo di IDE come Visual Studio su Windows?

No, posso dire che è esattamente il contrario. In genere, tuttavia, le persone tendono a preferire gli strumenti in cui sono più abili. Il tipo di strumenti che usi potrebbe favorire la facilità di scrittura dei programmi. Quindi, per esempio, posso scrivere programmi Java bene con VIM, ma è davvero controproducente rispetto a un IDE completo come Eclipse o IntelliJ. Jon Skeet ha dato un'ottima risposta alla domanda Perché usare un IDE .

Tornando alla tua domanda originale, l'unica cosa migliore di Linux è la programmazione C. Tutto quello che puoi fare su Linux lo puoi fare anche su Windows e viceversa (per quanto riguarda la programmazione). La programmazione in C è migliore su Linux per ragioni storiche, offre un grande set di strumenti (che puoi ottenere su Windows BTW ma è molto più facile configurare Linux per questo). Allo stesso modo, se stai scrivendo C # e come .NET, Windows è una scelta migliore per ovvi motivi. Tutto il resto è completamente soggettivo e sentirai pro e contro di entrambe le parti.


5
Per favore, prova a impostare un ambiente <mettere un altro linguaggio di programmazione tranne MS qui> in Windows, vediamo quanto va lontano.
Braiam,

1
@Braiam l'ho fatto, Java: P.
Daniel,

6
Linux è migliore per eseguire qualsiasi cosa simile a Unix. La toolchain GCC (che include un compilatore C e C ++ e altre cose) ha una lunga tradizione Unix / Posix. Ma, se pensi che tutta la programmazione simile a Unix sia una programmazione in C, sei tristemente sottoesposta alla ricca diversità del patrimonio e degli strumenti di Unix / Posix / Linux.
Warren P,

2
Java è un po 'un caso speciale in quanto si generano rapidamente cartelle e molti file profondamente nidificati. E non appena rinominate classi o pacchetti, dovete sincronizzare rispettivamente i nomi dei file o le cartelle. Fun fun fun :)
MadMike,

1
Non so se Linux e l'interfaccia della riga di comando siano necessariamente migliori per la programmazione in C (VS è eccezionale in C ++ ma manca il supporto per C99, Posix potrebbe essere un po 'più pulito di Win32). Ma apt-getè fantastico quando si tratta di sviluppo C. È possibile ottenere rapidamente strumenti, librerie e simboli di debug per esempio sudo apt-get install libcurl4-openssl-dev, sudo apt-get install valgrind, sudo apt-get install libz-dbge provare cose fuori facilmente.
Alex Jasmin,

6

Quali strumenti (editor di testo o IDE) utilizzi per la programmazione sono una questione di scelta. In generale, puoi dire: principianti e progetti molto piccoli tendono a utilizzare editor di testo migliori, come testo sublime o una versione modificata di gedit. Solo perché impari di più quando usi gli editor di testo semplice. Gli IDE possono rovinare il processo di apprendimento automatizzando le cose (come fa Visual Studio;)).

Quando si tratta di professionisti, si scherza con molti strumenti e lingue, gli IDE sono utili, perché possono fare molto di più per te, se glielo permetti. Esistono molti IDE tra cui scegliere, a seconda della lingua in cui si desidera programmare. Ce ne sono di migliori e anche meno convenienti.

La mia esperienza personale è che un sistema operativo Ubuntu è di gran lunga più veloce e più facile da installare per lo sviluppo rispetto a Windows. Presumo che ciò sia dovuto al fatto che la maggior parte degli strumenti e dei programmi che utilizzo sono basati su Linux e perché non devo cercare su Internet i collegamenti per il download dei miei programmi preferiti. È solo un 'apt-get install program1 program2 program3' di distanza. In confronto: ho bisogno di 3 giorni lavorativi per installare e configurare una nuova installazione di Windows con tutto ciò di cui ho bisogno per la programmazione (azienda, non privata, che sarebbe più veloce), ma è solo un giorno per lo stesso compito in Ubuntu.

La mia esperienza è che i programmatori, che passano a Linux per la programmazione, hanno (il più delle volte) una comprensione più profonda dei contesti tecnici e di come funzionano le basi. Gli utenti Mac e Windows tendono a non sapere perché qualcosa funziona in questo modo o perché non funziona. Non sono sicuro che tu possa davvero imparare qualcosa dal lavorare con Linux o se solo quei volontari impareranno a passare a Linux.

Spero che il mio "blafasel" aiuti un po '...


1

Direi che una distribuzione Linux è un IDE.

Per cominciare, Unix è stato progettato fin dall'inizio per essere un ambiente di sviluppo. È stato scritto da programmatori per programmatori. La maggior parte degli Unix e Linux sono ancora dotati di strumenti di sviluppo nella loro configurazione predefinita. E le parti mancanti sono solo una apt-get(o equivalente) di distanza. Windows, d'altra parte, è un terribile ambiente di sviluppo fino a quando non si installa un IDE, che non è economico, o un processo banale.

Un IDE è più integrato, nel senso che gli IDE sono più strettamente accoppiati rispetto all'utilizzo di GCC, Git e Vi (ad esempio). Lo stretto accoppiamento consente a cose come "intellisense" di funzionare meglio. D'altra parte, l'accoppiamento libero presenta molti vantaggi (ad es. Flessibilità, intercambiabilità, mancanza di bloccaggio).

E i progressi nella progettazione del compilatore (compilatori con front-end facilmente separabili come LLVM) potrebbero alla fine significare un supporto migliore per funzionalità come l'evidenziazione degli errori di sintassi anche in ambienti con accoppiamento debole.


Quindi, in sostanza, stai dicendo che Linux è un ambiente di sviluppo integrato che in realtà non è molto integrato? :-)
svick

1

Sulla questione della filosofia: Ubuntu / Linux consente al programmatore di computer di accedere direttamente agli interni e all'hardware, mentre Windows è una sorta di gatekeeper. Questa è una questione filosofica importante quando si tratta di programmazione. Quindi, dal punto di vista filosofico, questa caratteristica rappresenterà un vantaggio a seconda che l'utente sia sufficientemente informato o tecnicamente consapevole dell'importanza di esso.

Per quanto riguarda la programmazione: l'intera architettura di sistema di Ubuntu / Linux si basa sulla tradizione Unix di piccoli programmi semplici che fanno una cosa e poi li collegano insieme per fare cose più complesse. Per un programmatore questa architettura è incredibilmente potente e, a mio avviso, è la ragione per cui Unix prevarrà a lungo termine contro ogni altra architettura software su ogni piattaforma. Uno dei pochi posti in cui Unix non è attualmente dominante è il desktop, ma questo cambierà nel tempo. Distribuzioni come Ubuntu stanno aiutando a vedere questa evoluzione attraverso.

Non ho dubbi, tuttavia, che ci sono alcuni ottimi ambienti di programmazione su Windows. Per la programmazione in un ambiente aziendale, questi spesso dominano.


0

La velocità è la risposta ordinata.

Lo trovo con un IDE grafico come Visual Studio o QtCreator che uso troppo il mouse quando dovrei usare scorciatoie. Ogni volta che cambi contesto devi mettere in pausa il cervello, concentrarti sul tuo obiettivo e attendere l'azione. Considerando che premendo F5 è infinitamente più veloce.

Ora se stai usando Vim, Emacs o qualcos'altro che non ha pulsanti belli, ti concentrerai sulle pressioni dei tasti, hai un metodo e diventi più veloce grazie alla sua routine.

Gli errori sono presentati in modo più dettagliato con un'interfaccia a riga di comando, che preferisco, e fornisce anche feedback durante la compilazione. Una cosa che odio di Visual Studio è l'impostazione predefinita è una piccola icona che indica che sta eseguendo una compilazione, quindi viene visualizzato un elenco di errori.

Con una vista ristretta manterrai la larghezza di 80 colonne che aiuta la leggibilità, ho visto il codice che si estende fino alla larghezza di 200 colonne. Con il codice che si adatta a 80 colonne puoi avere 4/5 finestre aperte alla volta.

Con un editor CLI è possibile programmare in remoto, senza bisogno di una sessione RDP lenta (rispetto al testo) su Visual Studio. È possibile codificare tramite un collegamento GSM.

Lo sviluppo di forme visive fa schifo. Un vantaggio che potresti mettere su un IDE della GUI è che puoi disegnare i tuoi schermi ed è più veloce. Tuttavia nella mia esperienza va bene per un prototipo, ma spesso ottieni risultati migliori eseguendolo manualmente nel codice. L'analizzatore di codici VS2012 questa mattina mi ha appena avvertito di oltre 200 problemi con il codice generato automaticamente da Visual Studio?!?!?


0

Penso che la tua vera domanda potrebbe essere: "Esistono alternative di Visual Studio che verranno eseguite su Ubuntu, dal momento che non lo farà?"

MonoDevelop.

È praticabile, ma lo odierai se sei abituato a VS e tutte le funzionalità.

Non vi è alcun vantaggio nell'utilizzare un editor di testo. Ricordi quella cosa carina chiamata Intellisense? Non sta succedendo (ma MonoDevelop ha qualcosa di simile). Spero che sia di aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.