Newsgroup: it.comp.lang.c++
Titolo: Con quale cominciare

Salve,
posterò questo messaggio anche sul NG di Java. Vorrei cominciare a 
studiare un linguaggio di programmazione (conosco abbastanza bene il 
Pascal) che possa essere versatile e perchè no spendibile anche nel 
mondo del lavoro. Facendo una panoramica in giro su internet la scelta 
credo possa limitarsi a uno dei 2 Java e C++ (non ho moltissimo tempo 
libero per cui inizialmente mi focalizzerei su un linguaggio solo).
Cosa mi consigliate e soprattutto che motivazione mi date?
Grazie per le eventuali risposte e spero possiate aiutarmi a decidere


Dipende da cosa intendi realizzare.
Pur essendo simili in molti aspetti uno non esclude l'altro.
(
classico esempio di differenza tra uno e l'altro:
Java risulta indipendente dalla piattafroma (quasi al 100% ma non
proprio).
Un programma C++ per una piattaforma deve essere riadattato per altre,
o comunque necessariamente ricompilato.
Classico esempio di similitudine:
Sono entrambi OOP
)
Se dai qualche informazione in piu' su cosa intendi programmare si
puo' essere piu' precisi nelle risposte

 puo' essere piu' precisi nelle risposte
beh vista la mia formazione da elettronico, un linguaggio che mi 
permetta di lavorare con l'hardware gestione periferiche ecc


C++

 credo possa limitarsi a uno dei 2 Java e C++ 
Credi malissimo. Ci sono un numero piuttosto elevato di possibilita'.
In particolare io considero C++ un *pessimo* linguaggio come primo
linguaggio, poiche' e' maledettamente facile impararlo male (e per
impararlo bene da 0 ci va una quantita' piuttosto elevata di tempo).
Java come linguaggio didattico sta di recente subendo critiche piuttosto
pesanti viste le ultime generazioni di computer scientists cresciuti
"con Java".
Confesso che dare un consiglio ponderato non mi e' facile. C++ e' un
linguaggio che mi piace, ma mi rendo conto dei problemi che ha in mano
ad un principiante. Java lo uso, per certe cose va bene, ma mi e'
pesantemente antipatico e il mondo ha bisogno di tutto meno che di un
ennesimo programmatore Java.
*IO* considero Python un ottimo primo linguaggio (e anche un ottimo
linguaggio tout court, ma questa e' un'altra storia). Una scelta
interessante potrebbe essere ADA. 
In realta' la cosa importante e' non fossilizzarsi. Imparare
decentemente un linguaggio e poi immediatamente provarne altri, specie
se diversi e di paradigma diverso.
-- 
-riko

 Sono entrambi OOP
Peccato che i modelli di OOP proposti siano pesantemente differenti.
-- 
-riko

 se diversi e di paradigma diverso.
Peccato che per imparare bene un linguaggio complesso, comprese le sue 
librerie standard e le sue librerie non standard ma ampiamente 
utilizzate, nonche' i suoi idiomi, ci vogliano mediamente almeno tre anni.
E se uno vuole trovare lavoro prima di avere l'eta' della pensione, e' 
bene che si concentri sui linguaggi richiesti dalle aziende della 
provincia dove abita.
Probabilmente l'OP ha consultato gli annunci di ricerca di lavoro della 
sua zona e ha visto che i due linguaggi piu' richiesti sono C++ e Java.
Nel mercato del lavoro italiano, questi due linguaggi non hanno affatto 
lo stesso utilizzo.
Java e' usato soprattutto per applicazioni basate sul Web per 
organizzazioni medie o grandi (aziende o enti pubblici). Tali 
applicazioni possono essere sviluppate internamente o commissionate a 
una software house.
Java viene usato soprattutto in ambiente Posix, ma e' portabile, 
addirittura senza doverlo ricompilare, ad altri sistemi operativi.
C++ e' invece usato per software che verra' usato da un gran numero di 
consumatori o professionisti o organizzazioni. Principalmente si tratta 
di software embedded, cioe' venduto preinstallato in un altro prodotto, 
o di videogiochi, o di pacchetti professionali con chiave hardware di 
protezione da copia.
Viene sviluppato software in C++ per tutti i sistemi operativi, ma 
solitamente ogni prodotto sviluppato in C++ in Italia e' specifico per 
un sistema operativo e quindi non e' portabile, neanche previa 
ricompilazione. Questo e' dovuto al fatto che spesso i programmi in C++ 
usano librerie non portabili o accedono direttamente alle funzioni del 
sistema operativo o all'hardware.
Un'altra differenza importante e' che la libreria standard di Java e' 
molto piu' vasta di quella del C++ come ambiti applicativi (GUI, 
grafica, rete, Web, ecc.), per cui chi conosce tutta la libreria 
standard di Java conosce quasi tutto quello che gli serve per 
programmare, mentre chi conosce solo la libreria standard del C++ deve 
ancora imparare le specifiche librerie che dovra' necessariamente usare 
per sviluppare l'applicazione specifica.
-- 
Carlo Milanesi
http://digilander.libero.it/carlmila

 [...]
Ciao  Manlio Perillo

 per sviluppare l'applicazione specifica.
Nope. Conoscendo la libreria standard di Java ("tutta"? mah) manca
comunque tutti gli aggeggini enterprisey che sono tanto richiesti.
Struts, hibernate, EJB3 o quello che e' "di moda" in quel periodo.
-- 
-riko

 Struts, hibernate, EJB3 o quello che e' "di moda" in quel periodo.
Ho detto "quasi tutto", non "tutto", e comunque ho esagerato un po' per 
evidenziare il fatto che, a confronto, se conosci solo la libreria 
standard del C++ non conosci "quasi niente" delle librerie che ti 
serviranno per lavorare con il C++.


 serviranno per lavorare con il C++.
Certo. 
-- 
-riko

 quello che gli hai dato tu.
Direi che gli hai dato piu' importanza di quello che gli ho dato io.
Stavo solo tracciando un parallelo tra l'uso di Java e C++ nelle aziende 
italiane. Notavo che, a quanto mi pare, le aziende che cercano 
programmatori Java esperti quasi sempre vuole che sappiano usare Unix, 
mentre le aziende che cercano programmatori C++ esperti, a volte 
richiedono esperienza su Unix, a volte su Windows, a volte su sistemi 
operativi real-time. Ma certamente non e' questa la differenza 
principale tra i due linguaggi.


On 7 Feb, 15:45, 
r...@despammed.com
 (Enrico Franchi) wrote:

Non voleva essere un trattato sulle differenze trai due linguaggi.

 C++
Prenderei in fortissima considerazione il C.
Non è certo detto che su PIC su possa programmare con linguaggi 
diversi.
-- 
mio figlio: 
http://it.youtube.com/davideippopotamo
doppiatori: 
http://it.youtube.com/watch?v=hPGKNWZw0c0&feature=related
Articolo 33 della Costituzione italiana: L'arte e la scienza sono 
libere e libero ne è l'insegnamento.

 utilizzare Boost.
A me il C++ piace ancora molto, è la sua "produttività" che mi lascia 
"perplesso".
Prendi boost e la libreria standard di python. Almeno io faccio molta 
meno fatica (leggi: ci impiego molto meno tempo) ad usare quella di 
Python. Però per me non è un problema di linguaggio ma di ambiente di 
sviluppo.
Per me, con un C++ interpretato e un buon ambiente di test si farebbe 
molto più in fretta a fare delle prove. Rimane il fatto che in C++ non 
c'è una libreria sterminata e "univoca". Per esempio per trovare i 
sorgenti di un client IMAP ho dovuto penare.
Molte librerie pretendevano di includere mega e mega di codice che con 
IMAP non centrava nulla. E ancora una volta non è un problema di 
linguaggio, ma di "ambiente". In python c'è una vasta libreria di base, 
e su quella puoi sempre fare conto. In C++ c'è poco, e c'è una tendenza 
diffusa a rifarsi la ruota.
Aggiungi che io non sono un fautore della Boost. Se posso l'evito, e 
per ora ci sono sempre riuscito. Ormai tendo ad integrare sempre di più 
python e C++. Sono stato ad un passo da adottare la libreria di Apache 
APR come libreria di base, ma poi ho dovuto soprassedere per motivi di 
tempo. Anche quella non mi entusiasma con la sua Garbage Collection dei 
poveri, però come libreria mi piaceva di più delle boost.
Il fatto è che usare python embedded è schifosamente facile, e per quel 
che faccio il tempo CPU non lo perdo certo a far girare l'ambiente di 
python. Certo che per avere il compilato di python 2.5.4, 2.6.1 e 3.0.0 
contemporaneamente sul mio PC ci ho messo ben 2 giorni. Non sono un 
fenomeno, lo ammetto, però che fatica.


 Cosa mi consigliate e soprattutto che motivazione mi date?
Delphi! Delphi!! :-)
E' il Pascal del terzo millennio, è intrinsecamente .NET-oriented (la
mia personale opinione è che .NET non sia altro che la VCL di Delphi
rifatta in casa MS...), ed è visuale come il Visual Basic ma senza i
difetti di quello.
In ambito lavorativo è piuttosto diffuso, per cui non dovresti trovarti
male nemmeno in quell'ambito.