¿Deben los niños aprender programación o algoritmos?

Esas dos cosas no son mutuamente excluyentes. Incluso si no está escribiendo o diseñando principalmente algoritmos abstractos complejos, parte de saber cómo programar es saber cómo entender un algoritmo y seleccionar el adecuado para lo que necesita hacer.

Más importante que eso, toda la programación es un algoritmo de algún tipo. La definición superior para esto es: “un conjunto de reglas para resolver un problema en un número finito de pasos, como para encontrar el mayor divisor común”. Eso es, bueno, cualquier programa que escribas, ya sea que encuentres el mejor divisor común, las posibles formas en que se pliega una proteína, cómo vuela la flecha después de que el arco del jugador la suelta o la cantidad correcta de impuestos que pagar.

Necesitas ambos, la verdad. Saber cómo programar siempre es más valioso que conocer un idioma en particular. Debe poder aprender un idioma lo suficientemente bien como para usarlo en un par de semanas como máximo. Por otro lado, una buena familiaridad con las bibliotecas primarias y la sintaxis de un lenguaje determinado mejorarán su productividad con él. Y solo aprenderá a programar realmente haciéndolo, así que en algún momento, debe aprender un lenguaje lo suficientemente bien como para poder escribir, correr y jugar con código de trabajo real.

Algunas de las cosas que juré que “nunca usaría excepto en la escuela” tenía razón al respecto. Mucho de eso, de hecho he encontrado un uso para. No seas demasiado rápido para pensar eso.

En cuanto a ser obsoleto, ¿y qué? Me corte los dientes en BASIC, ensamblaje y C. Ya nadie (espero sinceramente) que ya use BASIC, y solo las aplicaciones integradas pequeñas o ciertas secciones críticas de rendimiento de las existentes se desarrollarán en ensamblaje y / o C. Pero porque aprendí a programar , pude aprender nuevos idiomas según sea necesario y aún puedo. No trabajo con frecuencia con Ruby, Python, Scala o cualquier otra cosa que tengas, pero si necesitas que trabaje en algo escrito en eso, puedo hacerlo. Si mañana todos los lenguajes modernos se vuelven obsoletos y AshNazgLang se convierte en el dominante, lo recogeré también.

tl; dr ¿Estás aprendiendo una habilidad o jodiendo?

La programación es para resolver problemas; Sin un problema que resolver, un programador no tiene nada que hacer.

Un algoritmo es un procedimiento o fórmula para resolver un problema. Cada programa implementa un algoritmo, ya sea que se haya pensado con anticipación o se haya creado línea por línea.

Cuando aprendes a programar, te muestran problemas simples y te piden que los resuelvas. Los problemas usualmente involucran obtener información, manipularla de alguna manera y luego generar los resultados. Estas son las funciones principales de un programa de computadora.

Desde que las computadoras fueron creadas por Babbage, las personas han estado haciendo estas mismas tareas. Hay “mejores prácticas” que hemos aprendido en el camino. Estos son los algoritmos que debe aprender, y se pueden implementar en cualquier idioma. De hecho, cuanto más inútil sea el lenguaje, mejor probablemente, solo para centrarse en los conceptos. Me gustó mucho el lenguaje de Pascal de la escuela porque era lo suficientemente pequeño como para envolverlo, pero sin los errores de BASIC.

Desafortunadamente para los nuevos programadores de hoy, el mundo de los lenguajes y dispositivos ha explotado en fragmentos. Es difícil tener una clase para centrarse en las muchas piezas, gráficos, redes, bases de datos, hardware que cambian constantemente. Pero la única constante es que está obteniendo información, manipulándola y generando resultados.

Así que debes preguntarte: ¿es mejor aprender a escribir un programa sólido en un combo OS / Lenguaje de mierda, o aprender el último SO de gadget porque tiene funciones integradas que puedes encolar y esperar que funcionen? ¿Qué se siente más como aprender?

Aprender conceptos abstractos es genial, pero al final queremos poder aplicarlos. Lo que he encontrado al aprender a codificar es que puedo pensar mejor, tanto sobre lo que estoy codificando como sobre el mundo real. Me he sentido cómodo pensando lógicamente de una manera que habría sido mucho más difícil si solo hubiera trabajado con diagramas de flujo. Aprender un idioma no solo nos permite construir algo tangible a partir de nociones abstractas, sino que también nos permite depurar nuestras ideas, aprender cómo pensamos y cómo podemos pensar mejor y tiene consecuencias sorprendentes con la forma en que percibimos el mundo que nos rodea.

Cuando la gente dice que un idioma es ‘obsoleto’ no quiere decir que sea inútil. Es posible que C no sea tan solicitado en la fuerza laboral, pero si observas muchos idiomas nuevos, todos están integrados en C. Además, cada idioma ofrece algo que otros no. C es rápido, mucho más rápido que la mayoría de los idiomas más nuevos. Hace poco estuve trabajando en una IA para el juego 2048 y cuando cambié mi código a C ++ de Python pude controlar mi programa de forma rápida y sucia que no solo me permitió acelerar los algoritmos que estaba usando, sino también También reimplementar mi programa de una manera mucho más terser pero mucho más eficiente. No he realizado pruebas formales en él, pero no lo exageraría para decir que mi versión de C ++ es de 10 a 15 veces más rápida que la de Python. La mayoría de los programas no necesitan ejecutarse tan rápido, pero cuando la eficiencia es escasa, ¡esos viejos dinosaurios de idiomas son de pronto nuestros mejores amigos!

Finalmente, y me doy cuenta de que esto se aplica más a personas como yo, que ya tienen una inclinación hacia este tipo de cosas, saber un lenguaje de programación nos permite resolver grandes problemas muy rápidamente. A veces tengo un gran cálculo que necesito verificar, algo que me llevaría una hora o más para hacer a mano. En lugar de sentarme y preocuparme por los errores aritméticos, puedo abrir un intérprete de Python y responder en unos minutos, sea cual sea mi pregunta. Esto es muy útil y me ahorra muchísimo tiempo de forma regular (casi tanto tiempo como el que me dedico a los nuevos lenguajes de programación).

Supongo que no se trata estrictamente de cuantificar nuestras posibles ganancias, no es simplemente un problema de optimización. También tiene que ver con divertirse, y la programación al final del día es divertida. Es un medio donde puedes dejar tus ideas y jugar con ellas. Hay algunos gastos generales para poder hacer eso, pero no tanto como uno podría pensar. Aprendí a ser un programador decente mucho más rápido de lo que aprendí a ser un músico decente. Y las canciones que aprendí pasaron de moda mucho más rápido que los idiomas que aprendí. Pero esas canciones que aprendí me ayudaron a aprender nuevas canciones; me presentaron nuevas ideas que no había visto antes. Creo que la programación es una de las mejores habilidades que una persona puede tener. Es divertido, es útil y cambia la forma en que percibes el mundo. ¿Qué más se puede pedir?

Porque aprendiendo a programar aprenderás algoritmo al mismo tiempo. De hecho, la programación es realmente solo implementar una lógica y un algoritmo particulares de una manera determinada utilizando un lenguaje de programación particular .

Una vez que aprenda lo básico de la programación y cómo resolver un problema utilizando el algoritmo y la lógica, recordará esto por el resto de su vida . Más adelante, cuando necesite aprender un nuevo lenguaje de programación, ya tendrá una ventaja, no necesita volver a aprender desde cero, porque fundamentalmente todos los lenguajes de programación son similares.

Comencé a aprender programación utilizando un lenguaje llamado BÁSICO , aquí aprendí sobre la sintaxis y el control de flujo e iteración, etc. y, por supuesto, la lógica y los algoritmos.

Unos años más tarde, fui a estudiar Ingeniería de Software donde usé un montón de otros idiomas (ADA, C, JAVA, etc.). Desde que aprendí el básico (sin juego de palabras), pude aprender estos nuevos idiomas mucho más rápido, ¡tuve una ventaja en comparación con mis compañeros de la universidad que nunca antes habían programado!

Después de que me gradué y obtuve mi primer trabajo, ¿adivina qué? Sí, tuve que aprender otro idioma nuevo! Una vez más, solo aplico lo que he aprendido todos los años y ¡podría comenzar a correr !

Por lo tanto, aprender a programar usando cualquier idioma es muy importante, especialmente cuando recién comenzaste a aprender programación. Es una base sobre la cual desarrollará sus habilidades y conocimientos en el futuro.

Porque no se trata de un lenguaje específico, se trata de aprender una forma de pensar.

La programación enseña lógica, que se puede aplicar a muchos escenarios, y también es una buena forma de entender cómo funcionan las computadoras y el software. En un mundo donde las computadoras están literalmente en todas partes, sin duda es bueno saber algo más sobre ellas.

Luego están los casos en los que los niños que aprenden a programar deciden seguir una carrera en el campo, y tendrá una ventaja porque comenzó temprano.

Aprender programación es diferente de aprender un lenguaje de programación. Puedes estudiar la sintaxis de un lenguaje de programación en uno o dos días, pero no puedes aprender a programar en este corto tiempo, toma años.

Creo que las escuelas no deberían enseñar solo sintaxis de lenguajes de programación sino cómo programar con ellos y cómo escribir un algoritmo útil para resolver un problema.

La programación es solo una herramienta para resolver problemas usando computadoras. Igual que las matemáticas es una herramienta para resolver muchos problemas de la vida diaria.

Todos los niños que aprenden matemáticas no se convierten en matemáticos, pero necesitan aprender matemáticas para resolver problemas de la vida diaria fácilmente. De manera similar, todos los niños que aprenden a programar no se convertirán en programadores, pero siempre pueden usarlo para resolver problemas fácilmente usando computadoras.

Entonces, si sientes que estudiar matemáticas en tu infancia te está ayudando hoy, entonces estudiar programación definitivamente ayudará a tus hijos en el futuro.

Cuando usas la palabra niños, ¿te refieres a niños pequeños, preadolescentes, adolescentes o qué? Si su bar para la necesidad de aprender algo es que debe estar seguro de que estará en uso 20 años después, nunca debe aprender ningún idioma. Sin embargo, otra forma de verlo es que los idiomas tienen una forma de aferrarse durante mucho tiempo. Mira cobol y fortran. Para el caso mira a java. Simplemente haga una búsqueda en estos foros y podrá encontrar muchas publicaciones sobre la eminente muerte de Java. De hecho, incluso si un idioma solo tiene una vida útil de 20 años, es mucho tiempo para escribir el código y potencialmente ganarse la vida.

Ahora para responder a su pregunta. Creo firmemente que es mucho más importante entender cómo resolver un problema que aprender un método particular de expresar esa solución. Entonces, desde mi perspectiva, la lógica y los algoritmos son más importantes que cualquier lenguaje en particular. Sin embargo, en algún momento, poder ver realmente que su solución es la correcta es algo bueno. Así que agregar un idioma a la mezcla es útil. En conclusión, diría que la enseñanza de las técnicas fundamentales de resolución de problemas es muy importante, pero que aprender una manera de verificar esas soluciones también es importante. El mejor enfoque es, de hecho, enseñar a ambos.