Cargando



Abstracción en Python

En este tutorial estaremos viendo un poco sobre estos temas, en especial la definición de funciones y métodos que nos permitan escribir códigos que solo definiremos una sola vez, para dé esta forma ahorrarnos trabajo, porque ahí está la clave de todo desarrollo, es decir, no tener que escribir lo mismo una y otra vez dentro de un desarrollo.


jul 10 2014 10:46
Profesional
La abstracción en desarrollo de software es bastante importante ya que nos permite definir piezas de código que funcionan por su cuenta con complejidad compartida, muchas veces podremos utilizar funciones abstractas que aplican a tantos casos que podemos usarlas cuando queramos.

La importancia de no repetirse


Si vemos los programas que podamos haber escrito en Python siguiendo los tutoriales, vemos que son programas pequeños de máximo 15 a 20 líneas, sin embargo si quisiéramos escribir un programa mucho más grande sería un gran problema si no manejamos la abstracción. Recordemos que la virtud del programador es que no hace un trabajo innecesario, es decir no trabaja dos veces lo mismo ni se repite.

Veamos el siguiente código, este calcula los 10 primeros números de una secuencia Fibonacci:

fibs = [0, 1]
for i in range(8):
    fibs.append(fibs[-2] + fibs[-1])


Esto nos da como resultado efectivamente los 10 primeros números

python-abstraccion.jpg


Ahora que pasa si queremos que sea el usuario quien defina que en vez de ser 10 números sea una cantidad dinámica, pues re-acondicionamos nuestro código de la siguiente forma:

fibs = [0, 1]
num = input('How many Fibonacci numbers do you want? ')
for i in range(num-2):
    fibs.append(fibs[-2] + fibs[-1])
print fibs

Hasta aquí todo parece normal, no vemos ningún problema técnico, sin embargo hay un problema de filosofía de programación, por ejemplo si deseamos hacer esto en varias partes de un programa debemos escribir todas estas líneas una y otra vez, esto sería a lo que llamamos trabajo innecesario. Lo que llamamos abstracción es código más corto donde lo que pasa detrás está aislado, hecho de forma que funcione en cualquier parte, que solo nos preocupemos de obtener lo necesario para nuestras condiciones, una forma más abstracta de ver los códigos anteriores sería esta:

num = input('How many numbers do you want? ')
print fibs(num)


Fijémonos que es algo directo totalmente, pedimos por input cuantos números quiere el usuario, luego imprimimos un resultado, siendo lo que pasa que hemos definido una función fibs en alguna otra parte que nos permite invocarla cuando queramos, evitando la necesidad de hacer el bucle de cálculo una y otra vez, haciendo nuestro programa más legible y menos complejo.

La legibilidad lo es todo cuando estamos desarrollando un programa grande, el manejo de los recursos del sistema y la eficiencia también son importantes, pero como mejorar un programa si no lo entendemos al leerlo, por ejemplo este código:

page = download_page()
freqs = compute_frequencies(page)
for word, freq in freqs:
    print word, freq


Al leerlo sabemos que hace y que debe devolver, esto es la abstracción en su estado más puro, el cómo funcionen los métodos y funciones en este punto no nos interesa, ahora si la eficiencia y el manejo de recursos se torna problemático, simplemente se trabaja sobre la función y el programa no sería afectado, por lo que solo trabajaríamos una vez.
Esto es todo por este tutorial, nos queda material para seguir pensando y mejorar nuestra mentalidad de programador, de forma que podamos abstraer nuestro código y trabajar de manera mucho más eficiente.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X