Hace algunos años le hice esta pregunta a uno de mis maestros de CS. Aquí está la respuesta que obtuve:
“Codifique una biblioteca en C / C ++ que contenga los algoritmos que desee. ¿Conocer un algoritmo de clasificación divertido? ¡Codifícalo! ¿Quieres hacer vudú elegante basado en listas vinculadas? ¡Codifícalo! Crecerá como crecerás como programador. Podrá usarlo cuando lo desee, ya que solo contendrá código de su propia creación “.
Hice lo que dijo y durante los 3 años siguientes lo usé para muchos proyectos universitarios, en algún momento reduje significativamente el tiempo de desarrollo: mientras que los otros tuvieron que reescribir todo el código que tenían de proyectos anteriores y luego depurarlo nuevamente. porque los idiomas cambiaron, solo tuve que cargar mi biblioteca y usarla. Y ningún maestro podría objetar porque:
- ¿Cómo funciona el algoritmo SCC de Tarjan?
- Dado un componente fuertemente conectado, ¿puede determinar en tiempo lineal si la eliminación de un solo nodo convierte el SCC en un gráfico acíclico dirigido?
- ¿Cuál es el algoritmo utilizado para convertir cadenas en enteros?
- ¿Qué se entiende por estructura de datos?
- ¿Alguien puede ayudarme a encontrar el máximo divisor común entre dos enteros en Java?
- Todo fue MI código.
- la mayoría de las veces, la carga dinámica de funciones desde un dll no estaba explícitamente prohibida. Cuando fue así, pude usarlo como referencia para probar lo que tenía que codificar.
El único momento en que no pude fue porque el proyecto se centró en subprocesos múltiples y había escrito todo allí con un solo subproceso.
Así que aquí está mi consejo:
Comience a trabajar en su algoritmo personal / biblioteca de estructuras. ¡Hazlo en C / C ++ / Rust (cualquier cosa que se pueda empaquetar como .so / .dll), lo que quieras y sigue usándolo y mejorándolo!
Advertencia: ¡piense en multihilo lo antes posible!