¿Debería entrenarme para implementar estructuras de datos y algoritmos, excepto los simples programas tipo ‘Hola mundo’?

Esta es una especie de manía mía, así que perdóname si la respuesta es abrasiva.

Si desea ser un desarrollador de software profesional, especialmente un arquitecto, debe capacitarse para implementar SOLUCIONES. No algoritmos, son solo herramientas, no estructuras de datos, solo herramientas. pero soluciones Me refiero a un problema real en el que comienzas desde un lienzo en blanco y te acercas al problema y completas la solución. No importa cuán difícil o fácil sea el problema.

Mi razonamiento para decir esto es simple, puedes tener todas las herramientas del mundo, pero si no sabes cómo resolver un problema, entonces saber qué herramientas tienes no solo lo hará más fácil, sino que también es más difícil, porque no vas a COMENZAR a resolver el problema, te vas a atascar al usar esta herramienta, o esa herramienta. Las herramientas no importan, lo siento, todos ustedes algoritmos geeks y DS geeks que están discutiendo árboles rojos y negros sobre montones o colas de prioridad. Creo que es genial que puedas tener esa conversación, pero hasta que puedas RESOLVER el problema y visualizar la solución, sin cometer demasiados errores, no me importa que tengas una llave dinamométrica cromada micrométrica, porque no estás cambiando mis llantas

Las soluciones son la parte más difícil sobre el desarrollo de software, y nunca, nunca las conseguirás completamente correctas, solo te acercarás cada vez más a hacerlas bien la primera vez. Puedes aprender sobre las herramientas en el camino. Cuanto antes comience a aprender a implementar soluciones a problemas reales, mejor será.

Aprende el lenguaje de programación primero. Me imagino que estás aprendiendo Python o Java, pero esta respuesta debería ser aceptable para cualquier lenguaje de programación no funcional.

Antes de aprender las estructuras de datos y los algoritmos, asegúrese de saber:

  • Declaraciones If / Else
  • Bucles
  • Las funciones
  • Programación básica orientada a objetos.

Si está aprendiendo C ++, entonces, naturalmente, debe tener una buena comprensión de los punteros, la asignación de memoria, etc.

Si bien aprender estructuras de datos y algoritmos son importantes, no desea que la sintaxis de su idioma elegido lo detenga. Una buena señal de que está listo para comenzar a implementar estructuras de datos y algoritmos es cuando puede crear una aplicación de línea de comando básica, como un cajero automático o un sistema de gestión de inventario.

Dada la elección entre estructuras de datos y algoritmos por un lado, y hola mundo como programas por el otro, creo que la elección es simple.

Un programa Hello World es como una piedra de Rosetta, pero muy simple. Simplemente le muestra cuál es el “mínimo” que debe escribir para obtener un programa. Por supuesto, puedes acortarlo, pero el hecho es que en todos los idiomas para obtener un programa necesitas escribir lo que al principio, y quizás incluso mucho más tarde, un encantamiento mágico que nos dice el compilador: aquí es donde comienza el código . Algo con una clase que tiene una función principal estática (esto es para Java). Luego puede reemplazar el código con algo que realmente quiera hacer y ponerse a trabajar.

Las estructuras de datos y los algoritmos solían ser bastante importantes, y a menudo formaban el foco de los tutoriales de programación. Pero esto fue antes de que la mayoría de estos vinieran como parte de bibliotecas estándar. Como dicen otros: son solo herramientas. Pero crear aplicaciones después de su primer encuentro con un idioma puede ser gratificante, pero tal vez no sea lo que está preparado para ese momento. Entonces amplías tu alcance implementando otras cosas simples.

Estos pueden ser algoritmos o estructuras de datos, pero, a menos que trabajes en algún tutorial, generalmente solo surgen cuando los necesitas en algún contexto. Por otro lado, si escribe una función de clasificación para listas, puede usar funciones en la biblioteca estándar para compararlas con lo que ha hecho. No hay nada de malo en eso cuando estás probando las aguas.

Definir sus propias estructuras de datos es algo que hará más adelante también en el contexto de sus propias aplicaciones. Entonces, es bueno haber practicado esto es un ejemplo bien conocido, tal vez incluso existente. Cuando haya dominado todo esto, puede abordar el problema más difícil de todos: cómo estructurar el código sensible para construir una aplicación. Solo comenzaría a hacer casos no triviales de esto después de que haya dominado la sintaxis del lenguaje propiamente dicho. Y esto, para mí, es un subproducto de cualquier experimento que haya realizado para definir estructuras de datos y algoritmos.

Incluso teniendo en cuenta la respuesta del usuario de Quora, “Hola mundo” va a ser una constante, una variable que se completa en tiempo de ejecución, parte de una matriz. ¿Qué?

La programación es escribir soluciones a los problemas, pero debemos tener en cuenta los datos.

Algoritmos Eso significa “una forma de hacer algo”. Hay un algoritmo para producir el panqueque perfecto, un algoritmo para cortar el césped y un algoritmo (probablemente se necesita una carga completa de ellos) para resolver el problema más complejo con una computadora. Por supuesto, usted “entrena para implementar algoritmos”, pero ‘+’ puede ser el algoritmo completo que necesita en ese momento (¿cómo agrega dos enteros?). Entonces, incluso un programa de “Hola mundo” usa un algoritmo, incluso si es solo “¿cómo pongo texto en la pantalla en este sistema?”

Debería estudiar algoritmos y estructuras de datos, pero no se atasque en ellos: aprenda a usarlos para resolver problemas, que es realmente todo para lo que está utilizando un programa (incluso si el “problema” es “¿cómo gano? ¿dinero cada semana? ”)

More Interesting

¿Cuál es el lenguaje más simple para aprender algoritmos y estructuras de datos?

Cómo calcular el producto máximo de una cadena entera usando k multiplicaciones

¿Cuál es la importancia de agregar un factor de ponderación en el algoritmo de mínimos cuadrados?

¿YouTube está sesgado políticamente?

Cómo construir un algoritmo para un dron que debería aprender de sus comentarios

En file.log, cada línea comienza con una marca de fecha completa. ¿Qué comando podría usarse para devolverme las líneas N-1, N y N + 1 con una diferencia de tiempo mayor que X segundos entre N y N + 1?

¿Cuál es el enfoque para resolver el problema # 168 en el Proyecto Euler (por supuesto, no la fuerza bruta)?

Si tengo una matriz compuesta de cadenas de dígitos y guiones, ¿cómo puedo usar Javascript para agregar la suma de cada dígito mientras omito los guiones?

¿Las estructuras de datos son más importantes o es el lenguaje?

¿Existe algún estándar de algoritmo de programación de elevadores públicos?

¿Está bien mi implementación de Búsqueda ternaria?

Mis ubicaciones están por venir, así que he estado implementando estructuras de datos y algoritmos en Python, pero llegué a saber que muchas empresas no tienen Python instalado en sus estaciones de trabajo. ¿Es verdad? Y si es así, ¿estaría bien cambiar de Python a Java, que no recuerdo mucho?

¿Pueden algunos explicarme la lógica detrás del siguiente problema El oso hambriento?

¿Cuál es la diferencia entre la descomposición de raíz cuadrada y el algoritmo de MO?

¿Cuáles son las estructuras de datos más utilizadas y más necesarias en el mundo de hoy?