Hace poco vi una página de reclutamiento para una compañía de software donde uno de los requisitos era "Excelente conocimiento de C ++".
Ahora, sé que esto de alguna manera implica un conocimiento experto de C ++, pero dónde encaja exactamente el conocimiento experto. ¿Es el conocimiento y la experiencia de (digamos) ocho años de programación en el lenguaje, teniendo y conociendo los entresijos de un dominio específico. ¿O se trata de un enfoque superficial más retrospectivo de uno o más dominios y, al mismo tiempo, una comprensión más detallada de todo el idioma?
Por ejemplo, no puede ser un experto en escribir controladores de sistemas y motores de juegos al mismo tiempo. Entonces, ¿dónde encaja este conocimiento excelente o experto?
c++
experience
Víspera
fuente
fuente
Respuestas:
Si dicen "Excelente conocimiento", entonces debería poder identificar y utilizar todas las funciones del lenguaje correctamente, incluidas las del último estándar C ++ 11 que actualmente son compatibles universalmente (desafortunadamente, significa que Visual Studio es el mínimo común denominador aquí ) Una persona con excelente conocimiento de C ++ puede crear sus propios rasgos de tipo o plantillas de expresión; pueden construir sus propios contenedores, algoritmos y asignadores. Saben cuándo usar la herencia y cuándo usar plantillas y cuándo no usar ninguna. Saben cómo usar RAII para administrar todos los estados que requieren limpieza.
Además, pueden hacer frente a la interacción con la basura de estilo C, ya que desafortunadamente todavía es parte del lenguaje.
fuente
member()
en una lista de inicializadores. : PNo creo que haya una definición ampliamente aceptada de lo que constituye un conocimiento "excelente" de C ++.
Tiende a ser difícil encontrar una respuesta clara a lo que constituiría un conocimiento "bueno", "excelente", "excelente", (etc.) de cualquier idioma, marco, plataforma o lo que sea. En muchos casos es particularmente difícil trazar una línea limpia entre el conocimiento que es realmente útil y, básicamente, conocer muchas curiosidades.
Esto es particularmente cierto en el caso de algo como C ++ que ha existido durante décadas, aplicado de muchas maneras diferentes y escrito en muchos estilos diferentes durante ese tiempo. Hay una cantidad casi aterradora que alguien podría aprender sobre el lenguaje que casi no está relacionado con su uso para resolver bien los problemas. Conocer todas las reglas de cosas como la resolución de sobrecarga o el ordenamiento parcial de plantillas de funciones solo es útil si está tratando de contratar a alguien para que trabaje en un compilador (o algo muy similar). He usado C ++ desde que se hizo razonablemente disponible por primera vez, y todavía tengo que usar (o incluso desear) un orden parcial de plantillas de funciones en código real.
Aunque técnicamente no responde a la pregunta formulada, me apresuro a aconsejar a cualquiera que incluya dicho requisito en los anuncios de empleo que intente mantener un cierto equilibrio en mente. Creo que a menudo se pone un énfasis excesivo en los lenguajes de programación, a expensas de cosas como la capacidad de resolución de problemas y los algoritmos generales. Conocer bien un lenguaje de programación ayuda a expresar bien las soluciones, pero generalmente es de mínima ayuda (en el mejor de los casos) para diseñar la solución en sí. Una gran solución mal expresada prácticamente siempre superará a una solución mediocre, sin importar qué tan bien se exprese.
fuente
Esperaría que esa persona esté al día con el estándar C ++, los conceptos, construcciones y palabras clave recientemente agregados. Por ejemplo, al menos debería saber qué es una referencia de valor y por qué puede ser útil.
fuente
¿Qué tan bueno es un excelente jugador de fútbol? Depende del tipo de nivel que esté mirando, internacional, liga infantil, etc.
Un excelente conocimiento de C ++ probablemente significa que debe conocer todas las palabras clave y cuándo se usan junto con el STL.
A veces también incluirá patrones de diseño e impulso, pero a veces no incluirá ninguno de los anteriores y requerirá que pase su examen de codificación e impresione a su entrevistador.
Honestamente, simplemente no hay una definición real. ¿Siente que puede escribir una aplicación compleja, de subprocesos múltiples y niveles múltiples que emplee C ++ y algunas bibliotecas periféricas (STL, MFC, boost, etc.). Si la respuesta es sí, entonces probablemente tenga una oportunidad en puestos de nivel experto.
Si la respuesta es no, puede estar perdiendo el tiempo.
fuente
Un excelente programador de C ++ sabe cuándo usar la gran cantidad de 'características' que ofrece el lenguaje y cuándo no.
fuente
No te detengas en la semántica de "excelente", solo solicita el trabajo si te parece interesante y te sientes a la altura. Deje que el empleador decida si es lo suficientemente "excelente" o no.
Un "programador excelente" conoce la potencia bruta de la herramienta y, a la luz de ella, juzga varios factores que determinan la implementación del problema inmediato en cuestión, tales como: simplicidad de implementación, extensibilidad / reutilización, eficiencia.
fuente