Ottima conoscenza del C ++ [chiuso]

8

Recentemente ho visto una pagina di reclutamento per una società di software in cui uno dei requisiti era "Ottima conoscenza del C ++".

Ora, so che questo implica in qualche modo una conoscenza approfondita del C ++, ma dove esattamente la conoscenza degli esperti si adatta. È la conoscenza e l'esperienza di (diciamo) otto anni di programmazione nella lingua, avendo e conoscendo i dettagli di un dominio specifico. Oppure, si tratta di un approccio più superficiale, di uno o più domini e allo stesso tempo di una comprensione più dettagliata dell'intero linguaggio?

Ad esempio, non puoi essere un esperto nello scrivere contemporaneamente i driver di sistema e i motori di gioco. Quindi, dove si inserisce questa conoscenza eccellente o esperta?

    
posta Eve 21.05.2012 - 02:18
fonte

6 risposte

17

Se dicono "Ottima conoscenza", dovresti essere in grado di identificare e utilizzare correttamente tutte le funzionalità del linguaggio, comprese quelle dell'ultimo standard C ++ 11 attualmente supportate universalmente (sfortunatamente, Visual Studio è il più basso comune denominatore qui). Una persona con conoscenza C ++ eccellente può creare i propri tratti del tipo o modelli di espressione; possono costruire i propri contenitori, algoritmi e allocatori. Sanno quando utilizzare l'ereditarietà e quando utilizzare i modelli e quando non utilizzarli. Sanno come usare RAII per gestire tutti i loro stati di pulizia necessari.

Inoltre, possono far fronte all'interazione con la spazzatura in stile C, dato che sfortunatamente è ancora parte della lingua.

    
risposta data 21.05.2012 - 02:51
fonte
8

Non penso che esista una definizione ampiamente accettata di ciò che costituisce una conoscenza "eccellente" del C ++.

Tende ad essere difficile trovare una risposta pulita a ciò che costituirebbe una conoscenza "buona", "eccellente", "superba" (ecc.) di qualsiasi lingua, struttura, piattaforma o cosa tu abbia. In molti casi è particolarmente difficile tracciare una linea pulita tra la conoscenza che è davvero utile e fondamentalmente conoscendo un sacco di curiosità.

Questo è particolarmente vero nel caso di qualcosa come il C ++ che è stato intorno a decenni, applicato in molti modi diversi e scritto in molti stili diversi nel tempo. C'è una quantità quasi spaventosa che qualcuno potrebbe conoscere il linguaggio che è quasi del tutto estraneo a usarlo per risolvere bene i problemi. Conoscere tutte le regole di cose come la risoluzione del sovraccarico o l'ordinamento parziale dei modelli di funzione è probabilmente utile se si sta cercando di assumere qualcuno per lavorare su un compilatore (o qualcosa di molto simile). Ho usato C ++ da quando è diventato ragionevolmente ampiamente disponibile, e non ho ancora usato (o anche solo voluto) un ordine parziale di modelli di funzioni nel codice reale.

Sebbene non sia tecnicamente reattivo alla domanda posta, mi affretto a consigliare a chiunque includa tale requisito negli annunci di lavoro per cercare di mantenere un certo equilibrio in mente. Penso che l'eccessiva enfasi venga spesso posta sui linguaggi di programmazione, a scapito di cose come capacità di problem solving e algoritmi generali. Conoscere un linguaggio di programmazione aiuta bene uno a esprimere soluzioni, ma di solito è di minimo aiuto (nel migliore dei casi) nel progettare la soluzione stessa. Un'ottima soluzione, mal espressa, batterà praticamente sempre una soluzione mediocre, non importa quanto bene sia espresso.

    
risposta data 21.05.2012 - 06:25
fonte
2

Mi aspetto che questa persona sia aggiornata con lo standard C ++, i concetti, i costrutti e le parole chiave appena aggiunti. Ad esempio, dovrebbe almeno sapere che cos'è un riferimento di rvalue e perché può essere utile.

    
risposta data 21.05.2012 - 02:22
fonte
0

Quanto è buono un calciatore eccellente? Dipende dal tipo di livello che stai guardando, internazionale, campionato per bambini ecc.

Un'eccellente conoscenza di C ++ probabilmente significa che dovresti conoscere tutte le parole chiave e quando vengono utilizzate insieme all'STL.

A volte includerà anche pattern di design e boost, ma a volte includerà nessuno dei precedenti e richiederà che tu superi l'esame di codifica e impressionare il loro intervistatore.

Onestamente non esiste una definizione reale. Ti sembra di poter scrivere un'applicazione complessa, multi-thread e multi-livello che impiega C ++ e alcune librerie periferiche (STL, MFC, boost, ecc.). Se la risposta è sì, probabilmente hai un tiro a posizioni di livello esperto.

Se la risposta è no, potresti perdere tempo.

    
risposta data 23.05.2012 - 14:23
fonte
0

Un eccellente programmatore C ++ sa quando utilizzare la miriade di "funzionalità" offerte dalla lingua e quando no.

    
risposta data 23.05.2012 - 15:21
fonte
0

Non soffermarti sulla semantica di "eccellente", basta candidarti per il lavoro se ti sembra interessante e ti senti all'altezza. Lascia che sia il datore di lavoro a decidere se sei "eccellente" o meno.

Un "eccellente programmatore" conosce il potere grezzo dello strumento e alla luce di esso giudica diversi fattori che determinano l'implementazione del problema immediato in mano, questi fattori sono: semplicità di implementazione, estensibilità / riusabilità, efficienza.

    
risposta data 23.05.2012 - 17:30
fonte

Leggi altre domande sui tag