Cómo saber cuándo entiendes realmente un lenguaje de programación.

La pregunta está etiquetada con Java, pero supongo que una respuesta general es suficiente.
Supongo que el momento en que entiendes un idioma es el momento en el que conoces las implicaciones exactas del código que escribes. Obviamente, no de cada línea, pero que las copias de los objetos son caras, la forma en que los objetos se asignan a la memoria, la diferencia entre los lenguajes compilados e interpretados, las diferencias de depender o no en la recolección de basura, entre otras, son muy importantes para saber lo que hace. debe y no debe hacer Esto es importante independientemente del idioma utilizado. El modelo de cálculo que se utiliza y la arquitectura en la que se basa son, al final, los cimientos básicos sobre los que se construye todo lo demás (casi). Sin un buen conocimiento de esto, se vuelve un poco difícil medir el nivel de conocimiento en cualquier idioma.
Entonces, para un conocimiento específico del idioma, realmente depende mucho del idioma e incluso del dominio para el que está programando. C ++ para juegos asume un alto uso y conocimiento de las funciones utilizadas en el paradigma X, mientras que C ++ para el código de misión crítica, probablemente se centra en las habilidades de gestión de recursos y memoria y en la escritura de código “a prueba de balas”. Ambos son C ++, simplemente facetas con diferentes aspectos centrales. Lo mismo se aplica a otros idiomas e incluso a otros, todo es un objeto, o todo devuelve un valor y todo es inmutable … Pero bajo el capó, se reduce a conocer AMBOS a la máquina a nivel alto y bajo (nadie le exige que escriba un controlador de microprocesador, pero los conceptos básicos de qué memoria y punteros son importantes sin importar qué) Y saber cómo aprovechar ese conocimiento para usarlo en su dominio de problema actual. El resto es sintaxis y tipeo.