Cómo distinguir entre aprender un nuevo lenguaje de programación y aprender la sintaxis de un nuevo lenguaje de programación

Cuando aprende un idioma extranjero por primera vez, piensa en su idioma nativo y traduce desde y hacia el vocabulario y la gramática del idioma extranjero. No es fluido, pero después de un rato puede mantener una conversación simple. Se vuelve fluido cuando puede pensar en el idioma extranjero y omite el paso de traducción.

Algo similar ocurre con los lenguajes de programación. Una vez que haya interiorizado las construcciones y las abstracciones lo suficientemente bien como para pensar en ellas en lugar de traducirlas a otro idioma, tendrá una buena comprensión del idioma. Cualquiera que haya aprendido un segundo lenguaje OO que tenga un modelo de objeto diferente al primero debería entender este fenómeno. Hay un período durante el cual estás pensando en los objetos en tu primer idioma y traduciéndolos al segundo idioma. El segundo idioma es una fuente de frustración e irritación durante este tiempo porque la falta de coincidencia en los modelos hace que trabaje más y probablemente resulte en diseños subóptimos. Tiene una buena comprensión del segundo idioma una vez que asimila el modelo de objeto y puede pensar en él directamente.

Todos los lenguajes de programación tienen expresiones idiomáticas – “frases” comunes que usa una y otra vez.

Por ejemplo, Perl tiene la expresión idiomática while (<>) { ... } que se usa con mucha frecuencia.

Esta simple pieza de código tiene un comportamiento sorprendentemente complejo. Va a:
– lea de STDIN una línea a la vez
– abra cada archivo nombrado en la línea de comando, y léalo una línea a la vez.

Si comprendieras la sintaxis de Perl sin entender sus modismos, intentarías escribir algo como:

while () {process_line ($ _); }
foreach $ filename (@ARGV) {
abrir archivo, ‘<', $ nombre de archivo;
while () {process_line ($ _); }
cerrar el archivo;
}

sub process_line {…}

que hace básicamente lo mismo con mucho más trabajo.

Otra expresión idiomática de Perl es que las matrices se pueden usar como listas.
Digamos que tenemos una serie de números, 1-5, y queremos multiplicar cada uno de ellos por 7.

Un programador de AC o Java que conocía la sintaxis de Perl, pero no sus modismos, probablemente escribiría algo como:

@number = (1, 2, 3, 4, 5);
para ($ i = 0; $ i <5; $ i ++) {
$ numero [i] * = 7;
}

Este es un código Perl válido, pero no es Perl idiomático. Conoces las palabras pero no hablas el idioma como un nativo.

Una forma más “perlish” de hacerlo sería usar la matriz en el contexto de la lista:

@number = (1, 2, 3, 4, 5);
@new_number = map {$ _ * 7} @number;
@number = @new_number;

que, si aplicamos algunos modismos adicionales de Perl, se pueden mejorar para:

@number = 1 .. 5;
@number = map {$ _ * 7} @number;

Lo que se puede expresar aún más idiomáticamente como:
@number = map { $_ * 7 } 1 .. 5;

Has dominado el idioma cuando entiendes los modismos y piensas en términos de ellos.

Aprender un nuevo lenguaje de programación requiere que aprendas su sintaxis, API, patrones de diseño, etc. y todas las restricciones de idioma que puedes aprender mientras aprendes la sintaxis de un nuevo idioma no significa necesariamente que programes en ese idioma, porque la programación es más sobre la práctica y Resolver problemas, no memorizar o conocer la sintaxis del lenguaje.

Cuando empiezas a usar las principales bibliotecas y modismos sin pensar.

Por ejemplo, no puede decir que conoce a Lisp si insiste en usarlo en un estilo imperativo, el lenguaje es lo suficientemente flexible como para permitirlo, pero un estilo funcional se adapta mejor.

Y no puede decir que conoce C ++ si programa en C en él.

En Python, la gente suele decir que las cosas son pythonic o no, lo que significa que el código está de acuerdo con el estilo de python

¡Es lo mismo! La lógica es el hilo conductor de todos los lenguajes de programación. Cuando dices que estás aprendiendo un nuevo lenguaje de programación, significa que estás aprendiendo su sintaxis.

Decir “Si no comes, morirás” en inglés, francés o alemán significa lo mismo. Solo la formación de palabras y las reglas de la gramática cambian. Lo mismo ocurre con los lenguajes de programación. Cada idioma tiene una forma de verificar las condiciones, repetir elementos, realizar acciones, etc. Solo la sintaxis es diferente.

Usted está aprendiendo el idioma, cuando comienza a usar las características de ese idioma.

Por ejemplo, en lugar de implementar strcat(s1, s2) , cuando haces s1+s2 , significa que estás aprendiendo python y no solo su sintaxis.

Aprender la sintaxis es descubrir cómo hacer algo, cómo usar la herramienta básica.

Aprender el idioma es buscar la mejor manera de hacer algo, probar un problema nuevo o preguntarse sobre una forma alternativa de hacer algo, posiblemente con nuevas restricciones.

La sintaxis es sobre el uso básico de la herramienta. Aprender el idioma es dominarlo.

Necesitas aprender la sintaxis de un idioma para aprender un idioma. Así que es un requisito previo.

Supongo que no puede estar seguro: es más una cuestión de sentirse seguro con eso 🙂