>>>>> "Toyotoshy" == Toyotoshy <umbertobox@xxxxxxxx> writes: Lele> Il Pascal è un ottimo linguaggio, abbastanza semplice e Lele> molto di legno, particolarmente adatto per insegnare a Lele> programmare per la sua chiarezza, a discapito con Lele> concisività. Negli anni recenti, ha Toyotoshy> 1) e' questo il principale motivo per cui nelle scuole Toyotoshy> superiori si tende ad insegnare il Pascal piuttosto che Toyotoshy> il C? Azzardo (nel senso che non vado a controllarne la validità) una spiegazione storica. Chi insegna (di solito) informatica alle superiori? I laureati in matematica? Se sì quali laureati, quelli che hanno scelto l'indirizzo "didattico"? Se sì l'esame di TAMC (teoria e applicazione delle macchine calcolatrici?) mi pare fosse obbligatorio (forse solo de facto) per quell'indirizzo? Se sì che linguaggio si insegnava? Credo Pascal (ed infatti io me lo sono saltato). Toyotoshy> 2) Secondo voi pensare di insegnare alle superiori il C Toyotoshy> ... e' un delirio vero e proprio? Io credo che si possa insegnare C come primo linguaggio (l'ho anche fatto, qualche volta), anche se forse non è la scelta migliore. Come dici tu è una questione di tempo (sia di tempo totale che di prospettiva temporale) e di obiettivi. La mia impressione è che il C ponga due grossi problemi al momento di utilizzarlo per la prima volta: 1) gestione memoria (malloc/free); 2) puntatori (che sfuggono); 3) puntatori (casting). Notare che la gestine (manuale) della memoria è effettivamente solo una palla, è definitivamente meglio avere un garbage collector (che funzioni) che non averlo. Peraltro, per molti programmi anche "veri" i memory leak NON sono un problema, quindi c'è una sola soluzione banale, non fate mai free della memoria. I puntatori sono, alla fine, uno strumento utile, ma all'inizio "tagliano troppo" e "sfuggono". Incapsulate tutto ciò che taglia in funzioni/strutture che non tagliano: alla fine, programmare è astrarre, quindi... La questione del casting (ovvero di usare puntatori alla struttura "sbagliata") è, nella mia esperienza, un falso problema perché (per le cose che uno deve scrivere all'inizio -- e non solo) ha una soluzione banale: scrivete ANSI C, non mentite al compilatore, usate il gcc con -Wall. Secondo me, il problema pratico più grande al momento di insegnare C è che si deve anche insegnare anche un bel pezzo di ambiente (include, make, librerie, gcc, loader, ..., Emacs) e che occorre "più disciplina" (per esperienza so che gli " studenti" soccombono sempre alla tentazione di scrivere una cosa a caso, sperare che "funzioni" e altrimenti sperare di capire perché no -- con il C non mi pare il caso!) Da questo punto di vista altri "ambienti" sono molto migliori; facci oun esempio con Python perché lo conosco abbastanza: - niente ciclo di compile-run; - librerie per semplice copia incolla in un altro file "di lato"; - uso automatico della versione più recente (file) della lib; - traceback autoesplicativo; - garbage collection; - dynamic typing; Toyotoshy> ed andare pian pianino verso il java (e dunque verso la Toyotoshy> programazione ad oggetti) e' un delirio vero e proprio? A parte il fatto che della questione "oggetti" il lato programmazione (piuttosto che analisi e/o design) non è forse quello centrale, resta il fatto che è solo uno dei possibili paradigmi. Per insegnarlo bene lo si deve insegnare "motivandolo", e un linguaggio in cui la scelta è già stata fatta non mi pare proprio il massimo. In altri linguaggi (OK, sempre Python, ma è anche per risparmiarvi Oz [http://www.mozart-oz.org]) uno può programmare procedurale, funzionale, a oggetti, streaming e quindi "va a oggetti" solo quando gli pare il caso. -- bye, Luca -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx