Newsgroup: it.comp.programmare.win32
Titolo: Voglio cominciare

Allora ragà, spiego velocemente: voglio cominciare a programmare e
voglio qualche parere (spassionato) su che linguaggio scegliere.
Sò già che molti risponderanno: dipende da cosa vuoi fare. Giusto?
Non ho nessuna prerogativa, diciamo che voglio programmare per il gusto
di fare, per imparare a ragionare, per sviluppare la mia potenza di
elaborazione :p
Non mi faccio problemi di apprendimento: ho solo 18 anni, ma ho
cominciato col php a 14 anni, ho raggiunto ottimi obbiettivi,
realizzato diversi script, inclusi alcuni portali a pagamento e non
(scuola e piccole aziende del posto).
Mi piacerebbe un linguaggio che punta sul fattore logico/algebrico e
che non trascuri l'interfaccia grafica. Probabilmente, queste due
condizioni si annullano, ditemi voi (?).
Avevo provato con il Pascal, giusto qualche accenno, ma non ho mai
capito come renderlo eseguibile e mi è sembrato abbastanza limitato (o
forse l'ho studiato io limitatamente?).
Sappiate consigliarmi.
Ecco, non ho nessun risultato particolare da raggiungere, voglio solo
sapere quale linguaggio deve adottare chi vuole divertirsi nella
programmazione.
Eddai! ;)

Che sbadato, dimenticavo: cerco un linguaggio lato client ;)

 
ok, partiamo un po' con alcuni linguaggi e relative acratteristiche (la 
scelta, poi, sta a te, naturalmente).
Premetto che se tu studiassi più di un linguaggio, avresti vantaggi (dal 
momento che hai 18 anni, il tempo non dovrebbe mancarti).
Naturalmente il fatto che molti avranno documentazione in inglese non 
deve spaventarti.
Per fare piccole applicazioni grafiche fini a se stesse (script o altro) 
ti posso consigliare AutoIT 
http://www.autoitscript.com/
Può essere un modo veloce per iniziare ad entrare nell'ottica delle 
interfacce grafiche (elementi, il loro uso, le loro possibilità).
Su applicazioni più complesse e/o articolate, le cose si fanno più 
difficili:
Ci sono diversi ambienti, e troverai sempre gente che ti dirà che il 
linguaggio che ti consiglia è il migliore.
Tuttavia, puoi scegliere di utilizzare C con le API Win32 (ottimo per 
capire come funziona il sistema Windows, scrivere applicazioni snelle, 
ma snervante in quanto ti devi scrivere tonnellate di codice)
Si può saltare a C++ con le MFC, che non sono altro che una 
organizzazione a oggetti delle API di Win32 con qualche cosa in più (ad 
esempio, alcuni effetti grafici). Non molto complicato da imparare (c'è 
chi dice che sia più veloce da imparare delle API di Win32, tuttavia io 
trovo che se non si ha chiaro come girino messaggi ed eventi nel SO, si 
rischia di fare delle porcate che la metà basta e avanza).
Ti obbliga a conoscere la programmazione ad oggetti.
Sempre per applicazioni piccole o medie, troverai chi ti consiglia Java.
Pur non essendo un fan di Java e della programmazione ad oggetti (che 
personalmente trovo dispersiva [Non criticatemi, questa è la mia 
opinione personale]), ha alcuni lati positivi:
-Garbage collection (molto comoda, in quanto è l'ambiente a gestire la 
memoria, in C/C++ devi essere tu a liberare la memoria quando qualcosa 
non ti serve più),
-Tipizzazione forte (detto in parole povere, non puoi mischiare pere e 
orologi, con il C/C++ c'è più di un modo per farlo)
-Abbastanza indipendente dalla piattaforma (Win,Linux,Mac,Embedded), 
naturalmente se tu fai un programma che non utilizzi caratteristiche 
specifiche di quel sistema.
Dal punto di vista algebrico (guardalo, poi decidi) ho trovato molto 
buoni i linguaggi funzionali (come l'Ocaml 
http://caml.inria.fr/
 )
Ottimi, poichè la programmazione funzionale offre un sistema di 
scrittura del codice molto simile al ragionamento umano.
Quindi applicazioni anche complesse possono essere scritte in poche 
righe di codice, leggibili, manutenibili, e con poche possibilità di errore.
Guardati, per esempio, questo tutorial
http://www.ocaml-tutorial.org/
Può essere utilizzato anche per lavorare con interfacce grafiche 
mediante librerie come le Gtk
Le varie librerie GTK, TK, wxWidgets, ecc. ti forniscono un accesso alla 
grafica indipendente dal sistema operativo (win, linux, ecc) e dal 
linguaggio (sono in genere orientate agli oggetti).
Ti consiglio di studiarti anche una di queste.
Che dire altro?
Prendi confidenza con uno o più linguaggi di programmazione differenti, 
poiché nelle applicazioni è possibile utilizzarne più di uno e farli 
lavorare insieme.
E non spaventarti per la mole di informazioni che trovi, ce n'é anche di 
più. :-)
In bocca al lupo.
LP

 programmazione.
Dato che da quanto ho capito cerchi qualcosa di semplice e versatile, ti 
consiglio .Net: e quindi a scelta tra 
vb.net
, c#, managedc++ o j#.
Il C++ lo trovo molto scomodo quando devi metterti a fare le interfacce 
grafiche e inoltre non è per niente semplice.
A meno che non devi fare chissa che (ad esempio programmi che girano in 
kernel mode) il .net andrà benissimo...
Bye,
-- 
Carmine ( 
pikachu...@gmail.com
 (Togli la scritta NOSPAM) )
Webmaster di The Total Site 4 : 
http://www.thetotalsite.it
MariokartDS Codice Amico: 532639027909 - CarmineC in MarioKartDS
"Un problema non è un problema se può essere risolto" 

Va bene, ora... volendo cominciare da C e JAVA?
Mi date qualche riferimento?
Di cosa ho bisogno (ambiente/compilatore)?


Intanto mi associo al consiglio di Carmine (riguardo al C#)
Sotto Windows, Microsoft sta rialsciando Visual Studio Express 2005 
(versione VC e versione VCS per C#). Ottimi ambienti (anche se castrati 
rispetto alle versioni a pagamento, ma almento sono gratuite).
Per Java, devi scaricare il JDK di JAVA 5 (che non è nient'altro che 
Java2 1.5).
Come ambiente di sviluppo scaricati Eclipse. è un ottimo ambiente, 
soprattutto completo e praticamente pronto all'uso per lo sviluppo con Java.
Come documentazione, per cercare in rete, utilizza la parola "tutorial" 
(se dico qualcosa che già sai, ti chiedo scusa, ma cerco di essere più 
chiaro possibile).
In questo modo trovi delle guide che ti insegnano le particolarità del 
linguaggio.
LP

 
Non proprio!
Io ti consiglio Python, con cui puoi fare praticamente di tutto e,
inoltre, è molto produttivo, con una sintassi elegante.
Da affiancare a Python la scelta va certamente su C.
Come linguaggi alternativi, per aumentare le tue conoscenze:
Lisp
Ocaml
Haskel
Saluti  Manlio Perillo

.
Certo, si possono fare cose eccellenti anche con linguaggi mediocri - ma
la gestibilità del codice ne risente.
Saluti  Manlio Perillo?

Il problema di Python, però, è la scarsa documentazione online. O
sbaglio?
E io ho per imparare il php ho sempre e solo usato google :p

 
http://docs.python.org/
č disponibile in HTML, in CHM su Windows ed anche in formati stampabili.
Abbiamo anche una traduzione italiana (non aggiornata all'ultima versione)
http://python.it/doc/
Saluti  Manlio Perillo

Grazie mille ;) ora guardo. Con python che ambiente e compilatore?

 
Python è un linguaggio interpretato, anche se, come Java, genera del
bytecode (ma non codice macchina eseguibile direttamente).
Ci sono alcuni progetti per compilare il codice Python in un eseguibile,
ma per ora lascia perdere e contentrati sul linguaggio!.
Riguardo l'ambiente di sviluppo, con Python puoi usare quello che vuoi.
Non c'è assolutamente bisogno di un Idle completo, con la distribuzione
standard hai IDLE che per cominciare è più che sufficiente.
Per maggiori informazioni passa su it.comp.lang.python.
Saluti  Manlio Perillo

E io ho per imparare il php ho sempre e solo usato google :p
Fra i linguaggi interpretati, prima di Python io ti consiglierei di
dare un'occhiata a Ruby. Poi, se proprio non ti convince, passi a
Python. Se non ti convince neppur questo, venendo da php potresti
pensare di dare una possibilità anche a Perl. Questo almeno è il
percorso che farei io, col senno di poi.
Ciao.

Se non vuoi scontrarti con problematiche iniziali molto dure (che 
potrebbero anche scoraggiarti) ti consiglio di comprarti un buon libro 
di java o C#.

 classe...
IMHO invece è meglio così...
Oramai tutti i linguaggi evoluti sono ad oggetti.
Anche in .net ad esempio qualsiasi cosa è una classe...
E poi non capisco a cosa servirebbe ritornare alla programmazione ad 
eventi/procedurale...
Non mi dirai mica che è meglio usare i GoTo spero :-O


 
I Goto fanno parte di un paradigma imperativo non strutturato. Quello sì
che è da evitare (a meno che non ci siano alternative).
LP

 assurda.
Questo è vero, se si fa un uso troppo pesante e dispersivo di classi poi non 
si capisce più nulla.
Ma, teoricamente, basta un piccolo diagramma UML...


 Ma il paradigma logico sarebbe quello del ProLog?
Si'.
 > non ho mai capito come funziona...
Forse perche' non l'hai mai studiato!
In poche parole, si basa sul concetto di backtracking.
In ogni routine, ogni istruzione puo' essere eseguita in zero o piu' modi.
La prima volta che un'istruzione viene eseguita, viene scelto il primo 
dei modi possibili, e si passa all'istruzione successiva.
Se un'istruzione non puo' essere eseguita, cioe' fallisce, si torna 
all'istruzione precedente, che deve essere eseguita in uno degli altri 
modi possibili.
Se si arriva alla fine, e' stata trovata una soluzione per la routine, 
se invece tutti i tentativi falliscono, allora la routine fallisce.
L'esecuzione di una routine e' un specie di ricerca depth-first in un 
albero di ricerca.
-- 
     Carlo Milanesi
 
http://digilander.libero.it/carlmila

 una illeggibilità e immanutenibilità del codice assurda.
questo semplicemente perché non si procede nel modo giusto. mai sentito
parlare di Test Driven Development? ;-)
se il programmatore produce codice ingestibile non è colpa della OOP: la
OOP è "proven technology", e io personalmente ritengo che non dovrebbe
essere considerata un'alternativa alla programmazione procedurale, bensì
un must fatta eccezione per settori molto specifici (come ad esempio la
programmazione di sistema) dove la programmazione procedurale si adatta
meglio.
o forse dovrei dire "si adattaVA meglio", perché aggiungo che ultimamente
noto anche qualche tendenza in ambito di system programming di adottare
design orientati agli oggetti (vedi WDF, Windows Driver Foundation), senza
contare che il kernel di Windows NT è scritto in un'ottica Object Oriented.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Ma, teoricamente, basta un piccolo diagramma UML...
non risolve nulla: il diagramma UML che io sappia non semplifica il
codice, aiuta solo a gestire qualcosa che era ingestibile e che lo
diventerà ancora di più; e non ho neanche detto "permette di gestire", ho
detto "aiuta a gestire", il che vuol dire che nei casi più disperati
potrebbe non bastare.
piuttosto sarebbe molto meglio partire fin dall'inizio a scrivere codice
non "dispersivo"; o per meglio dire, codice non ridondante e totalmente
privo di parti inutilizzate (e quindi ridotto al minimo).
non si può andare avanti a diagrammi UML, ma si può andare avanti a test
(TDD, come dicevo nella mia precedente reply a questo thread).
