Newsgroup: it.comp.lang.c++
Titolo: [Semi OT] quale linguaggio

Ieri un mio amico mi ha chiesto un consiglio, che non ho saputo 
minimamente dargli. La questione sta in questi termini. Ha un figlio 
giovanissimo che (un po' come tutti i ragazzi...) smanetta col pici, ma 
(IMHO caso raro) vorrebbe imparare a programmare. Sembra gli interessi 
pagine web, grafica... forse non lo sa manco lui. E' ASSOLUTAMENTE 
vergine, inesperto e digiuno di tutto, ha solo entusiasmo e volontà (ma 
alla fine potrebbe essere un vantaggio). Domanda: cosa gli consigliereste 
voi?
Io ricordandomi di post precedenti pensavo in questo caso specifico al 
python, perché mi sembra di aver capito che è ad lato livello, semplice, 
moderno...
Un grazie per qualunque consiglio,
-- 
<<L'età della pietra non è finita perché sono finite le pietre>>.

 moderno...
Io direi Python anche per le soddisfazioni che può dare con poco. Cioè 
con poco puoi scaricare pagine, maneggiare HTML o XML, e così via 
grazie alla libreria integrata. Farsi una finestra Hello Word in C/C++ 
è scor[ae]ggiante.
Poi se la cosa quaglia si può indirizzare il suo interesse su qualcosa 
di più specifico. Ma per iniziare può andare, e forse anche per finire. 
Se si interessa di grafica si potrebbe divertire con: 
http://www.pythonware.com/products/pil/
oppure con blender 
http://www.blender.it/
 che se ricordo bene è 
pilotabile via Python.
-- 
Articolo 33 della Costituzione italiana: L'arte e la scienza sono 
libere e libero ne è l'insegnamento

Anch'i voto per Python.
Non e' il miglior linguaggio, ma e' un ottimo ambiente:
- ha un editor interattivo simile al Basic: gli errori li trovi
subito, e puoi sperimentare senza nemmeno sapere cosa e un file.
- e' ultraportabile: scritto in C, funziona anche sui telefonini piu'
scarsi: si puo' quindi divertire a scrivere programmi anche  in
spiaggia.
- non impone l'uso di programmazione ad oggetti, ma non solo, ha un
ottimo sistema di namespaces che rende anche la programmazione
procedurale molto ordinata
- ha una macchina virtuale veramente astratta: gli interi sono
praticamente illimitati. E ce ne sono solo di un tipo.
- Ha molte librerie open source disponibili, su cui e' facile metterci
le mani
- il concetto base e' quello di puntatore, quindi un ottima
introduzione alla nozione.
- si puo' estendere con il C (il passo da fare dopo aver imparato
Python)
L'unica nota negativa: la sintassi sta cambiando con Python3, quindi
e' utile ricordarsi di fargli apprendere Python3 prima che la sintassi
corrente si ingrani troppo nella sua testa.
Altra nota:
- siccome non ha ancora iniziato a usare sistemi di source control,
fagli imparare Mercurial: e' un ottimo sistema, scritto in Python, ed
e' distribuito e superiore a CVS, Subversion e compania. E nel mondo
del lavoro del futuro i sistemi di source control distribuiti saranno
usati moltissimo.

 Anch'i voto per Python.
Grazie 1000 a te ed a Davide delle UTILISSIME indicazioni. Solo un'ultima 
cosa... Python ha una libreria per interfacciarsi con un SQL? Ad esempio 
MySQL in Linux?
Buona giornata,


 Python ha una libreria per interfacciarsi con un SQL?
Se ricordo bene sqlite fa parte della libreria standard, per iniziare 
va più che bene. E anche per continuare può andare più che bene. Ad un 
novizio direi di stare alla larga da mysql, ma anche da tutti i server 
db di mio gradimento. Non caricare il ragazzo con troppe cose.
Ovviamente per sqlite trovi tanti programmelli grafici per guardare 
dentro un DB di tal fatta (usa google per trovarli), qualcosa di 
vagamente simile ad access per intenderci (che di per se è solo un 
front end, NON è un motore di DB).


 db di mio gradimento. Non caricare il ragazzo con troppe cose.
Mah... ho visto (Linux Magazine di questo mese) un articolo dove parlano 
di un mail server. Addirittura per il file di configurazione gestiscono 
un SQL... Insomma, mi sembra lo stiano usando moltissimo.


 Insomma, mi sembra lo stiano usando moltissimo.
Il fatto che sia usato non vuol dire che sia un buon Server DB, ma a 
prescindere dalla mia opinione su MySql io ad un novizio non gli fare 
usare nessun Server DB, ma al massimo un server embedded di qualità 
come sqlite.
Per quanto mi riguarda puoi anche fargli scaricare e usare il DB di 
Oracle. Per me è un'altra pessima idea per un novizio, ma sei libero di 
fargli del male. Oracle è un ottimo server DB a saperlo usare, ed è un 
ottimo modo per suicidarsi se sei a digiuno in materia di DB. Un 
suicidio lento e cruento tra l'altro.
Nel mondo dell'automazione, tanti anni fa, ho visto spessissimo usare 
il Jet Engine come database in ambiente concorrente e come una sorta di 
server DB. Io ho un'ottima opionione di Jet così come del front end 
Access, ma quello era un'altro modo per cercasi rogne. Quando 
consigliavo di usare SQL Server (che non era ancora quel mostro di 
potenzialità di oggi) manca poco che mi ridessero in faccia. Allora le 
mie opinioni non aveno molto valore; mi rispondevano che "in tanti 
usano Jet, quindi tanto male non deve essere".
La mia opionione è di non sovraccaricare il ragazzo con la complessità 
di un Server DB, almeno non in questo momento.


 usati moltissimo.
Quoto. Ma ho dubbi sul fatto che così da piccolo ne senta la 
necessità/capisca i vantaggi. Ma non di Mercurial, di un qualunque 
sistema di version control.
-- 
quality of work can be expected only through personal satisfaction, 
dedication and enjoyment. In our profession, precision and perfection 
are not a dispensible luxury, but a simple necessity.
Niklaus Wirth

 MySQL in Linux?
Si. Puoi usare la libreria 'grezza' oppure qualcosa di più comodo e 
agevole come SQLAlchemy (eventualmente senza usarne le capacità di ORM, 
se non ti garbano).
Ma perchè non parlarne su iclp?
-- 
He must be a king.
Why?
He hasn't got shit all over him.

 Ad un novizio direi di stare alla larga da mysql
Ma anche ad un professionista... :P
-- 
There's ways to amuse yourself while doing things and thats how I look 
at efficency.
Donald Knuth

 complessità di un Server DB, almeno non in questo momento.
Posso essere d'accordo, ma dipende cosa vuole fare.
Che so, io da bambino mi programmavo i giochini. Per cui mi sono 
imparato a forza un fottio di geometria computazionale, e quella roba 
li. A 9 anni sapevo perfettamente maneggiare la trigonometria, questo 
perchè mi *piaceva*.
*Se* vuole stare con il web, la cosa mi riempie di tristezza. E' una 
cosa relativamenta banale, ma bisogna avere un buon numero di nozioni 
'tecniche' poco interessanti (per un bambino). Penso che fra i vari 
ambiti della programmazione sia uno dei più ostici per qualcuno 
totalmente a digiuno di nozioni collaterali (protocolli , etc etc etc).
Pure i DB sono importanti da conoscere (alla fine quando vuole mettere 
su qualcosa)... non so se sia supportato sqlite (se lo è, comunque mi 
accodo al tuo consiglio).
Si tenga conto che ci sono hosting *gratuiti* che offrono Python 
(cercare sul sito aiuta). Potrebbe anche interessargli guardarsi 
Django.
-- 
Nevertheless, I consider OOP as an aspect of programming in the large; 
that is, as an aspect that logically follows programming in the small 
and requires sound knowledge of procedural programming.
Niklaus Wirth

 Ma perchè non parlarne su iclp?
Per generare un poco di traffico in questo NG ;-)


 Per generare un poco di traffico in questo NG ;-)
Ha, lol.



Qualunque linguaggio la cui sintassi cambi in maniera incompatibile
con il passato e' un problema.
Come qualunque programma che spezza la compatibilita'.
Non e' un problema insormontabile, anzi, in genere porta beneifici, ma
e' sempre comunque un problema se si comincia ad usare gli
shortcomings della implementazione attuale e crearne un pattern.

 con il passato e' un problema.
Dipende come vengono affrontate le cose. Tipicamente p3000 non 
sostituirà subito il 2. Per cui la transizione dovrebbe essere leggera. 
Inoltre ci sono tool che fanno la conversione semi-automatica, etc etc 
etc.
-- 
Python is fast enough for our site and allows us to produce 
maintainable features in record times, with a minimum of developers.  
(Cuong Do, Software Architect, YouTube.com)