È comune che un programmatore non conosca la differenza tra C e C ++? [chiuso]

16

Durante un'intervista mi è stato chiesto se conoscevo la differenza tra C e C ++.

Mi stavo chiedendo perché è stata posta la domanda?

    
posta Stella Lie 10.06.2012 - 21:46
fonte

9 risposte

25

Se le domande erano formulate come "Conosci la differenza tra C e C ++?" e ti è stato permesso di rispondere solo con "Sì", quindi ho potuto vedere la tua confusione, ma se in realtà stavano chiedendo "Cosa sono le differenze tra C e C ++?" e una risposta più aperta era prevista, posso vederlo come una legittima "via di indagine" come si dice.

Ad esempio, avendo sempre codificato in C e mai in C ++, sarei a malapena in grado di rispondere oltre un vago "C ++ supporta la codifica orientata agli oggetti?"

    
risposta data 10.06.2012 - 23:51
fonte
40

Alcune persone hanno osservato che c'è un'enorme quantità di candidati alla programmazione che possono scrivere un codice . Quindi, sì, chiedere domande "ovvie" ha perfettamente senso.

    
risposta data 10.06.2012 - 21:55
fonte
8

Ce ne sono un sacco. C'è un'infinità di persone che hanno docenti idioti che insegnano C-string e new e delete , o tutorial scaduti o libri cattivi, che imparano "C ++" ma in realtà C, che pensa che i due siano piuttosto vicini .

Ovviamente, se sei un datore di lavoro, allora dire che sono uguali o addirittura simili è una grande spia.

    
risposta data 11.06.2012 - 08:32
fonte
5

Ci sono anche una piccola percentuale di persone (come me) che hanno imparato il C ++ prima di loro imparato C.

Sono sicuro che conosci le differenze, ma se sei uno studente che ha avuto solo un C ++ classe, e non una classe C, le parti di C ++ che non sono compatibili con C non lo faranno essere ovvio

Alcune delle differenze più ovvie che ho imparato (non un elenco esaustivo) () i tipi di dati struct in origine non potevano contenere funzioni,     e non può avere membri privati, intendendolo     è molto difficile applicare le regole di validità di un tipo di dati astratto in C. () le classi non sono supportate in C () passando per riferimento usando l'operatore commerciale e 'specifico per C ++ () C non supporta flussi o modelli (*) malloc e free sono destinati all'uso solo in C e non in C ++

    
risposta data 12.06.2012 - 20:46
fonte
1

Purtroppo, penso che stia diventando sempre più comune.

Penso che i giovani programmatori appena usciti dalla scuola tecnica (o da cui apprendono le loro competenze) semplicemente non imparino lingue più vecchie come C, C ++, Lisp, OCaml, ecc. Vengono semplicemente come "programmatori c #" o "programmatori java", ecc. E quando trovano un lavoro, non si mettono alla prova con l'apprendimento di altre lingue.

Naturalmente ce ne sono alcuni, ma da quelli con cui ho lavorato, c'è una tendenza generale per i programmatori più giovani a seguire questo schema.

Dichiarazione di non responsabilità: poiché sto parlando di educazione, allora ci possono naturalmente essere differenze da paese a paese su ciò che viene sottolineato nell'educazione.

    
risposta data 11.06.2012 - 08:11
fonte
0

Probabilmente non letteralmente, nel senso che pensano che C ++ e C siano la stessa cosa, ma in termini di comprensione e capacità di usare le diverse funzionalità del C ++, sì.

La causa principale è la natura binaria dell'inserimento di lingue / strumenti sul curriculum / CV. Essenzialmente, lo standard sembra essere che se hai "Hello World" per compilare ed eseguire in una lingua, allora è OK elencarlo sul tuo curriculum / CV.

Come succede, la versione C di "Hello, World!" compila anche ed esegue in C ++. Quindi, in assenza di altre informazioni, tutto ciò che vedere "C ++" su un curriculum mi dice che questa persona conosce abbastanza C per ottenere "Ciao, Mondo!" in esecuzione, e sa che la maggior parte dei programmi C verrà compilata in C ++.

Detto questo, ho bisogno di indagare un po 'sul colloquio. Probabilmente non lo farei chiedendo un "Sì / No" "Conosci la differenza?" domanda, in breve perché ha una ovvia risposta "giusta". Probabilmente chiederei al candidato quale lingua le piacesse di più, perché, e se ci fossero vantaggi per quello che non ha scelto.

    
risposta data 12.06.2012 - 21:58
fonte
0

risposta

Sì, è comune. Ho visto questa situazione, sia io, colleghi, o codice di librerie di terze parti.

Io stesso, ad esempio, a volte lavoro con altri linguaggi di programmazione o framework di programmazione, e devo collegare, o aggiornare, a librerie "pure c" o "c ++".

Ho appena avuto il problema di modificare un codice "Pure C". E usando "nuovo" & "cancella" le funzioni di allocazione della memoria, che sono "c ++". Il resto del codice non era orientato agli oggetti

Il compilatore era C ++. Più tardi, ho fatto causa a un altro compilatore e ho scoperto l'errore.

Bonus

Se qualcuno ti chiede, verbalmente o in un test scritto o in un test web online:

"Conosci la differenza tra C o C ++"

E tu rispondi "Sì" o "No".

Significa davvero:

"Conosci la differenza tra C o C ++, per favore, dimmi?"

Quindi, devi rispondere:

"Sì. La differenza è che C ++ è orientato agli oggetti, sebbene tu possa usare Pure C, all'interno di un programma C ++, per compatibilità con le versioni precedenti."

A volte, non ti chiederanno "se lo fai per favore dimmelo" e supporteranno che non lo sai. Non rispondere semplicemente a "sì" o "no".

    
risposta data 12.06.2012 - 21:18
fonte
-2

Modifica

Come premessa, si noti che questa risposta non è intesa a dichiarare che non ci sono differenze o che professo di conoscere le differenze, o anche che conosco piuttosto che "Hello World" in C o C ++. È una risposta alla domanda inquadrando i termini di riferimento, sottolineando che molte persone conoscono le differenze elementari (ad esempio uno ha alcuni + caratteri nel suo nome) e pochissime persone conosceranno tutte o anche la maggior parte delle differenze .

Dipende da cosa intendi per 'programmatore' e cosa intendi per 'differenza'.

Sono un 'programmatore' (anche se mi definisco uno sviluppatore) e fatico a dare reali differenze tra C e C ++. Se premuto probabilmente direi che C ++ è un superset di C che ha namespace e ereditarietà; diversi modi di affrontare la memoria. So abbastanza per correggere alcuni bug o apportare alcune modifiche al programma esistente, ma non riesco a immaginare di scrivere qualcosa di più di una semplice utility in C o C ++. Conosco abbastanza per cavarmela, ma non mi dipingo come "conoscere" una di quelle lingue.

Conosco altri 'programmatori' (anche sviluppatori) che non ti direbbero nemmeno la differenza tra Java e FORTRAN, o Javascript e Pascal. Sono bravi in quello che fanno e non fanno linguaggi procedurali.

Poi ci sono milioni di programmatori mediocri che conoscono a malapena la singola lingua con cui lavorano ogni giorno.

Il termine "differenza" è ambiguo. Ho fatto notare ciò che vedo sopra alcune differenze, ma so che non sono definitive e complete. Pochissime persone conosceranno ogni differenza - molte più persone saranno in grado di dare alcune risposte vaghe (come me) sull'orientamento agli oggetti.

    
risposta data 13.06.2012 - 01:37
fonte
-3

Is it common for a programmer not to know the difference between C and C++?

Vent'anni fa? Sì.

Oggi? Non così tanto.

Il motivo è dovuto al fatto che il panorama della programmazione è cambiato in modo significativo. Molti dei programmi di oggi sono basati sul web; anche i programmi scritti per desktop possono essere scritti in un linguaggio di livello superiore rispetto a C o C ++. Pertanto, a meno che tu non sia un programmatore che scrive codice OS, potresti non sapere molto su nessuna delle due lingue.

Un intervistatore può porre questa domanda in un'intervista per valutare quanto sai sui fondamentali della programmazione; se conosci la differenza tra C e C ++, probabilmente conosci la programmazione orientata agli oggetti, probabilmente comprendi librerie e compilatori, capisci le funzioni di memoria, i riferimenti, i puntatori ... molte cose che hanno influenzato i linguaggi di programmazione di oggi . Non uso molto C ++ (e non posso dire di essere un programmatore eccellente in qualsiasi lingua, la saggezza arriverà con il tempo), ma posso dire che la mia esperienza con C ++ mi ha sicuramente reso un programmatore migliore.

    
risposta data 13.06.2012 - 01:43
fonte

Leggi altre domande sui tag