- Julio César utilizó con mucho éxito el principio de “divide y vencerás” hace más de 2000 años. Hoy utilizo el mismo principio para atacar un proyecto de programación grande al dividirlo en partes más pequeñas y simples. Esto es muy difícil de transmitir a los estudiantes.
- Documento a medida que avanza. Decida lo que se supone que debe hacer cada función, escriba un comentario de encabezado con sus entradas y salidas y, a continuación, escriba el código real. Esto es aún más difícil de comunicar a los estudiantes. Hecho correctamente, le permite razonar sobre el problema y su solución en varios niveles. Algo como esto:
- Bien, el programa principal necesita leer la entrada, procesarla y dar salida a las respuestas. Así que escribe el programa principal como una serie de llamadas a funciones. Las funciones en sí son solo apéndices en este punto. Pero puedes definir la interfaz de cada función. Por ejemplo, aquí hay una función que lee un archivo y coloca esos datos en alguna estructura de datos (como una matriz). Devuelve un puntero a esa estructura o un puntero NULO si ha llegado al final del archivo. Ahora su programa principal solo tiene que hacer un bucle (llamar a las funciones de lectura, proceso y salida) hasta que la función de lectura devuelva NULL.
- La función de proceso toma una matriz como entrada y produce algo como salida. A menudo sucede que cada elemento de la matriz se puede tratar por separado. Entonces, cuando es hora de escribir la función, lo más probable es que tenga un bucle que se repita a través de todos los elementos de la matriz. Para cada uno, llame a una función que procesa ese elemento. Asegúrese de que el bucle funcione, luego escriba la función que procesa un elemento.
- Sigue haciendo esto. En cada nivel, escriba el código como si estuviera seguro de que las funciones a las que llama (que aún no ha escrito (aún son apéndices en este punto) funcionarán correctamente (esto a veces se denomina “programación con ilusiones”). Asegúrate de que todo funcione a ese nivel. Luego baja un nivel.
¿Cuáles son las lecciones más valiosas que ha aprendido como programador en el campo de la programación?
Related Content
¿Cuáles son las 15 mejores cosas que uno debe experimentar en su vida?
Los cambios radicales en la vida son difíciles de aceptar. ¿Cómo se aceptan tales cambios?
¿Por qué tendemos a arrepentirnos de los acontecimientos pasados?
¿Qué lecciones valiosas se pueden aprender del Bhagavad Gita?
Estas son, obviamente, generalizaciones generales, pero tienen razón en más casos que en errores.
Nunca se trata del lenguaje; Siempre se trata del algoritmo.
Se sobrestima el rendimiento y se subestima la simplicidad.
La mejor manera de manejar la concurrencia es evitarla.
No cree variables de espionaje, siempre nombrelas apropiadamente; Además, no confíes en las variables por sus nombres. Los nombres son engañosos.
Si tiene que escribir más código de mantenimiento que la característica en sí, eso significa que lo está haciendo mal.
No programes para el mejor de los casos.
Siempre use los recursos mínimos requeridos.
Si no ha pensado en los casos de falla, simplemente PARE. No lo codifiques todavía.
Desafortunadamente, tu primer código de trabajo va a ESTAR. Nunca tendrás la oportunidad de volver y cambiar de nuevo. Por lo tanto, trata de hacerlo correctamente (tanto como puedas) en el primer disparo.
Siempre es bueno tener un código que sepa cuándo funciona y cuándo no, que tener un código que funcione bien, pero ¿no sabe por qué?
Debes aprender esto: Divide y conquista el algoritmo – Wikipedia
Escribir código para resolver un problema es la parte fácil y escribir un código mantenible que resuelva el problema es más difícil.
Cómo desarrollar una habilidad y construir cosas. Aquí está el proceso:
- Elija una dirección o algo para hacer, posiblemente respalde esto con datos
- Haz un plan básico dada la información limitada que tengas
- Haz tu mejor esfuerzo para ejecutar, utilizando libros y recursos en línea a medida que avanzas
- Después de un período de esto, mire dónde se encuentra y, dado lo que aprendió, forme otro plan para el siguiente paso / fase de desarrollo, o cambie de marcha y cambie de dirección
Elija una dirección u objetivo general, luego ingrese al plan, ejecute y analice el ciclo.
Repita este proceso una y otra vez y desarrollará tres habilidades:
- Habilidades de programación holística en el mundo real (o cualquier habilidad que persigas)
- Capacidad arquitectónica / de planificación, la capacidad de secuenciar eventos de manera útil sobre la marcha
- Capacidad de aprendizaje rápido: la capacidad de desarmar recursos y profundizar en las cosas buenas muy rápidamente para obtener respuestas en el menor tiempo posible
No subestimes el enfoque eficiente sobre el trivial.
Cuando construyes algo, quieres construir lo mejor con lo que tienes. En programación, “mejor” a menudo significa ser eficiente. Es decir, haciendo las cosas rápido. Con el paso de los años, gradualmente aprende a apreciar la importancia de la eficiencia. Puede significar la diferencia entre un problema que se resuelve en unas pocas horas a unos pocos segundos. Traducido al mundo real, nunca doy por sentado lo que pueden hacer algunos ajustes en aras de la eficiencia.
La lección más valiosa que puede aprender como programador de computadoras es que no todos los problemas son problemas de programación.
More Interesting
¿Cuál fue la lección más grande de la historia que Hitler no pudo aprender?
¿Alguna vez has ayudado a alguien y lo has lamentado?
¿Qué lecciones de vida se deben aprender de la historia de The Pied Piper?
¿Cuándo puede India dar una lección a Pakistán?
¿Cuáles son las lecciones que aprendiste viajando?
¿Qué es lo que quieres responder hoy?
¿Cuál es la experiencia más cambiante que has tenido mientras viajabas?
¿Cuál es la cosa más loca que alguien podría hacer?
¿Todos los genios tienen éxito en la vida?
¿Qué es lo mejor que puedo hacer fuera de la universidad para tener la mejor vida posible?