Entra

View Full Version : Da dove partire ..... ragazzo di 15 anni


morespeed
10-11-2017, 14:18
Ciao ragazzi, mio figlio quindicenne frequenta il secondo anno di liceo scientifico di scienze applicate. Visto che gli interessano molto i pc vorrei che iniziasse un po di basi per la programmazione e visto che la scuola sotto questo aspetto latita vorrei un vostro consiglio per un orientazione di massima.
Ad oggi da dove partire ? Quale linguaggio?

Xfree
10-11-2017, 15:51
Sarò lapidario: Think Python 2e (http://greenteapress.com/wp/think-python-2e/).

bancodeipugni
10-11-2017, 20:51
non partire

cambia sport :rolleyes:

morespeed
11-11-2017, 19:57
Sarò lapidario: Think Python 2e (http://greenteapress.com/wp/think-python-2e/).
GRANDE :D il pyton in pratica e' cio' che avvicina inizialmente al linguaggio macchina?
Purtroppo io e la programmazione non siamo compatibili :P
In italiano hai qualcosa da consigliarmi?


matematica, logica, architetture degli elaboratori, python per fare pratica di "pensiero algoritmico", C per capire come funziona un elaboratore.

Il linguaggio c o c++ sono ideali per ragazzi di questa eta'?



non partire

cambia sport :rolleyes:


Purtroppo quello vuole, e non posso essere io a costringerlo a cambiar strada, speriamo bene :D

Xfree
11-11-2017, 20:21
No, Python è tutt'altro che vicino al linguaggio macchina, però per cominciare, se tuo figlio non ha nessuna base, ha una curva di apprendimento più facile e gli permette di concentrarsi più sulla risoluzione dei problemi che su dettagli a contorno.
Per risorse in italiano non saprei consigliarti, però l'inglese è fondamentale in ambito lavorativo e tecnologico.
-EDIT-
Trovata la versione italiana del libro consigliato https://github.com/AllenDowney/ThinkPythonItalian

k0nt3
12-11-2017, 10:47
GRANDE :D il pyton in pratica e' cio' che avvicina inizialmente al linguaggio macchina?
Purtroppo io e la programmazione non siamo compatibili :P
In italiano hai qualcosa da consigliarmi?

Il linguaggio c o c++ sono ideali per ragazzi di questa eta'?

Purtroppo quello vuole, e non posso essere io a costringerlo a cambiar strada, speriamo bene :D
Personalmente non credo ci sia un linguaggio più adatto di altri, dipende molto da cosa si vuole ottenere e dalle proprie attitudini.
Per capirci meglio: molti consigliano Python per imparare perchè ti permette di concentrarti sulla risoluzione dei problemi senza dover capire nel dettaglio come funziona un computer.
Premesso che personalmente preferisco Ruby... potrebbe essere, ma ci sono anche persone che vogliono capire come funziona un computer, e in quel caso C potrebbe essere una buona scelta. Giusto? Sbagliato? Nessuno dei due, dipende dalle proprie attitudini.
Tra l'altro vale la pena di citare Java, che è di fatto il linguaggio di programmazione più usato al mondo. In Java 9 hanno aggiunto JShell, per cui imparare a programmare in Java non è più tanto diverso da Python/Ruby.
Secondo me se è quello che vuole dovrebbe iniziare a sperimentare da solo, lui meglio di chiunque altro conosce i propri interessi e le proprie attitudini.

pabloski
12-11-2017, 11:35
GRANDE :D il pyton in pratica e' cio' che avvicina inizialmente al linguaggio macchina?

E' l'esatto opposto. Python e' un linguaggio di alto livello, che astrae totalmente i meccanismi di base della macchina e offre un ambiente altamente espressivo.

Ma va bene cosi', perche' avere a che fare con la macchina e' noioso ed e' facile perdere interesse. Quello deve venire dopo.

Ai miei tempi si iniziava col Basic ( era preinstallato col DOS e non c'era Internet da cui potersi procurare ogni genere di software ). Python e' il Basic dei tempi moderni, anche se offre molto di piu'.

Il libro che ti hanno indicato esiste anche in italiano https://www.python.it/doc/Howtothink/Howtothink-html-it/index.htm

Inutile dire che l'inglesse e' fondamentale in questo ambiente. Ma lo imparera' man mano che leggera' testi in inglese.





Il linguaggio c o c++ sono ideali per ragazzi di questa eta'?


C e C++ non sono confrontabili, in quanto il secondo ha una complessita' di vari ordini di grandezza superiore.

Comunque sono linguaggi ( lingue ), sicuramente piu' facili dell'italiano che ci costringono a studiare gia' a 5-6 anni :D

C comunque e' bene studiarlo dopo che si saranno appresi i concetti fondamentali ( tramite Python o linguaggi simili ) e possibilmente aver studiato un po' di teoria ed algoritmi.

Un ulteriore passo, che prima o poi e' bene fare, riguarda il cimentarsi nello studio del funzionamento della macchina a basso livello, quindi usare l'Assembly per realizzare qualcosina, tipo programmare periferiche a basso livello, DMA, controller degli interrupt, ecc... Si vive lo stesso senza averlo fatto, ma si ha una conoscenza parecchio carente sul reale funzionamento dei computer.

Infine c'e' da considerare un trend moderno che riguarda la programmazione funzionale. E' un modello di programmazione fondato sul formalismo matematico, aiuta molto ad acquisire nuovi punti di vista sulla programmazione e sta vedendo un discreto boom ( soprattutto per le sue capacita' di costruire software robusto e sicuro ). Haskell e Lisp sono i due linguaggi di riferimento in questo ambito. Ovviamente andranno affrontati molto piu' in la', ma e' bene darci un'occhiata anche sommaria.






Purtroppo quello vuole, e non posso essere io a costringerlo a cambiar strada, speriamo bene :D

Perche' dovresti? Tanto molte attivita' saranno sostituite dalle AI in futuro. I programmatori di un certo livello molto probabilmente non saranno sulla lista.

bancodeipugni
12-11-2017, 11:45
a 15 anni le idee si cambiano molto velocemente
non perderei tempo e soldi in corsi di approfondimento che rischierebbero di prosciugare solo tempo ed energie:
se quella sarù la via farà in tempo ad acquisire le competenze necessarie

Volutomitra
12-11-2017, 12:52
Ma va bene cosi', perche' avere a che fare con la macchina e' noioso ed e' facile perdere interesse. Quello deve venire dopo.

Oddio, dipende dai gusti... Io faccio firmware per dispositivi a microcontrollore e lo trovo molto ma molto più divertente che programmare ad alto livello :D

Tra l'altro è sempre più difficile trovare gente (sopratutto giovani neolaureati o neodiplomati) che si rende conto che conoscere la piattaforma su cui sta programmando non è un concetto banale.

E' tutto relativo, insomma ;)

pabloski
12-11-2017, 16:06
Oddio, dipende dai gusti... Io faccio firmware per dispositivi a microcontrollore e lo trovo molto ma molto più divertente che programmare ad alto livello :D

Per chi inizia e' drammatico. Troppe lacune conoscitive e tantissimi fallimenti. A quell'eta' e' facile perdere le staffe.

Anch'io ho una forte attrazione per la programmazione a basso livello. Ricordo quando verso i 14 anni comprai il libro di Coffron che spiegava per filo e per segno l'architettura x86, con un'intera sezione dedicata agli opcode. Nel giro di un paio di settimane cominciai a programmare letteralmente in esadecimale, traducendo manualmente l'assembly con l'ausilio del libro.

Mi piaceva una cifra. Ma avevo alle spalle 3 anni pieni di programmazione in Basic e Pascal, quindi ero abituato all'idea che un programma appena scritto non girera' e bisogna sudare per farlo andare.


Tra l'altro è sempre più difficile trovare gente (sopratutto giovani neolaureati o neodiplomati) che si rende conto che conoscere la piattaforma su cui sta programmando non è un concetto banale.

E' tutto relativo, insomma ;)

Vabbe' l'universita' italiana e' una barzelletta. Quando stavo ad informatica ho visto gente prendere il famoso pezzo di carta, ma che non sapeva scrivere un programma banale in C per Linux ( e manco per Windows ).

Di sicuro specializzarsi nella programmazione a basso livello ha enormi vantaggi lavorativi. Faccio notare che il settore in cui c'e' carenza cronica di professionisti e' quello della sicurezza informatica. E li' giocoforza devi conoscere la programmazione a basso livello.

Quindi programmare a basso livello non e' nemmeno fine a se' stesso, ma ha ambiti applicativi che vanno oltre la programmazione embedded e di sistema.

misterx
12-11-2017, 17:05
anche senza scendere al livello del linguaggio macchina, se non si conosce come opera l'SO e quali strutture usa, la vedo dura, conoscendo solo qualche funzione di un qualche linguaggio scrivere programmi efficienti e complessi.

Tempo fa avevo letto su qualche rivista del settore, che le CPU sarebbero diventate un giorno talmente veloci che ne evrebbero beneficiato anche programmi scritti male: non è assolutamente così, un programma scritto male fa morire anche la migliore delle CPU e non ne sfrutta tutte le potenzialità.

Nuke987
12-11-2017, 20:46
Tempo fa avevo letto su qualche rivista del settore, che le CPU sarebbero diventate un giorno talmente veloci che ne evrebbero beneficiato anche programmi scritti male: non è assolutamente così, un programma scritto male fa morire anche la migliore delle CPU e non ne sfrutta tutte le potenzialità.
Però c'è del vero. 20 anni fa una select troppo piena crashava un server. Oggi manco se spammi 5k di email all'ora si pianta. Oggi quando programmi lo fai il più delle volte in totale libertà. Prima dovevi fare i conti con i 56k ed i 1000 € + euro / mese che ci volevano per una misera 2Mbps in datacenter. Non potevi permetterti errori.

Bazzilla
13-11-2017, 10:28
Ciao ragazzi, mio figlio quindicenne frequenta il secondo anno di liceo scientifico di scienze applicate. Visto che gli interessano molto i pc vorrei che iniziasse un po di basi per la programmazione e visto che la scuola sotto questo aspetto latita vorrei un vostro consiglio per un orientazione di massima.
Ad oggi da dove partire ? Quale linguaggio?

Io partirei dal fargli acquisire, se già non li ha, i fondamenti dell'informatica: concetti di bit, byte, memoria, CPU, risorse, sistema operativo, architettura degli elaboratori (senza scendere nel dettaglio), programmazione imperativa, programmazione ad oggetti, macchina virtuale, ecc...
Giusto perchè sappia di cosa si parla quando entrano in ballo questi concetti.
Poi un po' di C può essere utile per partire.
Sul linguaggio con cui operare poi, hai diverse scelte: continuare col C, Java, Python...ognuno ha il suo contesto e il suo senso.

morespeed
13-11-2017, 15:38
Rispondo e ringrazio un po' tutti voi con queste righe.

Io iniziai con il basic 30 anni fa..... e li mi sono fermato.
Il ragazzo sa montare e smontare un pc completamente da solo e logicamente sa installare windows et simili.

Non mi ha chiesto espressamente che vuole imparare un linguaggio. Ma viste le sue attitudini credo valga la pena spendere 2 soldi per 2 libri e farlo provare.

Detto questo credo di aver capito che forse e' meglio iniziare con pyon/java a livello basico, mi sbaglio?

Ringrazio ancora tutti voi per l'estrema disponibilità.

Grazie mille per i link

cdimauro
13-11-2017, 16:18
Python, senza se e senza ma. Il resto lo farà dopo, se s'appassionerà.

Mursey
14-11-2017, 13:30
Il ragazzo sa montare e smontare un pc completamente da solo e logicamente sa installare windows et simili.

Ottimo ma scrivere software è un'altra cosa.

Non mi ha chiesto espressamente che vuole imparare un linguaggio. Ma viste le sue attitudini credo valga la pena spendere 2 soldi per 2 libri e farlo provare.

Mi sembra una scelta azzardata e che magari non va incontro ai desideri del ragazzo.
Detto questo io quindi non consiglio di spendere soldi ma prima di farlo provare seguendo qualche semplice corso su HTML.it.

Se dimostra interesse e capacità allora si può valutare di spenderci soldi.

sottovento
14-11-2017, 14:07
Io partirei da Scratch.
E' divertente, permette di fare videogiochi molto semplicemente, permette di imparare i costrutti base e porta la firma del MIT.
Permette anche di programmare robot. I miei figli hanno cominciato cosi', da piccoli. Inoltre la codifica dei colori e delle forme permette di imparare immediatamente cosa si puo' fare e cosa no.

Io perderei una settimana a giocare con scratch, cosi' da imparare come si programma. Poi passerei a cose piu' difficili, per esempio python

morespeed
14-11-2017, 20:21
Ottimo ma scrivere software è un'altra cosa.



Mi sembra una scelta azzardata e che magari non va incontro ai desideri del ragazzo.
Detto questo io quindi non consiglio di spendere soldi ma prima di farlo provare seguendo qualche semplice corso su HTML.it.

Se dimostra interesse e capacità allora si può valutare di spenderci soldi.

Scelta azzardata per 30 euro di libri?
In caso li leggo io, magari mi prende voglia di studiare, secondo me i ragazzi a volte hanno bisogno di essere stimolati ;)

Io partirei da Scratch.
E' divertente, permette di fare videogiochi molto semplicemente, permette di imparare i costrutti base e porta la firma del MIT.
Permette anche di programmare robot. I miei figli hanno cominciato cosi', da piccoli. Inoltre la codifica dei colori e delle forme permette di imparare immediatamente cosa si puo' fare e cosa no.

Io perderei una settimana a giocare con scratch, cosi' da imparare come si programma. Poi passerei a cose piu' difficili, per esempio python
Beh, non sapevo dell'esistenza di questo programma, mi sembra anche simile (ma molto piu' completo) di cose che ha gia' fatto a scuola, vediamo se gli piacera'. Grazie ;)

Mursey
14-11-2017, 21:21
Scelta azzardata per 30 euro di libri?

Ah beh, se questa è la spesa vai tranquillo :D

morespeed
15-11-2017, 16:28
Per ora ho preso pyton come molti di voi hanno suggerito. Vediamo poi come va ed in caso vedro' se gli va di masticare java....poi dio vede e provvede.
Grazie mille a tutti voi comunque per l'aiuto ;)

eaman
09-12-2017, 19:34
Mah, IMHO Scratch e' fin troppo 'basic' per un ragazzo di 15 anni che dovrebbe avere gia' una certa capacita' di astrazione...

Per me scratch va bene sotto i 12 anni, tipo da 6-11, dopo si puo' usare un editor di testo.
Una roba che piace molo ai giovani e' arduino, con un bel kit. Si puo' fare anche in python con la pyboard ma ci sono molto meno materiali, se invece c'e' un adulto esperto e si vuole spingere su py si puo' fare.

fano
24-12-2017, 17:53
Io fui "iniziato" alla programmazione coi Lego Robot... in generale credo che vedere un dispositivo che "reagisce" alla programmazione sia la cosa più bella.

Gli "Hello World" finiscono per annoiare presto :D

Mursey
24-12-2017, 19:06
Gli "Hello World" finiscono per annoiare presto :D

Forse dipende dalla epoca di quando si comincia :)
Io ho cominciato nel 1990 con il Commodore 64 perchè volevo fare un gioco mio ispirato ai librigame, in seguito con un amico facemmo un gioco dove si tiravano i rigori.

Nuke987
25-12-2017, 16:40
Concordo. Io suggerirei un videogame: Factorio. È programmazione allo stato puro. Merita tanto. Non ho mai visto un videogame che si presti così tanto alla creatività.

marco.r
04-01-2018, 21:54
Il discorso del linguaggio e' relativo, quello su cui dovresti concentrarti secondo me e' il tipo di programmazione che puo' andare bene per lui. Secondo me meglio puntare su qualcosa di interattivo o comunque che permetta di vedere facilmente risultati pratici, in modo da evitare che si stufi presto.

Cosa nel dettaglio dipende dai gusti del ragazzo, e qui devi vedere tu, o al piu' fargliene provare piu' di uno. Alcune idee che mi vengono in mente (gia' citate da altri)

Programmazione di un arduino. Avra' bisogno di un po' di aiuto all'inizio, ma se gli piace anche un po' l'elettronica potrebbe divertirsi un sacco. C'e' tantissima documentazione online, anche se perlopiu' in inglese

Lego mindstorms. Secondo me sono molto divertenti, l'inconveniente e' che come tutti i Lego (e anche piu') sono costosi.

Ambienti pensati per l'insegnamento della programmazione. Oltre a Scratch (che pero' secondo me e' per bambini piu' giovani) ce ne sono diversi anche online. Ad esempio uno che avevo visto tempo fa e' https://codecombat.com/.

Tempo fa avrei detto anche HTML+Javascript, ma ho il dubbio che ormai stia diventanto un po' troppo complessa. Se trovi qualche risorsa online apposita puoi fare un tentativo, di per se l'ambiente del browser e' carino perche' hai un feedback veloce su quello che stai scrivendo

Mursey
05-01-2018, 09:31
Tempo fa avrei detto anche HTML+Javascript, ma ho il dubbio che ormai stia diventanto un po' troppo complessa. Se trovi qualche risorsa online apposita puoi fare un tentativo, di per se l'ambiente del browser e' carino perche' hai un feedback veloce su quello che stai scrivendo

Però Javascript lo trovo poco educativo per le grandi libertà che si prende.
E' molto interessante ma magari fatto quando le basi solide (e classiche) ci sono già e sono robuste.

Varilion
13-01-2018, 22:53
Forse dipende dalla epoca di quando si comincia :)
Io ho cominciato nel 1990 con il Commodore 64 perchè volevo fare un gioco mio ispirato ai librigame, in seguito con un amico facemmo un gioco dove si tiravano i rigori.

Anche io volevo fare una sorta di RPG stile libro game all'inizio. Riuscii anche a produrre una cosa che funzionava, entro certi limiti... Avendo cominciato qualche anno dopo di te però avevo tra le mie mani un più potente strumento: Visual Basic 6.0

Adesso suggerire qualcosa come Python e/o Java.

All'epoca a me tornava "semplice" il fatto che potesii aggiungere componenti facendo drag&drop ed implementare le azioni negli "handler" referenziando tutto tramite il "." Oltre a sfruttare come mia pressochè unica fonte di conoscenza i CD dell'MSDN