Excelente conhecimento de C ++ [fechado]

8

Vi recentemente uma página de recrutamento para uma empresa de software em que um dos requisitos era "Excelente conhecimento de C ++".

Agora, eu sei que isso de alguma forma implica como conhecimento especializado de C ++, mas onde exatamente o conhecimento especializado se encaixa. É o conhecimento e a experiência de (digamos) oito anos de programação na linguagem, tendo e conhecendo os meandros de um domínio específico. Ou é uma abordagem mais superficial e superficial de um ou mais domínios e, ao mesmo tempo, uma compreensão mais detalhada de todo o idioma?

Por exemplo, você não pode ser especialista em escrever drivers de sistema e mecanismos de jogos ao mesmo tempo. Então, onde esse conhecimento excelente ou especialista se encaixa?

véspera
fonte
5
"Por exemplo, você não pode esperar escrever drivers de sistema e mecanismos de jogos ao mesmo tempo." Por que não?
Pubby
1
Bem, eu não espero nada.
Edward Strange
6
Isso significa que você pode superar o ciclo de entrevistas e as perguntas em C ++ que eles lhe dão. Ele não carrega o mesmo significado entre empregadores, pessoas ou descrições, e o tempo gasto no uso de um idioma não está relacionado ao nível de entendimento e conhecimento de alguém (algumas pessoas apenas produzem código em qualquer idioma apenas conhecendo os primeiros). capítulos de um livro, nunca aprendendo nada além disso).
Wkl
1
Tendo escrito ambos os drivers do sistema e motores de jogo que tenho a lado com @Pubby aqui =)
Patrick Hughes
Excelente é uma palavra vaga, já que minha versão pode estar aqui / aqui e a sua está lá em cima. Eu direi que um "excelente conhecimento" deve significar que você pode codificar um programa não trivial em menos de 2 horas (talvez um programa de despertador como o pomodoro, com configurações e som).
Adel

Respostas:

17

Se eles disserem "Excelente conhecimento", você poderá identificar e usar todos os recursos da linguagem corretamente, incluindo os do C ++ 11 Standard mais recente atualmente com suporte universal (infelizmente, o Visual Studio é o menor denominador comum aqui) ) Uma pessoa com excelente conhecimento de C ++ pode criar seus próprios traços de tipo ou modelos de expressão; eles podem criar seus próprios contêineres, algoritmos e alocadores. Eles sabem quando usar herança e quando usar modelos e quando não usar nenhum. Eles sabem como usar o RAII para gerenciar todo o seu estado de necessidade de limpeza.

Além disso, eles podem lidar com a interação com o lixo no estilo C, pois, infelizmente, isso ainda faz parte do idioma.

DeadMG
fonte
2
Cara, parece que você espera muito, especialmente quando os especialistas sobre os quais eu continuo ouvindo não sabem o que faz member()em uma lista de inicializadores. : P
Edward Strange
1
Infelizmente, concordando com esta resposta e com o Crazy Eddie.
Klaim
+1 Parece uma descrição totalmente agradável. Se não for "Expert", o que seria isso?
Independent
2
para ser justo, é isso que especialista deve significar, mas pode ou não ser o que essa empresa em particular quer dizer com isso
jk.
@DeadMG Ótima resposta. Gostaria de acrescentar: talvez você não conheça um idioma perfeitamente, se você tem 30 anos e 20 anos de experiência em programação em diferentes idiomas, não pode cobrir tudo em um único idioma. Quanto tempo leva para se tornar excelente em um único idioma é trivial. Você pode nunca ser um especialista em um idioma, mas pode ser um especialista em solução de problemas. Eu não acho que as pessoas que escreveram os requisitos de recrutamento pensaram nisso.
Eve
8

Não acho que exista uma definição amplamente aceita do que constitui um conhecimento "excelente" de C ++.

Tende a ser difícil encontrar uma resposta clara para o que constituiria conhecimento "bom", "excelente", "excelente", (etc.) de qualquer idioma, estrutura, plataforma ou o que você possui. Em muitos casos, é particularmente difícil traçar uma linha clara entre o conhecimento que é realmente útil e, basicamente, conhecer muitas curiosidades.

Isso é particularmente verdadeiro no caso de algo como C ++, que existe há décadas, aplicado de várias maneiras diferentes e escrito em muitos estilos diferentes ao longo desse tempo. Há uma quantidade quase assustadora que alguém poderia aprender sobre o idioma que não tem quase nenhuma relação com usá-lo para resolver bem os problemas. Conhecer todas as regras de coisas como resolução de sobrecarga ou ordem parcial de modelos de função provavelmente só será útil se você estiver tentando contratar alguém para trabalhar em um compilador (ou algo muito semelhante). Eu usei o C ++ desde que ele se tornou razoavelmente amplamente disponível e ainda não utilizou (ou até deseja) a ordem parcial de modelos de função em código real.

Embora não seja tecnicamente sensível à pergunta, apresso-me a aconselhar qualquer pessoa que inclua esse requisito nos anúncios de emprego a tentar manter algum equilíbrio em mente. Eu acho que ênfase excessiva é frequentemente colocada em linguagens de programação, à custa de coisas como capacidade de resolução de problemas e algoritmos gerais. Conhecer bem uma linguagem de programação ajuda a expressar bem as soluções, mas geralmente é de pouca ajuda (na melhor das hipóteses) no design da própria solução. Uma ótima solução mal expressa quase sempre supera uma solução medíocre, não importa quão bem seja expressa.

Jerry Coffin
fonte
1
+1 Um empregador pode considerar C com classe como 'excelente'; outro pode querer um conhecimento completo da C ++ moderna na resposta do DeadMG
jk.
@jk. Qualquer um que considere C com classe "excelente" é um idiota.
DeadMG
+1 Ponto muito bom no último parágrafo, pensei tanto quando fiz esta pergunta.
Eve
2

Eu esperaria que essa pessoa fosse atualizada com o padrão C ++, os conceitos, construções e palavras-chave recém-adicionados. Por exemplo, ele deve pelo menos saber o que é uma referência rvalue e por que ela pode ser útil.

Otávio Décio
fonte
0

Quão bom é um excelente jogador de futebol? Depende do tipo de nível que você está vendo, internacional, liga infantil etc.

Um excelente conhecimento de C ++ provavelmente significa que você deve conhecer todas as palavras-chave e quando elas são usadas junto com o STL.

Às vezes, também inclui padrões de design e aprimoramento, mas às vezes não inclui nenhuma das opções acima e exigirá que você passe no exame de codificação e impressione o entrevistador.

Honestamente, simplesmente não existe uma definição real. Você acha que pode escrever um aplicativo complexo, multiencadeado e com várias camadas, empregando C ++ e algumas bibliotecas periféricas (STL, MFC, boost etc.). Se a resposta for sim, você provavelmente terá uma chance em posições de especialistas.

Se a resposta for negativa, você pode estar perdendo seu tempo.

Stefan
fonte
0

Um excelente programador de C ++ sabe quando usar a infinidade de 'recursos' que a linguagem oferece e quando não usar.

James
fonte
Não tenho idéia do motivo pelo qual você foi votado, é a resposta mais sensata.
Zvrba 23/05
Provavelmente por causa do sarcasmo em torno dos recursos.
11132 DeadMG
0

Não se debruce sobre a semântica de "excelente", apenas se inscreva para o trabalho, se parecer interessante e você quiser. Deixe o empregador decidir se você é "excelente" o suficiente ou não.

Um "excelente programador" conhece o poder bruto da ferramenta e, à luz dela, julga vários fatores que determinam a implementação do problema imediato em questão, sendo esses fatores: simplicidade de implementação, extensibilidade / reutilização, eficiência.

zvrba
fonte