Durante una entrevista, me preguntaron si sabía la diferencia entre C y C ++.
Me preguntaba por qué se hace esa pregunta.
programming-languages
interview
Stella Lie
fuente
fuente
Respuestas:
Si las preguntas fueron formuladas como "¿Conoces la diferencia entre C y C ++?" y se le permitió responder simplemente "Sí", entonces pude ver su confusión, pero si realmente preguntaran "¿Cuáles son las diferencias entre C y C ++?" y se esperaba una respuesta más abierta, puedo verlo como una "vía de investigación" legítima, como dicen.
Por ejemplo, solo habiendo codificado en C y nunca en C ++, apenas podría responder más allá de un vago "¿C ++ admite codificación orientada a objetos?".
fuente
Algunas personas han observado que hay una gran cantidad de solicitantes de trabajo de programación que no pueden escribir código en absoluto . Entonces, sí, hacer preguntas "obvias" tiene mucho sentido.
fuente
Hay un montón de ellos. Hay una infinidad de personas que tienen profesores que enseñan idiota C-cuerdas y
new
ydelete
tutoriales, o fuera de fecha o malos libros, que aprenden "C ++", pero en realidad C, que piensan que los dos están muy cerca.Por supuesto, si usted es un empleador, entonces decir que son iguales o incluso similares es una gran luz de advertencia.
fuente
También hay un pequeño porcentaje de personas (como yo) que aprendieron C ++ antes de aprender C.
Estoy seguro de que conoce las diferencias, pero si es un estudiante que solo ha tenido una clase de C ++, y no una clase de C, las partes de C ++ que no son compatibles con C no serán obvias.
Algunas de las diferencias más obvias que he aprendido (no una lista exhaustiva) ( ) los tipos de datos de estructura originalmente no podían contener funciones y no podían tener miembros privados, lo que significa que es muy difícil hacer cumplir las reglas de validez de un tipo de datos abstracto en C. ( ) las clases no son compatibles en C ( ), el paso por referencia usando el operador ampersand es específico de C ++ ( ) C no admite flujos o plantillas (*) malloc y free están destinados para usarse solo en C y no en C ++
fuente
Desafortunadamente, creo que se está volviendo cada vez más común.
Creo que los jóvenes programadores recién salidos de la escuela técnica (o de donde aprenden sus habilidades) simplemente no aprenden idiomas más antiguos como C, C ++, Lisp, OCaml, etc. Simplemente salen como "programadores de C #" o "programadores de Java ", etc. Y cuando encuentran un trabajo, no se desafían a sí mismos con el aprendizaje de otros idiomas.
Por supuesto, hay algunos que sí, pero de aquellos con los que he trabajado, existe una tendencia general para que los programadores más jóvenes sigan este patrón.
Descargo de responsabilidad: dado que estoy hablando de educación, entonces, por supuesto, puede haber diferencias de un país a otro sobre lo que se enfatiza en la educación.
fuente
Probablemente no literalmente, en el sentido de que piensan que C ++ y C son uno y lo mismo, pero en términos de comprender verdaderamente y poder usar las diferentes características de C ++, sí.
La causa principal es la naturaleza binaria de enumerar idiomas / herramientas en su currículum / CV. Esencialmente, el estándar parece ser que si tiene "Hello World" para compilar y ejecutar en un idioma, entonces está bien incluirlo en su currículum / CV.
De hecho, la versión C de "Hello, World!" También compila y ejecuta en C ++. Entonces, en ausencia de cualquier otra información, todo lo que ve "C ++" en un currículum me dice que esta persona sabe lo suficiente C para obtener "¡Hola, Mundo!" en ejecución, y sabe que la mayoría de los programas de C se compilarán en C ++.
Dado eso, voy a necesitar probar eso un poco en la entrevista. Probablemente no lo haría preguntando un "Sí / No" "¿Conoces la diferencia?" pregunta, en resumen, porque tiene una respuesta "correcta" obvia. Probablemente le preguntaría a la candidata qué idioma le gustaba más, por qué y si hubiera alguna ventaja para el que no eligió.
fuente
Responder
Sí, es común. He visto esta situación, ya sea yo mismo, compañeros de trabajo o código de bibliotecas de terceros.
Yo mismo, por ejemplo, a veces trabajo con otros lenguajes de programación o marcos de programación, y tengo que vincular, o actualizar, a las bibliotecas "pure c" o "c ++".
Acabo de tener el problema de modificar algún código "Pure C". Y utilizando las funciones de asignación de memoria "nuevo" y "eliminar", que son "c ++". El resto del código no estaba orientado a objetos.
El compilador fue C ++. Más tarde, demandé a otro compilador y descubrí el error.
Prima
Si alguien pregunta, verbalmente o en un examen escrito, o en un examen web en línea:
"¿Conoces la diferencia entre C o C ++?"
Y respondes "Sí" o "No".
Realmente significan:
"¿Conoces la diferencia entre C o C ++? Si lo sabes, por favor dímelo".
Entonces, tienes que responder:
"Sí. La diferencia es que C ++ está orientado a objetos, aunque puede usar Pure C, dentro de un programa C ++, para compatibilidad con versiones anteriores".
A veces, no le preguntarán "si lo hace, por favor dígame", y asumirán que usted no lo sabe. No solo conteste "sí" o "no".
fuente
Editar
Como primer paso, tenga en cuenta que esta respuesta no pretende declarar que no hay diferencias o que profeso saber las diferencias, o incluso que sé que "Hello World" en C o C ++. Es una respuesta a la pregunta enmarcando los términos de referencia, señalando que muchas personas conocen las diferencias elementales (por ejemplo, una tiene algunos
+
caracteres en su nombre) y muy pocas personas sabrán todas o incluso la mayoría de las diferencias.Depende de lo que quieras decir con 'programador' y de lo que quieres decir con 'diferencia'.
Soy un "programador" (aunque me llamo un desarrollador) y me cuesta dar diferencias reales entre C y C ++. Si lo presiono, probablemente diría que C ++ es un superconjunto de C que tiene espacios de nombres y herencia; diferentes formas de lidiar con la memoria. Sé lo suficiente como para corregir algunos errores o hacer algunos cambios en su programa existente, pero no puedo imaginar escribir nada más que una simple utilidad en C o C ++. Sé lo suficiente para sobrevivir, pero no me considero "conocedor" de ninguno de esos idiomas.
Conozco otros 'programadores' (también desarrolladores) que ni siquiera te dirían la diferencia entre Java y FORTRAN, o Javascript y Pascal. Son buenos en lo que hacen y no hacen lenguajes de procedimiento.
Luego hay millones de programadores mediocres que apenas conocen el idioma con el que trabajan todos los días.
El término "diferencia" es ambiguo. He señalado lo que veo como algunas diferencias anteriores, pero sé que no son definitivas y completas. Muy pocas personas conocerán todas las diferencias; muchas más personas podrán dar algunas respuestas vagas (como yo) sobre la orientación a objetos.
fuente
¿Hace veinte años? Si.
¿Hoy? No tanto.
La razón de esto es porque el panorama de la programación ha cambiado a lo grande. Muchos de los programas actuales están basados en la web; incluso los programas escritos para escritorios pueden estar escritos en un lenguaje de nivel superior que C o C ++. Como tal, a menos que sea un programador que escriba código del sistema operativo, es posible que no sepa mucho sobre ninguno de los dos idiomas.
Un entrevistador puede hacer esta pregunta en una entrevista para evaluar cuánto sabe sobre los fundamentos de la programación; si conoce la diferencia entre C y C ++, entonces probablemente sepa qué es la programación orientada a objetos, probablemente comprenda bibliotecas y compiladores, entienda las funciones de memoria, referencias, punteros ... muchas cosas que han influido en los lenguajes de programación de hoy . No uso mucho C ++ (y realmente no puedo decir que soy un excelente programador en ningún lenguaje; la sabiduría vendrá con el tiempo) pero puedo decir que mi experiencia con C ++ definitivamente me ha convertido en un mejor programador.
fuente