Cómo aplicar la técnica de estudio de fragmentación en la programación.

La programación es todo acerca de la fragmentación. De hecho, la palabra proviene de un artículo que utiliza fragmentos (de la teoría de la información) en psicología: Clásicos en la Historia de la Psicología – Miller (1956) (véase también The Magical Number Seven, Plus o Minus Two – Wikipedia).

La programación tiene que ver con desarrollar sistemas complejos utilizando cosas muy simples, como bits y funciones booleanas, y usar muchas de ellas para lograr el objetivo. Ahora, de acuerdo con ese artículo, los humanos tienen una capacidad de aproximadamente 2 o 3 bits (que no parece mucho), lo cual es ligeramente mejor que la reacción de lucha o huida, pero no mucho.

De todos modos, ya que estás haciendo la pregunta, sabes lo suficiente acerca de la fragmentación para estudiar. Programar es “enseñar la computadora a chunk”. Ahora, en la mayoría de los lenguajes de nivel superior, tomamos enteros y operaciones como la suma, y ​​expresiones más complejas que incluyen comparaciones, condicionales y bucles por sentado. Puede ser muy fácil escribir cientos de líneas de código, una tras otra, y hacer que ese código haga un trabajo razonable. Tal código es, sin embargo, inalcanzable. Mientras lo escribe, los trozos de hace media hora aún están frescos, pero un año más tarde vuelva al mismo código y tendrá que aprenderlo desde el principio para comprender lo que está haciendo.

Si escribe ese tipo de código, puede optar por refactorizarlo. Esto puede ser más eficiente que diseñarlo de arriba hacia abajo desde el principio. Solía ​​haber una pauta que las funciones deberían “encajar en la pantalla”, esto fue en los días de 25 líneas y 80 columnas, lo que probablemente sea demasiado “rápido”, pero a veces es necesario.

Incluso si no utiliza un lenguaje orientado a objetos, es importante comprender qué beneficios tiene la encapsulación y la ocultación de información. Esencialmente, son formas de fragmentación. Los contenedores genéricos son otro ejemplo.

Los desarrolladores de software por definición le dicen a la computadora cómo hacer algo cuando escriben un código. Contar es comunicarse. Pero en sistemas de cualquier tamaño, ese código también se puede comunicar a otros programadores, quizás después de que el programador original de una pieza específica ya no esté disponible para preguntar.

Por lo tanto, cuando observa una línea de código, debería ver aproximadamente de 5 a 9 términos. Menos está bien, pero (mucho) más de siete es curioso a menos que, por supuesto, sea muy repetitivo. Cuando miras una función, cada línea individualmente debería tener algún sentido, pero muchas más que la mágica número siete, y deberías hacerte preguntas.

Este es un ejemplo de un código Python (no mío, el curso se reinicia el próximo mes de mayo):

# Funciones GIVEN de https://class.coursera.org/algobioprogramming-001/wiki/textbook

# 1.2 (7)
def PatternCount (patrón, texto):
cuenta = 0 # variable de salida
para i en rango (len (Texto) -len (Patrón) +1):
si Texto [i: i + len (Patrón)] == Patrón:
cuenta = cuenta + 1
recuento de devoluciones

def CountDict (Texto, k):
Count = {}
para i en rango (len (Text) -k + 1):
Patrón = Texto [i: i + k]
Count [i] = PatternCount (Pattern, Text)
volver Conde

# 1.2 (10)
Definición de palabras frecuentes (Texto, k):
FrecuentesPatrones = []
Count = CountDict (Texto, k)
m = max (valores de cuenta ())
para i en cuenta:
si cuenta [i] == m:
FrequentPatterns.append (Texto [i: i + k])
FrequentPatternsNoDuplicates = remove_duplicates (FrequentPatterns)
volver FrequentPatternsNoDuplicates

Lo único que es un poco extraño es que el recuento en la línea 5 está en mayúsculas cuando no está en las líneas 12 y 21, pero tenga en cuenta que la línea 15 llama a la línea 4 y que la línea 21 llama a la línea 11 – y es ilegible (comparativamente ) el código podría ser si fuera una cosa después de la otra.

Mire cómo cada función tiene el mismo formato de la primera línea con sangría que es una asignación a un valor de cero o vacío, y regresa en la línea final, excepto en el caso final, donde se llama remove_duplicates (completarla es un ejercicio para la programación de biología y reunión : Bioinformática para principiantes – University of California, San Diego | Coursera y como sugerencia, mi solución toma 6 líneas, 3 de las cuales son repetitivo y las otras 3 tienen 4, 5 y 3 palabras en inglés (de las cuales ‘Palabra’ se repite 3 veces, y ‘in’ y ‘Result’ dos veces cada uno, así como dos puntos, un punto y paréntesis abiertos y de cierre).

Ya mencioné la codificación de arriba hacia abajo, y es una forma diferente de usar fragmentación. Esencialmente, cuando planea programar cualquier cosa que tarde más de un día, debe decidir qué subsistemas habrá. Pero enumerar 153 de ellos el día 1 es excesivo, incluso si el proyecto es enorme. En su lugar, forme una jerarquía con un número de fragmentos en ese rango mágico de alrededor de siete (probablemente menos sea mejor aquí, porque a veces también tendrá que tratar con más de un subsistema en una parte diferente de la jerarquía).

Por último, pero no menos importante, la programación suele ser una experiencia de aprendizaje, no solo cuando está empezando, sino también cuando necesita leer un manual o buscar en línea. Así que solo haga lo normal (lo que todo el mundo hace de forma natural, es útil si lo conoce y las técnicas de estudio relacionadas).