Si no conoce o entiende el algoritmo para el programa que está escribiendo, entonces:
No tendrá idea si su programa realmente resuelve el problema dado.
No tendrá idea de en qué circunstancias su programa funcionará bien.
- ¿Es la Biblia solo los algoritmos de aprendizaje automático de la realidad que nos dicen cómo se desarrolló, comenzando con el 0 que se convirtió en 1 para la luz?
- En los primeros días de la informática, ¿por qué tenían que implementar memoria de núcleo de ferrita en lugar de utilizar conjuntos de condensadores?
- Cómo calcular la suma de subconjuntos individuales de todos los subconjuntos en un rango dado de manera eficiente
- ¿Se aplican las estructuras de datos y algoritmos para C / C ++ a JavaScript?
- Cómo revertir un número promedio de números sin los números
No tendrá idea de qué partes del programa son importantes y qué partes se pueden hacer a la antigua usanza.
Aquí hay una analogía: usted es un albañil y está construyendo un puente con ladrillos. Tiene una idea general de que necesita zapatas, columnas y arcos. Podrías construir algo que parezca un puente, pero no tendrías ni idea de si resistiría el viento, las olas, los camiones pesados o los terremotos.
Cuando escribes programas sin un algoritmo y sin comprender las limitaciones del algoritmo, eres como ese albañil. A veces, el problema es tan simple o las consecuencias de la falla son tan pequeñas que no importa, pero generalmente el sistema es tan complicado que en realidad es bastante difícil razonar sobre la solución general a partir del comportamiento de las partes.
Probablemente hayas escuchado que hay muchas formas de ordenar. Estos son algoritmos. Los algoritmos son al menos capaces de demostrar que realmente resuelven el problema dado, y no solo empujan los números. Los algoritmos se pueden analizar, por ejemplo, para determinar cómo escala su tiempo de ejecución con el tamaño del problema.
Los algoritmos usan otros algoritmos como partes, ¡y necesita saber lo suficiente para elegir! Por ejemplo, si necesita una estructura de datos para guardar datos y recuperarlos más tarde. ¿Necesitas una matriz? ¿Una mesa hash? Una base de datos? ¿Una tienda de valor clave distribuido? ¿Importa? ¿Por qué?
No se espera que la mayoría de los programadores inventen nuevos algoritmos y los escriban para JACM, pero todos necesitamos saber lo suficiente para entender que lo que estamos codificando realmente resolverá el problema especificado y comprender el almacenamiento y el tiempo de ejecución características lo suficientemente bien como para determinar si lo que estamos haciendo es razonable.