DOMANDA Ho studiato tutto il Daitel (C corso completo di programmazione) e adesso come continuo?

Pubblicità

Roberto_Trevigiani

Nuovo Utente
Messaggi
68
Reazioni
17
Punteggio
35
Salve a tutti, sono un autodidatta e ho appena finito di studiare tutto il libro "C corso completo di programmazione"(4° edizione) dei fratelli Daitel, vorrei sapere come continuare a studiare programmazione C, perchè mi piace parecchio, ma mi sento spaesato e non ho idea di come continuare o di come utilizzare quello che ho appreso. Praticamente mi sono detto "e adesso?", quindi vorrei che mi aiutaste a capire come muovermi e illuminarmi un po'.
Vi ringrazio in anticipo.
 
Compra un libro di algoritmi e strutture dati in C e fai i relativi esercizi su liste, pile, code, alberi, tabelle hash, grafi.
Male non ti fa;
oppure definisci un tuo progetto e cerca di realizzarlo.

Oppure studia la programmazione ad oggetti, passando ad un linguaggio come Java o C++;
ciò ovviamente ti obbligherà a studiare la sintassi di questi linguaggi, simile al C eccetto ovviamente ciò che riguarda gli oggetti.

Ma la cosa più importante è: chiediti che cosa vuoi fare, non è detto che il C sia adatto a quello che hai in mente.
 
Ma la cosa più importante è: chiediti che cosa vuoi fare, non è detto che il C sia adatto a quello che hai in mente.

Hai ragione al 100%, però, purtroppo, attualmente non lo so, forse anche perchè non ho una visione ben chiara delle strade che posso intraprendere. Sicuramente è punto fondamentale e cercherò di capire cosa mi piacerebbe fare, anche perchè ho iniziato a studiare perchè mi appassionava la programmazione (e l'informatica in generale) e non c'era un motivazione chiara e precisa del tipo "mi piacerebbe fare questo" (so che può sembrare un po' stupido ma è così).
La curiosità mi ha spinto molto devo dire; ora ad esempio, sto leggendo anche un libro sull'architettura dei calcolatori (Architettura dei calcolatori. Un approccio strutturale. di Andrew Tanenbaum) e mi hanno attirato molto anche dei libri su come sono fatti i sistemi operativi(che sicuramente in seguito acquisterò).

Oppure studia la programmazione ad oggetti, passando ad un linguaggio come Java o C++;
Ci stavo proprio pensando da tempo, anche molto prima di aver finito il libro sul C. Pensavo di imparare almeno il C++ come liguaggio orientato agli oggetti.

Compra un libro di algoritmi e strutture dati in C e fai i relativi esercizi su liste, pile, code, alberi, tabelle hash, grafi.

Ho cercato dei libri sugli algoritmi e strutture dati in C, ma ho trovato un po' di difficoltà nell'individuare (dalle recensioni o dai pareri che ho potuto trovare nel web) quale sia il più chiaro e "semplice", vedevo scritto "è chiaro" e subito dopo "non è molto chiaro", mentre, con gli altri libri che ho acquistato i pareri erano circa unanimi. Con il Daitel è stato fantastico, chiaro e con molti esempi, anche con il Tanenmbaum sui calcolatori mi sto trovando bene. Mi piacerebbe riuscire a individuare un libro altrettanto buono sulle strutture dati e algoritmi in C.
Conosci qualche libro che sia adatto a un autodidatta come me?
 
Ma oltre a leggere hai fatto anche molta pratica ?
Perche' nella programmazione la pratica conta molto molto di piu' della teoria.

Certamente, di questa cosa me ne sono accorto subito, fin dai primi esercizi; solamente scrivendo codice imparavo davvero quello che avevo letto. È stato più il tempo che ho passato facendo esercizi, tentando di risolvere bug e pensado algoritmi, che quello passato a leggere (in proporzione). Se avessi solo letto avrei finito il libro molto ma molto prima.
Fortunatamente il testo, alla fine di ogni capitolo, propone molti esercizi e per questo motivo ho cercato di non tralasciarne nessuno, anche se mi risultavano difficili (mi viene da ridere pensando all'esasperazione di certi momenti). Ne ho messo in pausa giusto uno che non mi era ben chiaro e mi stava portando via troppo tempo, ma ora lo sto riprendendo.
Posso dire di aver imparato un sacco dagli errori mentre programmavo(come tutti del resto).
 
molto bene, il tempo trascorso scrivendo attivante il codice da far girare è sempre ben speso, anche quando gli esercizi sono molto semplici, serve a fare pratica e ad acquisire certi automatismi indispensabili al programmatore.

Per rispondere sul libro su algoritmi/strutture dati probabilmente il migliore in assoluto è
Introduzione agli algoritmi e strutture dati [autori Cormen, Leiserson, Rivest, Stein]
però ASPETTA ad acquistarlo:
è un testo largamente usato nelle Università (Informatica, Ingegneria ecc.), se non sei uno studente universitario è inutile sobbarcarsi la spesa: per quanto ricordo gli algoritmi sono in pseudocodice (non usano cioè un linguaggio particolare ed è giusto che sia così), inoltre è possibile e probabile che non ti serve.

Serve invece che tu faccia mente locale e ragioni un po' su quello che vuoi fare veramente;
per esempio, se decidi di fare sviluppo web, un libro del genere (circa 1300 pagine molto impegnative) è inutile.
Se vuoi sviluppare per Android, meglio passare a tutt'altro e fare delle app "giocattolo" per far pratica.

Tieni inoltre conto che il C è senza dubbio un pilastro per un programmatore, tuttavia se non sviluppi codice particolare (giochi, programmi di sistema, driver ecc.) è tempo di passare ad altro. Insomma prima di spendere soldi e perdere tempo con cose che forse non ti serviranno mai, cerca prima di capire cosa vuoi fare.
 
Allora non penso di prenderlo, non essendo uno studente universitario e non avendo ancora ben chiaro consa voglio fare. Ora faccio qualche ricerca per vedere quali sono le possibilità e le strade che si possono intraprendere. Nel caso in cui, nel futuro, avessi qualche domanda, sempre riguardante questa questione, la potrei fare su questa discussione, oppure ne dovrei aprire un'altra?
 
Ti conviene aprirne un'altra, magari la cominci con "Rieccomi qu, tempo fa avevo fatto alcune domande <link> ed ora ho le idee più chiare bla bla bla (mettendo un link a questa discussione);
poi dici cosa vorresti fare ed eventuali dubbi su come procedere
 
vorrei sapere come continuare a studiare programmazione C, perchè mi piace parecchio
Mmmm... lasciati tentare


Codice:
;;            ;;
     ;;_;;  
     main(__)
{return(??-??-_,__^__,__);}
(si è una faccina sorridente)
Diresti mai che questo programma ritorna il numero di argomenti passati? Pensa c'è un contest mondiale annuale che premia il codice C più offuscato (IOCCC): il mio in comparazione è elementare :asd:
 
Hahah avevo sentito parlare di oscuramento del codice C, ma non avevo visto ancora nulla. Su due piedi, di primo impatto, mi verrebbe da dire che quel codice è sbagliato. Potresti spiegarmi come funziona? (se puoi ovviamente)
Comunque mi piacerebbe riuscire a sviluppare una eccellente padronanza del C, perchè ancora mi sento un bambino che ha imparato a leggere e a scrivere da poco, avendo da poco finito il Daitel, lo sto ripassando velocemente, ho dato un occhiata anche al libro di Kernighan e Ritchie(pace all'anima sua), ma quest'ultimo lo approfondirò, quando avrò finito il ripasso del Daitel. So programmare, liste, alberi, algoritmi di ricerca, ecc ecc ma sento che ancora devo acquisire una maggiore padronanza. Almeno questa è la mia sensazione, ma magari dopo il ripasso sarà tutto a posto : ) . O anche cercato degli esercizi sulla rete, per fortuna ce ne sono tantissimi.
 
Hahah avevo sentito parlare di oscuramento del codice C, ma non avevo visto ancora nulla. Su due piedi, di primo impatto, mi verrebbe da dire che quel codice è sbagliato. Potresti spiegarmi come funziona? (se puoi ovviamente)
Oscurare il C si basa su alcuni trucchetti nascosti nel linguaggio, che difficilmente vengono trattati in libri e quindi nella conoscenza comune.
1) ;; ;; Il punto e virgola, formalmente "null statement", è un'istruzione a tutti gli effetti: è solo che non ha significato.
Un esempio tipico
Codice:
assert(condizione, "bla bla"); // nota il ;
assert è una macro, non una funzione, quindi non ha bisogno del ; per terminarne la chiamata; puoi comunque usarlo o metterne 3 o 4, non fa differenza.
2) _ In realtà io sto dichiarando una variabile di tipo intero, essendo il tipo int implicito.
3) main(__) Quel __ sarebbe l'altrimenti conosciuto "argc". Formalmente non è una definizione di main valida, perché dovrebbe o essere main(void) o main(int, char**).
4) return(??-??-_,__^__,__) Vi sono 3 espressioni, separate dalla virgola, ma solo l'ultima è usata mentre le altre sono scartate.
Se hai tipo
Codice:
 int x = (10, 20);
10 viene scartato e 20 usato. Il ??- è un trigraph e vengono tradotti in ~~_ che per #4, viene scartato; __^__ è un semplice XOR tra i due "argc", anch'esso scartato. Alla fine è un semplice return __ :vv:
 
Pubblicità
Pubblicità
Indietro
Top