Quest'estate vorrei "imparare" a programmare in C/C++. Il virgolettato è d'obbligo perché immagino che non sia una passeggiata, ma visto che anni fa mi ero sciroppato un manualozzo di C, più o meno, so a cosa vado incontro e quello a cui eventualmente potrei approdare. Quello che vorrei, è gettare le basi di un discorso da portare avanti il prossimo inverno nel tempo libero. Per questo vorrei porre tre domande, la prima più importante di tutte:
1) Visto che sarò via e senza una connessione ad internet vorrei sapere quali sono i pacchetti indispensabili per essere autonomo nella compilazione, nelle librerie e in tutto quello che potrebbe servirmi e che ora mi sfugge. Ovviamente sul portatile avrò openSuse 11.3/64.
2) Avete qualche libro/risorsa da suggerirmi (inglese/italiano indifferentemente)
3) Siccome più o meno le argomentazioni le ricordo (per titoli, ovviamente) e siccome so che non bastano per buttare giù un codice decente o per modellizzare un problema, che altre materie dovrei approfondire per entrare nella logica della programmazione?
Intendo dire, un conto è sapere la "grammatica" (variabili, classi, cicli, puntatori...), un conto è poi saperli utilizzare in pratica, per esempio buttando giù un algoritmo efficiente. Insomma a me l'apprendimento per "ricette" non piace, preferirei avere un discorso generale dietro. Dove devo guardare?
Concludendo, lo scopo principale, per il momento, è di riuscire a fare qualcosa di minimo e funzionante, niente di particolarmente difficile. Poi col tempo, se è cosa, si vedrà.
Grazie in anticipo.
Ps: non sono proprio a zero (quasi, però ;-) ), conosco a livello amatoriale php, mysql, html, css. Una volta sapevo anche javascript. Ovviamente son tutte nozioni arrugginite.
1) per iniziare basta gcc ed un semplice editor di testo...
(io mi sto cimentando nello scrivere un piccolo kernel in c (impresa abbastanza ardua ^^") ed utilizzo soltanto kate e gcc per la parte in c)
per il c++ installa anche gcc-c++
per le librerie, le più comuni e standard se le porta appresso gcc; se non vuoi realizzare qualcosa di troppo esotico, quelle dovrebbero bastare...
per renderti più semplice la vita puoi utilizzare un ide tipo kdevelop (anche se la versione di kde4 non l'ho provata, prova a buttarci un occhio...)
2) no, non so consigliarti un testo di riferimento...
3) intanto direi che "basta che funzioni", poi col tempo scoprirai da te qual'è il modo più efficiente di fare le cose (l'ottimizzazione non è uno scherzo, dietro c'è tutta una teoria basata su matematica e statistica che fa paura...)
P.S. dimenticavo: la cosa più semplice per iniziare è prendere semplici programmi già fatti (se ne trovano molti nei tutorial online) e cercare di capire passo per passo cosa succede, chi va dove e perchè.
Dal momento che sto cercando di fare più o meno la stessa cosa (di deckard, non posso assolutamente cimentarmi nella creazione di nuovi kernel :( ) e che quindi non sono dotato di grandi conoscenze, penso di poter intervenire e offrire i miei classici 2c.
1) per stare sicuro, io installerei il pattern sviluppo C/C++;
2) non sarà una Bibbia, ma direi che il libro dei Deitel sia più che adatto per cominciare. Evita invece quello di Schildt;
3) mi sa che per quello l'approccio più efficiente consiste nel procedere a "testate nel muro", ovvero cercando di capire di volta in volta perché il tuo codice non compili, quindi imparando dalla pratica. Anch'io lo faccio nel tempo libero e sto ancora studiando, ma mi sa che tra poco parto di capoccia :D
Ah, tra parentesi, anch'io come cla90 sto usando semplicemente gcc e un editor, nel mio caso sto finalmente imparando vim.
questo sito può interessarti
http://hackerforum.globalfreeforum.com/index.php?sid=203064e09e710b4ed8f39512d0f6ebfb
ciao
Chi si scorda del passato è destinato a riviverlo
SUSE 11.3 64 bit kde4.5
Intel Core 2 Duo E6700 Asus P5W DH Delux Asus GeForce GT 220 Western digital wd1500 adfd 150GB sata Corsairxms2 twinx 2GB ddr2
Monitor Asus vw246h hdmi
sudo zypper in -t pattern devel_C_C++
come IDE io uso code::blocks che trovi nel repo
devel:tools:ide
OpenSUSE Member,Packman Packager, Education Project Admin, LXDE Project Admin
Powered by http://en.opensuse.org/HP_Pavilion_dv6855el
Esiste un unico libro per imparare il C ed e' il K&R.
Io studiai il C su quel testo una ventina d'anni fa e ne conservo ancora buona memoria (sia del linguaggio che del libro).
Non ne conosco altri, anche perche' dopo aver letto quel libro non ne ho avuto bisogno. Sicuramente ci sono una marea di libri sul C, la maggioranza dei quali di ottima qualita', e magari piu' semplici per chi si avvicina alla programmazione, ma se proprio devo consigliartene uno direi proprio il K&R, o almeno avercelo comunque come riferimento.
Tieni presente che il C e' uno dei linguaggi piu' semplici da imparare, ha solo 32 parole chiave, un unica modalita' di passaggio parametri, ecc. Quello che e' difficile e' scrivere programmi fatti bene, semplici, con chiare interfacce tra i moduli, manutenibili.... ma questo si impara piu' che altro programmando e sbagliando, e questa cosa vale con ogni linguaggio, non solo con il C.
Se devo fare un paragone potrei farlo con gli scacchi: un conto e' conoscere le regole, peraltro abbastanza semplici, un conto e' saper giocare a scacchi. Le prime le impari sui libri, la seconda con l'esperienza.
Il mio consiglio quindi e' di programmare quanto piu' possibile e di cercare sempre la soluzione piu' semplice e pulita ai tuoi problemi.
Il C++ te lo sconsiglio fortemente: se vuoi lavorare ad oggetti ti consiglio il Java, almeno impari qualcosa che ha piu' applicabilita' nel mondo del lavoro. Il C++ e' un linguaggio ad oggetti che non forza il programmatore a programmare ad oggetti. In effetti qualsiasi programma in C (fatto salvo quelli che usano parole chiave e costrutti del C++) sono anche programmi C++: questo la dice lunga su come sia facile scrivere programmi in C++ che di programmazione ad oggetti non hanno niente a che spartire. Io provai a studiarlo piu' volte sul libro di Stroustrup (l'ideatore del C++) ma non sono mai riuscito a finirlo.
Happy programming!
Pietro
Debian Lenny on BeagleBoard
io uso questo:
http://www.apogeonline.com/libri/9788850326334/scheda
OpenSUSE Member,Packman Packager, Education Project Admin, LXDE Project Admin
Powered by http://en.opensuse.org/HP_Pavilion_dv6855el
Ottimo, ho letto tutti i vostri interventi.
Tirate le somme credo che comincerò con K&R visto che è presente nella biblioteca comunale del mio paese, per poi dare un occhio a tutti gli altri dato che son presenti nel mio sistema bibliotecario e quindi basta ordinarli. Alla fine mi comprerò quello con cui mi troverò meglio.
Appena sarà disponibile la nuova Suse, metterò assieme tutti programmi che mi avete suggerito. Per ora non ho troppo tempo, quindi mi limito a dare un occhio ai programmi di sviluppo che aiutano a scrivere il codice. Purtroppo non sono un duro e puro, amante del "Notepad".
L'intenzione è di cominciare da C perché ai tempi l'avevo trovato più semplice e pulito del C++, per poi dare un'occhiata a questo secondo. Su Java avevo sbirciato un manuale anni fa, ma non mi aveva fatto una buona impressione e quindi per adesso preferisco lasciarlo perdere. Ovviamente mi rendo conto che una scelta del genere è poco razionale, ma visto che alla fin fine son cose che faccio per diletto, me lo posso permettere.
Grazie di cuore.
Alberto
Riporto in alto questa discussione per fare il punto della situazione e
chiedervi delle delucidazioni.
Come avevo detto, quest'estate mi sarei messo a studiare il linguaggio C.
All'atto pratico, alla fine, mi son studiato "Linguaggio C" di Kernighan,
"Programmare in C" di Kris Jamsa (la parte generica che non riguardava il dos),
"Triky C" di tal Barninga Z (la partwe generica), ho dato una lettura ad una
dispensa di un professore sul C++ scaricata da internet (capendoci poco, era
troppo introduttiva), ho guardato un po' la documentazione di ncurses, e
sfogliato un po' il man. In più ho cercato di mettere in pratica quanto appreso.
Insomma ha sempre piovuto (azz!) e ne ho approfittato. Sostanzialmente la parte
generale dovrei averla compresa. Ora vorrei capire altre cose e per questo vi
chiedo una mano.
Allora, per leggere, scrivere, manipolare stringhe, operazioni matematiche... si
usano le librerie standard oppure le chiamate di sistema, a loro volta
interfacciate dalle librerie standard (come ho letto in man syscalls). Fin qui
ci son arrivato e più o meno ho un'idea di come muovermi, o almeno credo.
Per lavori diversi tipo connettersi ad internet per scaricare un file,
manipolare audio, immagini... o si creano le proprie funzioni/librerie o si
usano quelle gratuite/a pagamento a disposizione. Qui brancolo nel buio più
totale. Farle io non ne sono in grado, se non altro per ragioni di tempo e, non
ultimo, per il fatto che non so neppure da dove cominciare. Usare quelle a
disposizione sarebbe la scelta migliore, però, io non ho idea ne di dove
trovarle, ne come cercarle, ne come integrarle nei miei "progetti".
Es: io vorrei collegarmi a yahoo per scaricare dei dati in csv, manipolarli e
poi salvare un file txt sul computer. L'ultima parte del "progetto" la saprei
anche fare (magari col manuale aperto), ma come implementare la prima
non ne ho assolutamente idea. Questo è un esempio...
Allora come faccio, data una esigenza particolare, a muovermi nel mondo
delle librerie non standard, non sapendo neppure il nome da cercare?
Grazie in anticipo.
Alberto
http://www.thefreecountry.com/sourcecode/cpp.shtml
è un buon punto di partenza per la ricerca di librerie C / C++
(se non lo hai già visto)
Es: io vorrei collegarmi a yahoo per scaricare dei dati in csv, manipolarli e
poi salvare un file txt sul computer. L'ultima parte del "progetto" la saprei
anche fare (magari col manuale aperto), ma come implementare la prima
non ne ho assolutamente idea. Questo è un esempio...
Forse sbaglio, ma per cose del genere non sarebbe più semplice usare linguaggi come Python e Perl?