'живой' автомобиль, который сам себя чинит, используя для этого даже не запчасти, а так - подобранные на обочине атомы... Ну а если ещё он станет питаться не углеводородами, а солнечным светом - так это ж вообще будет подрыв основ и стабильности!

Но в любом случае кажется, что понятие искусственной жизни - это нечто весьма современное. Сугубо из последних десятилетий, после кибернетики... Ан нет! Понятие это относится к заре нового времени и прозвучало в одной из кардинальных книг европейской цивилизации. Книга эта звалась 'Левиафан', а автором её был Томас Гоббс (Thomes Hobbes, 1588-1679), человек, в котором интеллектуальная смелость сочеталась с поразительной житейской осторожностью. Хотя, возможно, на Гоббса повлиял пример его папы, викария холерического характера, отлучённого от должности после драки у церковных дверей с другим викарием, и оставившего детей на попечение брата. Переведя ещё в детстве 'Медею' латинским стихом, Гоббс подвизался в роли домашнего учителя в семье графов Девонширских. Путешествуя в этом качестве по Европе, он впитал идеи Кеплера и Галилея, с последним он был лично знаком. Впрочем, тяга к прогрессу научному сочеталась в нём с консерватизмом политическим. В 1628 году он переводит Фукидида, видя в нём оружие против демократических идей. Это, вкупе с другими работами, доставляет ему место наставника будущего короля Карла II. И на службе ему бежавший в Париж от гражданской войны Гоббс создает знаменитый 'Левиафан, или Материя, форма и власть государства церковного и гражданского' (1651). Исследование о сути государства. Апологию власти, любой власти, хоть Кромвеля, хоть Карла II, лишь бы сильной. Занятно, что такой 'государственно-патриотический' шедевр принес создателю мало пользы. Роялисты видели в 'Левиафане' оправдание власти Кромвеля. Гоббс бросает принца-изгнанника и возвращается в Англию - но сильное там духовенство не может простить ему атеизма. Гоббс сходится с Кромвелем, но без особой пользы для себя. После смерти лорда-протектора бежит опять на континент. После Реставрации 'Левиафана' запрещают (1666). А бывший ученик сторонится бывшего учителя... Бывает - и трусость с конформизмом не приносят плодов.

Но вот интеллектуально 'Левиафан' хорош. Особенно его начало - представление о том, 'что все автоматы (механизмы, движущиеся при помощи пружин и колес, как, например, часы) имеют искусственную жизнь'. Наивно? Но ведь это писано в те годы, когда друг Гоббса аббат Мерсенн пытался запустить пушечное ядро на орбиту спутника земли... И далее - представление о государстве, Левиафане, как об объекте искусственной жизни, созданном искусством человека. То что дальше - это историкам политической философии. Пусть сегодня bella omnia contra omnes, война всех против всех, с которой началась человеческая история, кажется более правдоподобной, - в свете находок обглоданных прачеловеческих костей в прачеловеческих же становищах, - чем сторонникам либерального 'естественного состояния' Локка. И пусть идея блага, достигаемого подчинением власти, не привлекает после тоталитаризмов ХХ века. Всё равно - идея о подобии социальных структур живым существам золотыми буквами вписана в историю науки.

Ну, и под конец вспомним, что перед крахом СССР появилась тенденция рассматривать тогдашний аппарат управления как некие 'големы', объекты искусственной жизни - ну, например, в самиздатовской статье А. Лазарчука и П. Лелика 'Голем хочет жить' http://lazandr.lib.ru/web/books027.html. Идея забавная, но отводящая внимание от конкретных людей, сначала управлявших, а потом и - владевших собственностью. Когда то Бернард Рассел отметил, что в передовых странах практика ведет за собой философию, а в странах отсталых чужие теории определяют практику...

Нет ничего проще

Автор: Герман Царев

Опубликовано 24 июня 2010 года

Орфография и пунктуация автора сохранены. - прим. ред.

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

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

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

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

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

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

И так, знакомьтесь – MapReduce. Эта модель программирования для обработки больших объемов данных. Ее создателем считается небезызвестная компания Google. В своей работе она активно применяет этот механизм, что позволяет говорить о его удобности, быстродействии и практичности.

Рассмотрим обработку данных с применением этой технологии. MapReduce включает в себя 3 этапа. Подготовка данных, определение функции map и определении функции reduce. Рассмотрим каждый их этих этапов.

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

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

Определение функции reduce. Функция reduce служит для сборки обработанных частей данных в единый результат. Программист определяет эту функции исходя из поставленной задачи и требуемого результата.

После этого, для запуска обработки данных необходимо вызвать всего одну функцию (ее название зависит от реализации механизма MapReduce, например в Qt подобная функция имеет название mappedReduced), указав в ее параметрах: подготовленные разбитые на части данные, функцию map и функцию reduce.

После вызова этой функции будет автоматически запущено необходимое количество потоков, которые

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату