Как стать автором
Обновить

Комментарии 72

Конкурс «Объясни на пальцах v2.0» проходит с 1 по 24 июля 2009 года.

Блин, что ж Вы так поздно сообщили-то :(
Так целая ж неделя еще ;) — можно по странице в день писать, на каждый термин.

Кроме того, хотелось подкопить «объяснений», чтобы уважаемые хабралюди навели конструктивной критики и примерно имели представление, в каком ключе стоит (или наоборот — на стоит) рассуждать.
НЛО прилетело и опубликовало эту надпись здесь
Это почему это?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Я понял ход Ваших мыслей ;) — согласен, есть к чему придраться. Тем не менее — это было одно из наиболее корректных объяснений. Был еще такой вариант —
«Объявление в бане:
Товарищи, шаек* только 50.
Кому не хватает шайки, просьба оставаться у входа и ждать ее освобождения.
Администрация (Semaphore)
*- широкое и низкое ведро с ручками по бокам»
НЛО прилетело и опубликовало эту надпись здесь
Столики в макдональдсе в обеденный перерыв — гораздо более жизненный пример :)
Этот вариант превосходит бредятину с хоккеистами во всех отношениях.
Просто и понятно.
Арбитр, как и семафор, следит чтобы доступ к объекту синхронизации (допустим это — шайба) получили не более чем N потоков. В данном случае — не более 5 хоккеистов. Если шестой полезет на площадку его не пустят.

Хотя вы отчасти правы — в данном случае «потоки» все разные, и кто-то к шайбе доступ вообще получить не должен… Зато какой яркий, живой пример, а?

Вобщем действительно корректный и в то же время юморной пример придумать непросто. Вся надежда на Хабр ;)
НЛО прилетело и опубликовало эту надпись здесь
Тогда поехали! © :)
*машет рукой и ставит плюсики*
НЛО прилетело и опубликовало эту надпись здесь
а вы лотерейный билетик-то купите ;)
Ой, вы всегда такой зануда? Отличный пример.
НЛО прилетело и опубликовало эту надпись здесь
Уже видел, понравилось. Кстати, вотименно это пришло мне в голову когда я придумывал свои варианты «объяснений»:

«Multitasking, бабушка, это твой кухонный комбайн — он может сначала почистить, потом порезать, а потом сварить. А Multithreading, бабушка, это твоя газовая плита, которая может готовить 4 блюда одновременно.»
Мультитаскинг, я бы сказал, это когда на плите одна конфорка, и ты варишь на ней борщ (варить 3 часа), но промежду делом обжариваешь на ней же овощи для борща и жаришь яйца на завтрак внуку, отставляя кастрюлю в сторону.

Или домохозяйка, которая кормит младенца с ложечки, вытирает сопли ребёнку постарше, помешивает суп и штопает портки.

Т.е. процессор выполняет несколько задач, переключаясь между ними, но в один момент времени выполняется только один процесс.

А комбайн из вашего примера — это выполнение процессов по очереди: сперва заархивировал файлик, потом отформатировал дискетку, затем скопировал файлик на дискетку.
В идеале я бы хотел видеть один пример на многозадачность и многопоточность. Или на понятия процесса и потока, если хотите. То мы переключаемся между задачами, но потоков в одной задаче как правило существенно больше одного.
Окей, раз критика поступила, принимаю и исправляюсь:

Mutitasking, бабушка, это твои домашние хлопоты. Ты убираешь квартиру (задача), и готовишь обед (задача), попеременно переключаясь с одного на другое. В каждой задаче, бабушка, ты запускаешь несколько потоков: в уборке это стирка (поток), вытирание пыли (поток). В готовке это варка яиц (поток), отваривание мяса (поток), нарезка овощей (поток).
Очевидно, это уже продвинутая бабушка и у нее есть стиральная машина-автомат ;)
Ну необязательно :) любая стиральная машина (кроме класса «тазик») какое-то время работает без участия человека
Тимур отправляет свою команду помогать односельчанам:
Пятерых тимуровцев наносить воды старухе-молочнице,

снова пятерых — сложить дрова в поленницу

А сам идёт успокаивать дочь убитого лейтенанта.
чёрт, само отправилось, как-то странно хабр реагирует на нажатие ctrl
продолжение коммента:
четверых — разыскать козу Маньку

Вот наносить воду, сложить дрова, найти козу — задачи. Т.е. отряд тимуровцев — многозадачный :)
Тимуровцы — потоки, которые одну задачу выполняют параллельно.
Так, на всякий случай — чтобы «объяснение» пошло в зачет, его нужно оставить у нас на ISN форуме (хотя честно признаться движок Хабра мне нравится гораздо больше)
лень :)
>> идёт успокаивать дочь убитого лейтенанта

;) а зря вам лень ;) — дочь лейтенанта — это однозначно пять ;)
Кто читал «Тимур и его команда», знает, что дочери — четыре года.
да неважно! Зато образ живой и яркий!
Семафор?
Я подумал, что речь идёт о buffer overflow или выходе за пределы массива.
Да, а судья — это assert.
Судья — это Garbage collector, с квадратными глазами заталкивающий обратно на скамью выскочивших на лёд тренеров и болельщиков.
;) А говорили пример плохой — видите как фантазия-то разыгралась? ;)
А я вот подумал, что судья — это траффик-шейпер, пропускающий только прописанное в правилах число игроков из одного места в другое.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Уже представил такого классического профессора, который объясняет комплексные числа на примерах про бабушку в стиле psyloss: «это, бабушка, как мнимая единица, понятно?» :))))))
О еееее… бабушка, вот тебя в школе учили, что число, умноженное на само себя не может быть меньше нуля? Так вот, бабушка, мнимая единица — это такая хреновина, которая при умножении на себя дает минус единицу
тут не хватает ответа на вопрос «зачем?»
Бабушка, это очень просто. Математики не любят, когда уравнение не имеет решений. Поэтому, когда у них не получается решить уравнение в обычных, настоящих, числах, они придумывают ненастоящие, мнимые.
А, ну это их заумь какая-то, значит… Мне, внучек, того не понять…
Контраргумент не принимается в связи с его отсутствием :)
Суть контраргумента сводится к тому, что вы своим объяснением ничего не объяснили, кроме как сказав «ну вот такие вот они страные, эти математики, смирись», а по сути мнимой единицы и комплексных чисел — практически ни чего не сказали.
Да ну? ;) кроме определения я рассказал основную суть применения ;)
Такая хрень, что при умножении на себя даёт минус единицу, и нужна для выхода из безвыходности. Ну, как бы это мало что объясняет, ИМХО.
Окей, вашей критики я уже наслушался. Приведите свой вариант.
А я обещал, что он у меня есть? Я понять надеялся…
Второй оппонент в споре, где один пытается объяснить, а у второго заготовлен шаблонный ответ «все равно не понимаю», заведомо в выигрышном положении. Так что в споре конкретно с вами у меня закончились доводы. Вы победили.
Я не победил… Я ж всё ещё не понял:(
Снимаю шляпу ;)
деление на ноль я сам понимаю к бесконечности через предел деления на дробь — чем на меньшее число делишь, тем больше результат. Правда, вот само деление на числа меньше единицы тоже весчь мало объяснимая. Что вот может значить деление корзины яблок на 2/3?
Именно столько яблок получит каждый, если добавить еще две такие же корзины, и поделить между двумя людьми.
Умножить на два и потом уже делить на три — это конечно здорово, но это как-то не очень понятным образом связано с делением на две трети. Или вот формулировка «делить на четвертушку» — чуть менее провоцирующая к умножению на четыре. Как её понять?
и не только «понять», но и интерпретировать, объяснить…?
Бабушка, у тебя есть литр молока, которое завтра скиснет, и его обязательно надо использовать сегодня.Ты добавляешь молоко, чтобы пирог был вкуснее. Сегодня придут гости, и нужно сделать пироги. Если гостей придет много, то придется сделать два пирога. Какая концентрация молока будет в пирогах? Правильно, делим один литр на два. А если гостей придет мало, то достаточно будет сделать пирог в четверо меньше обычного. Какая концентрация молока будет? Делим один литр на четвертушку.
типа, «насколько молочным будет пирог»? в первом случае — поллитра на пирог, а во втором — четыре литра на пирог?
не, видимо лучше пирог не в штуках мерить, а в килограммах, например, и говорить о концентрации литров на килограмм. И практическую ценность показать — типа, четыре литра молока на кило пирога — жидковато получается, лучше ещё что-нибудь молочного придумать, коктейль например, а поллитра молока на килограмм — молочность для пирога в самый раз. В общем, с некой натяжкой, но суть проясняется, угу.
БЛОНдиНКИ на ПИКНИКЕ

Когда две блондинки чистят картошку, это декомпозиция данных. А если одна чистит картошку, а другая костер разжигает, то это декомпозиция функций. Если при этом на них обеих орёт муж одной из них, то это SIMD, а если орут оба мужа, то это MIMD. Блондинка реализует многопоточность, когда ставит вариться суп, мобилку на зарядку, расставляет снасти для ловли леща. Потоки существуют параллельно. Но она также реализует и многозадачность, когда пытается решить несколько дел: сварить суп на обед, поболтать с мамой, и готовить рыбу на ужин. Она не успевает сделать все, поэтому переключается с задачи на задачу. Блондинки пассивно ждут, когда приготовится пойманный ими лещ. И запускают активно ждущий поток, тщетно пытаясь дозвониться мужьям, уехавшим за пивом. Тщетно, потому что мобильники мужья забыли дома, а блондинки не догоняют. Пул потоков — это процесс ловли леща на четыре удочки.
Краткость — сестра таланта ;) Это самое короткое объяснение «все в одном».
Круто. Было бы здорово устроить Wiki с подобными определениями «специальных» терминов. Только представьте, что будет.
Error in Profile.User.CreateUser при регистрации. К чему бы это…

Data decomposition & Functional decomposition

Однажды молодой прораб пришел к гуру и спросил его:
— Скажи, о многомудрый учитель, чем декомпозиция данных отличается от функциональной декомпозиции?
— Иного ли у тебя таджиков? — осведомился учитель.
— Десять!
— Если тебе надо покрасить в доме стены, то ты можешь просто сказать об этом своим рабочим, и тогда они будут красить неделю — один красит, остальные перекуривают. Но ты знаешь, что таджики могут красить, не мешая друг другу — поэтому ты можешь указать каждому его стену и он будет красить ее. Тогда к вечеру они все покрасят. Это и есть декомпозиция данных — используй ее, если работа одинаковая и твои таджики могут выполнять ее, не мешая друг другу, — ответил учитель.
— @##$@#, сказал молодой прораб, посмотрев на усердно долбящего стену Джамшута и девять его коллег, с интересом наблюдающих за процессом. А что же тогда функциональная декомпозиция?
— А это если работа разная. Например, нужно тебе сделать евроремонт. Пусть же один таджик кладет пол, другой — красит стены, третий — белит потолок, четвертый..., — вообщем ты понял.

SIMD & MIMD

Однажды молодой прораб пришел к гуру и спросил его:
— О многомудрый учитель, преисполненный многочисленных достоинств и достигший просветления, скажи мне, недостойному, что означают страшные заклинания SIMD и MIMD?
— Все просто, — спокойно ответил учитель. Когда ты кричишь всем своим таджикам " копать!!!" — они идут и копают. Single Instruction — это что ты им сказал делать. Multiple Data Processors — это твои рабочие, они делают. А вот когда ты говоришь первому — «Джамшут — копай», второму — «Равшид — пили» ну и так далее — то это уже Multiple Instructions, Multiple Data Processors. Оно конечно лучше, — на секунду учитель задумался о чем-то своем, а затем грустно вздохнул, — но иногда таджиков так много, что быстрее их всей толпой посылать, чем говорить каждому что именно ему делать.

Multitasking & Multithreading

Однажды, когда многомудрый гуру спокойно пил чай и медитировал над парадигмой евроремонта, к нему прибежал запыхавшийся прораб.
— Не успеваю! — воскликнул он, с мольбой глядя на учителя.
— Что, опять два десятка таджиков набрал, а работают одновременно только двое? — с улыбкой спросил учитель.
— Опять.
— А ты помнишь, чем отличается многозадачность от многопоточности?, — с еще более широкой улыбкой поинтересовался учитель.
— Ну… э… они все одновременно делать должны. Но ведь не делают!
— Не используй волшебное слово «все», юный подаван, — посерьезнел учитель. — Оккама на тебя нет. Есть задачи — их надо выполнять. Например, сейчас тебе надо выложить кафелем пол торгового центра и покрасить его стены, так?
— Так..., — прораб даже потерял дар речи от проницательности учителя. О нервно сжимаемом в руках куске кафеля он уже давно забыл и свято верил в то, что учитель обладает не только большой мудростью, но и даром телепатии.
— Это твои задач. Их две. И небось, у тебя как обычно Джамшут кладет плитку, Равшид красит стены и еще восемнадцать человек перекуривают?
— Да, — грустно согласился ученик.
— Это потому, что многозадачность — это одновременное выполнение задач. Но если ты хочешь чтобы задачи выполнялись не только одновременно но и быстро — дели каждую из них на части и тоже выполняй эти части одновременно. Это и будет многопоточность — пусть девять таджиков одновременно с Джамшутом кладут плитку, а еще девять одновременно с Равшидом красят стены. И будет тебе, — учитель ненадолго задумался, — и многозадачность, и многопоточность, и race conditions.

Busy waiting thread & Sleeping thread

Однажды в студеную зимнюю пору молодой прораб пришел к Гуру, и начал жаловаться на таджиков, которые все время спят и ничего не делают.
— А как ты им задания даешь?, — поинтересовался Гуру, выслушав ученика.
— Ну как обычно… Бужу, матерю, выдаю…
— Это только один из способов — «sleeping таджик», то есть thread. Они сами ждут пока ты подойдешь к ним и скажешь что делать. Есть и второй способ — «Busy waiting». Скажи им, чтобы они сами подходили к тебе, когда выполнят работу, чтобы узнать что им делать дальше. И даже если тебе сейчас Равшиду поручить нечего – пусть через каждые пять минут подходит. Тогда тебе не придется бегать по стройке..., — учитель ненадолго задумался и уточнил, — зато по ней будет бегать много таджиков.

Thread pool

Однажды вечером молодой прораб пришел в гости к Гуру, и, выпив с ним чая, пожаловался, что никак не может заранее выбрать сколько ему нужно таджиков:
— Представляешь, приезжаю на объект, вижу что тут на одного работы, звоню, приезжает Джамшут. Работает. Потом на следующий день вижу — уже на двоих работы. Звоню Равшиду — он тоже приезжает, двое работают. Потом трое, четверо. А потом только на одного работы — я остальных отпускаю. А через час снова оказывается, что пять человек надо — опять звоню, они опять едут… Много времени на дорогу тратят.
— Известная проблема, — отхлебнул ароматного чая учитель, — тебе нужно подумать над пулом потоков.
— А что это?
— Сразу привези несколько таджиков и не отпускай их со стройки, пока она, родимая, не закончится. Для этого даже времянки придумали. И тогда ты всегда сможешь поручить задачу свободным таджикам из времянки, а не звонить и ждать пока они приедут.
— Да, но ведь это накладные расходы — их кормить надо, времянку ставить, — засомневался ученик.
— А вот когда пул потоков использовать эффективно а когда нет — это тебе самому надо решить, — улыбнулся мастер и протянул ученику калькулятор и бланк сметы.

Context Switching

Однажды молодой прораб, беседуя за чашкой чая с многомудрым гуру, спросил:
— Скажи мне, о учитель — что такое переключение контекста и что я должен об этом знать?
— Понимаешь, — глубокомысленно изрек Гуру, отхлебывая чай и задумчиво глядя в окно, — иногда у тебя таджиков мало, а задач много. Вот у тебя Джамшут стену кладет — мастерок там, цемент, все дела — а тут кирпичи подъехали. Он мастерок с цементом оставляет — и бегом за тачкой, разгружать. Разгрузил — опять за мастерок и цемент. Для каждой задачи — свое место, свои инструменты. Вот их то и называют контекстом. А переключается он, когда ты бедного таджика с одной задачи на другую гоняешь, — укоризненно изрек учитель.
>> Error in Profile.User.CreateUser при регистрации. К чему бы это…

Очевидно к хабраэффекту? ;)

Миллион извинений — уже пофиксили. Если есть возможность, запостите на форуме. Если не успеете — мы сами разместим в пятницу. Ок?

Кстати, нельзя ли без потери оригинальной авторской идеи заменить «таджиков» на нечто такое, что исключило бы намек на национальный вопрос? А? Понимаете, к чему я клоню? ;)
Готово:

software.intel.com/ru-ru/forums/contest-spell-it-out-2/topic/66762/reply/90514/

Редакторскую правку я все равно делать не могу — это дело мана- и времязатратное. Тажиков на политкорректный синоним поменял.

P.S. Как там поживает InterlockedIncrement() и memory barrier? ^_^
P.P.S. Собственные сообщения у вас там тоже редактировать нельзя благодаря хабраэффекту? ^_^x2
Не, этот эффект по-другому называется. Я не могу его тут назвать — неполиткорректно получится ;)
Вижу, спасибо за понимание ;) Мы поступим так — судьи будут видеть политкорректный вариант, а в голове держать оригинал. Чтобы нюансы не потерялась ;)

InterlockedIncrement ??? Да хорошо вроде, быстро ;) А что с ним будет?
А помните, как я приходил к Вам в гости, на презентацию ПО для отладки мультипоточных приложений, и показывал как memory barrier не работает? :). Ваши специалисты еще очень обещали разобраться и отписать. Не отписали :(.
Мммм… Не помню :( А я там точно был? О какой презентации речь?

Напомните, если обещали — заставим отписать ;)
3-го марта, 9:00-17:00, «курс Intel Software Development Tools»
Зарегистрируйтесь на Хабре, чтобы оставить комментарий