In the summer of 1997, NASA's Pathfinder spacecraft landed on the surface of Mars, and began transmitting incredible, iconic images back to Earth. But several days in, something went terribly wrong. The transmissions stopped. Pathfinder was, in effect, procrastinating: keeping itself fully occupied but failing to do its most important work.
1997 թվականի ամռանը NASA-յի «Փաթֆայնդեր» օդանավը վայրէջք կատարեց Մարսի մակերևույթին և սկսեց Երկիր հեռարձակել զարմանալի, աշխարհահռչակ նկարներ։ Մի քանի օր հետո, սակայն, ինչ-որ բան խափանվեց։ Հեռարձակումը դադարեց։ «Փաթֆայնդերը», իրականում, գլուխ էր պահում՝ ինքն իրեն ամեն վայրկյան զբաղեցնելով, բայց ավարտին չհասցնելով ամենակարևորը։
What was going on? There was a bug, it turned out, in its scheduler.
Ի՞նչ էր պատահել: Պարզվեց, որ խնդիրների հերթագրիչն էր խափանվել:
Every operating system has something called the scheduler that tells the CPU how long to work on each task before switching, and what to switch to. Done right, computers move so fluidly between their various responsibilities, they give the illusion of doing everything simultaneously. But we all know what happens when things go wrong.
Յուրաքանչյուր օպերատիվ համակարգ ունի խնդիրների հերթագրիչ. այն հրահանգում է կենտրոնական համակարգին ինչքան ժամանակ աշխատել մի խնդրի վրա մյուսին անցնելուց առաջ, և ինչ նոր առաջադրանք սկսել։ Սահուն աշխատանքի դեպքում, համակարգիչները այնքան արագ են կատարում տարբեր խնդիրները, որ ստեղծվում է այն տպավորությունը, թե դրանք միաժամանակ են անում ամեն ինչ: Բայց մենք բոլորս գիտենք` ինչ է լինում, երբ ինչ-որ բան իր հունով չի գնում:
This should give us, if nothing else, some measure of consolation. Even computers get overwhelmed sometimes.
Սա պետք է մեզ, ամենավատ դեպքում, որոշ չափով հույս տա: Անգամ համակարգիչները երբեմն ընկճված են լինում:
Maybe learning about the computer science of scheduling can give us some ideas about our own human struggles with time.
Գուցե, հերթագրման ինֆորմատիկայի մասին սովորելը մեզ որոշակի պատկերացում կտա մարդկանց` ժամանակի հետ պայքարի մասին:
One of the first insights is that all the time you spend prioritizing your work is time you aren't spending doing it. For instance, let's say when you check your inbox, you scan all the messages, choosing which is the most important. Once you've dealt with that one, you repeat. Seems sensible, but there's a problem here.
Առաջին եզրակացությունը այն է, որ աշխատանքը հերթագրելու համար օգտագործված ժամանակը կարող էիք օգտագործել աշխատելու համար: Օրինակ` ձեր էլ. փոստարկղը. դուք աչքի եք անցկացնում բոլոր հաղորդակցությունները, ընտրելով դրանք, որոնք ամենակարևորն են: Այս մեկը անելուց հետո, կանցնեք մյուսին: Խելամիտ որոշում է, բայց այստեղ մի խոչընդոտ կա:
This is what's known as a quadratic-time algorithm. With an inbox that's twice as full, these passes will take twice as long and you'll need to do twice as many of them! This means four times the work.
Սա կոչվում է քառաչափ ժամանակի ալգորիթմ: Եթե ձեր փոստարկղը երկու անգամ մեծ լինի, այս անցումները երկու անգամ երկար կտևեն, դուք պետք է երկու անգամ ավելի շատ աշխատեք: Այսինքն` չորս անգամ ավելին աշխատել:
The programmers of the operating system Linux encountered a similar problem in 2003. Linux would rank every single one of its tasks in order of importance, and sometimes spent more time ranking tasks than doing them. The programmers’ counterintuitive solution was to replace this full ranking with a limited number of priority “buckets.” The system was less precise about what to do next but more than made up for it by spending more time making progress.
Լինուքս օպերատիվ համակարգի ծրագրավորողները այս խնդրին բախվել են 2003 թվականին: Լինուքսը հերթագրում էր իր առաջադրանքներից յուրաքանչյուրը ըստ կարևորության, երբեմն ավելի շատ ժամանակ էր ծախսում դրանք դասավորելով, քան կատարելով: Ծրագրավորողների անտրամաբանական լուծումը այս ամբողջ հերթագրումը փոխարինելն էր սահմանափակ թվով «հույժ կարևոր» արկղերով: Համակարգը ավելի քիչ էր կենտրոնանում հաջորդ քայլի վրա, և զբաղվում էր ավելի արդյունավետ աշխատանքով:
So with your emails, insisting on always doing the very most important thing first could lead to a meltdown. Waking up to an inbox three times fuller than normal could take nine times longer to clear. You’d be better off replying in chronological order, or even at random! Surprisingly, sometimes giving up on doing things in the perfect order may be the key to getting them done.
Այսպիսով, ձեր փոստարկղը ստուգելիս, անընդհատ կարևոր բաների վրա կենտրոնանալը կարող է հանգեցնել ճգնաժամի: Ամեն օր միջինում երեք անգամ ավելի լիքը փոստարկղով արթնանալը կխլի ինը անգամ շատ ժամանակ մաքրելու համար: Ավելի լավ է քրոնոլոգիական հերթականությամբ պատասխանեք կամ անգամ խառը կերպով: Զարմանալի է, որ երբեմն ոչ կատարյալ հերթականությամբ առաջադրանքներ կատարելը կարող է լինել դրանք հաջողությամբ վերջացնելու բանալին:
Another insight that emerges from computer scheduling has to do with one of the most prevalent features of modern life: interruptions.
Մի այլ եզրակացություն, որին հանգեցնում է համակարգչային հերթագրումը, ժամանակակից կյանքի ամենագերակշիռ առանձնահատկություններից է` խոչընդոտները:
When a computer goes from one task to another, it has to do what's called a context switch, bookmarking its place in one task, moving old data out of its memory and new data in. Each of these actions comes at a cost.
Երբ համակարգիչը մի խնդրից անցում է կատարում մյուսին, այն, այսպես կոչված, համատեքստային փոփոխություն է կատարում` կենտրոնանալով մի որոշակի խնդրի վրա, իր հիշողությունից ջնջելով հին տեղեկությունը և կցելով նորը: Այս գործողություններից յուրաքանչյուրը, թեև, նրա վրա թանկ է նստում:
The insight here is that there’s a fundamental tradeoff between productivity and responsiveness. Getting serious work done means minimizing context switches. But being responsive means reacting anytime something comes up. These two principles are fundamentally in tension.
Կարող ենք եզրակացնել, որ գոյություն ունի հիմնական փոխադարձ փոփոխություն արդյունավետության և պատրաստակամության միջև: Լուրջ աշխատանքով զբաղվելը նշանակում է նվազեցնել համատեքստային փոփոխությունները: Սակայն, պատրաստակամ լինելը արձագանքելն է այն պահին, երբ ինչ-որ բան պատահում է: Այս երկու սկզբունքերը լիովին հակասում են իրար:
Recognizing this tension allows us to decide where we want to strike that balance.
Այս հակասությունը մեզ հնարավորություն է տալիս որոշել` որտեղ պետք է հավասարակշռությունը սահմանենք:
The obvious solution is to minimize interruptions. The less obvious one is to group them. If no notification or email requires a response more urgently than once an hour, say, then that’s exactly how often you should check them. No more.
Ակնհայտ լուծումը կլինի նվազեցնել խոչընդոտները: Կարելի է նաև դրանք խմբավորել: Եթե ոչ մի հաղորդագրություն պատասխան չի պահանջում, ասենք, մոտակա մի ժամի ընթացքում, ապա, պետք է փոստարկղը ստուգել հենց ամեն մի ժամը մեկ: Ոչ ավելի հաճախ:
In computer science, this idea goes by the name of interrupt coalescing. Rather than dealing with things as they come up – Oh, the mouse was moved? A key was pressed? More of that file downloaded? – the system groups these interruptions together based on how long they can afford to wait.
Ինֆորմատիկայում այս գաղափարը կրում է խնդիրների խմբագրում անունը: Խնդիրները` իրենց առաջանալուն պես լուծելու փոխարեն... Օհ, մկնիկը շարժվեց: Ստեղնաշարին դիպան: Այդ ֆայլը սկսեց ներբեռնվել: ...համակարգը խմբավորում է այս խոչընդոտները` հիմնվելով այս փաստի վրա, թե ինչքան ժամանակ է դրանց հարկավոր:
In 2013, interrupt coalescing triggered a massive improvement in laptop battery life. This is because deferring interruptions lets a system check everything at once, then quickly re-enter a low-power state.
2013 թվականին խնդիրների խմբավորումը հանգեցրեց դյուրակիր համակարգիչների մարտկոցների աշխատանքի բարելավման: Խոչընդոտները հետաձգելը թույլ է տալիս համակարգչին ստուգել ամեն ինչ միաժամանակ, հետո արագ սահմանել էներգիա խնայող աշխատանքային ռեժիմ:
As with computers, so it is with us. Perhaps adopting a similar approach might allow us users to reclaim our own attention, and give us back one of the things that feels so rare in modern life: rest.
Սա և՛ համակարգիչների, և՛ մեր դեպքում: Միգուցե, նման մոտեցում որդեգրելը մեզ` օգտատերերիս, թույլ կտա սրել մեր ուշադրությունը, և մեզ կպարգևի ժամանակակից կյանքի ամենահազվադեպ շնորհներից մեկը` հանգիստը: