¿Por qué los ingenieros de software necesitan conocer algoritmos?

Todo ingeniero de software conoce el problema de la clasificación . Le explicaré la necesidad de algoritmos que usen este problema.

Hay 2 algoritmos de clasificación bien conocidos:

  • Ordenamiento de burbuja
  • Ordenar fusión

¿Qué pasará si no conoces buenos algoritmos?

Comparemos estos dos algoritmos en términos de no. de iteraciones (N). Es obvio más no. de iteraciones, se requiere más tiempo. Suponga que 1000 números descendentes se ordenarán en orden ascendente.

Para el tipo de burbuja,

  • N = [matemáticas] 1000 ^ 2 = 10 ^ 6 [/ matemáticas]

Para el tipo de fusión,

  • N = [matemáticas] 1000 * log (1000) = 1000 * 9.97 = 9970 [/ matemáticas]

¡Ves que Merge Sort es más rápido que Bubble sort!

Las aplicaciones del mundo real pueden contener muchos de esos registros para ordenar y un desarrollador que usa Bubble Sort, ya que es ajeno a Merge sort, no es aceptable. ¡Su aplicación se ejecutará muy lentamente! Esta es la razón por la cual los ingenieros de software necesitan conocer algoritmos.


Nota al margen:
Todos los ingenieros de software conocen los tipos de burbuja y de fusión, pero los he usado solo para explicar la importancia de cómo el algoritmo afecta la eficiencia de su aplicación.

(1) El tiempo es dinero muchas veces. Quieres ser productivo. Las razones (2) y (3) reforzarán esto.

(2) Los ingenieros de software muchas veces no son lo suficientemente hábiles para derivar todas las matemáticas que se utilizan en un algoritmo de última generación, por lo que confía en aquellos que se especializan en eso y utilizan su trabajo para su ventaja.

(3) ¿Por qué reinventar la rueda cuando ya existe el algoritmo que desea utilizar? Podría estar intentando reinventar algo que se conoce desde hace décadas. Sin mencionar que podrías carecer de la intuición que involucra muchos problemas que podrías encontrar. Por ejemplo, si nunca ha visto algoritmos que existen para los problemas que encontrará y los tipos de algoritmos que existen para los problemas, podría pasar tiempo buscando soluciones que sean demasiado caras de implementar o que no funcionen del todo.

Estoy seguro de que hay muchas otras razones.

Todas las otras respuestas a partir de cuando escribí esto afirmaron que tienes que conocer los algoritmos y justificaron eso. No creo que ninguna de esas respuestas realmente dé una razón por la que realmente necesite conocer algoritmos, solo razones por las que puede ser ventajoso.

Voy a decir algo que puede considerarse herético: no necesita conocer algoritmos. Al menos, no en el sentido de que has hecho todo lo posible para estudiarlos sobre una base teórica.

Sí, he implementado varios algoritmos durante los muchos años que he estado programando. Pero, no los conocía antes de decidir que necesitaba poder hacer algo y no podía encontrar el software existente para hacer el trabajo. Como con gran parte de la programación que hago, los aprendí según sea necesario.

Muchos algoritmos estándar ya se han implementado en bibliotecas para muchos de los idiomas más populares. No necesita conocer el algoritmo para poder usarlos. Tampoco necesita saberlo para poder encontrar la biblioteca en primer lugar.

Siempre y cuando comprenda sus requisitos, pueda investigar, pueda descubrir cómo usar las bibliotecas y pueda implementar código basado en descripciones de cómo debería funcionar, estará bien.

La importancia de los algoritmos. Lea este artículo, vale la pena leerlo y aclarará su percepción sobre los algoritmos.

Algoritmo es una palabra elegante para resolver un problema en una secuencia de pasos.
Véalo como una forma (más fácil) de resolver problemas complejos.

More Interesting

Me pregunto si un ultrabook Intel i3 1.4 ghz es lo suficientemente rápido para mí ... soy ingeniero de software, así que solo necesito ejecutar algunas herramientas de software ... también tener un RAM más grande lo hace más rápido o no ...

Cómo convertirse en un gran desarrollador de un buen desarrollador

¿Qué perfil en NVIDIA es mejor para un graduado de B.Tech: un ingeniero de software de sistemas o un ingeniero de desarrollo de herramientas?

¿Qué posibilidades hay de que contraten ingenieros de software de Google si vuelven a pasar por el proceso de entrevista?

¿Debo incluir mi posición como CTO en mi currículum de Ingeniero de Software para Facebook?

¿En cuántos idiomas debería especializarse alguien en ingeniería de software?

¿Qué tipo de plazos tienen generalmente los ingenieros de software? ¿Largo o corto?

¿Es posible que un no programador se prepare para el puesto de Ingeniero de Software en Google en 3-6 meses?

Si mi objetivo final es trabajar para Google o Facebook como ingeniero de iOS, ¿debería aprender Objective-C antes de Swift?

¿Es realmente importante trabajar como ingeniero de control de calidad de software en el futuro?

¿Es posible ingresar a Google como ingeniero de software en 5 meses, si todo lo que sé es Java?

Si conoces un lenguaje de programación, ¿eres técnicamente un programador?

Han pasado 7 años siendo un ingeniero de software, pero realmente no puedo considerarme un ingeniero. Me siento como un falso? ¿Qué significa ser ingeniero? ¡Ayuda!

¿Cuál es la verdad y la realidad para los ingenieros de software en las empresas de TI en la India? ¿Qué consejo dan los empleados experimentados a los recién llegados que salen de la universidad?

¿Cuál es el aumento salarial típico de SDE 1 a SDE 2 a SDE 3 en diferentes compañías como Amazon, Google, Facebook y Microsoft?