Newsgroup: it.comp.programmare
Titolo: Programmazione per ragazzi

Salve a tutti.
Non sono un frequentatore abituale di questo NG, ma mi rivolgo a 
codesto spettabile consesso :-) perche' mi si presenta questa 
questione:
ho un figliolo di 12 anni che frequenta la seconda media e che, essendo 
gia' da tempo interessato all'informatica (agli applicativi , mentre 
sui  giochi e' sempre stato molto tiepido) ultimamente sta manifestando 
un certo interesse per la programmazione.
Io non sono in grado di insegnargli granche', quindi gradirei i vostri 
suggerimenti sulla scelta di un testo di livello elementare che 
fornisca al ragazzo (e magari anche  ame, che male non mi farebbe) un 
primo approccio alla materia.
L'ideale sarebbe trovare qualcosa online, ma va bene anche un 
tradizionale libro di carta. In quest'ultimo caso ho presente la serie 
'for dummies', puo' andar bene?
Grazie a tutti.
-- 
Bye
Alfredmann
..........................................
Babbo di futuro programmatore :-)
..........................................................................................
Rispetto a ieri, siamo certamente al giorno dopo (J. Verne)

 dummies', puo' andar bene?
lo so che tutti mi remeranno contro ma fagli
imparare il C/C++ da subito. Se ti/gli serve una
mano scrivimi pure in prv. :)
-- 
"Papà, cos'è un mostro? - Mia cara, così su tre piedi
proprio non te lo saprei dire"

 mano scrivimi pure in prv. :)
... ovviamente e contestualmente un linguaggio più
"easy". Mi chiedo se Python potrebbe andar bene e mi
sa di sì.


> subito. Se ti/gli serve una mano scrivimi pure in prv. :)
ops, vedo che non hai perso tempo, come non detto. 
Non credo servirà.


 bene?
Senz'altro proprio perché dovrebbero essere rivolti ad un principiante.
Io come suggerimento do quello di un libro sulla programmazione in 
generale piuttosto che di uno specifico linguaggio, il linguaggio lo 
sceglierà secondo le necessità ma è l'approccio generale che conta.
Per una richiesta di questo tipo mi sembrerebbe adatto Squeak come 
ambiente, ma è una idea "a pelle" dato che di fatto non l'ho mai usato.

 ambiente, ma � una idea "a pelle" dato che di fatto non l'ho mai usato.
Dai, � cercarsela. Divertente � divertente. 
Ma � da provare che non sia meglio qualcosa di standard tipo Python.
Con il libro del Beri a poche manciate di euro.
-- 
-riko

 mano scrivimi pure in prv. :)
Pessima idea. Ancora ancora il C. Imparare come primo linguaggio C++ �
folle. Si finisce solo per essere necessariamente cattivi programmatori
C++.
-- 
-riko

 C++.
be', forse sarà pessima ma l'ho pensata prima di
scriverla. La mia opinione è che non si è obbligati
a usare uno strumento al pieno delle sue
potenzialità. Se ne parlò su questo NG e mi venne
confermato che è possibile usare il C++ a livelli
estremi, e non per nulla è il top dei linguaggi dal
punto di vista della potenza e sotto vari altri
aspetti noti.
Ma ha un formato libero, costrutti estremamente
flessibili, non si è obbligati a usarlo appieno. Si
può di fatto usare il C++ in modo molto vicino al
basic o al pascal e piano piano introdurre oggetti
molto molto semplici. Ci vorranno 5-6 anni prima di
toccare ereditarietà, funzioni virtuali eccetera?
OK, intanto il terreno è pronto con una sintassi
nota, un comportamento di cui si conoscono gli
spazi, un compilatore che ci ha accompagnato e alla
cui diagnositica si è abituati. Io non vedo ragione
per imparare un linguaggio con alte probabilità di
essere abbandonato come Basic o Pascal (non dico
l'abbia proposto tu, ho sparato nomi di linguaggi a
caso). E' vero che resta la mentalità, che il lavoro
di programmazione è ben altro che il linguaggio in
cui viene realizzato eccetera. Ma perché non partire
da subito con uno dei linguaggi migliori? Certo, se
il C++ obbligasse ai costrutti che si ritrovano in
un programma anche solo di livello medio-basso non
mi sarebbe saltato in mente di candidarlo. Ma "hello
world" dell'incipit del K&R lo può tranquillamente
capire e modificare un ragazzo di 10-13 anni.
Un'obiezione più forte e più concreta sono
effettivamente le librerie. Il C++ va bene per quei
ragazzi di indole profonda che sono almeno un poco
poco portati all'astrazione, che capiscono che anche
stampare i numeri da 1 a 10 su un terminale è solo
un caso particolare di una gamma infinita di
possibilità e ne comprendono il valore. Altri tipi
umani vogliono vedere subito un'uscita grafica, il
geco che si muove, le palline del flipper. Va
benissimo, è solo un altro tipo di mentalità e credo
che Python possa andare anche se non sono un esperto
di quel linguaggio. Altri diranno la loro. Meglio
ancora sarebbe imparare due linguaggi insieme e
parallelamente, in modo da capire le sfaccettature
di un problema.
Resta che non vedo perché fare percorsi molto simili
più di una volta. Io ho perso anni col Fortran e non
volevo imparare il C perché ero già grandicello e
avevo fatto molto col fortran. Conoscere un
linguaggio significa anche scrivere codice mentre si
ascolta musica, e in questo senso meglio secondo me
avere nel sangue la cosa migliore compatibile con le
condizioni al contorno.
Solo mie opinioni, non pretendo abbiano valore
oggettivo.
ciao!
Apx.


 di un problema.
E soprattutto in modo da impararli male entrambi *e* cosa piu'
interessante, con una scelta opportuna, continuare ad avere errori
perche' si confondono i due linguaggi. Questo e' piu' che altro
divertente in senso masochista, ma si riesce a fare.
Diverso e' imparare piu' linguaggi "uno dopo l'altro". Assicurandosi di
avere imparato il piu' possibile da uno prima di "passare" all'altro.
-- 
-riko

 di un problema.
E soprattutto in modo da impararli male entrambi *e* cosa piu'


 
Il piï¿œ bel libro in assoluto di tutti i tempi (per principianti)
http://www.ebook-gratis.it/2-Programmazione/76-Perl/592-Perl_Corso_di_programmazione_libro.html
Purtroppo credo non venga piï¿œ stampato cmq puï¿œ darsi che si trovi in 
rete, in alternativa cominciare da siti tipo 
www.html.it
 con linguaggi 
tipo PHP o PERL per poi eventualmente espandere le proprie conoscenze in 
base alle necessitï¿œ

 E te lo dico con cognizione di causa. [...]
Ho cuttato perché entrambi abbiamo scritto
parecchio, ma ovviamente ho letto (purtroppo sono in
piedi da un pezzo).
Direi che sappiamo come la pensiamo :) Mi pare di
capire che insegni o hai avuto modo di insegnare a
programmare sicché come minimo saprai di che parli.
Molte tue considerazioni le trovo interessanti e
sicuramente mi fanno vedere diversamente le cose; su
altre resto un po' sulle mie ma credo sia normale che
vada così.
C'è anche la variabile incognita rappresentata dal
carattere del ragazzo, che non conosciamo.
Probabilmente quello che accadrà sarà qualcosa che
non sarà totalmente riconducibile alle idee che sono
venute fuori; ciascuno ha i percorsi mentali suoi
e... beh, caso mai avremo un nuovo giovane
partecipante al NG :D
ciao!
Apx.
PS - Su Python non sarò una cima ma penso di
conoscerlo abbastanza per almeno chiamarlo in causa
in uno scambio di idee. Se no non ne avrei parlato.


 Con il libro del Beri a poche manciate di euro.
Che non conosco.
Io di py conosco pochissimo, giusto che riconosce i blocchi con le 
indentazioni, è adatto a più di un paradigma di programmazione e che ha 
una macchina vm a bytecode. Mi consigli di dare un'occhiata a quel libro?

 
La serie 'for dummies' va bene solo per i webmastella,
quindi li eviterei come la peste.
Il miglior linguaggio per cominciare a programmare
ï¿œ il Pascal (o Turbo Pascal).
Comunque, una futura iscrizione ad un ITIS indirizzo informatico
ï¿œ vivamente consigliata per imparare le basi della
programmazione.

 una macchina vm a bytecode. Mi consigli di dare un'occhiata a quel libro?
1. Marco e' un mio amico
2. Costa 7.5 euro o giu' di li. 
Per farsi un'idea mi sembra un'ottima scelta. Ti da i fondamenti[0], un
minimo di filosofia, qualche libreria carina da usare con esempi. 
------
[0] Ovvero, tutto quello che si usa normalmente per programmare in
Python. Adesso non lo ho sottomano, ma mi sembra che certi argomenti
"avanzati" non siano trattati, ma sono anche argomenti che a chi vuole
programmare "normalmente" non interessano, tantomeno a chi sta iniziando
o vuole farsi un'idea sul linguaggio.
-- 
-riko

 programmazione.
Non sono assolutamente d'accordo. 
-- 
-riko

 Non sono assolutamente d'accordo.
stranamente sono d'accordo con te :D Mi spingo a
dire che sarebbe controproducente.


 Non sono assolutamente d'accordo.
Ma neanch'io che l'ho fatto.
Che impari a scrivere bene in italiano e inglese piuttosto, ce n'e' un 
gran bisogno :p

 HyperCard e' sfortunatamente morto. *Ma* c'e' PythonCard, volendo.
Ma ci vuole un Brave Hero per avventurarsi in quella landa.
A quel punto ci sono Revolution e SuperCard che offrono piattaforme ben 
più rodati, ma è solo una affezione nostalgica che ho per HC che me li 
fa ricordare.
Btw ho preso la macchina Squeak con l'immagine che offrono sul sito, 
è... sconcertante, una specie di trip nel mondo delle interfacce :-)

 Grazie a tutti.
Prego.
Chiaramente il discorso e' lungo, e gia' il fatto che non sia venuto lui 
stesso qui a chiedere lumi, ma ci abbia mandato il papa', non e' un buon 
punto di partenza.
Il programmatore nel XXI secolo corrisponde allo stregone del medioevo: 
colui che ricerca, colui che prova, colui che fa mentre gli altri 
guardano e non capiscono.
Ci vuole curiosita', iniziativa, e una certa predisposizione.
E poi ci vuole un problema da affrontare e da risolvere.
Ce l'avete un problema da risolvere?

 qualsiasi distribuzione di linux, con tutti i compilatori.
Non condivido affatto che linux "renda facile la programmazione".
La questione è che se una persona impara a programmare si avventura più 
o meno profondamente sulla strada dellaconoscenza dei sistemi operativi, 
in special modo se si mette mano a C e POSIX/UNIX.
Dire che una distribuzione linux rende facile la programmazione è falso, 
dipende dalla storia dell'utente. Per portare un esempio se si deve 
perdere un mese (è un lasso di tempo messo per assurdo) per imparare 
l'uso di base perché si è abituati ad un altro sistema per poi 
ritrovarsi a programmare con un IDE che è sostanzialmente uguale sulle 
due piattaforme qual è il vantaggio? Per una affermazione del genere non 
si può prescindere dalle conscenze _attuali_ della persona.
Secondo me il sistema che _conviene_ usare è quello che si conosce 
meglio perché è uno strumento che si padroneggia meglio. Poi conviene 
studiare come funzionano i sistemi operativi.
Il sistema è uno strumento, quale sia migliore o peggiore dipende sempre 
dallo scopo e da quanto lo sai usare.
Semmai usare un sistema basato su linux obbligherà il ragazzo a capire 
prima certi meccanismi col risultato che troverà già assodati dei 
concetti che prima o poi avrebbe affrontato comunque.
Ma è un discorso che va in maniera ortogonale più che parallela alla 
programmazione, e comunque dipende sempre da che tipo di programmi ha in 
mente. Metti che il suo interesse siano widget realizzate in ECMAScript 
(js) e il discorso sui S.O. cala molto in priorità.
Tutto questo IMHO, sono un libertario dei S.O.

 2. Costa 7.5 euro o giu' di li. 
Quando capito in libreria gli do un'occhiata.

 bisogno :p
Forse non ho evidenziato a sufficienza il fatto che stiamo parlando di 
programmazione per diletto, non come aspirazione professionale.
-- 
Bye
Alfredmann

 mandato il papa', non e' un buon punto di partenza.
Non e' cosi'.
Il papa' vorrebbe insegnargli, ma non e' capace, quindi chiede lumi per 
diventarlo almeno quanto basta per dargli almeno la base minima.
Poi capace che decide di studiare lingue preincaiche, chenneso'?
-- 
Bye
Alfredmann

 preincaiche, chenneso'?
Ci ho dormito sopra. Ora è tutto chiaro (scherzoooo)
Prova "Python" di Marco Beri, ed. Apogeo. Costa
poco, è un libro piccolo di formato (cosa importante
che non è stata sottolineata) te lo porti ovunque e
lo spizzichi con calma. E' ovvio che partendo da
zero non sarà il primo e il solo linguaggio in cui
ti imbatterai, ma secondo me è un punto di partenza
tra i tanti.
BTW l'interprete di Python è free, e si installa
senza grane. Se lo desideri ci aggiungi un editor
(io uso Crimson editor che è semplice semplice) e
poi ci sarà tutto il tempo di cambiare mille volte
linguaggi, compilatori, interpreti e ambienti di
sviluppo.


 (js) e il discorso sui S.O. cala molto in priorità.
Comunque se non sai programmare non fai neanche i widget in ecma. (o
se li fai fanno schifo)


On 15 Ott, 09:30, Alfredmann

Allora prima della base minima, vediamo se c'e' la stoffa.
Prendi un mazzo di carte.
Mischiale.
Dalle al figlio e digli di rimetterle in ordine col minor numero di
scambi.
Se un mazzo e' troppo prova solo con le 13 picche.
Le mischi e le disponi sul tavolo a faccia in su.
Il gioco consiste nel rimetterle in ordine dall'asso al re nel minor
numero di scambi possibile.
Il passo successivo e' quello di definire una sequenza automatica che
funzioni sempre.
Questa e' programmazione.
Non serve un computer.
Non serve un linguaggio.
Il secondo esercizio consiste nel trovare un nominativo nell'elenco
del telefono aprendo le pagine il minor numero di volte.

 Motivare.
Forse il fatto che un tale Niklaus Wirth l'abbia inventato
proprio per questo ti pu� dire qualcosa?

Alfredmann ha scritto:

Appunto!

 la stoffa.
Io non ho mai creduto troppo a questo tipo di test
anche se l'intento del tuo post è molto chiaro e mi
aggancio solo per divagare, non per contrapporre idee.
Anche la persona più negata al mondo in un certo
campo, può combinare qualcosa di positivo. Ho citato
tempo fa l'esempio che segue e mi pare che la
discussione che seguì fu accesa. Conosco un
programmatore che fa ottime interfacce grafiche -
per quanto aiutato dall'ambiente di sviluppo che
scrive lo scheletro del codice, lo so - che se deve
trovare lo zero di una funzione non lo fa per
bisezioni, interpolazioni, niente di "smart" o
almeno di sensato; tabula la funzione con un passo
fitto e fa la media tra le due ascisse dove cambia
segno. Non gli entra in testa il fatto che prima
occorre aver formalizzato il problema e solo dopo lo
si traduce in istruzioni. Eppure "fa", gli piace, è
persino il suo lavoro. So perfettamente che non è un
programmatore nel senso più professionale del
termine eppure... eppure lavora e nutre la sua famiglia.
C'è poi l'aspetto che si può arrivare a una meta
tramite mille percorsi; premesso che si potrebbe
identificare un nucleo minimo di capacità, le
componenti che lo costituiscono possono non seguire
un ordine *sempre* obbligato, insomma, se il
marmocchio fallisce il test delle bisezioni ma è
bravo lo stesso su altri fronti? La parte
"algoritmi" e "buon senso" la imparerà quando le
circostanze ce lo metteranno di fronte.
ciao!
Apx.


 in uno scambio di idee. Se no non ne avrei parlato.
OK.
-- 
-riko

 fa ricordare.
Ad un costo non indifferente e con possibilita' di crescita... limitata.
-- 
-riko

 programmazione per diletto, non come aspirazione professionale.
Scusa, riassumiamo. Siamo d'accordo che di per se un ITIS non e'
condizione sufficiente ad imparare a programmare. 
Quindi, IMHO, o uno ci va perche' vuole diventare perito informatico
(perche' vuole lavorare in quel campo e non fare l'universita')
oppure...
Per diletto? Se uno vuole programmare per diletto puo' farlo con
qualunque scuola superiore. *E* mi sa tanto che come tutte le scuole si
venga costretti a fare anche tanta roba che non piace. Per cui, se si
vuole "imparare" ci si lavora duramente *da soli* a prescindere dalla
scuola. Se ci si vuole divertire, ci si diverte a prescindere dalla
scuola.
-- 
-riko

 proprio per questo ti pu� dire qualcosa?
Probabilmente non ti sei accorto che lo ha progettato grosso modo
quaranta anni fa e che nel frattempo il panorama e' cambiato non poco.
Il che vuole dire che se alla fine degli anni settanta Wirth lo ha
creato cosi' non vuole dire che *oggi* lo avrebbe creato cosi'.
Poi in informatica, come in ogni scienza, il principio di autorita' e'
la cosa piu' triste e ridicola che si possa immaginare.
Motiva perche' Pascal e' il *miglior* linguaggio di programmazione oggi.
Se proprio vogliamo divertirci con il principio di autorita', motiva
anche il perche' in buona parte delle migliori universita' americane
*non* lo usano per insegnare.
-- 
-riko

 E questo perche' non va bene?
Va bene, ho usato "semmai" per riformulare il concetto in una maniera 
che mi semmbrava meglio motivata, non per confutarlo.


Definiamo meglio il concetto di programmazione, perche' magari abbiamo
in mente cose diverse e per questo motivo non ci si capisce.
Dal mio punto di vista la programmazione e' l'elaborazione pura e
semplice e non comprende l'interfaccia che per me e' una cosa diversa.
La funzione, ovvero cio' che viene scritto dal programmatore, e' una
entita' che prende un input, lo elabora, e produce un output.
Fine.
Quando dico che per cominciare a prendere familiarita' con le funzioni
e' opportuno farlo in un ambiente unix lo dico per una serie di
motivi.
Il primo sono gli strumenti, che in unix ci sono gia', comprensivi di
documentazione.
Il secondo e' la presenza del terminale e la sua gestione nativa di
input e output, che consente di cominciare a scrivere semplici
funzioni, senza curarsi dell'interfaccia.
Una volta non c'erano dubbi su tutto questo.
Oggi, purtroppo, con la prepotente presenza di interfacce grafiche, di
strumenti di sviluppo troppo visuali, e della rete e dei browser,
l'interfaccia acquista una visibilita' tale da confondere chi si vuole
avvicinare alla programmazione, facendogli scambiare i concetti di
contenitore e contenuto.
Questa e' la mia opinione, basata sulla mia esperienza.
Se ci sono altri punti di vista, ben vengano.

 bravo lo stesso su altri fronti?
In tal caso fara' altre cose: io sono circondato da colleghi che non
sarebbero in grado di riordinare un array se non ci fosse la funzione
di sort gia' pronta, e che non sono in grado di effettuare una ricerca
in una struttura ordinata, e quindi si appoggiano ad Oracle anche per
tabelle di 10 record.
Eppure sono qui con me e mandiamo tutti insieme avanti la baracca.
Si puo' lavorare nell'IT anche senza essere buoni programmatori.
Ma intanto facciamo capire a questo ragazzino che cos'e' un
programmatore, come ragiona e che cosa fa.

 *non* lo usano per insegnare.
Noi possiamo esprimere un parere sul Pascal e dire se secondo noi e'
un linguaggio utile o meno utile solo per una semplicissima ragione:
noi conosciamo il Pascal.
Chi il Pascal non lo conosce non puo' dire proprio nulla in proposito.
Inoltre tutti i programmatori il Pascal lo conoscono, magari non lo
usano piu', magari non lo hanno mai usato, ma lo conoscono.
Per questi semplici motivi un aspirante programmatore dovrebbe
confrontarsi col Pascal: perche' fa parte della cultura generale di un
programmatore.

 Se ci sono altri punti di vista, ben vengano.
Per essere chiari è anche il mio.
Se non ho capito male parli di interfacce perché il mio esempio 
dell'ambiente di sviluppo ti ha suggerito "IDE" e "GUI builder" ma 
ripeto che non era la mia intenzione. La scelta dell'esempio è stata 
infelice nella discussione perché troppo vicina a questi due concetti.
Per _sostituire_ l'esempio poniamo che il ragazzo segua un libro che lo 
guida ai primi passi in C e consideriamo i due casi in cui lo si mette 
davanti ad un sistema che conosce (Win* per amore di statistica) e 
davanti ad un altro sistema con linux che non ha mai visto e su cui non 
sa muoversi.
La mia domanda (vagamente maieutica) è: su quale dei due sistemi il 
ragazzo sarà in grado di compilare "hello world" per primo?
Spero sia più chiaro, fatto salvo questo anche io suggerisco un sistema 
*NIX.

 ragazzo sarà in grado di compilare "hello world" per primo?
Linux, mentre quello che usa windows deve ancora trovare il sito per 
scaricare il compilatore.
E poi, C, perche' tanto odio?

 programmatore.
Secondo la tua logica, anche il Basic?


Purtroppo il basic, essendo diventato il linguaggio per scrivere macro
di Office e OpenOffice, ed essendo anche il linguaggio di asp, e'
necessario anche lui.
Ma questo basic.
Non il basic anni '80 delle righe numerate e dei GOTO!
Quello assolutamente no.

 E poi, C, perche' tanto odio?
A me il C piace, a prescindere dal fatto che lo uso.
Inoltre rispetto al pascal che utilizza Read e Write in modo
essenzialmente asettico, il C mette immediatamente in evidenza stdin e
stdout.
E questo a mio parere e' un bene: aiuta fin da subito a capire che
anche l'input e l'output sono oggetti come tutti gli altri.
In ogni caso io non farei proprio una questione di linguaggio, tanto i
primi approcci saranno tutti del tipo di:
1) acquisire un dato di ingresso
2) farci una elaborazione
3) visualizzare un risultato
e in questi tre step tutti i linguaggi sono talmente somiglianti che
credo di non essere il solo a scrivere un comando di un linguaggio
mentre sto scrivendo codice in un altro, quando si lavora con tanti
linguaggi diversi.
Per fare un classico esempio, la funzione che trasforma una stringa in
caratteri tutti maiuscoli: ogni linguaggio ne ha una, tutte hanno nomi
simili ma leggermente diversi, e io, regolarmente, ogni volta, mi
dimentico come si scrive nel linguaggio che sto usando in quel momento
e devo andare a verificare sul manuale.
Non capita solo a me, suppongo.

 necessario anche lui.
E il PHP? Perl? Necessario per cosa? Un aspirante programmatore deve 
confrontarsi con ASP? Io non sarei cosi' sicuro.
D'altra parte, se gli piacesse scrivere mod di Far Cry facendo pratica 
con LUA, secondo me sarebbe sulla strada giusta.
Imparare a programmare significa imparare a gestire la complessita', la 
*propria* complessita'.
IMHO, non significa mandare API a memoria, ne' far manutenzione delle 
macro di Office, e neppure far pratica di lingue morte come Pascal, 
COBOL, Perl e APL/1. Tutto puo' servire, tutto puo' essere divertente o 
portare a casa la pagnotta, ma non aiuta a scrivere programmi migliori.

 
che gliene frega al tizio che ha iniziato il thread cosa fanno
nelle universit� americane? Mica ci deve iscrivere il figlio!

 scuola.
Appunto, ma la scuola l'hanno tirata in ballo altri nel thread, non io. 
Io non ho mai parlato di scelte di vita, mi sono limitato  chiedere 
quale fosse l'approccio piu' corretto all'apprendimento dei rudimenti 
della materia.
-- 
Bye
Alfredmann

 programmatore.
La logica! Forse conviene partire da l�
Noi conosciamo il Pascal (corollario: chi non lo conosce taccia)
=> tutti conoscono il Pascal
=> un aspirante programmatore dovrebbe conoscere il Pascal
Sorry, qualcosa non mi torna.
Enrico

 ragiona e che cosa fa.
Be' certo... è per questo che mi sono un po' tirato
indietro anche se continuo a pensare che dovendo
acchiappare il gomitolo e tirare un filo, con la
prospettiva di tirarsene dietro tanti altri se
piace, uno dei più comodi entry points sia Python.
Ma non ne faccio una questione di partigianeria,
tanto più che io faccio ogni cosa in C++. Il fatto è
che lo strumento e come si usa per un certo periodo
non saranno separabili. Per questo, visto che
comunque inizierà Alf a ravanare tra le varie
possibilità, poi capirà lui che pesci prendere.
Resto però sostanzialmente contrario a studiare
prima logica o valutare attitudini. In una prima
fase, qualsiasi cosa si stia facendo, molte delle
componenti che poi l'esperienza consente o obbliga a
separare, vengono insieme. "Assieme" ai rudimenti
del linguaggio, chi sta imparando implementerà il
suo primo bubble sort, eccetera. Poi si torna
indietro, si vedono le cose dalla distanza, e si
fanno altre scelte se è il caso.
Staremo a vedere che succede ^_^


 con LUA
Lua, sulla ml ti scorticano se lo capitalizzi così.

 programmatore.
Siamo passati dai giochini con le carte al dover imparare il Pascal.
Dopo di che, C fa parte della cultura generale pure lui. VisualBasic
della cultura generale di un programmatore Windows, shell, sed, awk e/o
perl di uno unix. Dopotutto ormai pure Java. E guarda, possiamo fare
molto lungo l'elenco.
Resta il fatto che da qualche parte deve cominciare. Il fatto che
"tutti[0] lo conoscono e poi non lo usano piu'" mi sembra scarsamente
rilevante per dirigersi in quella direzione.
-----
[0] come ti dicevo poi, quel "tutti" non sta in piedi.
-- 
-riko

 nelle universit� americane? Mica ci deve iscrivere il figlio!
No. Tu suggerisci che dovrebbe imparare Pascal perche' Wirth lo ha
creato 40 anni fa a scopo didattico. Io ti rispondo che negli ultimi
quaranta anni i pareri su questa cosa sono nettamente cambiati. *Io* non
suggerirei di imparare a programmare in Pascal oggi. *Tu* suggerisci
invece di farlo, invocando il principio di autorita' come unica
giustificazione.
Io da un lato ti chiedo altre giustificazioni, dall'altro ti faccio
notare come probabilmente anche ammettendo (ma non concedendo, ben
inteso) il principio di autorita' nelle questioni tecniche, finirebbe
che Pascal *oggi* non e' una buona scelta.
-- 
-riko

 Sorry, qualcosa non mi torna.
Quoto.
-- 
-riko


Ok, mi avete convinto.
In ogni caso da qualche parte bisogna pur cominciare.
E a parer mio bisogna cominciare da un linguaggio procedurale, che
permetta la ricorsivita', che gestisca tipi di dati elementari e che
consenta di creare tipi di dati piu' complessi.
Inoltre deve permettere di gestire con una certa facilita' l'I/O sullo
stdin e stdout magari in modo preferenziale.
I linguaggi con queste caratteristiche sono tanti.
Tutto sommato sarebbe ancora meglio cominciare con un interpretato
cosi' non c'e' neppure il problema di compilare.
Python, Perl, Ruby...

 
Butto lï¿œ i miei due euro cent di consiglio un po' fuori dal coro.
Perchï¿œ non cominciare con qualcosa di piï¿œ piccolo di un PC?
Un oggetto del genere si programma in BASIC (che, fino a prova 
contraria, resta il linguaggio per principianti per definizione):
http://www.parallax.com/tabid/295/Default.aspx
Ed ï¿œ fatto apposta per chi vuole imparare e divertirsi.
Unisce alla programmazione anche qualche nozione di elettronica e, 
soprattutto, la soddisfazione di vedere quello che hai realizzato che 
"vive" (il termine ï¿œ grosso, ma passatemelo!) indipendentemente dal PC.
Si realizzano cose semplici in poco tempo e, a differenza di quello che 
accade lavorando solo sul PC, il tutto puï¿œ anche essere un gioco 
"manuale", come lo erano i vecchi lego, meccano etc.
Credo che aggiungere al software "puro" anche una dimensione "fisica" 
(fosse pure un led che si accende e spegne) puï¿œ rendere la 
programmazione piï¿œ appagante per un ragazzo (e cosï¿œ ï¿œ pure per il 
sottoscritto che ormai ragazzo non ï¿œ piï¿œ da un paio di decenni :)).
Ci sono anche versioni programmabili dei lego ma, a quanto ho visto, 
hanno costi davvero "da amatore".
Altri sistemi (arduino, ad esempio) si programmano in C (anche se con un 
sistema molto semplice), potrebbero essere il passo successivo.
Certo che poi rischi di trovarti in casa un programmatore "embedded", 
fili volanti, componenti dissaldati etc.
In quel caso... dimenticati il mio messaggio :)
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non ï¿œ valido)

 stdin e stdout magari in modo preferenziale.
Questa � un'opinione, sebbene una estremamente condivisa.
Complessivamente sono d'accordo anche io. Di qui si torna... lo studente
preferisce stare vicino al ferro e guardarlo lavorare oppure stare
vicino all'umano e poter raggiungere una maggiore gamma di obiettivi?
Credo siano entrambe posizioni valide, alla fine dipende molto dai
gusti. Ovviamente nella prima posizione suggerisco C, nella seconda...
essendo di parte, Python.
Io poi di fatto trovo molto intrigante anche fare iniziare con scheme...
che salvo il fatto che � prettamente funzionale invece che
procedurale... beh, ovviamente ha tutto quello di cui sopra. ;)
-- 
-riko