¿Tengo que aprender algoritmos y estructuras de datos si deseo solicitar un puesto de Ruby on Rails o desarrollador web?

No podría pensar en soluciones eficientes si no está familiarizado con las estructuras de datos y los algoritmos. Te daré un ejemplo.

Considere que le dan una matriz X y un objetivo ‘t’. Necesita encontrar una solución para el problema X [i] + X [j] = t con la restricción i <j. Lo primero que viene a la mente es que puede atravesar toda la matriz correspondiente a cada elemento, y si la suma coincide con el objetivo, imprime el resultado. El pseudocódigo es el siguiente:

para (int i = 0; i <X.length; i ++)
{
para (int j = i + 1; j <X.length; j ++)
{
si (X [i] + X [j] == t)
{
imprime el valor de ‘i’ y ‘j’;
descanso;
}
}
}

Esta solución se ejecutaría en O (n ^ 2).

Ahora considere la siguiente solución: agrega todos los elementos en HashSet (una estructura de datos), luego revisa cada clave y verifica si (t-key) está presente en el HashSet. Si es así, puede atravesar la matriz y encontrar las posiciones de ambos números. El pseudocódigo es el siguiente:

Lista HashSet;
para (int i = 0; i <X.length; i ++)
{
list.add (X [i]);
}

para cada clave en la lista
{
num1 = clave;
if (list.contains (clave de destino))
{
descanso;
}
}

atraviesa X y encuentra la posición de ambos números. Este algoritmo resolvería el problema dado en O (n), que es una gran mejora sobre la solución ingenua. ¡Lo que estoy tratando de hacer aquí es que si no conocieras las estructuras de datos y los algoritmos, ni siquiera podrías realizar un análisis asintótico de tu solución …!

Además, si no estuviera familiarizado con las estructuras de datos, no podría pensar que este problema podría resolverse en menos tiempo, por supuesto, con un poco de espacio de memoria adicional. Por lo tanto, diría que las estructuras de datos y los algoritmos son una necesidad, sin importar en qué idioma desee codificar.

Todo lo que ves alrededor son algoritmos. El aprendizaje de algoritmos y la estructura de datos es esencial para mejorar aún más sus habilidades, ya que le permitirá crear aplicaciones web increíbles, capaces de hacer cosas increíbles.

También ayuda a resolver problemas y hacerte un mejor programador. Entonces, la respuesta sería sí. También estoy aprendiendo y estoy en desarrollo web.

Y sí, puede sobrevivir sin aprender Algoritmos y estructura de datos, pero sería mejor aprender Algoritmos y estructura de datos y dominarlo.