Crear un algoritmo simple me lleva horas, ¿cómo puedo ser más rápido?

Puede codificar mucho más rápido, si busca inspiración y ayuda en línea y tal vez encuentre algunos fragmentos que pueda codificar.

No digo que solo copie otros, sino que aprender de pequeños fragmentos aquí y allá puede mejorar enormemente su velocidad.

Asegúrese de que su entorno de codificación esté bien ajustado para el rendimiento

Personalmente uso Sublime Text 2 para codificar y allí uso varios complementos / extensiones para hacerme la vida más fácil.

Uso Emmet para la autoexpansión de abreviaturas.

Aquí hay un ejemplo de lo que hace emmet cuando presiona la tecla tab o CTRL + e.

Linting sobre la marcha también puede reducir la cantidad de errores y errores que comete y, por lo tanto, mejorar su velocidad. Esto también te ayudará a evitar un código más feo. Busque un complemento de linting para su lenguaje de programación que funcione con su entorno de codificación.

Tome un curso de refactorización, esto puede ayudarlo con el “código más largo”.

La refactorización de código es el proceso de reestructurar el código de computadora existente, cambiar la factorización, sin cambiar su comportamiento externo. La refactorización mejora los atributos no funcionales del software. (Refactorización de código – Wikipedia)

Si aprende a escribir código más corto, tiene varios beneficios. Obviamente, escribirá el código más rápido, ya que no requiere tantos caracteres. Los archivos ocuparán menos espacio y, por lo tanto, se transferirán y cargarán más rápido, y ocuparán menos memoria.

¿Mi sugerencia? Sigue escribiendo código largo y feo 😀

Desde mi punto de vista, es mucho más valioso, importante y perspicaz si puedes resolver un problema desde la parte superior de tu cabeza.

Es un placer increíble descubrir un problema con tu propio ingenio y trucos. Heck, mis cosas favoritas para codificar en un nuevo lenguaje de programación que aprendo son versiones largas y desagradables del algoritmo, como el Mejor Denominador Común.

No te preocupes por escribir algoritmos feos si resuelves algo. El código se puede hacer elegante mucho más fácil que resolver un problema complejo. Como dices, alguien ya hizo una versión mejor. Céntrate en que el resto de tu código esté limpio.

Buscar en Google es realmente fácil, pero demasiados, demasiados, lo usan como una muleta para escribir cosas que no entienden. Entonces, si desangra su código a mano, al menos al principio, lo comprenderá mejor. Incluso si lo sustituyes por algo mejor, lo encuentras en línea. Aprenderás más también.

¡Esto no quiere decir memorizar todo! Buscar en Google por qué una parte específica de su programa no funciona es útil después de haberlo intentado honestamente. Además de la sintaxis y los errores en el idioma que pueda encontrar.

¿Cuál es la fascinación con los algoritmos, especialmente aquellos que se han resuelto repetidamente y para los cuales hay funciones de biblioteca perfectamente útiles para casi todos los principales lenguajes de programación? Los algoritmos son herramientas útiles si los necesita, pero centrarme en aprenderlos simplemente por aprenderlos me parece una pérdida de tiempo.

Tengo problemas para recordar nombres. Ese era un problema grave cuando estaba haciendo pruebas en la clase de geometría en la escuela secundaria, porque no podía usar muchos teoremas que conocía, pero no podía nombrar. Mis pruebas fueron largas y complicadas, porque tuve que recurrir a cosas mucho más simples que podía recordar y no solo encontrar la prueba del problema en cuestión, sino que también tuve que probar cada uno de los teoremas cuyos nombres no podía recordar. Obtuve buenas calificaciones en los problemas que pude resolver en el tiempo asignado al examen, porque sabía lo que estaba haciendo, pero a menudo obtuve malas calificaciones en el examen porque me tomó mucho tiempo resolver un problema.

Si hubiera podido recordar esos nombres o si simplemente hubiera dicho algo como “Sé que hay un teorema que me permite hacer esta transformación, pero no puedo recordar su nombre”, mis pruebas habrían sido mucho más cortas y yo Hubiera sido mejor. Me distrajo la necesidad de reinventar el teorema.

Mi punto es que el enfoque aquí está en lo incorrecto. Los algoritmos son como esos teoremas: son atajos que facilitan la resolución del problema real. Sí, hay programadores cuyo trabajo es escribir implementaciones de algoritmos, y la mayoría de nosotros tenemos que implementar algunos de ellos en ocasiones simplemente porque no hay uno disponible, pero la mayoría de las veces, simplemente somos usuarios de un Método de biblioteca que implementa el algoritmo. Lo que realmente estamos haciendo es crear un programa, una aplicación, un sistema o lo que sea, para resolver un problema o abordar una oportunidad.

La mejor manera de mejorar como programador es hacerlo mucho. Aprender herramientas como algoritmos, estructuras de datos, incluso idiomas, es útil, pero siempre debe estar en el contexto de tratar de ser un mejor programador. Si no puede entender la idea o el problema de alguien, no puede encontrar una solución o no puede implementarla, todo el conocimiento de las herramientas del oficio no tiene valor.

Practica, practica y practica más. Ser un buen programador es una cuestión de codificar muchas cosas diferentes por una buena cantidad de tiempo. Hablando como el final de la generación de los baby boomers, y teniendo cierta aptitud para la programación, me llevó años ser realmente bueno. Incluso entonces, siempre hay alguna técnica, un nuevo patrón para descubrir y aplicar. He estado aprendiendo durante toda mi carrera (más de 35 años). Las generaciones más jóvenes probablemente lo aprenderán más rápido, ya que están expuestas a la tecnología desde el momento en que pueden gatear, y tienen el beneficio de las experiencias de nuestras generaciones para aprender, pero es una habilidad aprendida. No se apresure, no se desanime y aprenda de los ejemplos que encuentre. Realmente no tienes que reinventar la rueda. Escriba su código, mire otro código, pida prestado sus ideas en el siguiente intento. Eventualmente, la codificación “buena” que ves se infiltrará en tus propios hábitos.

Encuentre un sitio de práctica de codificación y practique, practique, practique.

¿Cuáles son algunos buenos sitios de competencia / práctica de codificación?

Cuando compare su respuesta con una más bonita y más corta, tómese el tiempo para aprender por qué la suya no es tan bonita o corta.

Encuentre un curso de algoritmos para comprender cómo funcionan más algoritmos y las ideas que se utilizaron para crearlos. Ejerza la parte analítica de su mente que puede visualizar una buena solución y luego trabaje hacia atrás para expresarla en código. Piense en lo que realmente quiere antes de saltar al código (aunque a veces experimentar con el código es la única forma de obtener información sobre la solución).

Aquí hay una sugerencia simple y efectiva:

Busque en la web referencias de implementaciones.

No debe reinventar algoritmos, no hay razón para hacerlo. Debes entenderlos, saber cuándo y por qué usarlos; a veces las mejoramos.

No hay vergüenza en buscar referencias. Es su mayor fortaleza ya que el desarrollador es la capacidad de encontrar rápidamente información para hacer el trabajo de manera efectiva.

Quora User tiene razón, lo que hace que alguien sea un buen programador no es su habilidad para reinventar la rueda, sino su habilidad para encontrar soluciones (preferiblemente elegantes) a un conjunto de problemas.

NO importa si encuentra parte o la totalidad de la solución usted mismo o en stackoverflow o w / e, siempre y cuando encuentre una BUENA solución de manera oportuna, piense fuera de la caja.

Editar: Por supuesto, debe comprender qué es lo que está haciendo, simplemente copiando fragmentos de código desde aquí y no es una buena idea, ya que no sabe qué más puede estar haciendo el código.

More Interesting

¿Es posible aproximar el comportamiento asintótico de un algoritmo dado su tiempo de ejecución?

¿Cómo se ordenan 10 números en orden creciente?

Con la complejidad de O (n) u O (1) u O (log n), ¿cómo encuentro cuándo se romperá una bola rompible cuando se lance desde un piso de un edificio que tiene más de 100 pisos?

¿Qué significa esta notación sigma?

Cómo visualizar algunas estructuras de datos básicos y algoritmos

¿Qué estructura de datos usaría para diseñar un programa de planificación de producción?

¿En qué paso de la prueba del algoritmo de Dijkstra utilizamos el hecho crucial de que los bordes no son negativos?

¿Pueden los algoritmos de aprendizaje automático predecir el precio de las acciones en los mercados de valores?

¿Cuál será el código C si quiero imprimir todos los elementos ingresados ​​en orden inverso sin usar matrices?

¿Cuál es un buen enfoque para resolver este problema Problema - 118D - Codeforces?

¿Dónde se utilizan los algoritmos criptográficos en nuestras aplicaciones diarias?

Cómo escribir un programa en C para implementar un algoritmo de planificación de prioridades, junto con la visualización del diagrama de Gantt

Cómo escribir una matriz de distancia para el algoritmo Bellman Ford

Cómo verificar si un cuadrado dibujado está cerrado (tiene los 4 lados dibujados)

En el software de servidor web, ¿alguna vez se prefiere la ordenación en lugar de la clasificación rápida, porque un ataque DoS podría desencadenar el comportamiento de clasificación rápida en el peor de los casos?