¿Cuál es la mejor manera de aprender a escribir algoritmos?

¿Estás motivado? Si es así, probablemente pueda aprender acerca de los algoritmos y su implementación al trabajar a través de ejercicios en libros de texto bien considerados en esa área, como Introducción a los Algoritmos (Introducción a los Algoritmos, 3ra Edición (MIT Press): Thomas H. Cormen, Charles E. Leiserson , Ronald L. Rivest, Clifford Stein: 9780262033848: Amazon.com: Libros) Es posible que necesite hacer un trabajo de actualización en matemáticas antes de sumergirse en un libro de texto de este nivel.

Si no es probable que tenga la inclinación y la disciplina para ser un autodidacta riguroso en este aspecto, la mejor manera de aprender es probablemente tomar las matemáticas de fondo (Matemática discreta, tal vez un poco de cálculo) y luego una introducción a las Estructuras de datos y Curso de algoritmos en el departamento de informática / matemática / ingeniería de una universidad local.

  • leer el código de otras personas
  • hacer ejercicios de entrenamiento
  • leer libros como Art of Computer Programming de D. Knuth o “Algorithms” de R.Sedgewick

Y está mal, que nunca tiene que crear un algoritmo propio, que se dijo en una de las otras respuestas. Se trata de escribir su propio algoritmo. No necesitará escribir algunos de los algoritmos clásicos, eso es cierto, pero si alguna vez ha visto la implementación “qsort ()” en “C”, es horrible.

Puede usar eso, pero si necesita algo mejor, primero debe buscar si ya está hecho. En segundo lugar, compruebe si tiene permiso para usarlo en su proyecto, ya que es probable que las licencias no sean así.

Entonces tendrá que escribirlo usted mismo.

Especialmente porque en cada algoritmo se han realizado algunos avances que lo hacen mejor, más rápido o mejor para su aplicación. Y tendrás que usar eso. Entonces a menudo escuchará lo maravillosas que están hechas todas las bibliotecas.

Eso está mal. Algunos son brillantes, pero la mayoría son simplemente basura. Y estás mejor con tu propio algoritmo. Y con basura, quiero decir, son defectuosos, tienen poca memoria, son lentos, ineficientes y MALOS.

Odio usar bibliotecas de personas que no conozco. Y las bibliotecas que no son gratuitas durante algún tiempo y que han tenido su momento de depuración y optimización detrás de ellas. Incluso odio algunas de las partes de las bibliotecas estándar de C / C ++. “Buen código”, mi trasero. Algo de eso, sí. Algunos de ellos son incluso brillantes. Pero la mayoría no lo es.

Y no encontrarás un buen código en Windows. En cualquier sitio. Porque fuente cerrada. Es solo una mierda. Muchos proyectos enfermaron de código de biblioteca incorrecto. Porque lo más probable es que hagas lo que yo hago: usar las bibliotecas fuera de la aplicación con la que sus creadores han soñado.

Y eso los romperá. Y no es su culpa, no es tu culpa. Es solo: bibliotecas.

Son realmente útiles y, por supuesto, los uso mucho, pero desconfío de ellos. Y tengo una buena razón para eso. La mayoría de las personas que escriben en el código de la biblioteca no tienen tanta experiencia como yo. La mayoría de las personas que hicieron eso eran solo estudiantes en la universidad y esa cosa era solo una forma de hacerse un nombre. El código es principalmente de personas con 3 a 5 años de experiencia en programación. La mayor parte.

Más tarde, por lo general, ya no funcionan en las bibliotecas. Trabajan en aplicaciones para corporaciones y nunca más vuelves a saber de ellas. Pero estás atrapado con sus bibliotecas. Una vez conocí a un tipo que escribió eso y lo contacté después de tener grandes problemas. “¿Realmente usas eso ?! Eso fue solo por un pasatiempo. ¡Debería haberlo quitado hace mucho tiempo! ”, Fue la respuesta.

Me costó un mes de trabajo. No confíes en las bibliotecas.

Hágalo usted mismo, si es importante. Simplemente NO tiene idea de quién está detrás de la mayoría del software que está utilizando. Y cuán descuidadas trabajan algunas de estas personas. Algunas bibliotecas que uso me ganaron mi respeto, mi profundo respeto profesional. Pero ese respeto tiene que ganarse, no lo doy gratis.

Y tú tampoco deberías.

Conoce tus herramientas. Aprende tu oficio. Hacer algoritmos Compita con las bibliotecas, si las supera, deséchelas o vea si puede ayudar a la base de código enviando su cambio. Si no aceptan, sabes qué tipo de biblioteca es esa.

Sácalos de tu código base. Hazlo tu mismo.

Es mejor retroceder con sutilezas que un producto defectuoso.

Lee el código de otras personas. Escribe tu propio código.

Pero tenga en cuenta que el 99% de las veces no debería escribir algoritmos usted mismo. Casi todos los algoritmos que puedas imaginar ya se han implementado en casi cualquier idioma que quieras nombrar.

La verdadera habilidad que un programador que trabaja necesita desarrollar no es comprender el funcionamiento interno de un algoritmo dado, sino la capacidad de analizar un problema y seleccionar los mejores algoritmos y estructuras de datos para resolverlo. Y de los dos, obtener la estructura de datos correcta es más importante que elegir el algoritmo correcto.

Ese es el tipo de pregunta que acabo de responder 🙂 Pero no me importa responder de nuevo.

Mira:

“Como la lógica de programación básica es la clave para materias más complejas en el proceso de aprendizaje de ingeniería y ciencias de la computación, recomendaría el libro: Cómo programar por Deitels.

Si desea comenzar con un lenguaje como Java, por ejemplo, comienzan desde el principio explicando todos los conceptos con términos y palabras que todos pueden entender. Mientras lee este libro, sentirá que el (los) autor (es) está (n) hablando con usted.

El libro comienza con algoritmos y algunos conceptos de ciencias de la computación y lenguajes de programación, y luego le enseñará el tema con más profundidad.

Estoy seguro de que tendrá un proceso exitoso de aprendizaje mientras lo lee.

En particular, este libro no es muy barato, pero (si no le importa) puede encontrarlo en versión PDF en Internet “.

Si tienes dudas, házmelo saber.

Práctica.

Un algoritmo es solo un conjunto de pasos que la computadora debe seguir para encontrar una solución a un problema. Piensa en algunos problemas y en cómo los resolverías.

A menudo, los algoritmos que escribes serán similares a los que ya existen, por lo que es útil saber cuáles están disponibles. Una clase o libro de estructuras de datos y algoritmos puede ayudar aquí. Gráficos y árboles son buenos para saber.

Piense en algunos de los algoritmos que conoce y cómo funcionan. Piensa en cómo sumas números, multiplicas números o divides números. Piense en cómo encontraría la página 947 en un libro enorme abriendo el libro, diciendo “esa página de números es demasiado alta”, y abriendo el libro entre el principio y dónde se encuentra ahora.

Piense en los algoritmos de clasificación y cómo funcionan. Algunos de ellos colocarán una cosa cada vez a través del código, y otros tratarán de dividir el trabajo en partes.