Durante uma entrevista, perguntaram-me se sabia a diferença entre C e C ++.
Fiquei me perguntando por que essa pergunta está sendo feita?
Durante uma entrevista, perguntaram-me se sabia a diferença entre C e C ++.
Fiquei me perguntando por que essa pergunta está sendo feita?
Respostas:
Se as perguntas foram formuladas como "Você sabe a diferença entre C e C ++?" e você tinha permissão para responder com "Sim", então eu podia ver sua confusão, mas se eles realmente perguntassem "O que são as diferenças entre C e C ++?" e se esperava uma resposta mais aberta, posso vê-la como uma "via de investigação" legítima, como eles dizem.
Por exemplo, apenas tendo já codificado em C e nunca em C ++, eu mal seria capaz de responder além de um vago "C ++ suporta codificação orientada a objetos?".
Algumas pessoas observaram que há uma enorme quantidade de candidatos a emprego de programação que não conseguem escrever código . Então, sim, fazer perguntas "óbvias" faz todo sentido.
Há um monte deles. Há uma infinidade de pessoas que têm palestrantes idiotas que ensinam cordas em C new
e delete
/ ou tutoriais desatualizados ou livros ruins, que aprendem "C ++", mas na verdade C, que pensam que os dois são muito próximos.
Obviamente, se você é um empregador, dizer que eles são iguais ou até semelhantes é uma grande luz de advertência.
Há também uma pequena porcentagem de pessoas (como eu) que aprenderam C ++ antes de aprender C.
Tenho certeza que você conhece as diferenças, mas se você é um aluno que teve apenas uma aula de C ++ e não uma classe C, as partes do C ++ que não são compatíveis com C não serão óbvias.
Algumas das diferenças mais óbvias que aprendi (não uma lista exaustiva) ( ) tipos de dados de estrutura originalmente não podiam conter funções e não podem ter membros particulares, o que significa que é muito difícil aplicar as regras de validade de um tipo de dados abstrato em C. ( ) as classes não são suportadas em C ( ), passando por referência usando o operador e comercial é específico para C ++ ( ) C não suporta fluxos ou modelos (*) malloc e free são destinados apenas para uso em C e não em C ++
Infelizmente, acho que está se tornando cada vez mais comum.
Acho que jovens programadores recém-saídos da escola técnica (ou de onde aprendem suas habilidades) simplesmente não aprendem idiomas mais antigos, como C, C ++, Lisp, OCaml, etc. Eles simplesmente saem como "programadores de c #" ou "programadores de java" ", etc. E quando conseguem um emprego, não se desafiam a aprender outras línguas.
É claro que existem alguns que sim, mas daqueles com quem trabalhei, há uma tendência geral para os programadores mais jovens seguirem esse padrão.
Isenção de responsabilidade: Como estou falando sobre educação, é claro que pode haver diferenças de país para país sobre o que está sendo enfatizado na educação.
Provavelmente não literalmente, pois eles acham que C ++ e C são a mesma coisa, mas em termos de realmente entender e poder usar os diferentes recursos do C ++, sim.
A principal causa é a natureza binária da listagem de idiomas / ferramentas em seu currículo / currículo. Essencialmente, o padrão parece ser que, se você tem o "Hello World" para compilar e executar em um idioma, não há problema em listá-lo em seu currículo / currículo.
Por acaso, a versão C de "Hello, World!" também compila e executa em C ++. Portanto, na ausência de outras informações, tudo o que vê "C ++" em um currículo me diz que essa pessoa conhece C suficiente para obter "Olá, Mundo!" em execução e sabe que a maioria dos programas em C será compilada em C ++.
Dado isso, vou precisar sondar isso um pouco na entrevista. Eu provavelmente não faria isso perguntando "Sim / Não" "Você sabe a diferença?" pergunta, em suma, porque tem uma resposta "certa" óbvia. Eu provavelmente perguntaria à candidata qual idioma ela gostava mais, por que e se havia alguma vantagem na que ela não escolheu.
Responda
Sim, é comum. Eu já vi essa situação, eu mesmo, colegas de trabalho ou código de bibliotecas de terceiros.
Eu, por exemplo, às vezes trabalha com outras linguagens de programação ou estruturas de programação e precisa vincular ou atualizar as bibliotecas "pure c" ou "c ++".
Eu apenas tive o problema de modificar algum código "Pure C". E usando as funções de alocação de memória "new" e "delete", que são "c ++". O restante do código não foi orientado a objetos
O compilador foi C ++. Mais tarde, processei outro compilador e descobri o erro.
Bônus
Se alguém perguntar, verbalmente, ou em uma prova escrita ou na web:
"Você sabe a diferença entre C ou C ++"
E você responde "Sim" ou "Não".
Eles realmente querem dizer:
"Você sabe a diferença entre C ou C ++, se sim, por favor me diga?"
Então, você tem que responder:
"Sim. A diferença é que o C ++ é orientado a objetos, embora você possa usar o Pure C, dentro de um programa C ++, para compatibilidade com versões anteriores."
Às vezes, eles não perguntam "se você me diz" e assumem que você não sabe. Não basta responder "sim" ou "não".
Editar
Como exemplo, observe que esta resposta não pretende declarar que não há diferenças ou que eu afirmo conhecer as diferenças, ou mesmo que eu saiba que "Hello World" em C ou C ++. É uma resposta para a pergunta, enquadrando os termos de referência, apontando que muitas pessoas conhecem as diferenças elementares (por exemplo, uma tem alguns +
caracteres em seu nome) e muito poucas pessoas sabem todas ou mesmo a maioria das diferenças.
Depende do que você quer dizer com 'programador' e o que você quer dizer com 'diferença'.
Sou um 'programador' (embora me chame de desenvolvedor) e lutaria para fornecer diferenças reais entre C e C ++. Se pressionado, provavelmente diria que C ++ é um superconjunto de C que possui namespaces e herança; maneiras diferentes de lidar com a memória. Eu sei o suficiente para corrigir alguns bugs ou fazer algumas alterações em seu programa existente, mas não consigo imaginar escrever nada além de um simples utilitário em C ou C ++. Sei o suficiente para sobreviver, mas não me considero "conhecedor" de nenhum desses idiomas.
Conheço outros 'programadores' (também desenvolvedores) que nem diriam a diferença entre Java e FORTRAN, ou Javascript e Pascal. Eles são bons no que fazem e não fazem linguagens processuais.
Existem milhões de programadores medíocres que mal conhecem o idioma único com o qual trabalham todos os dias.
O termo "diferença" é ambíguo. Eu apontei o que vejo como algumas diferenças acima, mas sei que elas não são definitivas e completas. Pouquíssimas pessoas conhecerão todas as diferenças - muito mais pessoas poderão dar algumas respostas vagas (como eu) sobre orientação a objetos.
É comum que um programador não saiba a diferença entre C e C ++?
Vinte anos atrás? Sim.
Hoje? Não muito.
A razão para isso é porque o cenário da programação mudou bastante. Muitos dos programas atuais são baseados na Web; até programas criados para desktops podem ser escritos em uma linguagem de nível superior ao C ou C ++. Como tal, a menos que você seja um programador que escreve código do sistema operacional, talvez não saiba muito sobre os dois idiomas.
Um entrevistador pode fazer essa pergunta em uma entrevista para avaliar o quanto você sabe sobre os fundamentos da programação; se você conhece a diferença entre C e C ++, provavelmente sabe o que é programação orientada a objetos, provavelmente entende bibliotecas e compiladores, funções de memória, referências, ponteiros ... muitas coisas que influenciaram as linguagens de programação atuais . Eu não uso muito C ++ (e realmente não posso dizer que sou um excelente programador em qualquer linguagem; a sabedoria virá com o tempo), mas posso dizer que minha experiência com C ++ definitivamente me tornou um programador melhor.