paint-brush
Por qué necesita aprender múltiples lenguajes de programaciónpor@wagslane
3,410 lecturas
3,410 lecturas

Por qué necesita aprender múltiples lenguajes de programación

por Lane Wagner5m2022/07/31
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Boot.dev es un plan de estudios de informática con batería incluida en el navegador. La mayoría del programa solo puede usar JavaScript, Python y Go. El plan de estudios completo para [Boot.dev] solo requerirá el uso de aproximadamente 6 idiomas en total. Aprender varios idiomas elimina su visión de túnel y lo ayuda a comprender los diferentes enfoques de la programación. Al exponerlo a diferentes lenguajes, comenzará a ver algunos de los beneficios, inconvenientes, similitudes y diferencias entre los diversos enfoques de [programación]

Company Mentioned

Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Por qué necesita aprender múltiples lenguajes de programación
Lane Wagner HackerNoon profile picture

He estado construyendo Boot.dev como un proyecto paralelo durante los últimos dos años, y recientemente muchos estudiantes nuevos han hecho la misma pregunta:


"¿Por qué su plan de estudios de informática requiere que aprenda más de un lenguaje de programación?"


Parece que un buen número de estudiantes se suman a la plataforma con la opinión de que prefieren “dominar completamente un solo idioma” que “dividir sus esfuerzos”. Si bien planeo explicar esto mejor en la aplicación en sí, quería escribir esta publicación de blog para brindar una explicación detallada de por qué le hacemos aprender varios idiomas en el transcurso de nuestro programa de CS.

Primero, algunos antecedentes sobre Boot.dev

Para que pueda entender de dónde vengo, permítame explicarle qué es Boot.dev y cuáles son sus objetivos como plataforma educativa.


Boot.dev es un plan de estudios de informática con pilas incluidas en el navegador. Tenemos algunas opiniones sólidas sobre la mejor manera de aprender a codificar. Por ejemplo:


  • Primero enseñamos conceptos de informática e ingeniería de software. Las tecnologías específicas son solo un mecanismo por el cual enseñamos los conceptos.
  • Somos totalmente prácticos
  • Tenemos cursos guiados y proyectos no guiados
  • Enseñamos tecnologías e idiomas modernos
  • Tenemos un plan de estudios lineal para que los estudiantes no tengan que preocuparse por lo que deberían aprender a continuación.
  • Gamificamos la experiencia tanto como sea posible para mantener a los estudiantes motivados.

Entonces, ¿por qué no se puede enseñar todo el plan de estudios en un solo idioma?

Si observa el plan de estudios completo de CS que hemos planeado en nuestra hoja de ruta pública en Github , verá que es básicamente imposible. Hay ciertos conceptos que están tan estrechamente ligados a tecnologías específicas que no tiene sentido tratar de enseñarlos todos de la misma manera. Veamos algunos ejemplos triviales.


  • Realmente es difícil enseñar bases de datos sin SQL
  • Es difícil enseñar programación funcional sin un lenguaje puramente funcional
  • Es difícil enseñar programación orientada a objetos sin un lenguaje orientado a objetos
  • Es difícil enseñar interfaces de hardware sin un ensamblador
  • Es difícil enseñar a mecanografiar sin un lenguaje fuertemente mecanografiado
  • Es difícil enseñar web sin JavaScript
  • Es difícil enseñar ML sin Python

En resumen, tenemos 2 objetivos en competencia:

  • Queremos enseñar todos los conceptos usando la menor cantidad de tecnologías posible.
  • Queremos enseñar todos los conceptos usando tecnologías que enseñan mejor el concepto

Entonces, ¿cuántos idiomas me vas a enseñar?

En el transcurso de mi título de informática tradicional en la universidad, utilicé más de 12 lenguajes de programación. Creo que son demasiados. No quiero enseñar idiomas por enseñarlos. Es realmente un problema de optimización en el que queremos introducir la menor cantidad de idiomas posible, mientras enseñamos de manera efectiva todos los conceptos que queremos enseñar. Estoy seguro de que el plan de estudios completo para Boot.dev solo requerirá el uso de aproximadamente 6 idiomas en total, y que la mayoría del programa solo puede usar JavaScript, Python y Go.

Aprender varios idiomas elimina tu visión de túnel

Hay un beneficio adicional de aprender algunos lenguajes de programación diferentes de los que aún no hemos hablado. Al exponerlo a diferentes lenguajes, comenzará a ver algunos de los beneficios, inconvenientes, similitudes y diferencias entre los diversos enfoques de la programación .


Si solo escribe un lenguaje de programación, es fácil asumir que cierta forma de hacer las cosas es la "mejor manera", la "manera correcta" o incluso la "única manera".

Por ejemplo, JavaScript y Go tienen enfoques muy diferentes para el flujo de errores:

 // JavaScript try { doSomethingDangerous() } catch (err){ console.log(err) } // Go err := doSomethingDangerous() if err != nil { fmt.Println(err) }

Al familiarizarlo con varios idiomas, creo firmemente que tendrá una comprensión más profunda de cada tecnología y cuándo querrá usar diferentes herramientas.

¿Seré un aprendiz de todo, maestro de nada?

Personalmente, no lo creo. Realmente creo que si te concentraras en un solo lenguaje de programación desde el comienzo de tu viaje de aprendizaje hasta tu primer trabajo de codificación, en realidad estarías en peor forma que si hubieras pasado algún tiempo ampliando tus horizontes.

Algunas personas asumen que "aprender a codificar" se trata de "aprender un lenguaje de programación". Piensan que si aprendes Python y luego quieres aprender JavaScript, empezarás desde cero.


Eso no podría estar más lejos de la verdad.

Aprender tu segundo lenguaje de programación te tomará 1/5 del tiempo que te tomó aprender el primero, porque ~80% de los conceptos que aprendiste se aplicarán a ambos lenguajes. Una vez que haya utilizado 3 o 4 lenguajes de codificación diferentes, puede mirar el código en casi cualquier idioma y comprender lo que dice. Es posible que necesite buscar la sintaxis de vez en cuando, pero todos lo hacen de todos modos .


Bueno, ¿podría al menos reducir la cantidad de lenguajes de propósito general?

Si ha navegado por el plan de estudios, es posible que haya notado que nos hemos decidido por 3 idiomas para enseñar la mayoría del contenido:


Vamos a intentar usar estos 3 lenguajes tanto como podamos , solo mezclando otras tecnologías según lo requiera el tema. Por ejemplo, usar SQL cuando hablamos de bases de datos relacionales.

Permítanme explicar por qué elegimos estos tres en particular.

¿Por qué JavaScript?

Realmente no puedes alejarte de JavaScript en estos días. Es difícil aprender sobre programación backend (que es lo que les interesa a la mayoría de nuestros estudiantes) sin entender primero por qué existe un backend. Un backend solo existe para impulsar un front-end, por lo que tiene sentido que primero debamos enseñarle algunos conceptos básicos del front-end. Si va a construir un front-end en la web, es casi seguro que utilizará JavaScript, por lo que nuestra mano se ve obligada a hacerlo.

¿Por qué Python?

Python se quita de en medio, sintácticamente hablando. Los algoritmos y las estructuras de datos son conceptos que los estudiantes a menudo encuentran más difíciles de dominar, por lo que tenía sentido para nosotros elegir un lenguaje que permitiera a nuestros estudiantes concentrarse tanto como fuera posible en la lógica. Python también se lee como inglés de muchas maneras, lo que nuevamente hace que sea más fácil ver lo que está haciendo un algoritmo en Python de un vistazo. Además, tenemos contenido de IA y ML hacia el final del plan de estudios, por lo que es una situación de dos pájaros en la piedra en la que podemos volver a visitar Python en ese punto sin que nuestros estudiantes necesiten aprender un idioma adicional.

¿Por qué ir?

Nuestro título de CS tiene un énfasis en la programación de back -end, y personalmente he tenido un gran éxito con Go como lenguaje de back-end. Go hará que sea más fácil enseñar cosas como concurrencia, compiladores y sistemas distribuidos que algunas de las otras opciones en las que he pensado. Creo que eventualmente podríamos tener un curso de Rust que vaya a un nivel aún más bajo en términos de administración manual de memoria, pero aún no lo he decidido.

¿Preguntas? ¿Comentarios? ¿Preocupaciones?

La mejor manera de comunicarse conmigo directamente es unirse al servidor Boot.dev Discord . También puedes @me en Twitter . ¡Déjame saber lo que piensas de nuestro enfoque!


También publicado aquí https://blog.boot.dev/education/learn-multiple-programming-languages/