Excelente conocimiento de C ++ [cerrado]

8

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?

Víspera
fuente
55
"Por ejemplo, no se puede esperar escribir controladores de sistemas y motores de juegos al mismo tiempo". Por qué no?
Pubby
1
Bueno, no espero nada.
Edward Strange
66
Significa que puedes superar su ciclo de entrevistas y las preguntas de C ++ que te dan. No tiene el mismo significado entre empleadores, personas o descripciones, y el tiempo dedicado al uso de un idioma no está relacionado con el nivel de comprensión y experiencia de uno (algunas personas simplemente producen código en cualquier idioma simplemente sabiendo los primeros capítulos de un libro, nunca aprender nada más allá de eso).
wkl
1
Habiendo escrito tanto los controladores del sistema como los motores del juego, tengo que ponerme del lado de @Pubby aquí =)
Patrick Hughes
Excelente es una palabra vaga, ya que mi versión puede estar aquí arriba / abajo y la tuya está arriba. Diré que un "excelente conocimiento" debería significar que puede codificar un programa no trivial en menos de 2 horas (tal vez un programa de despertador como pomodoro, con ajustes y sonido).
Adel

Respuestas:

17

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.

DeadMG
fuente
2
Chico, parece que esperas mucho, especialmente cuando los expertos de los que sigo escuchando no saben qué hace member()en una lista de inicializadores. : P
Edward Strange
1
Desafortunadamente, estoy de acuerdo con esta respuesta y con Crazy Eddie.
Klaim
+1 Parece una descripción totalmente agradable. Si no es "experto", ¿cuál sería?
Independiente
2
para ser justos, esto es lo que debería significar un experto , pero puede o no ser lo que esta compañía en particular quiere decir con él
jk.
@DeadMG Buena respuesta. Simplemente me gustaría agregar: uno puede no conocer un idioma perfectamente, si tiene 30 años de edad y tiene 20 años de experiencia en programación en diferentes idiomas, no puede cubrir todo en un idioma. Cuánto tiempo se tarda en llegar a ser excelente en un idioma es trivial. Puede que nunca sea un experto en un idioma, pero puede ser un experto en la resolución de problemas. No creo que las personas que escribieron los requisitos de reclutamiento pensaran en esto.
Eva
8

No 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.

Jerry Coffin
fuente
1
+1 un empleador puede considerar que C con clases es "excelente" otro puede querer un conocimiento completo de la respuesta moderna de C ++ a la DeadMG
jk.
@jk. Cualquiera que esté considerando C con clases "excelentes" es un idiota.
DeadMG
+1 Muy buen punto en el último párrafo, pensé mucho cuando hice esta pregunta.
Eva
2

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.

Otávio Décio
fuente
0

¿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.

Stefan
fuente
0

Un excelente programador de C ++ sabe cuándo usar la gran cantidad de 'características' que ofrece el lenguaje y cuándo no.

James
fuente
No tengo idea de por qué te votaron negativamente, es la respuesta más sensata.
zvrba
Probablemente por el sarcasmo en torno a las características.
DeadMG
0

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.

zvrba
fuente