zzweb-панель

JavaScript — женский язык программирования

http://img.zzweb.ru/img//733485/zhd.jpg
Существует расхожее мнение о том, что женщины плохо справляются с программированием. И главная из называемых причин — несовместимость «женской логики» с той, которая используется в традиционных языках программирования.

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

Немного поразмыслив, я подобрал ряд примеров и приступил к рассуждениям. В начале своего повествования у меня не было четкого представления, каким будет финал, но я совсем не ожидал, что главным выводом станет заголовок этого рассказа: «JavaScript — женский язык программирования».

Если этот вывод вам показался интригующим, давайте еще раз пройдемся по цепочке моих рассуждений и, возможно, мы придем к какому-то иному выводу…

Представим любую полезную работу как движение поезда из точки «А» в точку «Б».

Поезда движутся по рельсам — это правила и законы, по которым выполняется работа.

Машинист — ответственный за выполнение работы: он поддерживает связь с общей системой, следит за составом, решает нештатные ситуации.

Для полноты картины скажем, что вагоны — полезный груз.

Наша задача: провести аналогию между женской и мужской моделью поведения (мышления) и одновременно сопоставить их с синхронным и асинхронным программированием. (Под асинхронным я и подразумеваю JavaScript, и прошу не придираться к терминологии.)

Поехали…

Мужская модель. Машинист садится в локомотив, трогается и продолжает движение по рельсам, пока поезд не достигнет станции назначения.

В процессе движения машинист неотлучен и всегда готов к решению любой штатной или нештатной ситуации, он всегда на связи с диспетчером и держит под контролем все узлы поезда. Это главное преимущество мужской модели.

А недостатком является то, что машинист неотлучен и бездействует большую часть времени, пока поезд без его помощи бежит по рельсам между полустанками.

Так работает мужская модель поведения, так работает логика классического программирования.

Женская модель. Машинист села в поезд, тронулась и… тут же выпрыгнула из него. Ей незачем сидеть в поезде, пока тот не потребует особого внимания. А чтобы во время вернуться в него, она завела будильник на 18 часов, и попросила проводницу из 9-го вагона скинуть ей sms, когда за окном лесной пейзаж сменится на городской.

Покинув первый поезд, женщина-машинист пересела во второй и произвела похожую операцию. Затем в третий, в четвертый… и так до тех пор, пока не поступил сигнал из первого поезда, требующий ее возвращения.

Вернувшись на первый и обслужив остановку по расписанию, она вновь чудесным образом оказалась на втором поезде. Убедилась в отсутствии проблем и перенеслась на третий…

Таким образом, в женской модели главным плюсом является более эффективное расходование ресурса машиниста — он все время в работе.

Недостатком же является отсутствие гарантий со стороны машиниста, что она окажется в нужное время на нужном поезде: пока идет погрузка угля в один состав, некому руководить расчисткой снежных заносов для другого.

Примерно так работает женская модель поведения. Примерно так работает и JavaScript.

Теперь немного усложним. Ведь в жизни, как и в программировании, редко встречаются прямые пути. Чаще всего по ходу любого дела появляются новые и новые.

В мужской модели машинист будет вынужден покинуть свой локомотив, чтобы отогнать другой, и после вернется на прежний.

Продолжающиеся ветвления могут надолго задержать первый поезд, пока разруливаются ситуации с вновь появившимся и всеми их проблемами. Но при этом все шаги спланированы и движущийся поезд бежит четко по расписанию.

Примерно так работает мужское поведение. Примерно так выполняются программы в классических скриптах.

В женской модели машинист просто добавит еще один поезд в расписание уже двигающихся и продолжит свои магические перемещения между ними.

С количеством новых поездов увеличивается и время между появлением машиниста в каждом из составов. И если поездов стало слишком много, вся система начинает тормозить.

Такова женская модель поведения. Примерно так ведет себя и JavaScript.

Давайте уже подведем некоторые итоги.

Мужская модель поведения (синхронная программа) стремиться полностью выполнить поставленную задачу, прежде чем заняться следующей. Когда женская (асинхронная) логика стремится максимально загрузить ресурсы работой, чтобы все задачи пусть медленно и рывками, но двигались.

В жизни все эти модели довольно легко пронаблюдать или даже вспомнить.

Мужчина вешает полку. Сформулировал задачу, обдумал ее, достал необходимые инструменты, надел спецодежду, прогнал детей, взял в руки карандаш и рулетку, затем дрель… (если зазвонил телефон, отложил дрель, ответил, вернулся к работе)… к вечеру полка висит.

Женщина на хозяйстве. Пока муж мусорит в комнате, она поставила на плиту молоко для каши и побежала заряжать стиральную машину. Только что заработала «стиралка», а мама уже меняет подгузник ребенку и одновременно разговаривает по телефону с подругой. И не страшно, что что молоко немного убежало — пока левая рука помешивает будущую кашу, правая аккуратно вытирает с плиты белую пену…

Так работают модели поведения мужчины и женщины, так ведут себя синхронные и асинхронные программы.

Не знаю как вам, а моей жене к этому моменту уже «стало все понятно» и она убежала с ребенком за собакой, зазывая меня следом взмахами свободной от поводка руки.

Оставшись наедине со своими мыслями, я решил сделать выводы. Если модель поведения JavaScript так сильно похожа на модель поведения женщин, можно предположить, что:

а) этот язык называют самым недооцененным именно потому, что большинство программистов (мужчин) его плохо понимают;

б) с увеличением популярности асинхронного программирования вообще и JavaScript в частности — количество женщин-программистов должно вырасти;

в) JavaScript меньше подходит для программирования ответственных и точных задач, но значительно лучше справится огромным количеством вспомогательных дел;

г) синхронное и асинхронное программирование, как мужчина и женщина, в паре рождают наиболее качественный результат, нежели по отдельности;

д) если все выходит так сообразно природе, значит можно назвать JavaScript — женским языком программирования.

С чем я искренне поздравляю всех женщин и приглашаю в увлекательный мир написания полезных скриптов на JavaScript!
Ру Курепин
вернуться в «Куреплики»

На счёт асинхронности не правда. Первый машинист просто бездельничает больше половины пути (код выполняется но не достаточно быстро, да и ресурсы простаивают, уголь, процессор, оперативка) и в итоге поезд прибудет через 100500 часов к пункту Б и у машиниста будет сильно болеть голова так как он один в поезде. Вторая модель не чем не связана с асинхронностью, её вообще не понять кто придумал. Добавь к первой модели пять асинхронных кочегаров, 10 асинхронных проводниц и получится классический поезд и в этой модели машинист продолжает непрерывно работать, а кочегары топку топить, проводницы бельё разносят, действуют они не связанно, то есть асинхронно. Как мне кажется не верное сравнение, работники поездов асинхронные, да вообще все асинхронное. Синхронно это когда одна официантка не всё кафе, асинхронно это когда больше 2х официанток.
ДОБАВИТЬ комментарий, предложение, вопрос...