Domanda C vs C++

topolinohackerino

Utente Iron
21 Gennaio 2021
13
8
0
11
buongiorno, mi stavo chiedendo se il fosse conveniente come linguaggio di programmazione imparare il c++ o é solo un c con delle piccole aggiunte? invece senza esperienza di programmazione il C ti dà più da cui partire? Grazie in anticipo per le risposte.
 
Io preferisco di gran lunga il linguaggio C. Per le seguenti motivazioni (su alcune potrai trovarti in accordo e su altre in disaccordo ovviamente, sono soltanto mie opinioni):

1. C è un linguaggio di "basso" livello, fu pensato come un linguaggio Assembly portabile ovvero indipendente dalla piattaforma sulla quale stai programmando. Alcuni potranno dire che in realtà non è propriamente di basso livello ed hanno ragione. Però, escluso Assembly, il linguaggio C è uno dei pochi che ti dà quel feeling di "avere il controllo" quasi totale della macchina. Almeno per me è così.

2. Non sono molto bravo a programmare ad oggetti. E non mi piace neanche. Mi piace di più uno stile procedurale dove sai sempre la macchina in che punto del codice si trovi. Ovviamente sono soltanto mie opinioni e preferenze.

3. È semplice. Non dove stare lì a scervellarti sulle classi, template, ereditarietà ecc…

Ripeto: sono soltanto mie preferenze, quindi informati meglio sul web, sui libri e da altri utenti.

Spero di esserti stato d’aiuto.
 
Prima di tutto come per tutti gli altri linguaggi dipende da ciò che vuoi fare. Non definirei C++ un semplice superset di C, dato che aggiunge tantissime funzionalità. L' aggiunta principale è la programmazione ad oggetti, che ti permette di programmare in maniera più astratta e semplice, tanti compiti senza questo paradigma sono pressoché impossibili da svolgere. Dal versante opposto il fatto che C sia più vicino al linguaggio macchina ti concede una profondità e libertà maggiore. C' è anche da dire che in linea di principio è più utile C++ dato che può fare tutto ciò che fa C (il contrario non vale). La semplicità d' uso varia da persona a persona, comunque entrambi i linguaggi sono molto più complessi di tanti altri come Python o Ruby. Io ti consiglio di cominciare ad imparare C e poi in caso di passare a C++, dato che per l' appunto C++ è un evoluzione di C e quindi in questo ordine è più semplice.
 
Un’analogia per spiegare (a passi da gigante) la differenza tra C e C++ è: l’italiano senza metafore e l’italiano con le metafore. Per comunicare puoi fare a meno di utilizzare le metafore. Nel contesto le metafore sono principalmente le classi e i template.


Dal versante opposto il fatto che C sia più vicino al linguaggio macchina ti concede una profondità e libertà maggiore.
L’espressione “profondità e libertà maggiore” sono insignificanti per non dire fuorvianti. Inoltre tua frase si contraddice con questa:
C' è anche da dire che in linea di principio è più utile C++ dato che può fare tutto ciò che fa C

Tuttavia tutto ciò che si può fare in C lo si può fare in C++, corretto. Difatti il primo non è più di basso livello dell’altro.

Se impari il C++ sai il 98% del C. Il 2% sono delle piccolezze che non mi sembra utile elencare adesso ma che impareresti senza alcuna complicazione.
 
Non e' che uno sia meglio dell'altro. Se programmi per un micro 8 bit come 8051, programmi in C, lo spazio in flash e' limitato. Sarebbe assurdo usare c++, per certi micro non c'e' neanche il compilatore, e per micro con flash molto piccola neanche possibile, basta in include <iostream> e gial vedi il size finale a centinaia di KB. Se fai un programma per PC, a meno che non sia di poche righe, ben poco proficuo usare C, dove non ci sono proboemi di memoria e spazio su disco, sicuramente C++, anche solo per poter usare le STL.

Infine, conosco qualche maestrino di c++ che ha grosse difficolta' a programmare in C. Quindi il C non e' passaggio obbligato per c++.
 
buongiorno, mi stavo chiedendo se il fosse conveniente come linguaggio di programmazione imparare il c++ o é solo un c con delle piccole aggiunte? invece senza esperienza di programmazione il C ti dà più da cui partire? Grazie in anticipo per le risposte.
Onestamente la vera differenza tra i due è che il C non è orientato agli Oggetti mentre il secondo si, il C++ consente a mio modo di vedere di avere una esperienza di programmazione molto similare al C con tanto di allocazione manuale della memoria e tanti altri spetti che adoro perché consentono una ottimizzazione estrema ma per la maggioranza dei developer moderni preferiscono evitare, perché molti aspetti vanno gestiti a manina, per forza di cose la memoria la devi svuotare a mano prima di reindirizzare il puntatore e sostanzialmente bisogna stare attenti e gestire in modo rigido e mirato, se sei ordinato e hai buone conoscenze e capacità logiche consiglio di affrontare entrambi i linguaggi, però raccomando sempre l'ordine e anche un certo metodo, ricordo che esistono ottimi debugger che consentono di trovare gli errori più facilmente e anche degli ottimi IDE per lavoraci su. Onestamente io non ho una vera e propria preferenza tra i due semplicemente dipende dal progetto che devo realizzare
 
Infine, conosco qualche maestrino di c++ che ha grosse difficolta' a programmare in C. Quindi il C non e' passaggio obbligato per c++.
Questa frase è sacrosanta. Il C++ è significativamente più complesso del C per i motivi che ho descritto nel thread che ho linkato in precedenza, ma programmare decentemente in C è tendenzialmente più difficile che programmare decentemente in C++. Quando programmo in C spesso mi capita spesso di pensare in C++ creando (pseudo)classi e (pseudo)metodi, ma mi rendo conto che non è questo il modo migliore di procedere. La programmazione orientata agli oggetti è particolarmente adatta a scalare bene sul numero di linee di codice e non è particolarmente difficile imitare/implementare alcuni dei concetti della OOP anche in C, però il C resta un linguaggio strutturato e andrebbe usato come tale... il problema è che non siamo più abituati ad pensare senza composizione, senza interfacce e senza una rigida separation of concerns.
 
Questa frase è sacrosanta. Il C++ è significativamente più complesso del C per i motivi che ho descritto nel thread che ho linkato in precedenza, ma programmare decentemente in C è tendenzialmente più difficile che programmare decentemente in C++. Quando programmo in C spesso mi capita spesso di pensare in C++ creando (pseudo)classi e (pseudo)metodi, ma mi rendo conto che non è questo il modo migliore di procedere. La programmazione orientata agli oggetti è particolarmente adatta a scalare bene sul numero di linee di codice e non è particolarmente difficile imitare/implementare alcuni dei concetti della OOP anche in C, però il C resta un linguaggio strutturato e andrebbe usato come tale... il problema è che non siamo più abituati ad pensare senza composizione, senza interfacce e senza una rigida separation of concerns.
Si aggiunge la parte di programmazione orientata gli oggetti che in parte semplifica e in parte complica l'esperienza di utilizzo in questo caso specifico, perché rista molto ancorato al vecchio modo di programmare al contrario del Java e di altri resta decisamente meno intuitivo per un developer che non è ancora entrato nel meccanismo di funzionamento del linguaggio in questione