Me considero fluido en C, C ++ (es decir, C con STL), Java, Python, PHP y JavaScript. La advertencia de todo esto es que todos están más o menos basados en C (PHP es el más extraño, ya que es un matrimonio concertado entre PERL y C), por lo que gran parte de la sintaxis básica y la semántica son en realidad bastante similar, como Ira mencionó en su respuesta.
Para mí, el paradigma siempre ha sido la práctica: cuanto más codifico en un idioma, más recuerdo cómo usarlo (siendo Java la única excepción, llegaré a eso en un momento). Después de trabajar en un idioma por algún tiempo, desarrollo una especie de mentalidad cuando trabajo en ese idioma, de modo que cuando cambio de idioma, solo tengo que cambiar mi mentalidad. Adquirí más o menos esta técnica como resultado de tener que comunicarme entre programas escritos en varios idiomas (por ejemplo, JavaScript enviando consultas AJAX a un backend PHP, que llama a un programa C para consolidar algunos datos, y Python para analizar eso en algo más significativo). ), así que definitivamente hubo momentos en los que cambié de idioma con mucha frecuencia.
Además, cada lenguaje tiene su propia API, desde decente (PHP) a excelente (Python) e increíblemente detallado (Java): C está en algún lugar entre PHP y Python, C ++ está en algún lugar entre Python y Java. También puedes encontrar trucos y técnicas de forma externa para cada idioma cuando te topas con una pared figurativa.
En algún momento, usted desarrolla su propio estilo en cada uno de estos idiomas y, eventualmente, incluso su propia biblioteca (probablemente informal) de funciones, subrutinas, objetos y trucos que usa una y otra vez. Por ejemplo, mi código PHP a menudo hace uso de la función prt (), que creé para eliminar caracteres de espacios en blanco extraños en el HTML de salida.
- ¿Cuál es el tipo más largo de lista ordenada que una persona promedio puede generar fácilmente de la memoria?
- ¿Cómo se almacena realmente la memoria en un chip de silicio? ¿En qué forma se almacena físicamente? ¿Cuáles son los cambios que ocurren en el semiconductor cuando almacena algo en comparación con cuando no lo hace?
- ¿Alguna vez has estado en un lugar que se convirtió en el mejor recuerdo de tu vida?
- ¿Por qué sucede que una sola persona cruza tu mente todos los días cada hora, después de que te conoces por un corto período de tiempo y haces todo lo posible por olvidarlos?
- ¿Hay alguna forma en que podamos almacenar y transferir memorias?
Finalmente, con respecto a la semántica específicamente: cuando aprendes un idioma, aprendes más o menos la idea básica detrás de ese lenguaje, y se te enseña a seguir su semántica muy de cerca (ya sea en un curso real o emulando un código de ejemplo). Después de un tiempo, este tipo de desvanecimiento desaparece, y te quedan las ideas centrales para esas semánticas, que son mucho más fáciles de recordar que la semántica en sí. Es como memorizar una fórmula (por ejemplo, la fórmula cuadrática) en lugar de memorizar todos los valores que satisfacen esa fórmula (por ejemplo, todas las raíces de un polinomio cuadrático).
Anteriormente, mencioné que Java era una excepción, y he aquí por qué (es algo raro): en la escuela secundaria, nuestro lenguaje de programación introductorio era Java (era mi segundo idioma después de JavaScript), pero después de mi primer año, nunca utilicé Java. , y en su lugar usó C, PHP y JavaScript (los dos últimos por razones bastante obvias). Sin embargo, aún competíamos en algunas competiciones de CS que requerían el uso de Java, por lo que a fines de febrero / principios de marzo, los que íbamos a estas competiciones nos juntaríamos y pasaríamos aproximadamente una semana para revisar Java. Esto me llevó a olvidar un montón de Java después de no usarlo por un tiempo, pero también poder recogerlo muy rápido después; Es probable que esto también sea cierto para otros idiomas, pero realmente no he descartado ningún idioma durante 9 meses más que en Java.