Ci tengo a sottolineare che quanto detto da @SpeedJack è molto discutibile.
Gli IDE sono degli strumenti costruiti dai programmatori per i programmatori, il fatto che li usano anche i pivelli è un altro discorso. Alla fine il compito principale di un programmatore è scrivere software per automatizzare alcuni processi: perché imparare a memoria gli argomenti da passare a un compilatore quando posso scrivere un software che mi automatizza questo processo? Perché devo scrivere il noioso codice pieno di coordinate per disegnare l'interfaccia grafica quando posso automatizzare anche questo?
Finché scriviamo il programmino di due righe possiamo fare anche tutto a mano, ma nel momento in cui abbiamo davanti un sorgente spezzettato in tanti file, ognuno in una cartella diversa e in gran parte scritto da altre persone, un IDE diventa quasi indispensabile. Perché devo fare avanti e indietro tra i files per vedere quali sono i metodi di una classe e i parametri di una funzione, quando qualcuno ha scritto un programma che ti apre un popup con tutte le informazioni che ti possono servire e magari ti reindirizza pure alla documentazione?
Quote: "Non si rischia assolutamente di dimenticare ciò che si ha imparato"
Chi impara molto bene è anche in grado di colmare quel dubbio (eg. che argomenti devo passare al compilatore) in poco tempo. È davvero così indispensabile ricordarsi ogni cavillo sintattico (eg. la definizione del main con i parametri nel C) quando il compito vero dovrebbe essere incentrato sulla semantica?
Quote: "Si evita che problemi dell'IDE facciano perdere tempo"
Ma gli IDE sono pensati per fare esattamente l'opposto, te lo fanno risparmiare il tempo. Per ogni secondo che perdi per un problema proprio dell'IDE, c'è un ora che risparmi. Se non è così allora devi semplicemente cambiare l'IDE perché quello che stai usando è troppo buggato.
Quote: "Se si lavora a progetti open-source o in team con altri, utilizzando strumenti di version control..."
Gli strumenti di versioning sono già pensati per risolvere questo tipo di problemi, pensa al .gitignore. Vanno in direzione di standardizzare la directory tree e ormai la maggior parte degli IDE automatizza anche l'uso di questi tools.
Quote: "Gli IDE spesso danno dei "consigli" sul codice"
I consigli sul codice (che il più delle volte raccolgono dal compilatore, quindi li vedi solo in anticipo rispetto a un text editor) sono probabilmente una delle features più utile. Se c'è qualcosa di strano cercano è meglio saperlo subito, ti permette di evitare di scrivere ulteriore codice che si appoggia a un errore che troveresti solo in fase di compilazione.
Certo... se il programmatore è "lo stupido" allora tutto diventa un aspetto negativo, ma se il programmatore è "il programmatore" allora è una feature molto utile. D'altronde gli IDE sono scritti da programmatori per programmatori, qualcuno pensa che i consigli siano dannosi? Qualcuno ha messo la spunta per disattivarli.
Quote: "grep e sed sono molto più "potenti" di un qualsiasi strumento di "find & replace" di qualsiasi IDE"
E qui ci sta un bel <citation needed>
Con il find&replace di un IDE puoi fare cose del tipo cambiare il nome di una variabile senza toccare lo stesso nome fuori dallo scope che stai considerando. Puoi ugualmente fare il search con le regex. Chi ci dice che sotto il find e replace non ci sia proprio grep e sed? Chi ci dice che l'IDE non ti permetta di avere un mini terminale dal quale lanciare direttamente i comandi? E, se non fosse così, perché non possiamo aprire un terminale, fare i "lavori complessi" con grep, sed e tutto il resto, per poi tornare all'IDE (che ci chiederà di aggiornare gli eventuali file modificati)?
Alla fine è uno strumento di automazione e va visto come tale, puoi metterlo momentaneamente da parte se preferisci usare altro.
Quote: "alcuni programmatori (spesso .NET) rilasciano programmi che non funzionano"
La negligenza dei programmatori non è da attribuire agli IDE. Se qualcuno è così in gamba da postare cose che non funzionano (per qualsiasi ragione), probabilmente non dovresti interessarti ad usare quella roba.
Quote: "Si finisce per innamorarsi di un IDE e non essere in grado di passare ad altro"
E questo vale anche nel momento in cui io vengo a metterti sotto le mani un ambiente Windows e addio a bash, coreutils, gcc, gdb e compagnia cantante. Molte di queste cose sono cross platform mi dirai, beh... lo sono anche molti IDE. Tu stesso stai consigliando di passare a Linux, in teoria il sistema operativo (così come l'IDE o text editor che sia) non fa il programmatore.
Alcune considerazioni le ho fatte anche solo per dare un secondo punto di vista, giusto per far vedere anche l'altro lato della medaglia. A dire il vero io stesso utilizzo un text editor (per una serie di motivi che credo di aver spiegato in un altro thread), però sono consapevole di quali sono i benefici degli IDE ed è per questa ragione nella guida che ho linkato nel post precedente (e che consiglio a tutti di leggere) ho consigliato di partire direttamente da un IDE (uno buono però!). Se si deve imparare qualcosa, tanto vale imparare ciò che si usa nel mondo professionale.
Il fatto che alcuni processi siano automatizzati non va assolutamente visto come uno svantaggio, saranno anche automatizzati, ma non vuol dire che non vadano imparati. È altrettanto dannoso imparare a memoria memoria i comandi da passare al terminale per fare una qualsiasi cosa. Chi non sa cosa sta facendo, IDE o non IDE, al primo problema che incontra si ritrova bloccato.
Gli IDE sono degli strumenti costruiti dai programmatori per i programmatori, il fatto che li usano anche i pivelli è un altro discorso. Alla fine il compito principale di un programmatore è scrivere software per automatizzare alcuni processi: perché imparare a memoria gli argomenti da passare a un compilatore quando posso scrivere un software che mi automatizza questo processo? Perché devo scrivere il noioso codice pieno di coordinate per disegnare l'interfaccia grafica quando posso automatizzare anche questo?
Finché scriviamo il programmino di due righe possiamo fare anche tutto a mano, ma nel momento in cui abbiamo davanti un sorgente spezzettato in tanti file, ognuno in una cartella diversa e in gran parte scritto da altre persone, un IDE diventa quasi indispensabile. Perché devo fare avanti e indietro tra i files per vedere quali sono i metodi di una classe e i parametri di una funzione, quando qualcuno ha scritto un programma che ti apre un popup con tutte le informazioni che ti possono servire e magari ti reindirizza pure alla documentazione?
Quote: "Non si rischia assolutamente di dimenticare ciò che si ha imparato"
Chi impara molto bene è anche in grado di colmare quel dubbio (eg. che argomenti devo passare al compilatore) in poco tempo. È davvero così indispensabile ricordarsi ogni cavillo sintattico (eg. la definizione del main con i parametri nel C) quando il compito vero dovrebbe essere incentrato sulla semantica?
Quote: "Si evita che problemi dell'IDE facciano perdere tempo"
Ma gli IDE sono pensati per fare esattamente l'opposto, te lo fanno risparmiare il tempo. Per ogni secondo che perdi per un problema proprio dell'IDE, c'è un ora che risparmi. Se non è così allora devi semplicemente cambiare l'IDE perché quello che stai usando è troppo buggato.
Quote: "Se si lavora a progetti open-source o in team con altri, utilizzando strumenti di version control..."
Gli strumenti di versioning sono già pensati per risolvere questo tipo di problemi, pensa al .gitignore. Vanno in direzione di standardizzare la directory tree e ormai la maggior parte degli IDE automatizza anche l'uso di questi tools.
Quote: "Gli IDE spesso danno dei "consigli" sul codice"
I consigli sul codice (che il più delle volte raccolgono dal compilatore, quindi li vedi solo in anticipo rispetto a un text editor) sono probabilmente una delle features più utile. Se c'è qualcosa di strano cercano è meglio saperlo subito, ti permette di evitare di scrivere ulteriore codice che si appoggia a un errore che troveresti solo in fase di compilazione.
Certo... se il programmatore è "lo stupido" allora tutto diventa un aspetto negativo, ma se il programmatore è "il programmatore" allora è una feature molto utile. D'altronde gli IDE sono scritti da programmatori per programmatori, qualcuno pensa che i consigli siano dannosi? Qualcuno ha messo la spunta per disattivarli.
Quote: "grep e sed sono molto più "potenti" di un qualsiasi strumento di "find & replace" di qualsiasi IDE"
E qui ci sta un bel <citation needed>
Con il find&replace di un IDE puoi fare cose del tipo cambiare il nome di una variabile senza toccare lo stesso nome fuori dallo scope che stai considerando. Puoi ugualmente fare il search con le regex. Chi ci dice che sotto il find e replace non ci sia proprio grep e sed? Chi ci dice che l'IDE non ti permetta di avere un mini terminale dal quale lanciare direttamente i comandi? E, se non fosse così, perché non possiamo aprire un terminale, fare i "lavori complessi" con grep, sed e tutto il resto, per poi tornare all'IDE (che ci chiederà di aggiornare gli eventuali file modificati)?
Alla fine è uno strumento di automazione e va visto come tale, puoi metterlo momentaneamente da parte se preferisci usare altro.
Quote: "alcuni programmatori (spesso .NET) rilasciano programmi che non funzionano"
La negligenza dei programmatori non è da attribuire agli IDE. Se qualcuno è così in gamba da postare cose che non funzionano (per qualsiasi ragione), probabilmente non dovresti interessarti ad usare quella roba.
Quote: "Si finisce per innamorarsi di un IDE e non essere in grado di passare ad altro"
E questo vale anche nel momento in cui io vengo a metterti sotto le mani un ambiente Windows e addio a bash, coreutils, gcc, gdb e compagnia cantante. Molte di queste cose sono cross platform mi dirai, beh... lo sono anche molti IDE. Tu stesso stai consigliando di passare a Linux, in teoria il sistema operativo (così come l'IDE o text editor che sia) non fa il programmatore.
Alcune considerazioni le ho fatte anche solo per dare un secondo punto di vista, giusto per far vedere anche l'altro lato della medaglia. A dire il vero io stesso utilizzo un text editor (per una serie di motivi che credo di aver spiegato in un altro thread), però sono consapevole di quali sono i benefici degli IDE ed è per questa ragione nella guida che ho linkato nel post precedente (e che consiglio a tutti di leggere) ho consigliato di partire direttamente da un IDE (uno buono però!). Se si deve imparare qualcosa, tanto vale imparare ciò che si usa nel mondo professionale.
Il fatto che alcuni processi siano automatizzati non va assolutamente visto come uno svantaggio, saranno anche automatizzati, ma non vuol dire che non vadano imparati. È altrettanto dannoso imparare a memoria memoria i comandi da passare al terminale per fare una qualsiasi cosa. Chi non sa cosa sta facendo, IDE o non IDE, al primo problema che incontra si ritrova bloccato.
Se la tua domanda è semplicemente "qual'è il comando?" allora puoi trovare la risposta nella guida che ho linkato nel post sopra (è anche in rilievo in questa sezione). Se vuoi sapere come usare (in dettaglio) il compilatore allora devi cercare la guida per il tuo compilatore (eg. man gcc) e se invece vuoi sapere a grandi linee cosa fa un compilatore e cose di questo tipo, allora puoi aprire un thread apposta.Una buona guida (anche su Inforge se c'è) per compilare senza IDE dove posso trovala?