¿Con qué frecuencia se utilizan los algoritmos en la ingeniería de software?

Lo que generalmente se entiende por esa pregunta es “¿Estoy aprendiendo algo en mi curso de Algoritmos que usaré en la práctica”. He enseñado tal curso de vez en cuando durante 20 años. Yo diría: “sí y no”.

No necesitará un programa dinámico, un algoritmo gráfico sofisticado, etc. muy a menudo en la práctica, y cuando lo haga, a menudo estarán disponibles en forma de biblioteca. PERO, la habilidad de pensamiento profundo que obtienes al estudiar algoritmos te ayudará mucho.

Y, hay ciertos puntos en los que no podrá resolver un problema sin el fondo algorítmico. Mi propio ejemplo personal es un problema de ajuste de rango dinámico de audio industrial que nadie en la tienda pudo hacer mejor que O (n ^ 2), lo que fue demasiado lento. Con una hora de reflexión, se me ocurrió un algoritmo de tiempo O (nlogn) que resolvió el problema. También obtuve una buena patente. Esto no fue porque soy un genio. Fue porque conocía el algoritmo de Graham Scan para el cálculo de cascos convexos, por estudiar algoritmos avanzados, y me di cuenta de que podría adaptarse para este problema bastante diferente. Este tipo de cosas solo me sucede una o dos veces por década en la industria, pero cuando sucede, es esencial tener antecedentes en algoritmos.

Dependiendo del software que desarrolles. En el software CRUD común, como varias aplicaciones web, aplicaciones comerciales, etc., solo se utilizan algunos algoritmos relativamente no complejos. Mientras que en aplicaciones CAD, AI, OCR, motores de juegos, simulaciones por computadora … los algoritmos son el núcleo de la aplicación y su complejidad es mucho mayor que las anteriores.

Todo el tiempo, a menos que solo haya una técnica heurística disponible.

Todos los programas escritos de manera decente son algoritmos, de nuevo, a menos que uno no pueda en todos los casos producir un resultado determinista para todas las entradas. En esos casos, se recurre a la heurística.

Véase también Algoritmo (de Wikipedia): la palabra tiene una definición mucho más amplia de lo que creo que entiende el interrogador.

Definir algoritmo. Si te refieres a una secuencia de pasos que resuelven un problema lo suficientemente común que no es lo suficientemente trivial como para ser pensado por los muchachos de la academia, la gran mayoría de los programadores de hoy en día no usan ningún algoritmo conscientemente. Dependen de algoritmos que fueron elegidos e implementados por otra persona, y en la mayoría de los casos desconocen la existencia de esos algoritmos.
Por otro lado, muchas tareas de programación están esencialmente inventando una secuencia de pasos que resuelven algún problema, y ​​demostrando (sin rigor) que esos pasos son correctos. Entonces, casi todos los programadores inventan, prueban y usan algoritmos todo el tiempo.