Newsgroup: it.comp.lang.c++
Titolo: Aiuto ad un giovane volenteroso...

Salve a tutti.
Sono un ragazzo di 16 anni a cui è venuta una grande
voglia di imparare a programmare.
Dovrebbe essere bellissimo vedere qualcosa che nasce
(e soprattutto che funziona!!)  dalle proprie mani.
Io ho il computer da tantissimi anni (il primo è stato
un Olivetti pc128s), e da allora ho cominciato a programmare
in basic. La mia passione è sempre stata la grafica
e la programmazione, ma purtroppo a causa dei
pochissimi contatti con persone esperte ho dovuto sempre
procrastinare... ma adesso che sono finalmente connesso
ho deciso di cominciare sul serio.
Il problema è che però ho una confusione per la testa che
non si descrive!!
Dopo aver chiesto ad un pò di persone, alla fine ho capito
solo che per essere esperto di programmazione e anche
esperto di Internet devo saper usare (benissimo) :
-Linux
-C
-Pascal (?)
-Delphi
-Lisp
-Perl
-Java
-Vb
-Html
(???????????!!!!!!!!!!!!!!!!!!!!)
Anche armato della più ferrea volontà, è evidente
che non posso fare tutto insieme!!!!
Perciò devo scegliere qualcuno tra i tanti.
Dal momento che frequento il Liceo Scientifico
ho ricevuto risposte tipo:
"Auguri, ne avrai bisogno"
"Se non sai che cos'è un tracciato record è meglio che lasci stare!"
"Lascia perdere, tanto non riusciresti, anche con la volontà che ti ritrovi"
"Io ci sto dentro da 15 anni e ancora non ci capisco niente!!!"
Vi chiedo aiuto, date una mano ad un giovane volenteroso.
(tanto c'ho tanto tempo!!   ]8)
Che cosa devo fare per iniziare??
Grazie 1000 in anticipo.
Giuliano
http://members.xoom.com/Foundation2
drk...@hotmail.com

.....
Allora, da dove iniziamo?
Credo (!) che per essere esperto di programmazione ti basta scegliere
un bel linguaggio (c,c++,java, o pascal che sia) e studiartelo a fondo,
e, dopo mooooolto tempo passato d'avanti ad uno schermo (magari dopo
un esaurimento nervoso provocato dai tanti caffč.....) potresti diventare
'bravino' nella programmazione....
A parte gli scherzi, saper programmare non significa conoscere a
perfezione ogni linguaggio in commercio, tantopiů che ti rimarrebbe
soltanto una gran confusione in testa (hai idea dei linguaggi di
programmazione che esistono e ogni quanto escono delle nuove
modifiche?).
Poi non credi sia meglio iniziare scegliendone uno?
Innanzitutto ti consiglio di leggerti il thread che puoi trovare su questo
gruppo: 'Vorrei imparare.....'
Se vuoi ti faccio un piccolo riassuntino (correggetemi se sbaglio):
1-(Questo nel thread non c'e ma lo aggiungo io :) Dimenticati del Basic.
2-Ti sconsiglio di iniziare a programmare in C o C++, č un linguaggio
    potente, flessibile e naturalmente.....difficile!
3-Java...cosa c'č da dire su java...OK! Java ti introduce nella
    programmazione ad oggetti, da qui puoi poi passare al C++,
    inoltre č gratuito e quindi, se ad un certo punto del tuo cammino,
    decidi che la programmazione non fa per te, almeno non hai speso
    soldi (a meno che tu non acquisti manuali)
4-Esiste anche Visual Basic, purtroppo (o per fortuna) ha ben poco
    a che vedere con il vecchio Basic, NON ha le stesse potenzialitŕ
    del C++ ed č (molto) piů semplice impararlo rispetto a quest'ultimo.
    Secondo il mio punto di vista ha ragione Paolo Aiello dicendo che
    č l'ideale per la programmazione 'come viene viene'.
5-Altri (vedi 'Vorrei imparare....')
Io (non che sia il Padre Eterno dei programmatori, per quello devi
cercare Alex Martelli ;) ti consiglierei di correre in edicola!!
Cerca qualche bella rivista con dentro Java e inizia da lě.
Poi, dopo una lunga agonia, dopo notti insonne, e dopo il famoso
esaurimento, potresti sentire la vocazione (o il bisogno) di passare
ad un linguaggio piů potente, come il C++ (C++ Builder, VC++ o altri).
OK, sui manuali da acquistare purtroppo non ti so dire molto (anzi,
niente), per quanto riguarda i siti sulla programmazione... beh, l'NG
ne č pieno.
Per quanto riguarda le persone che ti circondano, non aspettarti mai
un aiuto morale!!
BUONA FORTUNA!!

Che cosa devo fare per iniziare??
Hai varie possibilita`, ma secondo me, tra esse, l'uso del
C++ non e` affatto una buona opzione (e` un linguaggio
molto difficile; tientelo eventualmente per il futuro!).
Anche mio figlio ha 16 anni e mi ha chiesto simili consigli;
le opzioni principali che gli ho suggerito "per cominciare":
-- Delphi: visto tra l'altro che conosce gia` benino
    Turbo Pascal, e Delphi si basa su Object Pascal
    che ne e` una estensione;
-- Java: ragionevole compromesso, mi pare, fra la
    precisione+rigore di Delphi, e la laschezza di VB;
-- Visual Basic: non consigliabile secondo me per mio
    figlio (visto il suo specifico carattere), utile invece
    per chi, sapendosi "dare disciplina" da solo, ha la
    preferenza per linguaggi che lo "guidano" meno, e
    portano meno "frustrazione" (risultati pratici un po'
    piu` in fretta).
Penso che, grosso modo, l'ordine di preferenza fra
questi tre linguaggi sia questo (ma varia moltissimo da
persona a persona!).  Java ha l'ulteriore vantaggio di
essere portatile (non gira SOLO su Win32 [95, NT, &c])
e ci sono per esso strumenti (compilatori ecc) gratuiti.
Ma anche per Delphi o VB si possono trovare versioni
limitate e/o vecchie piu` economiche (ad es. accluso a
una rivista inglese ho trovato un CDROM col Delphi-2
completo, certo non eguale al Delphi-4 attuale ma per
cominciare puo` certamente bastare).
Ti consiglio di proseguire la discussione sui tre gruppi
dedicati rispettivamente a questi tre linguaggi, ciascuno
secondo me a modo suo piuttosto adatto ai principianti
(di diverso carattere e preparazione di base).
Oltre al compilatore &c, ti servono secondo me dei
buoni libri che ti istruiscano sul linguaggio e sul tipo
di cose che ti interessano piu` specificamente (tu,
ad esempio, nomini la grafica).
Alex

Perciò devo scegliere qualcuno tra i tanti.
Anzitutto hai confusione sul sistema operativo.
Linux e Win9x e WinNTx (e OS2 e BeOS e Solaris e WinCE e QNX eccetera)
sono sistemi operativi molto diversi, escludendo la parte compatibile
data dalla librerie standard e/o da linguaggi super-piattaforma
(Java e perl tanto per dirne due).
Probabilmente per iniziare ad apprendere un linguaggio di programmazione
non serve conoscere il sistema operativo, ma non appena un utente pretenda
di fare un output piu' complesso di std::cout o printf (leggi: fare grafica)
occorre sbattere la testa sul sistema operativo.
Esiste pero' un linguaggio  che con le sue librerie standard (packages)
ricopre praticamente tutti gli aspetti di un sistema operativo moderno.
Tale linguaggio e' naturalmente il Java, che per concezione puo' essere
eseguito su un qualsiasi OS dotato di una macchina virtuale.
Tale linguaggio e' poi didattico, sia perche' maschera aspetti complessi
come la gestione diretta della memoria, sia perche' consente piu'
paradigmi di programmazione, tra cui quelli orientato agli oggetti.
L'accoppiata C/C++ da', secondo me, l'universale potenza per fare
tutto, ma proprio tutto. Le cose che non si fanno in C/C++ sono
tutte e sole quelle che non sono ancora state fatte.
Il VB e' un linguaggio adatto alla "programmazione selvaggia",
quella in cui occorre titare fuori un programma "carino" e funzionanate
in poco tempo. Non che non ci si possano fare cose serie, ma viene
spesso usato in questa maniera. Secondo me ha scarso valore didattico.
Perl e Lisp sono linguaggi per usi "specialistici": elaborazione
batch di informazioni su supporto "testuale", scripting e altro.
Sono linguaggi ai quali si deve arrivare dopo averne visto altri.
Delphi e' un linguaggio nato e sviluppato sull'object pascal.
E' un briciolino piu' facile del C++, viene spesso apprezzato
per l'ambiente di sviluppo RAD da quelle persone he hanno esigenza di
una programmazione veloce senza che per questo sia selvaggia.
E' talvolta la scelta dei programmatori VB stanchi delle limitazioni
del VB stesso.
HTML secondo me non e' un linguaggio di programmazine, piuttosto
di descrizione della presentazione della pagina.
[Escludo ovviamente il modello ad oggetti della pagina, in cui si
va a finire in JavaScript].
HTML lo si impara in un sabato pomeriggio, non vale la pena perderci
piu' tempo.
Dei linguaggi sopra esposti, strumenti di sviluppo non ne mancano.
[l'elenco e' da intendersi incompleto]
Linux:
  C/C++:  gcc / egcs (nativi in ogni distribuzione)
  Pascal: gpc
  perl/lisp: (nativi in ogni distribuzione (con emacs il lisp))
  Java: (nativi in ogni distribuzione)
Win32:
  C/C++:
   C++Builder, VC++ (a pagamento - sconti studente)
   egcs / lcc (gratuiti)
  Delphi: (a pagamento - sconti studente)
  Java: JDK da Sun, JavaSDK ds Microsoft (gratuiti)
        VJ++, JBuiler, VisualAge for Java, VisualCafe (a pagamento)
  VB: (a pagamento - sconti studente)

 Che cosa devo fare per iniziare??
Procurati un compilatore (ce ne sono di gratuiti) un buon libro e
comincia a studiare. Nel frattempo fai qualche primo programmino su
qualunque cosa ti venga in mente. La teoria e la pratica devono sempre
andare assieme altrimenti la tua preparazione sarà incompleta.
EMG

 -Html
La prima cosa che mi viene da dirti e` che (come un po` in tutte le cose) non
esistono regole assolute, ci sono sempre percorsi alternativi che vanno scelti
man mano che si va avanti. A mio parere non e` il caso di riempirsi la testa con
tanti linguaggi diversi, anche se, ovviamente, conoscere diversi approcci alla
programmazione significa allargare i propri orizzonti. Sul fatto di "saper usare
benissimo", non conosco nessuno che sappia usare benissimo tutti i
linguaggi che citi. La maggior parte dei programmatori conoscono bene (e neppure
sempre
*bene*) uno o due linguaggi, e magari hanno una conoscenza approssimativa di
altri due o tre. Ma in realta` ci sono tante altre cose da conoscere, oltre i
linguaggi.
L'unico sistema per non aumentare ancora la tua confusione e` limitarti a
metterti il problema di come cominciare (senza curarti di chi ti da` messaggi
scoraggianti), poi si vedra`, in seguito avrai anche tu piu` elementi per
decidere cosa in realta` vuoi fare.
Intanto di consiglio di dare un'occhiata ai precedenti thread su questo gruppo
(anche utilizzando dejanews: 
http://www.dejanews.com
 per i "vecchi" messaggi).
L'argomento e` stato trattato piu` volte (vedi anche il thread ancora in corso
"Vorrei imparare...")
Comunque, per prima cosa dovresti farti una preparazione di base di informatica
generale, se ancora non ce l'hai, in modo da avere le idee abbastanza chiare
sull funzionamento di un computer e delle sue periferiche, su quello di un
sistema operativo, sulla rappresentazione delle informazioni in un sistema
informatico e su tanti altri concetti di base (e naturalmente, Internet).
Poi, puoi cominciare a imparare un linguaggio. Il mio consiglio e` Java, magari
insieme a un po` di HTML (che non e` un linguaggio di programmazione come Java,
ma un linguaggio per la costruzione di "pagine" - quelle pagine da cui sono
formati i siti internet, ma anche molti altri documenti), cosi` puoi provare
anche a crearti in Java delle "applet" che servono per aggiungere funzionalita`
dinamiche e interattive alle pagine HTML. Puoi imparare anche JavaScript, con
una sintassi simile a quella di Java, ma semplificata, che e` uno "scripting
language", cioe` un linguaggio semplice e di "alto livello", cioe` le cui
istruzioni spesso svolgono compiti abbastanza complessi, senza un'elevata
possibilita` di variarne i dettagli, e
serve sia per estendere le funzionalita` delle pagine HTML, che per diversi
altri usi (soprattutto per automatizzare procedure dei sistemi operativi).
Un altra cosa da onoscere e` il funzionamento dei database relazionali e il
linguaggio SQL, che serve per estrarre informazioni dalle basi di dati.
Altro consiglio e` lasciar perdere, all'inizio, C e C++. Il C, secondo me (ma
molti non sono d'accordo) e` praticamnete obsoleto (a parte il fatto che esiste
tantissimo codice C in giro, e che continua ad essere molto usato), nel senso
che tutto quello che puoi fare in C lo puoi fare (meglio e piu` comodamente) in
C++. Ma il C++ e` estremamente complesso e protegge pochissimo da errori di
vario genere, non e` proprio il piu` adatto per un principiante.
Altro consiglio ancora e` lasciar perdere il Visual Basic (ma sono pronto a
scommettere che qualcun'altro ti consigliera` diversamente :-) ) perche` e` un
linguaggio, a mio parere, incompleto e con una progettazione un po` pasticciata,
che sicuramente non ti mette sulla strada della "buona programmazione"
Riguardo a Linux, secondo me e` sicuramente meglio di Windows, ma forse ancora
e` un po' troppo complesso da gestire per un principiante. Non so. Prova a
installarlo e ti renderai conto...
Se scegli Java, non avrai problemi nel cambiare anche in seguito il sistema
operativo, trattandosi di un linguaggio multipiattaforma. Hai anche il vantaggio
di essere svincolato dal tipo di GUI (ambiente grafico), perche` Java gestisce
"in proprio" tutti gli oggetti grafici, mentre con gli altri linguaggi si
appoggiano direttamente alle varie "interfacce di programmazione" completamente
diverse per ogni ambiente. Il che significa che se crei un'applicazione con
Visual Basic o Delphi (ad esempio) funzionera` solo sotto Windows e se vuoi che
funzioni sotto Linux devi riscriverne una buona parte di sana pianta.
Linux e` importante sia perche` e` sempre piu` diffuso, sia perche` installato
su molti server che lavorano su internet (a parte altri vantaggi, consuma molto
meno risorse di sistema di NT, quindi puo` girare anche con macchine non tanto
potenti). Quindi per diventare un "esperto di Internet" la sua conoscenza e` di
indubbia utilita`, ma non e` detto che lo debba affrontare subito... 
Ciao
Paolo

C  :-)
ovviamente c++ e java di conseguenza...
certo che chi ti ha detto che sta dentro da 15 anni e non ci capisce
niente... non dev'essere un aquila...
ciao
Salvo




in basic.
Anch'io, ma col mitico commodore vic 20!
Ma veniamo alla domanda...
1) Dimentica il basic se vuoi fare sul serio.
2) Scarta C e soprattutto C++, sono molto potenti, ma non l'ideale
    per imparare a programmare.
3) Scegli un linguaggio tipo Java o Pascal.
     Personalmente ho imparato tantissimo con il pascal (le sue ferree regole
     ti costringono a pensare prima di scrivere e riducono notevolmente le
     cattive abitudini).
     Non conosco bene Java, il suo principale vantaggio sta nel fatto che e`
     orientato agli oggetti e quindi piu` attuale come modello.
     Per entrambi i linguaggi si trovano compilatori gratuiti (principalmente x java).
4) Linux o windows non importa piu` di tanto. Per linux trovi praticamente la qualunque
     gratis, pero` linux non e` facile.
5) Ovviamente dovrai comprare qualche buon libro (dipende anche dal linguaggio
    che sceglierai).
6) Lascia perdere le persone che ti dicono "lascia perdere..." o "sono 15 anni..."...
7) Studia bene la matematica.
Paolo
----------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  e-mail: 
mar...@cli.di.unipi.it
 
----------------------------------------------------------

 C++.
In generale sono d'accordo con te ma a me capita ogni tanto di scrivere
piccolissime utilities che non traggono vantaggio dalle caratteristiche
del C++ e se le compilo in modalità C++ ottengo un eseguibile molto più
grande. In quei casi opto per il C in quanto un eseguibile piccolo ha
alcuni vantaggi (tra cui la rapidità di trasferimento telematico) ai
quali non mi va di rinunciare gratuitamente.
EMG