A experiência em C # se traduz bem em C ++? [fechadas]

13

Minhas aulas de programação na escola eram C ++, mas acabei trabalhando em C # nos últimos anos. Se houvesse uma posição que exigisse 1 ou 2 anos de experiência em C ++, minha experiência em C # seria digna de consideração? Quão eficaz eu poderia estar nessa posição? Então, eu preciso começar como um programador C ++ básico para obter a experiência necessária?

MetaGuru
fonte
4
A parte mais difícil será aprender os idiomas do C ++ e a maneira "correta" de fazer as coisas. Em C #, coisas como gerenciamento de memória e verificação de limites são inseridas na linguagem e na estrutura. Em C ++, existem muitas outras maneiras de dar um tiro no próprio pé.
Robert Harvey
1
@ RobertHarvey: Somente se você nunca ouviu falar de indicadores inteligentes. Ou recipientes.
23711 DeadMG
11
@DeadMG: Eu não sei o que você quer dizer com isso. Mesmo se você já ouviu falar deles, ainda precisa aprender.
Robert Harvey
2
A série C ++ eficaz é muito mais alucinante do que a série C # efetiva.
Job
@ Robert: Bem, se você fizer contêineres e indicadores inteligentes, não precisará gerenciar um pouco de memória. E aprender deles é C ++ 101.
DeadMG

Respostas:

13

O problema aqui é que C ++ e C # são, fundamentalmente, linguagens extremamente diferentes, com abordagens diferentes para muitos problemas. É fácil agrupá-los como "Uma linguagem OO", mas o fato simples é que muitos idiomas C # são considerados códigos muito ruins em C ++ (e vice-versa).

Se você realmente conhece as diferenças e como são os idiomas C ++, não vejo razão para que isso não deva ficar bem.

DeadMG
fonte
5

Eu estava no mesmo barco cerca de 2 anos atrás. Sua experiência em c # provavelmente não valeria tanto para um trabalho em c ++ quanto em c ++. Dito isto, se você sabe como o c # realmente funciona (muito poucos programadores de c # realmente funcionam) e aprendeu bem o seu c ++, então o c ++ não será o problema. Qual será o problema é a maneira como você se acostumou a determinados padrões de design, que serão de alto nível para c ++.

Por exemplo, passando do bom modelo de acesso a dados ADO.NET ao uso do cppcon para acesso ao mysql, System.Collections.Generic ao uso de stl, herança múltipla e coleta de lixo para limpar sua memória em destruidores e assim por diante ... ser transições difíceis. C ++ não é o problema, aprender o libs, padrões de design e como usá-los é o desafio. A maioria dos recrutadores não percebe isso. Se você pode criar um design básico e usar os recursos atuais mais comuns do c ++, deve se dar bem na entrevista.

No entanto, pronto para o trabalho é uma história diferente. É um desafio divertido, espero que tudo corra bem.

Jonathan Henson
fonte
Todos os trabalhos em C ++ que eu vejo precisam de 2 a 3 anos de experiência em C ++, mas o meu está em C #. Isso é realmente frustrante para mim, eu quero fazer C ++! Você está certo sobre o recrutador, eles me derrubaram. Como posso obter essa experiência se ninguém me permite tentar? Estou confiante de que, se alguém me deixar entrar pela porta, eu poderia aprender rapidamente, simplesmente não sei como posso falar com eles sobre isso.
MetaGuru 5/10
Eu pulei em um projeto c ++ no meu trabalho atual. Essa é provavelmente a sua melhor aposta. Ou, você sempre pode entrar em um projeto de código aberto que esteja em c ++.
Jonathan Henson
@ Ryan Como Jonathan disse, existem várias maneiras de obter experiência em C ++. Pelo menos de onde eu sou, você deve provar que tem experiência (em vez da declaração popular; ter 1 ano de experiência cinco vezes). Isso funciona nos dois sentidos - alguém sem muita experiência em "papel" pode ter uma chance de provar a si mesmo também. Apenas certifique-se de conhecer C ++ antes de tentar!
Max
3

Eu não posso falar para todos os empregadores, mas eu pessoalmente vejo a programação como a habilidade e os idiomas específicos como uma boa opção. Ainda é possível ser contratado em outro trabalho de programação que não seja sua principal habilidade.

Dito isto, é muito improvável que eu contratasse alguém que não tivesse absolutamente nenhuma experiência no idioma para o qual estou contratando. Passe alguns fins de semana aprendendo e faça alguns projetos para melhorar seu currículo. Mesmo os pequenos provam que você é capaz de aprender e interessado.

Tom Squires
fonte
3

Você está exatamente na mesma situação em que eu estava há 4 anos atrás.

Eu fiz C ++ durante meus estudos, mas eu odiava. Eu desenvolvi bastante web dev quando pude no meu tempo livre e consegui um emprego nesse campo.

Quando me mudei, solicitei um trabalho em C ++ com 2 anos de experiência em C ++ como requisito. Bem, eu atualizei minhas memórias em C ++ antes da entrevista e, quando chegou a hora dos testes, consegui me livrar de algumas coisas que não tinha tanta certeza de que estava fazendo certo.

Mas a maior parte da entrevista foi sobre solução de problemas e soluções criativas, e o C ++ acabou sendo apenas um fator menor.

Portanto, as chances realmente dependem do empregador e das posições que eles têm.

Se você estiver passando por uma agência de recrutamento, "provavelmente" será informado de que seu perfil não corresponde. Mas com um empregador real, suas chances são muito melhores, pois eles realmente sabem o que precisam.

Coiote
fonte
1
apenas saiba o que é um destruidor virtual e passe pela tela do telefone.
Kevin
2
Como os outros disseram, lembre-se dos poucos princípios básicos de gerenciamento de memória em C ++. É a diferença fundamental. Caso contrário, referente a bibliotecas e estruturas A maioria das empresas (grandes) possui suas próprias bibliotecas e wrappers, portanto, não esperam que você conheça suas implementações. Ao contrário do C #, em que a maioria das bibliotecas de alto nível é apoiada na estrutura .net e o requisito será conhecer um conjunto de bibliotecas relevantes para a posição.
Coyote
Então você conseguiu o emprego? Eu realmente gostaria de começar a usar C ++, mas minha falta de experiência documentada está fechando as portas, sem saber como criá-lo de outra forma.
MetaGuru 5/10
Sim ... Trabalhei lá por 3 anos. Foi uma ótima experiência ... mas eu tive que recuperar algumas particularidades de C ++ nos primeiros meses.
Coyote
1

Depende. Se você pode responder a algumas perguntas básicas da entrevista sobre indicadores e outras coisas, deve ficar bem.

Também é benéfico se você pode listar as diferenças entre modelos C ++ e genéricos .NET.

Fora isso, é muito fácil acompanhar o resto à medida que avança.

Yam Marcovic
fonte
1

Sim. Pode não ser tão relevante quanto a experiência em C ++, mas é bom.

Bons empregadores vão se interessar em como você pensa , mais do que em quantos anos de um idioma específico você tem.

Uma posição C ++ básica é boa: você pode aprender rapidamente e fazer um ótimo trabalho. Uma boa empresa lhe dará muitas oportunidades de crescimento. Caso contrário, você pode ir para outro lugar e ter experiência em C # e C ++.

B Seven
fonte
0

Realmente depende da natureza do negócio ao qual você está se candidatando. Se eles estão procurando alguém que possua boas habilidades de programação e arquitetura baseadas em OO, o C # provavelmente será tão bom quanto a próxima coisa.

Se eles se orgulham da velocidade / capacidade de resposta de seus softwares, você precisará conhecer seus algoritmos, pois isso importa mais do que micro otimizações - tabelas de hash versus pesquisa linear etc. O c # ainda é relevante aqui, mas você precisa para demonstrar o entendimento das características de desempenho - nem todo mundo sabe sobre o ngen.exe, por exemplo.

Se eles estiverem no ambiente incorporado / móvel e / ou sem coleta de lixo, você realmente precisará saber como gerenciar efetivamente a memória. Ponteiros inteligentes, como o @DeadMG apontou, são essenciais aqui, mas o mesmo acontece com o entendimento do perfil de alocação de memória. Os programadores de jogos costumam pré-alocar grandes matrizes de objetos e reciclá-los para conhecer os requisitos de memória antecipadamente e reduzir as incógnitas por quadro. Essa também é a técnica usada nos TableViews de rolagem no iOS.

Se houver algum trabalho de integração, é provável que você precise de conhecimentos no nível C em termos de distribuição de dados entre idiomas (como P / Invoke), mas também no nível de bytes de como essas estruturas de dados podem ser usadas, o que não é uma prática comum. C # na minha experiência.

JBRWilkinson
fonte