IDE vs Vim, tools e compilazione da terminale

Raptorista1
[xdom="Raptorista"]Segue da qui
post632972.html#p632972[/xdom]

Il mio comando di compilazione è più pignolo ancora:
gcc -Wall -Werror -Wextra -pedantic -std=gnu99 main.c

In questo modo sei sicuro che il tuo codice sia ben scritto ;)

Risposte
nessuno.nobody
"Raptorista":
Il mio comando di compilazione è più pignolo ancora:
gcc -Wall -Werror -Wextra -pedantic -std=gnu99 main.c

In questo modo sei sicuro che il tuo codice sia ben scritto ;)

-std=gnu99 non ti assicura la corretta stesura di codice, ti assicura solo che tu stia rispettando lo standard gnu99 che tanto standard non è.
Meglio -std=c11 che è l'ultimo standard ufficiale del linguaggio ^^

Comunque, un consiglio che può risultare "utile" per chi lavora da terminale.
Installate gcc-color, e create un alias a gcc, in modo che i messaggi d'errore siano colorati e di più immediata comprensione :D

Raptorista1
"nessuno.nobody":
-std=gnu99 non ti assicura la corretta stesura di codice, ti assicura solo che tu stia rispettando lo standard gnu99 che tanto standard non è.
Meglio -std=c11 che è l'ultimo standard ufficiale del linguaggio ^^

You're right, mi è rimasto dentro nel copia-incolla :P
L'ho aggiunto per poter fare i commenti con /* */ e per poter mettere le inizializzazioni nei cicli for [cosa che però non faccio perché non sono abituato a fare].

Mrhaha
Wow ragazzi! Non sapevo di tutte queste cose! :D Mi sto gasando, è troppo sfizioso! :-D
Ma le librerie già ci sono o devo scaricarle? perchè il mio dubbio era proprio questo! Pensavo mi mancasse qualcosa, invece no?

claudio862
"Mrhaha":
Ma le librerie già ci sono o devo scaricarle? perchè il mio dubbio era proprio questo! Pensavo mi mancasse qualcosa, invece no?

Alcuni file fanno parte della libreria standard del C / C++ (stdio, stdlib, math, time, iostream, string, algorithm...) che ovviamente viene con il compilatore.
Altre librerie invece no e vanno installate a parte. Su Linux dovresti poterle installare dal gestore pacchetti, di solito hanno il suffisso -dev. Ad esempio libxml, Qt, gtk, boost e tantissime altre.


"nessuno.nobody":
Comunque, un consiglio che può risultare "utile" per chi lavora da terminale.
Installate gcc-color, e create un alias a gcc, in modo che i messaggi d'errore siano colorati e di più immediata comprensione :D

Oppure usare clang al posto di gcc (e soprattutto clang++ al posto di g++). Soprattutto se usate i template in C++, capire dove sia un errore con g++ è letteralmente impossibile.

Raptorista1
99% ci sono già.
Se sei su ubuntu, ti serve il pacchetto build-essentials che dovrebbe già essere installato.

Se poi tiri in ballo librerie più varie, di terze parti come le SDL per fare un po' di grafica, allora le devi installare ma su quasi tutte le distribuzioni è roba che si fa senza nemmeno aprire firefox ;)

vict85
"Mrhaha":
Salve ragazzi, ieri facevo un piccolo programma per riprendere un pò la mano con il C, e ho imparato a programmare da terminale dalle piattaforme Linux. Ma c'è un piccolo problema, il programma è il calcolo della norma di un vettore, e quindi necessito della struttura radice quadrata presente nella libreria math.h, ma non mi viene compilato dicendo "Undefined sqrt". Decido di compilarlo da windows con devc++ e parte, l'ho controllato con un pò di vettori e funzionava! Ma gcc per caso non legge la libreria math.h?


DevC++ è un programma datato e non più implementato. Passa a Code::blocks su windows o a visual studio (ne esiste una versione gratuita). Per il solo C (non C++) puoi anche usare "Pelles C". Usare Clang e llvm su windows è purtroppo un po' più macchinoso e certamente non per newbie. C'é poi l'opzione Cygwin, che è tra l'altro l'unica accettabile se vuoi usare openMP e altre cose simili.

Raptorista1
"vict85":
DevC++ è un programma datato e non più implementato. Passa a Code::blocks su windows o a visual studio (ne esiste una versione gratuita). Per il solo C (non C++) puoi anche usare "Pelles C". Usare Clang e llvm su windows è purtroppo un po' più macchinoso e certamente non per newbie. C'é poi l'opzione Cygwin, che è tra l'altro l'unica accettabile se vuoi usare openMP e altre cose simili.

Perché lo stai spingendo verso il lato oscuro?? XD XD

Dovresti incitarlo a disinstallare windows ed usare solo gcc e g++ per tutti i secoli dei secoli, invece! :D

vict85
"Raptorista":
[quote="vict85"]DevC++ è un programma datato e non più implementato. Passa a Code::blocks su windows o a visual studio (ne esiste una versione gratuita). Per il solo C (non C++) puoi anche usare "Pelles C". Usare Clang e llvm su windows è purtroppo un po' più macchinoso e certamente non per newbie. C'é poi l'opzione Cygwin, che è tra l'altro l'unica accettabile se vuoi usare openMP e altre cose simili.

Perché lo stai spingendo verso il lato oscuro?? XD XD

Dovresti incitarlo a disinstallare windows ed usare solo gcc e g++ per tutti i secoli dei secoli, invece! :D[/quote]

Windows è attualmente l'unica opzione (insieme a mac) per alcune tipologie di utenti. Semplicemente perché ci sono programmi commerciali che non sono stati fatti per linux e per cui non esiste un vero e proprio sostituto opensource.

Comunque stavo solo consigliando di disinstallare un orrore. Pelles C è comunque più ligio allo standard di gcc. Clang è per certi versi meglio di gcc, comunque su linux e mac è più facile usarlo. Detto questo Code::blocks può essere usato anche su linux.

claudio862
"vict85":
DevC++ è un programma datato e non più implementato. Passa a Code::blocks su windows o a visual studio (ne esiste una versione gratuita).

Mi era sfuggito, decisamente butta via DevC++! L'ultima versione è del 2005!
Non ho mai provato Code::Blocks, Visual Studio è un ottimo IDE (e la versione Express è gratuita).

Usare Clang e llvm su windows è purtroppo un po' più macchinoso e certamente non per newbie.

Su Windows è decisamente macchinoso, ci sto provando in questi giorni e non ci sono ancora riuscito. Però lui usa Linux e lì è abbastanza semplice, basta installarlo dal gestore software (apt-get install clang su Debian based).

Davvero con i template in C++ gcc è quasi inutilizzabile, ci metto meno a riavviare e compilare con clang++ su Linux che ad interpretare i messaggi di errore di g++.

Mrhaha
Ormai penso che programmerò solo dal terminale! Però non capisco perchè il povero devc++ lo trattate così male! :-D Anche se è del 2005, per una programmazione di base non ho mai trovato grosse difficoltà!

Raptorista1
"Mrhaha":
Ormai penso che programmerò solo dal terminale!

Good boy :)
Il prossimo passo è [se non ci sei già] scrivere il codice direttamente nel terminale, ad esempio usando il mitico vim, e non solo compilarlo :D
Ma per questo c'è tempo!
Ora cosa usi? Gedit? Conosci gli snippets?

nessuno.nobody
Ti consiglio di usare VIM e Ctags, per avere anche l'autocompletamento con vim ;)

Raptorista1
@nessuno.nobody: interessante questo ctags!
Sai se c'è qualcosa di simile anche per LaTeX? In particolare, per avere i completamenti rapidi sui tag delle equazioni [comando \ref o \eqref] o dei \cite.
Avevo provato vimlatex ma [su arch] mi dava qualche problema.

nessuno.nobody
@Raptorista: no, non so nulla per quanto riguarda l'uso di LaTeX con Vim, dato che non lo uso se non altro che per programmare in C (e con ctags, avere a disposizione tutti gli header delle funzioni hci* per lo stack bluetooth è di una comodità imbarazzante).

Comunque, noto che in molti sulla rete si trovano molto bene con VimLaTeX, magari potresti provare di nuovo a usarlo e "perderci" più tempo nel configurarlo e risolvere i problemi che ti capitano. (o magari hanno risolto i problemi che tu avevi nelle nuove release, prova!)

claudio862
Io ho sempre mal digerito VIM e la compilazione manuale. Sono molto più produttivo con un buon IDE.
Mi sono sempre chiesto una cosa però, VIM ha delle funzionalità per la rifattorizzazione e l'analisi del codice? Ad esempio, voglio rinominare una funzione, o una classe nel mio progetto, posso farlo automaticamente? Attenzione non sto parlando di un banale cerca & sostituisci. Oppure voglio trovare tutti i punti in cui uso una funzione / classe (anche qua una banale ricerca non funziona granché bene).

nessuno.nobody
Non uso VIM per quello, ma da terminale con find + sed, fai tutto ciò che devi (a patto di conoscere le espressioni regolari)

claudio862
Buona idea separare i thread, eravamo decisamente fuori tema.

"nessuno.nobody":
Non uso VIM per quello, ma da terminale con find + sed, fai tutto ciò che devi (a patto di conoscere le espressioni regolari)

Potrebbero esserci più funzioni con lo stesso nome, magari appartenenti a classi o namespace diversi (ma anche diversi struct con campi con lo stesso nome, o diverse variabili con lo stesso nome in diverse funzioni).
Per queste operazioni si deve fare un parsing parziale del sorgente, in modo da sapere esattamente cosa sia ogni simbolo. Clang è nato anche con questo obiettivo, so che è usato in Qt Creator, mentre altri IDE usano altre soluzioni, proprietarie o meno. VIM usa qualcosa del genere?

Mrhaha
"Raptorista":
[quote="Mrhaha"]Ormai penso che programmerò solo dal terminale!

Good boy :)
Il prossimo passo è [se non ci sei già] scrivere il codice direttamente nel terminale, ad esempio usando il mitico vim, e non solo compilarlo :D
Ma per questo c'è tempo!
Ora cosa usi? Gedit? Conosci gli snippets?[/quote]
Scrivere il codice direttamente dal terminale? Oddio! Mi sconvolgi! :-D :-D
Si, ora uso Gedit, ma non so cosa siano gli snippets! :roll:
Mi illumini?

vict85
"Mrhaha":
Ormai penso che programmerò solo dal terminale! Però non capisco perchè il povero devc++ lo trattate così male! :-D Anche se è del 2005, per una programmazione di base non ho mai trovato grosse difficoltà!


Beh, tanto per incominciare non è stato programmato per andare su windows vista, tanto meno per windows 7. Dopo di che è l'unico, e dico l'unico, IDE che richiede l'uso di "system("pause")" per non farti chiudere la console. Se poi lo installi con dentro il compilatore hai il problema, non da poco, di avere un compilatore molto datato (e già mingw è parecchio indietro rispetto a gcc).

Detto questo, installare code::blocks e usarlo non richiede più lavoro di usare devc++ quindi non c'é ragione di usare qualcosa di così obsoleto senza alcun vantaggio.

Detto questo, personalmente non mi piace scrivere il codice nella console. L'unica ragione per faro è perché ti fa sentire uno smanettone. Sinceramente trovo che usare un blocco note ideato per la programmazione, usando syntax highlighting e similari sia più pratico. A volte uso degli IDE o similari (se hai dei progetti complessi e con molti file gli IDE possono essere pratici) ma normalmente l'area per il testo è troppo ridotta.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.