Екстракт ума једног студента информатике - Вол. 2

17:4
Категорија: Програмерска секција
6. фебруар 2012. године

Текст који читате намијењен је вама, будућим програмерима, као савјет да разумијете и позитивне стране infinite loop-а. Озбиљно. Не шалим се. Тако ми Кода.

Slika

Кад кажем infinite loop, заправо мислим на петљу намијерно или случајно креирану тако да се код из њеног кодног сегмента извршава бесконачно. Наиме, сваки оперативни систем базиран је на некој врсти бесконачне петље, јер поента активног оперативног система и јесте у томе да је он активан бесконачно (односно до тренутка прекида напајања). Да нема те фамозне бесконачне петље уграђене у кернел оперативног система, кулер рачунара вјероватно не би зујао уопште, јер би се код кернела извршио у коначном времену (у пракси вјероватно много прије него што би корисник и схватио да је рачунар укључен).

Ако се занемари чињеница да се читав оперативни систем извршава у склопу бесконачне петље долази се до интригантног питања о томе како уопште раде кориснички програми, као што је браузер у ком неко можда чита овај чланак. Занимљиво, опет, већина апликативних програма базирана је на, занимљиво, infinite loop-у, јер програм чека, у неком виду бесконачне петље, на унос корисника. Да бесконачне петље нема, корисничке програме би било далеко теже, можда и немогуће, испрограмирати.

Наравно, ако се уђе дубље у тематику infinite loop-а, можда се и наслути питање о томе како сервер на ком је меморисан овај чланак зна ком кориснику и када да пошаље одговарајуће податке. Интересантно, сервер ослушкује HTTP захтјеве на порту 80 (или евентуално неком другом HTTP порту) вртећи се, може се наслутити, у бесконачној петљи. Када се неки корисник повеже на сервер, петља се не прекида већ се генерише нова нит на серверу за датог корисника, док петља прелази у сљедећу итерацију. Овај процес теоретски траје бесконачно дуго.

Тематика може и да се продуби, но није циљ да се будући програмери уморе анализом бесконачних петљи, већ више да се подсјете на чињеницу да сваки програмер има другачији приступ рјешавању проблема и да не постоје исправна и неисправна рјешења, већ само боља и лошија рјешења. Чак и једноставан, наизглед бесмислен, концепт може да буде генијалан трик у стварању неког новог алгоритма. Свако може да буде програмер, сви имају потенцијал да дођу до рјешења, неко у полиномском, неко у експоненцијалном, а неко, нажалост, у бесконачном времену. Добри програмери су елита. Срећом, као програмер, имао сам прилику да радим с оним бољим. Песимистично орјентисан чланак једног таквог на ову тему можете прочитати овдје.

Аутор:

По секцијама