Menú
Borja Prieto

Soluciones evolutivas

¿Cuál es la mejor manera de desarrollar un sistema operativo o una aplicación de gestión de clientes? Crear soluciones de software con código cerrado es como intentar crear un caballo con un comité de diseño.

¿Cual es la manera de diseñar un animal que sea a la vez bello y capaz de transportar a una persona a su lomo a decenas de kilómetros y a gran velocidad? Puedes encargarle el diseño a un comité, que te entregará un camello. O puedes utilizar la selección natural: coges un animalillo del tamaño de un perro con cuatro dedos en cada pata y seleccionas los descendientes capaces de correr más rápido y más lejos, hasta que sesenta millones de años después tienes un caballo.

¿Cuál es la manera diseñar una sala de conciertos con la mejor acústica o una red de satélites de telecomunicaciones con el mínimo de problemas? Desde los años 70 del siglo pasado, existe una técnica que se conoce como algoritmo genético, que proporciona soluciones extraordinariamente buenas a problemas como éstos. Básicamente, consiste en generar un conjunto de soluciones posibles, seleccionar de entre ellas las mejores y mutarlas y combinarlas entre sí para producir un nuevo conjunto de soluciones, al que se le vuelve a aplicar la técnica de forma iterativa hasta encontrar la solución mejor.

A estos algoritmos se les llama "genéticos" porque su funcionamiento está inspirado en la actuación de la selección natural sobre el material genético. En situaciones en las que hay multitud de variables desconocidas, y que además cambian continuamente, la forma más inteligente de resolver un problema es lanzar muchas soluciones, probarlas, descartar las peores y refinar el resto, hasta obtener un óptimo.

Así que podemos preguntarnos ¿Cuál es la mejor manera de desarrollar un sistema operativo o una aplicación de gestión de clientes? Crear soluciones de software con código cerrado es como intentar crear un caballo con un comité de diseño. Ineficaz y, a partir de cierto umbral de complejidad, imposible. Pero si optamos por el software libre, tenemos a nuestra disposición las decenas de miles de proyectos.

Si uno visita SourceForge puede ver decenas de miles de proyectos de software que responden a infinidad de necesidades diferentes. La mayoría de esos proyectos no tiene futuro, y desaparecerán en pocos años. Lo cual sucede también con el software cerrado (¿Alguien se acuerda de Wordstar?), pero hay una diferencia en los proyectos que usan software libre: éstos pueden aprovecharse del trabajo realizado por otros. Ya no hay que crear cada proyecto partiendo de cero.

Este proceso "cuasievolutivo" es el que está proporcionando al software libre la capacidad de desarrollar aplicaciones de mejor calidad que las que producen las empresas que siguen creyendo que ocultar su código es una manera de protegerse frente a la competencia.

En Tecnociencia

    0
    comentarios