¿Qué razones hay para aprender sobre algoritmos informáticos si no eres un informático?

Hay muchos algoritmos que ni siquiera están destinados a ejecutarse en una computadora, sino que están diseñados para personas. Las recetas de cocina son un buen ejemplo, pero parecen simples. Los deportes están llenos de algoritmos: aprende una secuencia de pasos, cómo reaccionar ante diversos desafíos y también estrategias comunes. Un buen entrenador de esquí puede depurar su algoritmo de esquí 🙂 Un buen entrenador de manejo puede ajustar sus algoritmos para mejorar la seguridad, la velocidad, el ahorro de combustible y el desgaste del automóvil.

En términos más generales, muchas habilidades (físicas y mentales) y estrategias son algoritmos. ¿No es genial aprender a lidiar con las personas en general? ¡Podrías idear estrategias comerciales competitivas! La rutina diaria y la higiene, mantenerse saludable en general, y muchos tratamientos médicos se basan en algoritmos.

Los algoritmos también ayudan a tratar con sistemas de reglas. El código tributario y las leyes en general son sistemas de reglas, y muchos de ellos son explícitamente algorítmicos. Verificar qué es legal y qué no es una actividad algorítmica. Encontrar formas de lograr algo sujeto a reglas es aún más algorítmico. La optimización de la calidad, la adopción, el costo, el uso de los recursos y las ganancias requieren algoritmos. Si conoce bloques algorítmicos estándar y cómo se pueden usar, no necesitará reinventar la rueda. Algunos de esos algoritmos son muy inteligentes, es posible que no pueda reinventarlos dentro de un marco de tiempo realista.

La implementación de algoritmos complicados como programas de computadora le enseña a ser preciso y también desarrolla una buena intuición. También te enseña cómo arreglar las cosas y cómo evitar roturas. Por lo tanto, tener buenas habilidades para diseñar, implementar, depurar y mejorar algoritmos es muy útil más allá de CS. Pero incluso los algoritmos CS típicos, como la búsqueda binaria, pueden ser útiles en la vida cotidiana. Digamos que no quieres ver un video completo, pero quieres encontrar un momento en que muera algún personaje. Búsqueda binaria al rescate! ¿Planeando un viaje? Utilice el hallazgo de ruta más corta de una sola fuente. Lo mismo para las estructuras de datos. Si desea realizar un seguimiento de muchos libros en estanterías o automóviles en un estacionamiento, sin una lista completa de ubicaciones, use una función hash.

Además, encontrar patrones en los datos, desde curiosidades deportivas hasta transacciones financieras críticas, requiere algoritmos. Aquí a menudo utilizamos implementaciones listas para usar de bloques algorítmicos comunes, por lo que principalmente necesita saber qué hacen, qué se puede esperar de ellos y cuáles son sus usos típicos. Por ejemplo, el análisis de componentes principales (PCA) o la técnica de evaluación y revisión de proyectos (PERT) son útiles para los CTO y CEO. Incluso si no usan esos métodos personalmente, deben comprender los resultados informados en las presentaciones comerciales.

¿Quieres predecir el futuro? – el clima, el mercado de valores o los patrones de tráfico, – algoritmos nuevamente. Incluso si no escribe programas, puede estar utilizando software o administrando personas que lo hacen, o analizar empresas que lo hacen, y así sucesivamente.

¿No convencido?

Mark Guzdial nos dice (http://cacm.acm.org/blogs/blog-cacm/189498-top-10-myths-about-teaching-computer-science/fulltext) que

Por cada desarrollador de software profesional en el mundo, hay nueve personas más programando como parte de su trabajo que no son desarrolladores de software profesionales.

La razón principal para estudiar algoritmos, incluso si uno no es un informático, es que fomenta el pensamiento computacional .

El pensamiento computacional puede entenderse como una colección de diversas habilidades involucradas con la resolución de problemas que resultan del estudio de la naturaleza de la computación. De manera similar a la mayoría de las materias, ayuda a desarrollar la creatividad, la capacidad de explicar las cosas y el trabajo en equipo. Pero lo más importante, también consiste en habilidades de resolución de problemas muy específicas, como la capacidad de pensar de manera lógica , algorítmica y recursiva . Todo lo cual se puede combinar de forma única para comprender a las personas. Por lo tanto, se puede argumentar que el estudio de algoritmos o simplemente el desarrollo del Pensamiento Computacional en general, es crítico en el siglo [matemático] 21 ^ {st} [/ matemático] y debe agregarse a la lectura, la escritura y la aritmética como núcleo. habilidad que toda persona debe aprender.

Entonces, para ampliar las habilidades de resolución de problemas enumeradas. El pensamiento lógico implica deducir tanta información nueva como sea posible de lo poco que una persona ya tiene, sin la necesidad de sacar conclusiones precipitadas. Lo que significa que, cualquier información nueva obtenida, debe seguir con seguridad, en eso, uno no puede estar en lo cierto simplemente porque tuvieron suerte. Los beneficios de esto son aplicables en las relaciones interpersonales, la toma de decisiones, etc.

El pensamiento algorítmico es la capacidad de pensar en términos de algoritmos como una forma de resolver problemas, en ese sentido, el pensamiento algorítmico puede verse como un conjunto de habilidades que están conectadas a la construcción y comprensión de algoritmos, estos son:

  • la capacidad de analizar problemas dados
  • la capacidad de especificar un problema con precisión
  • la capacidad de encontrar las acciones básicas que son adecuadas para el problema dado
  • la capacidad de construir un algoritmo correcto para un problema dado usando las acciones básicas
  • la capacidad de pensar sobre todos los posibles casos especiales y normales de un problema
  • la capacidad de mejorar la eficiencia de un algoritmo

Es evidente que el pensamiento algorítmico tiene un fuerte aspecto creativo y se puede argumentar que el pensamiento algorítmico elimina la necesidad de pensar en problemas similares una vez que se ha establecido una solución. Lo que significa que los beneficios del pensamiento algorítmico son especialmente evidentes cuando una persona necesita resolver problemas similares una y otra vez. En tales situaciones, uno debe esforzarse por encontrar una solución que funcione siempre. Sin embargo, el mayor beneficio del pensamiento algorítmico es la asociación de la creatividad con la construcción de nuevos algoritmos que resuelven problemas dados, que es una habilidad tan beneficiosa que se puede aplicar a todas las áreas de la vida.

El pensamiento recursivo subyace en nuestra capacidad para reflexionar sobre nuestras propias mentes y también para simular las mentes de los demás. Se puede argumentar que esta es la característica principal que distingue la mente humana de la de otros animales. También se puede argumentar que esta es una aplicación de imaginación y creatividad, ya que nos permite viajar mentalmente en el tiempo, insertando la conciencia del pasado o el futuro en la conciencia presente. Estos elementos son evidentemente y cada vez más beneficiosos en nuestra sociedad moderna. En términos de su relación con los algoritmos, el pensamiento recursivo fomenta nuevas formas de pensar sobre los problemas, resolver problemas y obtener información y conocimiento de los sistemas disponibles.

Simplemente, el estudio de los algoritmos nos permite comprender los problemas, sus parámetros y los datos o recursos necesarios para resolverlos. Nos permite formular problemas desde una descripción en inglés a una, si no matemática, una descripción más formulada que sea susceptible de análisis críticos adicionales.

Por “algoritmos informáticos”, voy a suponer que esto significa algoritmos no muy básicos como “tomar dos números y generar una suma”, pero los algoritmos más complejos que se encuentran en el segundo capítulo y más adelante de un libro de texto de algoritmos informáticos.

Y por “científico de la computación”, supongo que la pregunta se refiere a todas las personas que no solo hacen investigación en ciencias de la computación (como científicos), sino que también hacen programación de computadoras para ganarse la vida. Los programadores de computadoras ciertamente necesitan al menos ser capaces de comprender algoritmos para saber qué usar en qué situaciones, en función de los recursos disponibles y las necesidades de rendimiento.

¿Pero buenas razones para que otros aprendan sobre algoritmos? La capacidad de programación limitada ayuda con otras profesiones. Los algoritmos para procesar de manera más eficiente grandes cantidades de datos pueden ayudar, por ejemplo, a un meteorólogo. ¿Crees que el departamento de investigación meteorológica tiene el dinero para contratar a un programador? Probablemente no. A juzgar por mi breve experiencia con el “Proyecto Euler”, es evidente para mí que los matemáticos pueden apoyarse fácilmente en algoritmos para ayudar a validar sus propias conclusiones o tal vez desarrollar nuevas teorías.

Siendo realistas, la mayoría de los que tocan la programación solo lo requieren para fuerza bruta básica y / o rutinas repetitivas. Simplemente hacer las cosas más rápido, pero no necesariamente de manera muy eficiente. Entonces, para el resto del mundo, ¿diría que la mejor razón para aprender sobre algoritmos? ¿Curiosidad y / o diversión? Dejando a un lado el sueldo, esa es una buena razón para aprender algo.

Te daré una razón. En mi país, Irán, hay una especie de desafío en el que alguien toma algo en mente y el otro hace 20 preguntas de sí / no y si pudiera adivinar correctamente la cosa, ganaría. Por ejemplo, tomo sandía:

  1. Usted pregunta: ¿es redondo? Yo respondo: si.
  2. ¿Es verde? Sí.
  3. ¿Es comestible? Sí.
  4. ¿Es manzana? No.
  5. ¿Es sandía? Sí.

Y tú ganas. Este juego es regularmente en la televisión. No sé si también existe en otros países. ¡Pero he encontrado una manera de encontrar 4 letras de la respuesta usando el algoritmo de búsqueda binaria ! Debe saber que el alfabeto persa (idioma de Irán) tiene 32 letras.

Le pides a la persona que tome la primera letra de la cosa en su mente. Entonces preguntas:

  1. ¿Esa letra está en las primeras 16 letras?
  2. De esas 16 letras, ¿está en sus primeras 8 letras?
  3. De esas 8 letras, ¿está en sus primeras 4 letras?
  4. De esos, ¿está en sus primeras 2 letras?
  5. De esas 2 letras, ¿es la primera?

Como puede ver, usando 5 preguntas sí / no y siguiendo el algoritmo de búsqueda binaria, puede encontrar la letra exacta. Ahora solo necesita usar las 15 preguntas restantes y repetir esto para la segunda, tercera y cuarta letras. Un poco de suerte, y una buena suposición, te haría ganar el desafío cada vez.

Desde mi humilde experiencia hasta ahora a través de mis cursos de algoritmos en la universidad (ingeniero de software de tercer año), aquí hay algunos beneficios indirectos de tomar un curso de algoritmos:

– Los algoritmos me han enseñado a pensar lógicamente.

– Los algoritmos me han dado una apreciación del cerebro humano. (y me frustraron al mismo tiempo)

– Los algoritmos me han dado aprecio por las computadoras. (y definitivamente también me ha frustrado

– Los algoritmos me han dado la capacidad de escribir instrucciones claras y concisas, lo cual es útil en cualquier nivel.

-Los algoritmos le permiten trabajar con estructuras de datos como matrices, pilas, colas, listas y árboles. (muy aplicable si alguna vez tiene que administrar grandes conjuntos de datos

– Puedes resolver algunos problemas realmente muy interesantes y tener una sensación de logro. Es un entrenamiento cerebral increíble.

Para ayudar a desarrollar sus habilidades para resolver problemas. Practicar en algoritmos informáticos puede perfeccionar sus habilidades para resolver problemas, lo que lo ayudará a lidiar con una amplia variedad de problemas en la vida.

Desde cepillarse los dientes hasta pulir los zapatos, desde preparar una taza de té hasta diseñar una computadora, sigue una cantidad definida de pasos que le hacen la vida mucho más fácil, lo que se denomina Algoritmo. El algoritmo no es más que una receta para hacer tu trabajo. Un algoritmo está diseñado para dividir problemas complejos en tareas / subproblemas más pequeños y fáciles para que su vida sea más fácil y es por eso que en la ciencia de la computación los científicos buscan el algoritmo de diseño que es más fácil de implementar y requiere menos tiempo de ejecución para realizar el cálculo. De hecho, cuando hizo la pregunta, realizó ciertos pasos, que también es un algoritmo. ¿No quieres aprender algoritmos para hacerte la vida más fácil?

Así que me desperté el otro día, me di una ducha, me vestí y subí al ascensor. Mi complejo de apartamentos tiene café de cortesía en el área del vestíbulo (es por eso que el alquiler es tan alto). Esta mañana en particular, cuando llegué allí, noté todas las pequeñas etiquetas que me decían qué dispensador faltaba. Así que allí estaba, con cinco dispensadores de café idénticos, prácticamente seguro de que al menos uno de ellos era descafeinado. No quiero descafeinado. ¿Qué debo hacer?

Si yo fuera David Carruso o ese tipo de CSI: Las Vegas, podría haber olido el café, detectar la nación de origen del grano y deducir cuál era descafeinado en función de la distribución comercial de los granos de ese país en todo el territorio continental de los Estados Unidos. O tal vez podría haber usado un estilo químico cercano de MacGuyver para determinar cuál era la cafeína. Solo soy un tipo que necesita cafeína, así que pensé por un segundo, y luego fui por el medio.

¿Cómo es probable que establecieran esto? Me pareció lógico que como había cinco, no más de dos serían descafeinados. Eso parece una buena suposición. Además, mi “oponente”, siendo una persona racional, probablemente puso los descafeinados juntos, y en un extremo. Eso significa que el del medio probablemente esté descafeinado.

Estudiar algoritmos informáticos promueve un tipo especial de pensamiento que es útil como elemento de educación general. Tienes la sensación (y, por encima de eso, la metodología matemática) sobre formas más o menos eficientes de realizar tareas. enriquece su visión del mundo como, por ejemplo, hacer estadísticas enriquece su visión del mundo (solo en otra dirección).

Escribí una breve publicación (Una razón para estudiar algoritmos) sobre esto hace un tiempo, inspirada en una charla que Jim Fowler dio sobre la razón para estudiar Matemáticas. Eso resume más o menos mis pensamientos sobre el tema.

¿Qué es mejor que una llamada qsort para ordenar tus calcetines? ¡Venga!