¿Hay alguna jerarquía para aprender a programar?

Hacer algo o aprender algo nuevo debe hacerse de manera secuencial, para que pueda comprender el núcleo y de manera profunda …

Así es como lo haría:

  1. Python (o Ruby o Lua): Un lenguaje interpretado, sin tipos, puede hacer cosas en unas pocas líneas. Gran biblioteca (Python es mejor para esto, supongo). Puedes profundizar en los algoritmos porque no hay distracciones. No es necesaria ninguna compilación, solo corre. Además de eso, con Python, usted enseña de manera implícita un buen estilo, ya que la sangría en Python es obligatoria. También puede enseñar Orientación a objetos (en Lua hay más problemas). El propósito aquí es divertirse mucho y mostrar al alumno lo que se puede hacer.
  2. C ++ (o quizás Java): Un lenguaje rápido y escrito. Si necesitas Orientación a Objetos, entonces ya conoces algunos conceptos. La idea principal es “traducir” lo que hiciste en Python y hacerlo con las nuevas restricciones (principalmente tipos). Ahora, si tiene los conceptos correctos, agregar tipos no es un problema de este tipo. El siguiente paso es pensar en un nivel más bajo (Java no ayuda aquí) y enseñar bien los punteros. Con esto me refiero a explicar sobre el espacio de direcciones, la CPU, el SO, un poco para que pueda comenzar a ver debajo de su programa. Un lenguaje compilado introduce la distinción entre interpretación y compilación, muy útil para explicar qué es el lenguaje de máquina, etc., y así aprender otro lenguaje como HTML, JavaScript y muchos otros.

De acuerdo con mi opinión, uno debería trabajar primero en desarrollar conceptos básicos en lugar de saltar a una programación altamente avanzada.

Si desea convertirse en un programador realmente bueno, comience por comprender los conceptos de la estructura de datos y los conceptos de programación orientados a objetos. Comience a escribir pequeños fragmentos de código en cualquier idioma de su elección. Una vez que entienda los conceptos básicos de cualquier lenguaje de programación, comience a jugar desarrollando una lógica de programación compleja. Este @About – Proyecto Euler es un gran recurso para comenzar con preguntas de programación complejas.

Gradualmente comprenderá lo que necesita hacer para convertirse en un excelente programador.

Aprender paradigmas de programación uno tras otro.
Comparación de lenguajes de programación multi-paradigma

Sugiero comenzar con el paradigma del lenguaje de programación imperativo y un lenguaje en medio de la abstracción: un lenguaje de programación estructurado como Pascal o cualquier otro. La prioridad es la comprensión de las estructuras de control y los módulos, los bucles y la recursión. Programe los ejercicios típicos, no dedique demasiado tiempo a codificar muchas aplicaciones.
Desde aquí hay varios caminos posibles (sugiero la siguiente secuencia):

  1. Ve más concreto: C y después de eso Ensamblador. Entonces comprende cómo funcionan las computadoras en el nivel básico (indicadores, direcciones, representación de datos, etc.). La prioridad es la comprensión, no dedique demasiado tiempo a la codificación de muchas aplicaciones.
  2. Vaya más abstracto: de las estructuras de control imperativo a los paradigmas funcionales y lógicos (sin secuencia). Importante es la comprensión de Funcional y Lógica y la diferencia con el paradigma imperativo. ¡Práctica práctica práctica!
  3. Vaya más complejo: de módulos a objetos, estructuras de datos más complejas, aplicaciones, etc.: Vaya a lenguajes orientados a objetos, luego genéricos y meta-programación (sin secuencia). Importante es la comprensión de OO y la diferencia con el paradigma imperativo. ¡Práctica práctica práctica!

OO y funcional / lógica pueden aprenderse simultáneamente. Pero es probable que la comprensión sea mejor si uno comienza más bien de funcional a OO que de OO a funcional. Practicar Funcional / Logic antes de OO podría ser mejor (porque dominar las abstracciones debe ser un requisito previo para lidiar con la complejidad), pero uno no necesita ser perfecto en F / L antes de aprender o practicar OO. Los pasos 2 y 3 pueden superponerse.

Mi consejo no comienza con c y c ++ como lenguajes. Tal vez lo veas en muchos sitios web y los foros que ofrecen comienzan con estos lenguajes. No ofrezco comienzan con python, javaScript, ruby ​​y php como lenguajes de scripting también. Mi consejo es comenzar con Java o C #. Desarrolla tus habilidades de programación por uno de estos lenguajes.
Por Java o C # puedes mejorar tus habilidades de programación. Pase por lo menos 3 meses en uno de estos idiomas. Estos dos idiomas no son demasiado difíciles y en su mayoría son idiomas conocidos y usados ​​en el mundo. Cuando mejore sus habilidades de programación, aprenda C, C ++, JavaScript, PHP, Python y Ruby.

Quizás es mejor aprender sobre algoritmos y teoría básica de la computadora antes de saltar a la programación. Sin una comprensión básica de cómo funciona el hardware de la computadora, la programación podría ser una actividad incompleta. Me dijeron que comprender el problema es más importante que la codificación, que debería suceder después. También puede surgir una mejor elección de lenguaje.

Aprendo programación arreglando problemas / dolores y escribiendo más código.

Encuentre un problema / dolor que esté enfrentando y comience por solucionar ese problema en particular. No es necesario que sea un gran problema, pero tiene que ser un problema que sea importante para usted.

Diferentes personas tienen diferente motivación en el aprendizaje. Encuentra tu motivación y encontrarás tu propia forma de aprender a programar.