C o c++?
Ciao a tutti. Premesso che ho delle infarinature di java, conosciuto all università, ed, ahime, odiato, per diversi motivi, da qualche settimana sto pensando di appredere un nuovo linguaggio di programmazione come il c o il c++( le opportunita lavorative sono leggermente inferiori al Java, ma sono sempre linguaggi usati e diffusi. )
Quello che vorrei chiedere é': considerando anche che molte aziende richedono in programmatore (C/c++), tra I due quali darebbe piu opportunita lavorative?È vero, come spesso sento dire, che il C++ sta praticamente soppiantando il C, anche se questo ultimo ha applicazione nei sistemi embedded?Quale consigliereste di imparare meglio?
Quello che vorrei chiedere é': considerando anche che molte aziende richedono in programmatore (C/c++), tra I due quali darebbe piu opportunita lavorative?È vero, come spesso sento dire, che il C++ sta praticamente soppiantando il C, anche se questo ultimo ha applicazione nei sistemi embedded?Quale consigliereste di imparare meglio?
Risposte
Io suggerirei C++11/C++14 (assicurati di non studiare uno standard precedente). Più che altro perché sei abituato all'OOP e trovo che i manuali del C siano o piuttosto scadenti oppure vecchi di 25 anni. In ogni caso varie modifiche dello standard C avvenute negli ultimi 15 anni sono ignorate dal 95% dei libri e a volte mal supportate dai compilatori. Per fare un esempio stupido non sono a conoscenza di manuali che trattino il nuovo multithreading del C11 o del suo supporto all'unicode. Al contrario conosco un libro che tratta il multithreading del C++11 (non fare l'errore di supporre che il C sia un subset del C++). Anche se in genere si usano librerie non appartenenti allo standard per il multithreding nel C/C++.
Studiare uno standard del C++ precedente trovo sia una perdita di tempo, a meno che tu non debba lavorare su del codice vecchio. Come manuale io suggerirei C++ Primer di Lippman http://www.amazon.com/Primer-5th-Editio ... 0321714113. Inoltre suggerisco di usare il sito cppreference.com quando non ti ricordi qualcosa.
Studiare uno standard del C++ precedente trovo sia una perdita di tempo, a meno che tu non debba lavorare su del codice vecchio. Come manuale io suggerirei C++ Primer di Lippman http://www.amazon.com/Primer-5th-Editio ... 0321714113. Inoltre suggerisco di usare il sito cppreference.com quando non ti ricordi qualcosa.
Grazie mille per l appunto Vict..cerchero di informarmi in caso, riguardo alle ultime versioni 
Quello che volevo chiedere piu che altro era, quanto diverse ppssono essere le opportunita lavorative di qualcuno che programmable principalmente in C++ rispetto a qualcuno che programma in C? É vero Il fatto che C++ ha sostituito C in molti ambiti?

Quello che volevo chiedere piu che altro era, quanto diverse ppssono essere le opportunita lavorative di qualcuno che programmable principalmente in C++ rispetto a qualcuno che programma in C? É vero Il fatto che C++ ha sostituito C in molti ambiti?
Nell'ambito lavorativo il C lo chiedono molto i sistemi embedded e di solito non è sufficiente leggersi qualche libro di C o qualche video corso on line per essere minimamente pronti.
Ti direi C++ per il fatto che è decisamente più semplice e è molto più richiesto.
Potresti anche buttarti su SQL e PHP che in Italia va tanto
Ti direi C++ per il fatto che è decisamente più semplice e è molto più richiesto.
Potresti anche buttarti su SQL e PHP che in Italia va tanto
Si è vero, anche se non penso che vi siano modifiche significative in questo da 15 anni a questa parte e non sono abbastanza vecchio per sapere come erano le cose prima. Insomma il C++ è usato di più e il C è comunque molto vicino ad essere un subset del C++ (seppur il C abbia alcune caratteristiche tutte sue e ci siano alcune differenze sottili nella gestione dei tipi). In ogni caso penso che i più affermino di conoscere entrambi.
Oh...era quello che cercavo
grazie ancora 
P.s. sei programmatore anche te? Se si , che linguaggio, she posso chiedere
Io studio ingegneria delle TLC...ancora la strada é lunga :/


P.s. sei programmatore anche te? Se si , che linguaggio, she posso chiedere

Io studio ingegneria delle TLC...ancora la strada é lunga :/
No, ma so programmare in C/C++ dal 2000. Mio fratello è programmatore C++. Del mercato in Italia ne so poco o nulla.
Capito..e grazie ancora
Credo che optero per il C++ quindi, magari poi approdondendo anche il C...


"Cronovirus":
Ti direi C++ per il fatto che è decisamente più semplice e è molto più richiesto.

Scusami, ma non capisco come sia possibile definire semplice un linguaggio come il C++, che offre talmente tante possibilità da non essere sufficienti le mille e più pagine della reference guide di Stroustrup per PRESENTARLE (figuriamoci poi per spiegarle a dovere).
Ci sono intere biblioteche sul C++ e su ciò che contiene... ed ogni testo serio va quantomeno sfogliato, per poter anche solo pensare di poter dire di sapere qualcosa del C++.
Esempio: la guida di Stroustrup presenta (supponendo, comunque, che già il lettore ne sappia qualcosa) le caratteristiche principali del linguaggio, e fin qui tutto a posto, ma per ovvi motivi non può sviscerare le possibilità offerte dal linguaggio nell'ambito della programmazione generica (e della metaprogrammazione), nè può soffermarsi sul "design" del codice (argomento che per un programmatore C++, data l'estrema "volubilità" del linguaggio, è fondamentale)... addirittura, il testo di Stroustrup non arriva nemmeno ad analizzare compiutamente l'intera STL, tanto é vasta!!
Penso che intendesse dire che i lavori che richiedono il C sono generalmente più impegnativi e richiedono più esperienza.
Lo penso anch io, da quanto ho letto...Il c magari richiede una gestione della memoria più accorta do quanto non lo possa fare il C++, non é presente ( da quanto ne so) il paradigma object oriented che magari permette il riutilizzo del codice, per non parlare delle librerie, di cui il c++ sicuramente é piu dotato. Da quello che mi é capitato di leggere molte volte, non credo abbia torto..
"Nikola_Tesla":
Il c magari richiede una gestione della memoria più accorta do quanto non lo possa fare il C++, non é presente ( da quanto ne so) il paradigma object oriented che magari permette il riutilizzo del codice, per non parlare delle librerie, di cui il c++ sicuramente é piu dotato.
Che il C sia un linguaggio più spartano è ovvio, considerando anche le esigenze che hanno portato alla sua nascita... ma ciò non lo rende più difficile del C++: semplicemente, rende macchinoso realizzare determinati algoritmi che non di rado in C++, vuoi per il supporto all'OOP, vuoi per la presenza di particolari specificatori - alcuni dei quali comunque (vedesi inline) sono stati intrdotti anche nel C -, vuoi per tanti altri motivi, sono più immediati.
In tal senso, esiste un intero "scaffale" della biblioteca informatica dedicato alle varie modalità di approccio al C in grado di permettere la scrittura di un codice più versatile e moderno (addirittura, ci sono testi che illustrano approcci in grado di avvicinare il C alla mentalità OOP).
Dunque, non voglio dire (non potrei mai voler dire!) che il C è più semplice del C++: per motivi a volte diversi (ma a volte no), i due linguaggi (non intendo assolutamente considerarli come un unicum: a fronte di una sintassi praticamente uguale, percorrono strade decisamente divergenti) sono entrambi molto complessi. Ed in effetti, a questo tendeva il mio discorso: ad affermare che, se è vero (com'è vero) che il C è molto complesso, allora è vero che lo è altrettanto (per motivi, ribadisco, spesso diversi da quelli che rendono complicato il C, ma sicuramente non meno cardinali nello studio del linguaggio) il C++.
Il C è un linguaggio molto più minimale, che è abbastanza facile da imparare profondamente e che in generale non offre particolari sorprese. È tutt'altro che perfetto e ha diversi lati oscuri, ma una volta imparate le basi non è difficile da usare. Da un certo punto di vista si trova ad un perfetto livello di astrazione per quello per cui è stato pensato. È abbastanza a basso livello da essere usato in sistemi embedded e per operazioni di basso livello, ma abbastanza di alto livello da essere incredibilmente portabile (esistono compilatori C per quasi ogni piattaforma hardware) e capace di essere usato per programmi anche molto complessi. Il C è inoltre il linguaggio standard di comunicazione tra i diversi programmi e librerie. Praticamente ogni linguaggio ha modo di interfacciarsi con librerie C, non è necessariamente vero invece per il C++. Il principale svantaggio risiede nella necessità di implementare molte funzionalità che in altri linguaggio di più alto livello sono spesso date per scontate.
Il C++ è molto più ambizioso. Permette di programmare usando paradigmi diversi e ha una quantità di funzionalità che è molto difficile arrivare a conoscere completamente. Dopo anni di utilizzo continuo ad imparare sempre cose nuove (anche perché il linguaggio viene aggiornato abbastanza spesso). Il vantaggio rispetto al C risiede nella maggiore flessibilità e capacità di esprimere concetti complicati in modo più compatto. Ragionare sul comportamento e sulle performance di un programma C++ è spesso più difficile rispetto al corrispondente programma in C, ma si scrive più velocemente ed è a volte più leggibile (ma potrebbe esserlo anche di meno). È molto più usato del C al di fuori dei sistemi embedded e molte librerie ci sono solo in C++. C'è tuttavia una tendenza a tornare ad uno stile di programmazione simile al C in alcuni ambienti (per esempio nei videogiochi). Personalmente condivido questa tendenza.
Se conosci Java è probabilmente più facile passare al C++. Se hai programmato in Java ti è stata insegnata la programmazione ad oggetti ed è più facile applicare quello che hai imparato al C++ rispetto al C. Puoi ovviamente programmare ad oggetti anche in C, ma è più complicato perché le funzionalità a cui ci si abitua programmando in linguaggi come Java non sono presenti e vanno implementati in modo più complicato. È inoltre uno stile di programmazione che non è particolarmente in accordo con la filosofia del C a mio parere. In C++ esistono librerie standard per fare molte cose che in C è necessario realizzare a mano. Ci sono per esempio classi per lavorare con le stringhe o per liste, mappe.. Il passaggio è quindi in qualche modo più graduale.
In generale, non è difficile imparare a scrivere in C conoscendo il C++ o viceversa. È tuttavia importante rendersi conto che sono linguaggi diversi. Cercare di scrivere in C con la mentalità del C++ potrebbe essere frustrante e viceversa, ragionando in C quando si programma in C++, si perderebbero un sacco di occasioni di scrivere le cose più velocemente.
Ma che cosa odi di Java? Esistono molti linguaggi, alcuni molto usati e che ti permetterebbero di trovare lavoro, e il C o il C++ potrebbero non essere la scelta migliore per te.
Il C++ è molto più ambizioso. Permette di programmare usando paradigmi diversi e ha una quantità di funzionalità che è molto difficile arrivare a conoscere completamente. Dopo anni di utilizzo continuo ad imparare sempre cose nuove (anche perché il linguaggio viene aggiornato abbastanza spesso). Il vantaggio rispetto al C risiede nella maggiore flessibilità e capacità di esprimere concetti complicati in modo più compatto. Ragionare sul comportamento e sulle performance di un programma C++ è spesso più difficile rispetto al corrispondente programma in C, ma si scrive più velocemente ed è a volte più leggibile (ma potrebbe esserlo anche di meno). È molto più usato del C al di fuori dei sistemi embedded e molte librerie ci sono solo in C++. C'è tuttavia una tendenza a tornare ad uno stile di programmazione simile al C in alcuni ambienti (per esempio nei videogiochi). Personalmente condivido questa tendenza.
Se conosci Java è probabilmente più facile passare al C++. Se hai programmato in Java ti è stata insegnata la programmazione ad oggetti ed è più facile applicare quello che hai imparato al C++ rispetto al C. Puoi ovviamente programmare ad oggetti anche in C, ma è più complicato perché le funzionalità a cui ci si abitua programmando in linguaggi come Java non sono presenti e vanno implementati in modo più complicato. È inoltre uno stile di programmazione che non è particolarmente in accordo con la filosofia del C a mio parere. In C++ esistono librerie standard per fare molte cose che in C è necessario realizzare a mano. Ci sono per esempio classi per lavorare con le stringhe o per liste, mappe.. Il passaggio è quindi in qualche modo più graduale.
In generale, non è difficile imparare a scrivere in C conoscendo il C++ o viceversa. È tuttavia importante rendersi conto che sono linguaggi diversi. Cercare di scrivere in C con la mentalità del C++ potrebbe essere frustrante e viceversa, ragionando in C quando si programma in C++, si perderebbero un sacco di occasioni di scrivere le cose più velocemente.
Ma che cosa odi di Java? Esistono molti linguaggi, alcuni molto usati e che ti permetterebbero di trovare lavoro, e il C o il C++ potrebbero non essere la scelta migliore per te.
"apatriarca":
Ma che cosa odi di Java? Esistono molti linguaggi, alcuni molto usati e che ti permetterebbero di trovare lavoro, e il C o il C++ potrebbero non essere la scelta migliore per te.
Un linguaggio che potrebbe essergli utile, secondo me, è il C#: sintatticamente è abbastanza simile a Java da non disorientare un "j-programmer", e include alcuni meccanismi (ad esempio, quello di garbage collecting implicito della memoria dinamica) che rendono il suo utilizzo più semplice rispetto al C++. Inoltre, supporta nativamente l'OOP (cosa secondo me fondamentale, nei linguaggi di programmazione moderni) e, nelle ultime versioni (anche se ancora le funzioni e i dati generic non sono standard), anche una qualche forma di programmazione generica

Tra l'altro (cosa da non trascurare) è probabilmente uno dei linguaggi a più ampia prospettiva oggi esistenti: essendo basato sul .NET Framework, può essere impiegato sia per applicazioni desktop (soprattutto in ambiente Windows, anche se esistono dei porting - come ad esempio Mono - per altre piattaforme) che per servizi web (i quali, vista la rapida diffusione del cloud computing, credo saranno sempre più importanti nell'informatica del futuro).
"wrugg25":
[quote="Cronovirus"]
Ti direi C++ per il fatto che è decisamente più semplice e è molto più richiesto.

Scusami, ma non capisco come sia possibile definire semplice un linguaggio come il C++, che offre talmente tante possibilità da non essere sufficienti le mille e più pagine della reference guide di Stroustrup per PRESENTARLE (figuriamoci poi per spiegarle a dovere).
Ci sono intere biblioteche sul C++ e su ciò che contiene... ed ogni testo serio va quantomeno sfogliato, per poter anche solo pensare di poter dire di sapere qualcosa del C++.
Esempio: la guida di Stroustrup presenta (supponendo, comunque, che già il lettore ne sappia qualcosa) le caratteristiche principali del linguaggio, e fin qui tutto a posto, ma per ovvi motivi non può sviscerare le possibilità offerte dal linguaggio nell'ambito della programmazione generica (e della metaprogrammazione), nè può soffermarsi sul "design" del codice (argomento che per un programmatore C++, data l'estrema "volubilità" del linguaggio, è fondamentale)... addirittura, il testo di Stroustrup non arriva nemmeno ad analizzare compiutamente l'intera STL, tanto é vasta!![/quote]
Scusami non volevo offenderti c++

Personalmente ad un ragazzo che ha una "infarinatura" di java (e vuole un linguaggio per andare a lavorare) non lo consiglierei mai il C. È richiesto in ambiti in cui le conoscenze vanno ben oltre quelle di programmazione.
Io se fossi nella sua situazione mi butterei su PHP e SQL come ho già detto, ne cercano a bizzeffe e soprattutto non richiedono niente di speciale.
Anche io non sono d'accordo nel dire che il C++ sia più semplice del C.. Il C può essere più difficile da usare per realizzare alcune cose, ma di certo è un linguaggio MOLTO più semplice del C++. Il fatto che normalmente il C sia usato in ambiti in cui la conoscenza del linguaggio non sia sufficiente ha poco a che fare con la sua semplicità. Le uniche cose un po' complicate da imparare in C sono i puntatori e il suo modo di vedere le stringhe e sono entrambe cose che ha in comune con il C++.
Comunque, considerando che Nikola_Tesla ha affermato che ha odiato Java, non sono sicuro che consigliargli qualcosa di simile sia la cosa giusta. Forse il C è invece più vicino al suo gusto. O forse conviene consigliargli linguaggi completamente diversi.
Comunque, considerando che Nikola_Tesla ha affermato che ha odiato Java, non sono sicuro che consigliargli qualcosa di simile sia la cosa giusta. Forse il C è invece più vicino al suo gusto. O forse conviene consigliargli linguaggi completamente diversi.
No..per quanto riguarda altri linguaggi, sono interessato principalmente a questi due, anche perche sono molto utilizzati nel settore dell imaging biomedico, e trattamento dei segnali dove vorrei provare a lavorare in futuro( studio ingegneria delle tlc).
In ogni caso, sto provando a far girare "hello world"in C++, su due compilatori diversi, Il risultato é che non funziona nulla, mi crea problmo con le librerie e dice che manca Il compilatore, che peraltro ho installato. Tempo fa avevo iniziato a programmare in c, amche se l ho abbandonato per motivi personali, e funzionava ( i programmi erano dei semplici esercizi, come hello world, fare le equazioni do secondo grado, stabilire se una stringa e palindroma usando i puntatori, ma funzionavano), ma in C++ ho come l impressione che sia MOOLTO più facile commettere errori gravi. Alla luce di questo, quello che vorrei chiedere e: meglio rischiare ( in termini di opportunità lavorative) dedicandomi di più al C, che pero dovrebbe essere più "user- friendly",e magari più semplice da usare, oppure usare il c++ direttamente, che probabilmente da più opportunità rispetto al c, ma da l impressione di essere molto difficile da imparare?
Come disse già qualcuno: in c,it s easier to shoot your foot. C++ makes it harder, but can blow your whole leg...
In ogni caso, sto provando a far girare "hello world"in C++, su due compilatori diversi, Il risultato é che non funziona nulla, mi crea problmo con le librerie e dice che manca Il compilatore, che peraltro ho installato. Tempo fa avevo iniziato a programmare in c, amche se l ho abbandonato per motivi personali, e funzionava ( i programmi erano dei semplici esercizi, come hello world, fare le equazioni do secondo grado, stabilire se una stringa e palindroma usando i puntatori, ma funzionavano), ma in C++ ho come l impressione che sia MOOLTO più facile commettere errori gravi. Alla luce di questo, quello che vorrei chiedere e: meglio rischiare ( in termini di opportunità lavorative) dedicandomi di più al C, che pero dovrebbe essere più "user- friendly",e magari più semplice da usare, oppure usare il c++ direttamente, che probabilmente da più opportunità rispetto al c, ma da l impressione di essere molto difficile da imparare?
Come disse già qualcuno: in c,it s easier to shoot your foot. C++ makes it harder, but can blow your whole leg...
Usi per caso Clang? Perché il supporto al C++ su windows ha/aveva qualche problema e l'installazione richiede un po' di attenzione. Comunque nel caso disinstalla tutto e installati code::blocks con mingw già contenuto oppure Visual Studio https://www.visualstudio.com/products/v ... mmunity-vs . È inutile complicarsi la vita se stai imparando. Per il C puoi anche andare su pelles C .
Penso che nell'imaging e nel trattamento dei segnali si usino anche tanto matlab e python comunque.
Penso che nell'imaging e nel trattamento dei segnali si usino anche tanto matlab e python comunque.
Avevo provato veramente con code blocks e quincy( anche se quando scrivevo qualcosa in c su quincy, generaente funzionava
.). Per quanto riguarda se sto imparando...oggi stavo solo provando in po I compilatori niente di piu, e mi sono ritrovato questa sorpresa
.). Per quanto riguarda se sto imparando...oggi stavo solo provando in po I compilatori niente di piu, e mi sono ritrovato questa sorpresa

Sono abbastanza sorpreso che il mio amato C sia così ben voluto
in bocca al lupo se scegli questo bellissimo linguaggio
:)


Cronivirus, a me piacerebbe tantissomo apprendere Il c, pero ho qualche problema esistenziale 
Le opportunità di lavoro, da quanto ho capito, sono maggiori per il c++, pero questo ultimo, da quello che sto vedendo, mi da l impressione di creare facilmente errori e divenire un inferno in fase di debug( non sono riuscito a scrivere neanche "nello world", mentre quando iniziavo a studiare il c, gli esercizi andavano senza problemi...).
Come ho scritto prima:in c, it s easy to shoot your foot. In c++ it s more rare, but when it happens you blow your whole leg..

Le opportunità di lavoro, da quanto ho capito, sono maggiori per il c++, pero questo ultimo, da quello che sto vedendo, mi da l impressione di creare facilmente errori e divenire un inferno in fase di debug( non sono riuscito a scrivere neanche "nello world", mentre quando iniziavo a studiare il c, gli esercizi andavano senza problemi...).
Come ho scritto prima:in c, it s easy to shoot your foot. In c++ it s more rare, but when it happens you blow your whole leg..