¿Alguien puede aprender las ideas asociadas con los algoritmos sin aprender a codificar primero?

¿Alguien puede aprender las ideas asociadas con los algoritmos sin aprender a codificar primero?

Un algoritmo es un conjunto de pasos para completar una tarea, por lo que se pregunta si es posible describir un conjunto de pasos para completar una tarea. Por supuesto.

¿Puede alguien sin conocimiento de los lenguajes de programación crear algoritmos que otras personas puedan convertir en programas?

No quiero decir que no es absolutamente posible, pero no creo que encuentre un título de trabajo hipotético como Algorithm Designer que sería llenado por alguien que no sabe cómo codificar.

Déjame dividir las tareas en tres conjuntos:

  1. El conjunto que ocurre en el mundo real, pero no necesariamente en tierra de computadoras. Ejemplo: lavar la ropa.
  2. El conjunto que ocurre tanto en el mundo real como en la tierra de las computadoras. Ejemplo: ordenar artículos.
  3. El conjunto que ocurre solo en tierra de la computadora y realmente no tiene un análogo útil en el mundo real. Ejemplo: encontrar un conjunto de elementos que coinciden con criterios particulares en una base de datos.

El primer problema que tendrá nuestro hipotético Algorithm Designer (AD) es que es posible que no sepan qué cosas encajan en la categoría 1.

AD: OK, he escrito un algoritmo para lavar la ropa. Jim, ¿puedes codificar eso?

Jim: ¿Um …?

El segundo problema es que el AD no tendrá contexto para hacer nada con los elementos en el grupo 3. No sabrán qué cosas podrían incorporarse a un idioma, y ​​no sabrán qué cosas son fáciles o casi gratuitas.

El tercer problema es que las computadoras son buenas en cosas particulares en las que los humanos son malos. Realizan un seguimiento de los pequeños detalles realmente bien, de una manera que la gente generalmente no. Varias cosas que son rápidas para las personas son lentas (relativamente) para las computadoras, y viceversa.

Vamos a ordenar una baraja de cartas. Si me das una baraja y me pides que los clasifique, probablemente los dividiré en cuatro pilas (una para cada palo). Luego, para cada palo, podría tomar el primer elemento y ponerlo en primer lugar, el segundo elemento y ponerlo en segundo lugar, etc. (Probablemente estoy un poco menos ordenado que eso: podría hacer algo un poco diferente si parecía más fácil / más rápido.) En términos de algoritmos, ni siquiera estoy seguro de qué es esto, tal vez un tipo de cubo, luego un tipo de selección.

Lo que no haría es ordenar las tarjetas como lo haría una computadora. Una forma de hacerlo sería dividir el mazo por la mitad, luego dividir uno de esos conjuntos por la mitad, luego uno de esos por la mitad, etc., hasta que esté en conjuntos de una sola carta. Luego, combina dos juegos de una sola carta ordenándolos. Luego combine dos juegos de una o dos cartas poniéndolas en orden, etc. Cada paso de “poner en orden” es una operación mucho más fácil que una clasificación. (Si intentas hacer esto a mano, verás). Este es un tipo de combinación: mucho más rápido para la computadora. Mucho más confuso para mí hacer a mano.