L'esperienza C # si traduce bene in C ++? [chiuso]


13

Le mie lezioni di programmazione a scuola erano C ++, ma ho finito per lavorare in C # negli ultimi anni. Se esistesse una posizione che richiedesse un'esperienza di 1 o 2 anni in C ++, la mia esperienza in C # sarebbe degna di considerazione? Quanto potrei essere efficace in tale posizione? Quindi devo iniziare come programmatore C ++ entry-level per acquisire l'esperienza necessaria?


4
La parte più difficile sarà imparare i modi di dire del C ++ e il modo "corretto" di fare le cose. In C #, cose come la gestione della memoria e il controllo dei limiti sono integrati nella lingua e nel framework. In C ++ ci sono molti altri modi per spararti al piede.
Robert Harvey,

1
@RobertHarvey: solo se non hai mai sentito parlare di suggerimenti intelligenti. O contenitori.
DeadMG

11
@DeadMG: Non so cosa intendi con questo. Anche se ne hai sentito parlare, devi ancora impararli.
Robert Harvey,

2
La serie C ++ efficace è molto più strabiliante della serie C # efficace.
Lavoro

@Robert: Beh, se fai contenitori e puntatori intelligenti, non devi gestire una manciata di memoria. E impararli è C ++ 101.
DeadMG

Risposte:


13

Il problema qui è che C ++ e C # sono fondamentalmente linguaggi estremamente diversi con approcci diversi a molti problemi. È facile raggrupparli come "Un linguaggio OO", ma il semplice fatto è che molti modi di dire C # sono considerati un codice molto cattivo in C ++ (e viceversa).

Se in realtà conosci le differenze e come sono gli idiomi del C ++, allora non vedo alcun motivo per cui non dovrebbe andare bene.


5

Ero nella stessa barca circa 2 anni fa. La tua esperienza con c # probabilmente non varrebbe tanto per un lavoro c ++ come c ++ per un lavoro ac #. Detto questo, se sai come funziona effettivamente c # (pochissimi programmatori c # effettivamente) e hai imparato bene il tuo c ++, allora il c ++ non sarà il problema. Quale sarà il problema è il modo in cui ti sei abituato a determinati modelli di progettazione che saranno di livello troppo alto per c ++.

Ad esempio, passando dal simpatico modello di accesso ai dati ADO.NET all'utilizzo di cppcon per l'accesso mysql, System.Collections.Generico all'utilizzo di stl, ereditarietà multipla, garbage collection per ripulire la memoria in distruttori e così via ... tutto tende per essere transizioni difficili. Il C ++ non è il problema, imparare le librerie, i modelli di progettazione e come usarli è la sfida. La maggior parte dei recruiter non se ne rende conto. Se riesci a fare la progettazione di base e puoi utilizzare le funzionalità effettivamente utilizzate di c ++, allora dovresti andare bene nell'intervista.

Tuttavia, pronto per il lavoro è una storia diversa. È una sfida divertente, spero vada tutto bene.


Tutti i lavori in C ++ che vedo vogliono 2-3 anni di esperienza in C ++ ma il mio è in C #. Questo è davvero frustrante per me, voglio fare C ++! Hai ragione sul reclutatore, mi hanno abbattuto. Come posso mai fare questa esperienza se nessuno mi lascia provare? Sono fiducioso che se qualcuno mi facesse entrare dalla porta potrei imparare rapidamente, ma non so come potrei farcela.
MetaGuru,

Ho saltato su un progetto c ++ nel mio lavoro attuale. Questa è probabilmente la tua scommessa migliore. In alternativa, puoi sempre accedere a un progetto open source in c ++.
Jonathan Henson,

@Ryan Come diceva Jonathan, ci sono molti modi per fare esperienza in C ++. Almeno da dove vengo, devi dimostrare di avere esperienza (invece della dichiarazione popolare; avere 1 anno di esperienza cinque volte). Funziona in entrambi i modi: qualcuno senza molta esperienza "cartacea" può avere la possibilità di provare anche se stesso. Assicurati di conoscere effettivamente C ++ prima di provare!
Max

3

Non posso parlare per tutti i datori di lavoro, ma considero personalmente la programmazione come l'abilità e le specifiche della lingua un piacere avere. È ancora possibile essere assunto in un altro lavoro di programmazione che non è la tua abilità principale.

Detto questo, è molto improbabile che assumerei qualcuno che non aveva assolutamente esperienza nella lingua per cui li sto assumendo. Trascorri alcuni weekend a studiare e fai un paio di progetti per animali domestici per rafforzare il tuo CV. Anche i più piccoli dimostrano che sei in grado di apprendere e appassionare.


3

Sei esattamente nella stessa situazione in cui mi trovavo 4 anni fa.

Ho fatto del C ++ durante i miei studi, ma l'ho odiato. Ho fatto un sacco di sviluppo web quando ho potuto nel mio tempo libero e ho trovato lavoro in quel campo.

Quando mi sono trasferito ho fatto domanda per un lavoro in C ++ che aveva 2 anni di esperienza in C ++ come requisito. Bene, ho aggiornato i miei ricordi in C ++ prima dell'intervista e quando è arrivato il momento dei test sono riuscito a cavarmela con alcune cose, non ero così sicuro di fare bene.

Ma la maggior parte dell'intervista riguardava la risoluzione di problemi e soluzioni creative e il C ++ ha finito per essere solo un fattore secondario.

Quindi le possibilità dipendono davvero dal datore di lavoro e dalle posizioni che hanno.

Se stai passando attraverso un'agenzia di reclutamento ti verrà "probabilmente" detto che il tuo profilo non corrisponde. Ma con un vero datore di lavoro le tue possibilità sono molto migliori perché sanno davvero di cosa hanno bisogno.


1
assicurati di sapere cos'è un distruttore virtuale in modo da oltrepassare lo schermo del telefono.
Kevin,

2
Come hanno detto gli altri, ricordati di ricordare le poche basi della gestione della memoria in C ++. È la differenza fondamentale. Altrimenti per quanto riguarda le biblioteche e i framework La maggior parte delle (grandi) aziende ha le proprie librerie e wrapper, quindi non si aspettano che tu sappia le loro implementazioni. Contrariamente a C # in cui la maggior parte delle librerie di alto livello sono supportate nel framework .net e il requisito sarà quello di conoscere una serie di librerie rilevanti per la posizione.
Coyote,

Quindi hai ottenuto il lavoro? Mi piacerebbe davvero passare al C ++, ma la mia mancanza di esperienza documentata sta chiudendo le porte, non sono sicuro di come costruirlo altrimenti.
MetaGuru,

Sì ... Ha lavorato lì per 3 anni. È stata una bellissima esperienza ... ma nei primi mesi ho dovuto fare qualche passo in avanti con le particolarità del C ++.
Coyote,

1

Dipende. Se puoi rispondere ad alcune domande di intervista di base su puntatori e simili, allora dovresti andare bene.

È anche utile se puoi elencare le differenze tra modelli C ++ e generici .NET.

A parte questo, è abbastanza facile tenere il passo con il resto mentre vai avanti.


1

Sì. Potrebbe non essere rilevante come l'esperienza C ++, ma è buono.

I buoni datori di lavoro saranno interessati a come pensi , più di quanti anni hai di una lingua specifica che hai.

Una posizione C ++ entry-level va bene: puoi imparare rapidamente e fare un ottimo lavoro. Una buona compagnia ti darà molte opportunità di crescere. Altrimenti puoi andare altrove e avere sia l'esperienza C # che C ++.


0

Dipende davvero dalla natura del business a cui ti stai candidando. Se stanno cercando qualcuno che abbia buone capacità di programmazione e architettura basate su OO, C # è probabilmente buono come la prossima cosa.

Se sono orgogliosi della velocità / reattività del loro software, allora avrai bisogno di conoscere i tuoi algoritmi poiché questo conta più delle microottimizzazioni: tabelle hash contro ricerca lineare, ecc. C # è ancora rilevante qui, ma avresti bisogno per dimostrare la comprensione delle caratteristiche prestazionali, ad esempio non tutti conoscono ngen.exe.

Se si trovano in ambienti raccolti incorporati / mobili e / o non immondizia, devi davvero sapere come gestire efficacemente la memoria. I puntatori intelligenti, come sottolineato da @DeadMG, sono fondamentali qui, ma anche la comprensione del profilo di allocazione della memoria. I programmatori di giochi spesso pre-allocano grandi matrici di oggetti e li riciclano per conoscere anticipatamente i requisiti di memoria e ridurre le incognite su una base per fotogramma. Questa è anche la tecnica utilizzata nelle TableView viste a scorrimento in iOS.

Se c'è qualche lavoro di integrazione, è probabile che tu abbia bisogno di competenze di livello C in termini di marshalling dei dati tra le lingue (come P / Invoke) ma anche di una comprensione a livello di byte di come queste strutture di dati possano essere utilizzate, il che non è pratica comune in C # nella mia esperienza.

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.