|
|
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) То есть статьи не будет жалка Ну это лучше обратиться к спецам - я просто интересующийся. FFT не смотрел, про parfib скажу следующее: 1. Это не автоматическое распараллеливание, а ровно такое, какое было с OMP (`par` программист определяет где вставить, и это правильно) Насколько я понимаю, именно это я и написал первой фразой исходного письма. Только что эквивалетность с OMP не знаю. 2. parfib и quicksort забавны в качестве иллюстративного учебного материала. На практике - бред, по причинам указанным выше Прочитали ли вы текст на страничке? The imaginary part consists of toy programs such as factorial and quicksort. Such programs are useless for drawing general conclusions, but can sometimes show up nasty performance bugs in sharp relief. 3. quicksort c его карманным биллиардом над списками порадовал особо. Тяжело ему будет угнаться за Си-шной реализацией над мутабельным массивом ;( The real part consists of real application programs, written by people who simply wanted to get the job done. They are larger and more I/O intensive than the imaginary and spectral suite. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 22:17:16 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Кстати, я правильно понимаю, что здесь 3 потока ? вот тут написано Its dynamic behaviour is to indicate that p could be evaluated by a new parallel thread, with the parent thread continuing evaluation of e. We say that p has been sparked, and a thread may subsequently be created to evaluate it if a processor becomes idle . Since the thread is not necessarily created, p is similar to a lazy future Как пример параллельного программирования конечно катит :) чисто поржать ну или для иллюстрации концепции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 22:41:06 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mikhail_nНапример, можно профилировать приложение при тестовом прогоне, а потом используя статистику распараллеливать. Отлично. Сделали. Вариант #1: 1. Можно ли как-то формализовать правила распараллеливания, чтобы таких случаев было меньше или эта задача принципиально не формализуема? 2. Как вы считаете, в функционально написанной программе больше кусков которые очевидно, как распараллелить или меньше, чем в императивной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 23:11:28 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Несколько мыслей в тему, да не совсем 1. Подозреваю, что лет через 10 (а то и 5) у меня в ноутбуке процессорных ядер будет 1000. 2. К абсолютно "параллельному" программированию пошла бы идеология хранения данных, например по типу MUMPS. Таблицы и парадигма НФ - в утиль. Заодно и разделение на оперативную/постоянную память. 3. Неплохо если б сегодняшние виртуальные "фермы" с их сумасшедшими накладными мильена параллельных виртуализированных ОС заменились бы одной метамашиной с мильеном программ на "параллельном" языке без побочных эффектов. 4. Правда, при попытке написать что либо на чем то типа пролога, мозги у меня с непривычки к такому виду всегда сворачивались в рекурсию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 23:29:28 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Siemargl2. К абсолютно "параллельному" программированию пошла бы идеология хранения данных, например по типу MUMPS. Таблицы и парадигма НФ - в утиль. Заодно и разделение на оперативную/постоянную память. И при этом таблицы БД превращаются в обычные переменные (массивы или списки), которые могут быть результатом вычисления функций. Вот тогда ФП и будет рулить по полной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 09:29:20 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
belugin ну или для иллюстрации концепции. Ага, на тему как не надо параллелить :) Вы же привели этот пример (первоначально) без каких либо ссылок на тему "вот как в ФЯ все легко параллелится" Собсна к авторам кода претензий нет :) А Вам новичков почти удалось ввести в заблуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 09:32:33 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
belugin Its dynamic behaviour is to indicate that p could be evaluated by a new parallel thread, with the parent thread continuing evaluation of e. We say that p has been sparked, and a thread may subsequently be created to evaluate it if a processor becomes idle . Since the thread is not necessarily created, p is similar to a lazy future Ну значить не все так просто в параллелизме Собственно я догадывался, без ленивости тут не обошлось (впрочем это не отменяет моего рассказа про накладные расходы борделя). Ээээх если бы он еще потоки легкие рожал в стиле Эрланга (или таки рожает ???) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 09:38:48 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Siemargl 1. Подозреваю, что лет через 10 (а то и 5) у меня в ноутбуке процессорных ядер будет 1000. Это вряд-ли (без кардинального изменения архитектуры) подерутся 1000 ядер на одной памяти. С кардинальным изменением, отличий у твоего ноутбука будет куда больше чем просто 1000 ядер Siemargl 2. К абсолютно "параллельному" программированию пошла бы идеология хранения данных, например по типу MUMPS. Таблицы и парадигма НФ - в утиль. Заодно и разделение на оперативную/постоянную память. А это сфигали ? Чем MUMPS в этом плане лучше ??? Siemargl 3. Неплохо если б сегодняшние виртуальные "фермы" с их сумасшедшими накладными мильена параллельных виртуализированных ОС заменились бы одной метамашиной с мильеном программ на "параллельном" языке без побочных эффектов. маниловщина :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 09:43:06 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mikhail_nЗайди на сайт Сана, посмотри чего делает свич -xautopa r Сановского C/C++ компилятора и да снизойдёт на тебя просветление. И что, это таки серебрянная пуля, которая решит все проблемы параллелизма? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 10:31:18 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkie пишет: > Wikipedia > > Функциональное программирование — раздел дискретной математики и > парадигма программирования, в которой процесс вычисления трактуется как > Первые 2 абзаца в википедии про функциональное программирование... Таким > образом SQL более удовлетворяет определению функционального > программирования чем тот же Haskell или тем более Lisp... http://lurkmore.ru/Википедия Таким образом, уже с первых строк мы понимаем, что если на заборе написано "#YN", то за забором, скоее всего, стройка. По смысловому значению содержимого мне лично сказать нечего. Если хочешь считать SQL функциональным языком программирования -- считай. Я же хочу напомнить, что ОБЯЗАТЕЛЬНЫМ атрибутом всех функциональных языков является наличие первокласных функций и функций высшего порядка. В SQL ВООБЩЕ функций нет. На этом я свою мысл закончил. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 10:38:43 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Siemargl 2. К абсолютно "параллельному" программированию пошла бы идеология хранения данных, например по типу MUMPS. Таблицы и парадигма НФ - в утиль. Заодно и разделение на оперативную/постоянную память. А это сфигали ? Чем MUMPS в этом плане лучше ??? Насколько я разбираюсь в сабже, MUMPS размывает границы в цепочке база - схема - сущность - атрибут, а также вносит возможность низкоуровневого управления транзакциями. Но какая связь ЗДЕСЬ между ПАРАЛЛЕЛЬНЫМ программированием и М я пока не понимаю. Но если автор объяснит - буду рад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 10:39:01 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mikhail_n пишет: > Слушай Зифф, ну ладно тут дети всякую хрень пишут, но ты же солидный > человек, модератор форума C/C++, это ж твой кусок хлеба! Ага, уже. Даже кружкой пива не проставились. Зачем же ты > всем компиляторам C/C++ так походя отказываешь в способности > автоматически параллелить код? А вот выйдет новый стандарт С++ -- и увидешь, зачем. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 10:42:09 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Ты суслика видишь? Нет. И я нет. А он есть. SQL вообще очень несовершенен, все-таки в 70-х годах создавался... Функции в нем - представлены в виде неключевых колонок таблиц - соответственно значения их это значения функций, а значения ключевых колонок это параметры функции. Если у тебя не получается абстрагироваться и увидеть это, то это твои проблемы (хотя и проблемы SQL'я тоже)... no offence... :) PS: Естественно говорим о 2-й или какой там НФ (с ключами в таблицах), потому как в ранних формах SQL по сути не используется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 11:06:15 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Что касается каррирования, то результат любого SELECT - таблица, а значит функция. То есть функция в SQL возвращает только функцию (то есть даже значение не может), так что можно говорить что более функционального языка чем SQL'а вообще нету :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 11:12:17 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
maytonGluk (Kazan) Siemargl 2. К абсолютно "параллельному" программированию пошла бы идеология хранения данных, например по типу MUMPS. Таблицы и парадигма НФ - в утиль. Заодно и разделение на оперативную/постоянную память. А это сфигали ? Чем MUMPS в этом плане лучше ??? Насколько я разбираюсь в сабже, MUMPS размывает границы в цепочке база - схема - сущность - атрибут, а также вносит возможность низкоуровневого управления транзакциями. Но какая связь ЗДЕСЬ между ПАРАЛЛЕЛЬНЫМ программированием и М я пока не понимаю. Но если автор объяснит - буду рад. Дело не в М, а в хранении данных там. Все переменные (глобали), они же все данные приложения хранятся в боольшой куче, без разделения - диск-память (только кэшируются при обращении). Ну еще это произвольно-многомерный разреженный массив. Причем есть разделение/блокировка доступа к ним из разных программ. Вот чего там нет, а надо бы (для ФП) - это работа с множествами. Чем MUMPS (в этом) лучше - уровень абстракции выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 11:31:04 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_JunkieMasterZiv, Ты суслика видишь? Нет. И я нет. А он есть. ... Функции в нем - представлены в виде неключевых колонок таблиц - соответственно значения их это значения функций, а значения ключевых колонок это параметры функции. ну, в общем, да - суслик есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 11:35:38 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
SiemarglmaytonGluk (Kazan) Siemargl 2. К абсолютно "параллельному" программированию пошла бы идеология хранения данных, например по типу MUMPS. Таблицы и парадигма НФ - в утиль. Заодно и разделение на оперативную/постоянную память. А это сфигали ? Чем MUMPS в этом плане лучше ??? Насколько я разбираюсь в сабже, MUMPS размывает границы в цепочке база - схема - сущность - атрибут, а также вносит возможность низкоуровневого управления транзакциями. Но какая связь ЗДЕСЬ между ПАРАЛЛЕЛЬНЫМ программированием и М я пока не понимаю. Но если автор объяснит - буду рад. Дело не в М, а в хранении данных там. Все переменные (глобали), они же все данные приложения хранятся в боольшой куче, без разделения - диск-память (только кэшируются при обращении). Ну еще это произвольно-многомерный разреженный массив. Причем есть разделение/блокировка доступа к ним из разных программ. Вот чего там нет, а надо бы (для ФП) - это работа с множествами. Чем MUMPS (в этом) лучше - уровень абстракции выше. А если копнуть эту абстракцию поглубже, выясняется, что "глобаль" физически хранится в B-дереве, которое представляет собой обычный файл, хранящийся на диске с кэшированием в памяти. Т.е. точь в точь как во всех РСУБД. Мусье теоретик ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 11:38:32 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_JunkieЧто касается каррирования, то результат любого SELECT - таблица, а значит функция. То есть функция в SQL возвращает только функцию (то есть даже значение не может), так что можно говорить что более функционального языка чем SQL'а вообще нету :) Частный случай ИМХО. Возьми современный бизнес-код с INSERT-s, UPDATE-s и попробуй прикрутить это к функциональности. Вся гладкая теория сразу рухнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 11:40:31 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkie пишет: > SQL вообще очень несовершенен, все-таки в 70-х годах создавался... > Функции в нем - представлены в виде неключевых колонок таблиц - > соответственно значения их это значения функций, а значения ключевых > колонок это параметры функции. Если у тебя не получается Это не в нём функции. Это в БД хранятся функции. А точнее отношения (они же реляции). А в ЯЗЫКЕ SQL функций нет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 11:42:30 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Nitro_Junkie пишет: > Что касается каррирования, то результат любого SELECT - таблица, а > значит функция. То есть функция в SQL возвращает только функцию (то есть > даже значение не может), так что можно говорить что более > функционального языка чем SQL'а вообще нету :) Даже если рассуждать, как ты, функцией должен быть SELECT. Таблицы на входе и таблица на выходе -- результаты фунций. Я понимаю твою аналогию, понимаю, о чём ты, но аналогия эта неверна и неуместна. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 11:45:12 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) А если копнуть эту абстракцию поглубже, выясняется, что "глобаль" физически хранится в B-дереве, которое представляет собой обычный файл, хранящийся на диске с кэшированием в памяти. Т.е. точь в точь как во всех РСУБД. Мусье теоретик ? Я к тому и веду, что как физически что хранится и как работают компиляторы/интерпретаторы должно стать несущественным с развитием технологии. Неважно где данные, в памяти они, на локальном диске, на удаленном хранилище или в облаке - должно волновать только внутренний оптимизатор системы. Первая половина топика была посвящена только задаче распараллеливания кода, а я добавил про данные. Ну и весь топик теоретический, ибо практические применения не обсуждаются/нет =) Кстати, про нереальность 1000 процессоров несогласен. Уже есть Cell, уже есть DSP с сотнями ядер, граф.платы на подходе.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 11:56:58 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Siemargl Кстати, про нереальность 1000 процессоров несогласен. Уже есть Cell, уже есть DSP с сотнями ядер, граф.платы на подходе.... Специализированные процессоры для специальных задач, а не твои 1000 универсальных ядер на ноуте с разделяемой памятью. По поводу теории и практики, говорю еще раз MUMPS хранит данные также как и все остальные и не понятно почему остальные должны отмереть, а MUMPS продолжать здравствовать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 12:03:00 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan), Не МУМПС, который и так почти дохлый, а идея доступа к данным из программы. Хорошо, начнем с другого конца=) Как, по вашему, должны хранить данные _большие_ программы на ФП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 12:52:41 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
MasterZiv, По умолчанию в БД хранятся только таблицы, читай данный, а запросы создаются на клиенте... По сути клиент "пишет программу" и отправляет ее выполнять на сервер. В этом смысле сервер приложений больше подходит под твои определения чем SQL сервер. > Я понимаю твою аналогию, понимаю, о чём ты, но аналогия > эта неверна и неуместна. Честно говоря этого я и пытался добиться, то есть вопрос все-таки о терминах идет, а не общем принципе. На самом деле я бы наверное мог бы построить четкую математическую модель отображения SQL во 2НФ на функции (лямбда-исчисление), но это долгая и нудная задача... Кроме того можно сказать что это отображение умозрительно, слово "функция" в описании SQL нету - значит язык не функциональный, так что не буду тратить на это время... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 13:04:49 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Но кстати по вопросам параллелизма о котором тут параллельно спорят... Императивную программу реально очень тяжело распараллелить, в то время как распаралливание декларативной (функциональной) программы уже достаточно неплохо реализовано в существующих SQL-серверах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2010, 13:07:53 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36435641&tid=1343707]: |
0ms |
get settings: |
9ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
173ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 184ms |
| total: | 460ms |

| 0 / 0 |
