Сообщения без ответов | Активные темы
Логика, математика, физика
Автор |
Сообщение |
Aetet
Зарегистрирован: 22 апр 2011, 12:25 Сообщений: 85
|
Re: Логика и математика
Задача функционального программирования выделить из исходной задачи такие функции, которые можно выполнять параллельно, основываясь исключительно на зависимости этих функций друг от друга.
Например, встав с утра мы обнаруживаем, что необходимо наколоть дров, принести воды, затопить баню, сварить каши.
Теперь разберемся с зависимостями:
Наколоть дров - > Затопить баню Наколоть дров - > Сварить кашу Принести воды - > Затопить баню Принести воды - > Сварить кашу
Мы видим, что действия "наколоть дров" и "принести воды" не зависят друг друга и являются первичными, следовательно мы можем их выполнять раньше, при этом не имеет значения, какое действие из этих двух завершим раньше. Поэтому мы можем выполнять эти действия параллельно. Т.е. один человек колет дрова, а другой таскает воду. Соответственно, выполнение дальнейших операций будет возможно, когда будут выполнены эти два действия.
Теперь можно приступать к следующей фазе: "затопить баню", "сварить кашу". Эти действия также не зависят друг от друга поэтому их также можно выполнять параллельно двумя людьми.
То же самое и с компьютерами, которые выполняют функции. Необходимо проанализировать задачи и найти те функции, от которых зависит результат следующих вычислений и выполнить их. При этом их можно выполнить параллельно, так как они могут быть не связаны друг с другом, как и действия "наколоть дров" и "принести воды". Можно подключить вместе несколько компьютеров в единую сеть через, которую они будут обмениваться информацией о завершении той или иной стадии и результатами выполнения. Вычисления, в таком случае, будут выполнены параллельно.
Так и образуется "облако вычислений", в котором сразу действует много функций.
|
25 авг 2012, 08:26 |
|
|
bozhday
Зарегистрирован: 15 янв 2010, 09:45 Сообщений: 406
|
Re: Логика и математика
Коловрат, все дело – в принципе. Если подходить к задаче алгоритмически, то так и есть, пока не выполнен А, исполнение Б не начнется. Так привык мыслить обычный человек, поскольку он существо «однопроцессорное» и «одномерное во времени», он не может разорваться на несколько копий, чтобы делать что-то параллельно. Но если ту же деятельность проводит согласованная группа людей, то планирование работ будет происходить по иным принципам, допускающим параллельность. Простой пример. Пусть некий человек в праздничный день ждет дома гостей. Причем он не знает наверняка, придет к нему кто-нибудь или нет (это выяснится лишь за час-два до их прихода). Но даже если никто и не придет, он не прочь отметить праздник в одиночестве. Нужно привести себя в порядок, убрать в доме, сходить в магазин, приготовить угощение; накрыть на стол. Если этот человек обычен, то он начнет работу по такому плану: 1) убрать в доме; 2) пойти в магазин – тут возникает проблема, «сколько брать?», ведь неизвестно количество гостей – ему придется брать по максимуму «на всякий случай»; 3) приготовить угощение – та же проблема, сколько готовить? – по максимуму; 4) накрыть на стол – также по максимуму; и т.д. Что мы видим – все вроде бы логично, но очень уж медленно и неэкономно. Но если человек необычен и, допустим, умеет создавать неограниченное количество своих «дублей»? Очевидно, у него будет другая логика. Он начнет делать все шаги одновременно. С независимыми от других делами (такими как «привести себя в порядок», «убрать в доме») проблем нет – они будут сделаны сразу и параллельно. Но и с зависимыми делами (например, от информации сколько придет гостей) можно также поступить параллельно. Один дубль сразу идет в магазин и караулит там, в ожидании информации о гостях. Другой в это время начинает готовить - что возможно, по минимуму, и тоже ждет информацию о гостях и прихода дубля из магазина с основной частью продуктов. Третий начинает сервировать стол и тоже ждет. Как только гости сообщают о своем приближении и количестве, работы тут же доделывается в параллельном режиме. Получается гораздо быстрее и без лишних «расходов по-максимуму». Алгоритмические языки программирования реализуют алгоритмический (последовательный) принцип выполнения команд. И даже если у нас есть несколько процессоров-дублей, алгоритмический принцип программирования задачи не позволит их использовать в полную, параллельную силу. А вот функциональный принцип, наоборот, предполагает одновременное исполнение всех функций, при условии, что для них получены все исходные данные. Если для какой-то функции исходных данных пока нет, то ее выполнение все равно начинается, а потом временно приостанавливается до получения этих данных. Нет, это скорее общее свойство систем, а не функций - свойство эмерджентности. В математике понятие функции означает иное. Это механизм, который позволяет проецировать одно значение (из области определения) в другое значение (из области значений). Причем функция может и не быть эмерджентной: например, проецировать одну функцию в другую (которые в свою очередь тоже что-то проецируют).
|
25 авг 2012, 08:46 |
|
|
bozhday
Зарегистрирован: 15 янв 2010, 09:45 Сообщений: 406
|
Re: Логика и математика
Вот как мы с Aetetom - одновременно ответили в функционально-параллельном режиме.
|
25 авг 2012, 08:48 |
|
|
bozhday
Зарегистрирован: 15 янв 2010, 09:45 Сообщений: 406
|
Re: Логика и математика
Несвязанные задачи легко распараллелить и алгоритмически. Весь фокус ФП в параллельной обработке связанных задач!
|
25 авг 2012, 08:51 |
|
|
Страж
Зарегистрирован: 15 янв 2010, 15:03 Сообщений: 1040
|
Re: Логика и математика
Да, конечно. Правда, когда я учился Курдюмовские термины не использовались. Для нас общим определением системы было, что это совокупность множества элементов, взаимосвязей между ними и новое качество, порождаемое самой системой. Даже в этом случае дублю у магазина придется ждать информации из дома, а не непосредственно из сознания потенциальных гостей, что и позволило бы говорить о реальной системе систем.
|
25 авг 2012, 19:49 |
|
|
bozhday
Зарегистрирован: 15 янв 2010, 09:45 Сообщений: 406
|
Re: Логика и математика
И еще целенаправленность.
|
26 авг 2012, 04:35 |
|
|
Коловрат
Зарегистрирован: 15 янв 2010, 12:38 Сообщений: 1464
|
Re: Логика и математика
Здравствуйте, Сварожичи!
Бождай, вот этот фокус параллельной обработки связанных задач, время от времени появляется в сознании и беспокоит его. Опять-таки, понятно, что я могу рассматривать этот вопрос как дилетант. Во всяком случае, я не могу себя заставить углубиться в изучение лямбда-счисления, и понять досконально, как работает "облако функций". Но именно попытка разобраться в данной теме с дилетантских позиций приводит к странным выводам. Суть этих выводов сводится к тому, что на данном этапе развития вычислительной техники, облако функций не будет работать. То есть, работать оно будет, но ускорение быстродействия вычислительных систем (компьютеров) произойдёт не взрывное, не на порядки, а не более чем в разы.
Я не записывал этапов этого размышления, этого вхождения в данную проблему, хотя сейчас жалею об этом. Помню только, что в сознании постоянно возникали какие-то затыки, какие-то преграды говорящие о том, что данная проблема пока не решаема.
Помню только об одном этапе рассуждений, когда я вспомнил об несложной логической задаче о трёх мудрецах и пяти колпаках (двух чёрных и трёх белых). Там задача состояла в том, чтобы определить, какой колпак находится на тебе самом. И эта задача решается только в том случае, если заведомо предположить, что двое других людей также решают эту задачу. Решают - и не могут решить. И что эти люди как минимум - не глупы. То есть, если бы был один мудрец и пять колпаков, или два мудреца и пять колпаков, а вместо недостающих мудрецов были бы просто чурбаны с надетыми колпаками - то задача не решается в принципе.
Скорее всего, для решения данной задачи можно создать алгоритм машинного решения. Как дилетант - не представляю, как это сделать, но предположим, что можно. Но ведь эту задачу можно и должно усложнить. И единственный принцип решения подобной задачи - существование нескольких субъектов, именно субъектов, делателей, решающих одну и ту же задачу.
А ведь после некоторого этапа сложности, параллельное решение связанных задач утыкается именно в этот предел.
Но это только один из затыков, который я сейчас помню.
Заранее прошу прощения за этот выплеск рассуждений, так как для меня (как для дилетанта) он не предполагает какого-то серьёзного дальнейшего развития - но, может быть, тебе он в дальнейшем пригодится.
|
20 ноя 2012, 18:16 |
|
|
bozhday
Зарегистрирован: 15 янв 2010, 09:45 Сообщений: 406
|
Re: Логика и математика
Коловрат, к сожалению в ближайшую неделю-две я не смогу присутствовать за компьютером вдумчиво. Постараюсь ответить попозже.
|
21 ноя 2012, 16:44 |
|
|
Aetet
Зарегистрирован: 22 апр 2011, 12:25 Сообщений: 85
|
Re: Логика и математика
Сейчас компьютеры делают очередные шаги в своем развитии. Они становятся социальными. Облако функций помогает им наладить разговор друг с другом и сообщать необходимую информацию для анализа. Таким образом они смогут делиться информацией с другими компьютерами, а это позволит запускать большее количество потоков обработки информации. Весь вопрос в том, чтобы качественно реализовать данный подход. Функциональное программирование задает частично направление движения.
Существует большое количество компаний, которые обслуживают гигантское количество данных в секунду: Гугл, Фейсбук, Твиттер, Амазон, ВКонтакте. В первую очередь справляться с большим потоком данных им позволяет большое количество компьютеров, которые связаны друг с другом в единую сеть. Внутри этой сети каждый из них получает свое задание и выполняет его, затем когда это задание будет выполнено наступает фаза сборки результатов всех компьютеров в единый результат, который как раз интересует пользователя. Чем большее количество данных нам поступает, тем тщательнее мы должны анализировать зависимости между ними, чтобы суметь распараллелить их и таким образом увеличить скорость вычисления.
|
03 дек 2012, 04:06 |
|
|
Коловрат
Зарегистрирован: 15 янв 2010, 12:38 Сообщений: 1464
|
Re: Логика и математика
Здравствуйте, Сварожичи! Продолжу тему параллельных вычислений. Очевидно, что тема сложна для рассмотрения. Сложна прежде всего тем, что представляет собою (впрочем, как и любая другая НАСТОЯЩАЯ тема) некое "светящееся яйцо" сотканное из переплетающихся нитей. И ухватить сути (нити) этой темы можно только выхватив пучок нитей из яйца. Иначе просто не будет слов, чтобы сказать об этом, не будет мыслей, чтобы раскрыть тему. Именно на это уходит основная энергия человека при рассмотрении темы. Когда светящиеся нити "в руках" - уже проще. Здесь я приведу несколько пространных цитат из статьи С.М. Комарова "Считанные кванты" (Химия и жизнь № 11, 2012 г.). Статья посвящена нобелевским лауреатам по физике этого года. Итак: | | | | Цитата: Считается, что квантовые компьютеры позволят резко увеличить скорость вычислений за счёт параллельного выполнения многих операций на одном и том же процессоре. Например, если на классическом компьютере взлом ключа к современному шифру требует необозримого количества времени, то на квантовом он при использовании алгоритма Шора займёт столько же, сколько и само шифрование, которое состоит в перемножении двух очень больших чисел. Правда, подобное ускорение будет наблюдаться отнюдь не для всех вычислений, поэтому, видимо, такой компьютер, даже когда будет создан, не заменит привычные нам кремниевые, но займёт какую-нибудь особую нишу, где нужна параллельная обработка информации. Поскольку именно так работает мозг человека, не исключено, что "позитронные" мозги, которые Айзек Азимов вставил придуманным им роботам, будут созданы именно на этом, квантовом принципе. | | | | |
| | | | Цитата: Особенность квантового компьютера, которая и позволяет надеяться на проведение параллельных вычислений, состоит в том, что в квантовой механике появляются принципиально отсутствующие в макромире понятия суперпозиции состояний и их запутывания. Квантовая система, в отличие от классической, может принимать не любой набор состояний, а дискретный, у котором отдельные состояния различаются значениями энергии. Переход между ними возможен при получении или излучении кванта энергии, равного разности между их уровнями. В промежутке же система находится не может, однако она способна с некоей вероятностью одновременно пребывать во всех возможных состояниях. Это называется суперпозицией состояний. Лишь при измерении классическим прибором система выбирает определённое состояние. Понять это, как в известном анекдоте, невозможно - требуется запомнить: знаменитый спор между Бором и Эйнштейном к согласию не привёл. | | | | |
Резюме: 1. Сама идея параллельных вычислений возможна только в системах, подчиняющихся законам квантовой механики. 2. Одной из таких систем является человеческий мозг. 3. В настоящее время имеются алгоритмы, позволяющие проводить параллельные вычисления, но отсутствует носитель ( железо) на котором эти вычисления можно проводить. 4. В создании квантовых компьютеров на данный момент предприняты самые первые (и очень робкие) шаги, которые пока не имеют какого-либо (даже отдалённого) практического применения. Далее в статье описываются несколько тем, несколько серий опытов. Одна из серий проведена Гансом Демельтом - по поводу чего ещё одна очень интересная цитата: | | | | Цитата: Демельт сумел измерить гиромагнитное отношение - характеристику магнитного момента элементарной частицы. В соответствии с уравнением, предложенным Паули, и идеей, что электрон - точечная частица, не имеющая размера, этот момент должен быть равен 2. Измерения дают 2,002, однако это различие связывают с действием законов квантовой электродинамики, а не с проявлением внутренней сущности электрона. Демельт, измеривший момент очень точно, обнаружил после удаления всех возможных добавок, что тот равен 2,000000000098. Но даже столь малое различие позволяет усомниться в основах всей физики элементарных частиц. В самом деле, если это измерение верно, электрон - не точечная частица, а шар с радиусом 10 в минус 20 степени см. В 1995 году опыты на ускорителях давали оценку размера электрона - не более 10 в минус 17 степени см, то есть проверить Демельта было нельзя. Не исключено, что опыты на Большом адронном коллайдере помогут решить этот вопрос. И если размер у электрона действительно есть, то он и в самом деле окажется, согласно афоризму Ленина, "столь же неисчерпаемым, как атом" - состоящим из мелких частиц наподобие кварков с массой примерно 10 миллиардов масс электрона. Сейчас считается, что электрон един и неделим. По мнению Демельта, обнаружение делимости электрона породит мысль о полностью иерархическом строении всего сущего: оно будет состоять из всё более мелких и более тяжёлых частиц вплоть до самого нижнего уровня. На этом уровне расположен так называемый космон весом во Вселенную. Есть мнение, что космон и антикосмон, совершив однажды спонтанный квантовый перескок, и породили её. | | | | |
|
11 дек 2012, 14:27 |
|
|
Кто сейчас на форуме |
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 132 |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения
|
|