Cercetătorii în domeniul IT au o lungă istorie în a împrumuta de la natură idei, cum ar fi cea privind evoluţia. Când vine vorba despre optimizarea softului, în ultimii 5-6 ani s-a dezvoltat o foarte interesantă abordare, bazată pe idei evoluţioniste, care ar putea aduce beneficii incalculabile industriei de profil şi, până la urmă, consumatorilor. Am numit-o "ameliorare genetică".



Ameliorarea genetică (eng. genetic improvement) presupune crearea unui "programator" automat (în fapt, un soft. n.tr.) care să poată gestiona codul sursă al unei aplicaţii prin metoda "încercare şi eroare", în scopul eficientizării aplicaţiei. Asta poate presupune mutarea liniilor de cod, ştergerea ori includerea de noi linii de cod; cam ce face în mod obişnuit un programator uman. Fiecare modificare este apoi testată pe baza unor criterii pentru a determina dacă noua versiune de cod reprezintă o variantă îmbunătăţită a celei originale. În fapt, este vorba despre modificarea minoră a unui software, în scopul îmbunătăţii acestuia.

 

 

Beneficiile

Aceste modificări pot aduce o serie de beneficii caracteristicilor funcţionale ale softului. Se poate creşte viteza de lucru a softului, de exemplu, ori se pot elimina "bugurile" (erorile de programare). De asemenea, se poate transplanta un software vechi pe un nou hardware.

Dar potenţialul este uriaş. Pentru că "ameliorarea genetică" acţionează asupra codului sursă, se pot perfecţiona, de asemenea, şi caracteristicile non-funcţionale ale softului. Aceste caracteristici se referă, de pildă, la lărgimea de bandă ori energia necesare softului. Acestea sunt chestiuni dificile pentru programatorul uman, pentru care oricum principala provocare este crearea unei aplicaţii care să funcţioneze corect.

Am fost deja martorii unor exemple de "ameliorare genetică", deşi deocamdată acestea s-au manifestat în interiorul universităţilor.

Un bun exemplu datează din 2009, când un "programator" automat creat de University of New Mexico şi University of Virginia a rezolvat 55 dintre cele 105 buguri existente într-o gamă largă de aplicaţii, de la media playere la un joc Tetris. Pentru această realizare s-a primit Premiul Gold Humie, care se acordă pentru realizări în domeniul calculului evoluţionist şi genetic.

În anul următor, University College London a supravegheat două proiecte de cercetare care au demonstrat potenţialul "programatorilor" automaţi. Primul s-a bazat pe un program de ameliorare genetică ce a reuşit să crească viteza de rulare a unui program de 50.000 de linii de cod de 70 de ori.

Al doilea a executat primul transplant complet a unei bucăţi de software într-un software mai mare, inserând un soft de traducere (Babel) într-un soft de mesagerie instant (Pidgin).


Natura şi computerele

Pentru a înţelege dimensiunea oportunităţilor existente, trebuie să înţelegem că softul reprezintă un material ingineresc unic. În alte domenii ale ingineriei, cum ar fi ingineria mecanică ori cea electrică, poţi construi un model de calcul înainte de a crea produsul final, întrucât îţi permite să-ţi lărgeşti cunoaşterea şi să testezi un anume design. Pe de altă parte, softul este propriul său model. Un model de calcul al softului este tot un soft. Este o reprezentare fidelă a produsului final, care maximizează abilitatea optimizării prin intermediul unui programator automat.

Aşa cum am afirmat şi la începutul articolului, există o bogată tradiţie în ce priveşte inspirarea din natură a cercetătorilor în domeniul IT. Natura a fost sursă de inspiraţie pentru algoritmii genetici, de exemplu, care caută prin milioane de posibile răspunsuri la o problemă reală, pentru a-l identifica pe cel mai bun. Exemplele includ proiectarea unei reţele de distribuţie a unor bunuri sau perfecţionarea proiectului unui motor.

Deşi metafora evoluţiei a devenit un reper important în acest context, algoritmii genetici au avut o serie de succese, producând rezultate care sunt comparabile cu cele ale omului ori chiar mai bune.

Evoluţia a inspirat, de asemenea, programarea genetică, care încearcă să construiască programe de la zero, pe baza unor seturi mici de instrucţiuni. Are însă limite. Una dintre principalele critici este aceea că nu reuşeşte să creeze nici măcar tipul de program de aşteptat a fi scris de un student în primul an. Aşadar, nu va putea ajunge la sistemele software care constituie baza unei multinaţionale de mari dimensiuni.

"Ameliorarea genetică" este o deviaţie interesantă de la această disciplină (programarea genetică). În loc să încerce să rescrie întregul program de la zero, modifică mici bucăţi de cod. Şi nu trebuie să se rezume doar la asta. Exemplul Babel-Pdgin, invocat mai sus, arată că poate fi extins la transplantarea unui software într-un alt program, similar modului în care un chirurg mută un organ de la donor la primitor.

Acesta este un "memento" că scopul general este ingineria software automată. Orice ne-ar putea învăţa natura pentru a putea dezvolta acest  nou domeniu de cercetare, trebuie să luăm cu ambele mâine.


Traducere după how-computers-are-learning-to-make-human-software-work-more-efficiently

Write comments...
symbols left.
Ești vizitator ( Sign Up ? )
ori postează ca „vizitator”
Loading comment... The comment will be refreshed after 00:00.

Be the first to comment.