Competenze C ++ superiori alle abilità C? [chiuso]


28

Sento che il C / C ++ spesso visto non descrive davvero le mie abilità nel mio CV. Quindi sto progettando di separarlo in conoscenza avanzata del C ++ e abilità mediocre in C.

Pensi che questo sia fonte di confusione per il lettore? Poteva pensare: "C è un sottoinsieme di C ++, quindi cosa sta cercando di chiamarmi questo ragazzo?" Bene, quello che sto cercando di dire è: ho fatto diversi progetti C ++ nel mondo reale mentre progetti C puri erano solo un hobby. Sei d'accordo sul fatto che un programmatore C ++ esperto non sia necessariamente un tipo C qualificato o pensi che questo passaggio sia fatto facilmente?



1
Questo è esattamente quello che faccio. Non mi ha impedito di trovare un lavoro.
Martin York,

9
Non scrivo un CV da molto tempo, ma parlo sempre di C e C ++ come due lingue totalmente diverse.
Rei Miyasaka,

2
@ReiMiyasaka - Bene, perché sono due lingue totalmente diverse. Entrambi sono stati aggiornati e si sono discostati dalla creazione del C ++ come aggiunta a C.
Izkata,

credo che C / C ++ non siano la stessa cosa e siano linguaggi totalmente diversi, l'unica cosa comune è la 'C' nel nome (per non parlare della sintassi stretta)
Qchmqs

Risposte:


31

Hai fatto così tante domande in una; fammi provare a rispondere mentre li segrego. Assumo molte persone che rientrano in questo tipo di profilo e abbastanza spesso devo prendere così tante interviste e rifiutare le persone perché spesso non hanno una risposta chiara alle domande che hai posto.

  1. Avere una buona padronanza in C o C ++ è abbastanza buono per qualificarti per l'altro programma?
    Se sei a un livello senior in realtà NO. vale a dire se sei stato qualcosa come 6 anni a fare la programmazione C ++ su alcune applicazioni aziendali core, e ora sto cercando di metterti in sistemi embedded che sono tutti in C - probabilmente la tua sintassi di programmazione e come eseguire il debug delle cose non è un problema. Ma se hai bisogno di pensare a un problema, sei sicuramente molto disordinato. Questo è vero da entrambe le parti verso l'altra lingua. Più anni hai trascorso solo un tipo di linguaggio - meno facile da trasformare in altra forma! Non si tratta di sapere se puoi imparare la sintassi del linguaggio, ma in realtà pensi diversamente quando sei in C, C ++, Java, perl e Python. Per estendere la domanda - il più delle volte - i ragazzi C ++ e Java possono essere usati in modo intercambiabile, così come Perl, PHP, Phython. C è una razza abbastanza diversa!

    Se sei un ragazzo relativamente giovane - è probabile che tu possa recuperare velocemente.

  2. Significa che ho una maggiore competenza quando conosco C ++ piuttosto che C
    In realtà no. No, perché, come regola generale, se sei in grado di creare un prodotto completo da C è un compito molto più difficile rispetto a farlo in C ++. Il numero di persone che sono in grado di padroneggiare la risoluzione dei problemi dei sistemi di memoria condivisa è molto inferiore al numero di persone che sono in grado di scrivere un programma GUI decente utilizzando VC ++ o un framework simile.

  3. Questo significa sapere che C (o la programmazione di livello più basso) è il livello più alto di risultati?
    Non ancora! Questa non è contraddizione. Questa volta dipende dal dominio che si confronta. Se stai guardando la programmazione di sistemi all'interno del kernel Linux, o qualcosa di molto vicino all'hardware, la capacità di programmazione in C è più rilevante, tuttavia, se stai scrivendo software bancario o alcuni motori di regole aziendali - C ++ è di solito una scelta naturale. Il punto è che la tua vera forza non riguarda molto la sintassi del linguaggio ma il modo in cui risolvi una classe di problemi e puoi solo sperare di padroneggiare alcune categorie / domini nella tua vita. Se stai inserendo qualcosa nel tuo curriculum, questo è ciò che conta davvero.

  4. Vuol dire che se fossi stato solo in C - non conosco la programmazione orientata agli oggetti?
    Affatto. In effetti, la mia cartina di tornasole nell'intervista per sapere se un ragazzo è di C background o C ++ è di porre una domanda molto semplice: "Quindi puoi fare la programmazione orientata agli oggetti in C?" - il ragazzo salta e dice - "Sicuramente NO!" lui / lei è C ++. Il punto è che quando scrivi davvero un codice molto complesso come un codice multimediale, un sistema multi-thread, uno stack di livelli di protocollo, continui a "pensare come un codice oggetto" - il compilatore C non ti punisce se sei incapace di incapsulare due routine o oggetti - ma quando il sistema si ridimensiona che continua a spararti - credo a volte - ci sono molti che sono nati nell'era dell'orientamento agli oggetti, abbastanza spesso sono abbastanza deboli su come l'incapsulamento viene davvero violato in un codice che è praticamente pieno di classi e oggetti. Scusa se ho divagato. Ma il punto è che sono le tue capacità di analisi e progettazione dei problemi che contano più delle tue sole capacità di programmazione.

Vuol dire che dovrei mettere individualmente le competenze specifiche di esposizione e design del dominio?
Decisamente sì!


9
+1 Per aver sottolineato che puoi avere un design orientato agli oggetti e implementarlo ancora in C.
Giorgio,

16
@Dipan: fai attenzione a fare ipotesi basate sull'età. Alcuni ragazzi più grandi "raggiungono" anche abbastanza velocemente. Alcuni di loro probabilmente corrono più veloci di te.
Kevin Cline,

15
Dubito fortemente che "i ragazzi C ++ e Java possano essere usati in modo intercambiabile".
Fredoverflow,

6
Sono anche in disaccordo con il n. 2. Quando conosci C ++, puoi prendere C # o Java in tempi relativamente brevi. Raccogliere C ++ quando conosci uno degli altri due, tuttavia, richiede molto tempo e fatica e richiede prima di "disimparare" molto di ciò che hai preso come indicato in C # o Java.
sabato

1
@sbi: Non sto davvero discutendo di dettagli molto specifici sul C ++ o JAVA o C. Non ho intenzione di generalizzare eccessivamente la relazione tra le lingue; né presumo che le persone non possano davvero adattare le cose apprese o disimparate. L'unico punto cruciale è che lingue diverse sono anche modelli di pensiero diversi indipendentemente dalla loro relazione sintattica e questo è ciò che conta nell'adattamento del ruolo da assegnare.
Dipan Mehta,

27

Per le persone che contano davvero, no, non dovrebbero confonderle.

Chiunque sappia qualcosa sulla programmazione del C e del C ++ nel mondo reale sa che sebbene, nonostante le loro somiglianze e la loro storia, la programmazione della produzione in entrambi i casi è molto spesso un animale completamente diverso.


12

Personalmente, trovo molto fastidioso quando le persone scrivono "C / C ++", perché C e C ++ sono linguaggi molto diversi. Al contrario, se vedo "C, C ++" o "C ++ e C" su un curriculum, mi impressiona senza fine. Sfortunatamente, quasi tutti scrivono "C / C ++", e in genere significa "Conosco C ++, ma posso fare C se devo."

Inoltre, non sarei così specifico sul CV. Basta elencare i linguaggi di programmazione che conosci, possibilmente nell'ordine dal più competente al meno esperto. Ciò dovrebbe farti superare il filtro delle parole d'ordine delle risorse umane, e quindi puoi spiegare durante un'intervista tecnica quali sono i tuoi punti di forza e di debolezza.


4
Concordato. Non inserirò prima "C / C ++" nel mio CV che inserirò "Java / JavaScript" come se fossero la stessa cosa.

Scrivo spesso C / C ++ anche se so che sono lingue diverse, grazie al fatto che hai imparato entrambe senza preoccuparsi di guardare l'altro, la tua conoscenza di entrambi è incompleta. Non puoi essere un buon programmatore di C senza almeno studiare OO, dove C ++ è la scelta naturale per imparare a fare OO in C. Non puoi essere un buon programmatore di C ++ senza capire perché il C ++ si è rivelato così com'è, dalla sua eredità da C. In un CV, tuttavia, sono d'accordo che dovrebbero essere separati.

1
@OrbWeaver, una grande differenza è che spesso puoi prendere un programma C (purché non sia troppo complesso), inviarlo a un compilatore C ++ e ottenere un eseguibile da quello che farà effettivamente ciò che uno Il compilatore C farebbe. Non puoi alimentare un programma Java a un parser JavaScript (o viceversa) e ottenere qualsiasi cosa anche lontanamente utile dall'esercizio. Quindi, mentre concordo sul fatto che C e C ++ dovrebbero essere differenziati, a mio avviso la scrittura C/C++e Java/Javascriptcome se fossero gli stessi è ancora in due leghe molto diverse.
un CVn

+1 per il consiglio: basta elencare i linguaggi di programmazione che conosci, possibilmente nell'ordine dal più competente al meno competente. Ciò dovrebbe farti superare il filtro per le parole d'ordine delle risorse umane,
ingenuo l'

7

No, non dovrebbe essere fonte di confusione perché C e C ++ sebbene simili e condividono radici simili sono diversi nel paradigma e nell'uso. Pertanto, dovrebbe essere separato, anche le competenze dovrebbero essere separate. Inoltre, penso che puoi menzionare competenze più specifiche (come GUI / FLTK o altre librerie con cui hai familiarità) con i due separati.


5

Mi è piaciuto il tuo fraseggio: "Ho realizzato diversi progetti C ++ nel mondo reale, mentre progetti in puro C dove solo un hobby"

Quindi lo metterei semplicemente nel gergo del CV:

  • ha lavorato su diversi prodotti C ++
  • alcuni progetti collaterali usando C

È meglio se metti i numeri al posto di "diversi" e "pochi". Non c'è bisogno di essere esatti, "oltre venti" è un numero per questo scopo.

La descrizione "livello di abilità" è corretta , ma la descrizione "esperienza" è corretta e chiara.


3

Concordo sul fatto che C e C ++ sono lingue diverse e che dovrebbero essere tenute separate nel CV. Anche se C è (quasi) un sottoinsieme di C ++, di solito ho uno stile di programmazione molto diverso quando uso C: disegno in modo diverso, codice in modo diverso e così via. Vorrei anche rimuovere alcune funzionalità C come #includes dal C ++ rinunciando del tutto alla retrocompatibilità: sono semplicemente linguaggi diversi.

Quindi il mio consiglio è di tenere separate le due lingue nel tuo CV.


3

Semplicemente, se la persona che ti sta valutando ha avuto la propensione a pensare "C è un sottoinsieme di C ++", sono già confusi e sono sicuro che la tua spiegazione di ciò che è scritto nel tuo curriculum sarà sufficiente per stupirli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.