L'approccio che seguo è bottom-up: son voluto partire dalle minuzie (cioé il ferro, quella che viene chiamata architettura dell'elaboratore) e risalire lentamente, introducendo un piccolo tassello aggiuntivo ad ogni lezione. Naturalmente, tutto scritto in maniera easy, con molte metafore, illustrazioni ed esercizietti.
Perché proprio il C? Beh, perché è la base dei linguaggi imperativi. In fondo, praticamente tutti i linguaggi non funzionali e non logici sono dialetti del C. Una volta imparata la logica, poi ci si può spostare su altri contesti senza paura, dai sistemi embedded alle web-application, passando per il mondo emergente del GPGPU computing.
Queste sono le "lezioni" effettuate finora:
- installazione dell'IDE, cenni di architettura degli elaboratori
- sintassi del C, programmazione strutturata
- ancora sulla sintassi, i tipi di dato, le variabili
- variabili parte seconda: gli array
- introduzione delle funzioni
- operatori aritmetici e logici
- costrutti di selezione
- costrutti di iterazione
- ancora sull'iterazione
- array multipli e struct
- ricorsione
- ancora ricorsione, memoria (record attivazione, heap, stack, ecc), introduzione dei puntatori
- le liste e l'allocazione di memoria (malloc)
- accenni dei costi asintotici, e ancora liste
Come sosteneva Schoenberg, anche il maestro impara nell'insegnare all'allievo. Trasmettendo il C sto scoprendo aspetti che proprio cui non avevo mai prestato attenzione o di cui ignoravo completamente l'esistenza. Per esempio, ho reagito in maniera un po' scomposta alla scoperta che sia sizeof che la virgola sono operatori in C, e in particolare la virgola (grazie ACray!) che in base alle situazioni può avere una semantica che definire balzana è usare un eufemismo. Il C non finisce mai di stupire.
4 comments:
Io quelle cose le sapevo.
N00b.
:D
Comunque complimenti per l'idea ;) Ci butto un occhio veloce :D
io proprio no! ad esempio ho sempre usato sizeof come una funzione, anche perché mi pareva logico.
tu mica stavi lavorando ad un tuo linguaggio? probabilmente conosci altre perversioni di C/C++ che nemmeno mi immagino.
Si', ci stavo lavorando, ma anche se ogni tanto pianifico di aggiungerci feature, non ho molto tempo da dedicarci :S
Bhe m'e' capitato di sentire qualcuno che considerasse anche return una funzione, perche' l'ha sempre usato (e a quanto pare visto usare) con le parentesi: return(val);
Comunque tante cose le ho dimenticate :) Purtroppo e' molto tempo che non mi esercito a dovere col C++, e ancora di piu' con C...
Mado', certo che son lunghi i thread di quelle lezioni XD non li ho letti tutti.
le parole povere portano via un sacco di spazio... alle volte vorrei tagliare corto con due formalismi, ma poi so che devo spendere un'ora a fornire chiarimenti! XD
ps: return(valore) non si può vedere!! argh!
Post a Comment