|
|
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, что автоматическое распараллеливание не является killer feature на сегодняшний день. Важно скорее то, что подход ФП в будущем принципиально дает возможность развиваться в этом направлении. Для себя я понимаю, что основными достоинствами на сегодня является быстрая разработка некоторого рода ПО, которое связано с разбором сложных структур данных (парсеры/реализации протоколов/порождающее метапрграммирование). И второе достоинство - разработка более безопасных, безглючных программ за счет статической типизации. Правда последнее достоинство важно в слабораспространенных в наших краях ИТ-направлениях как торговые роботы для бирж, медэлектроника, космос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 13:50:20 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mayton wrote: > Так вот. К чему я это. В императивном языке я вручную управлял > параллелизмом выбирая ту степень, которая наиболее оптимальня для > отклика. Функциональный язык, очевидно будет руководствоваться какими-то > другими критериями которых я не знаю. И если он выбырет ТРИВИАЛЬНЫЙ или > МАРГИНАЛЬНЫЫЙ критерий количества потоков/процессов на функцию то мы > вместо роста performance получим просадку. Ещё раз, в ФЯ (определённых, не во всех) этот процесс МОЖЕТ хотя бы иногда происходить без вмешательства человека. В обычных языках человек должен всё сделать руками. Не, конечно есть языки программирования с высокоуровневыми операциями типа перемножения матриц, там ТОЖЕ это возможно. Ключевым тут является то, что есть специфицированная чётко операция, которую можно выполнять как угодно. Либо это встроенная в язык операция, либо , в ЧФЯ -- это вообще любой алгоритм, написанный на этом языке. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 13:56:41 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) wrote: > Гмм, повторю вопрос снова. Какая из реализаций ФЯ обеспечивает > автоматическое распараллеливание ??? Не знаю, для меня главное, что это теоретически возможно. Я предупреждаю, я сам не большой фанат читого ФП. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 13:58:03 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Теперь попробую описать какого рода объяснения мне не хватает. Давайте сделаем экскурс в недавнее прошлое, лет на 10-15 назад. В ту славную эпоху мэйнстримом в строении учетных систем были клиент-сервреные комбайны типа dbase/clipper/foxpro/paradox. Уже тогда мало кто напрямую писал код на си по открытию таблиц в своем формате, индексации итп. Программирование выглядело на встроенном интерпретирующем языке типа так: USE таблица 1 с индексом 1 use таблица 2 синдексом 2 Установить фильтр на таблицу 1 по условию ...... открыли курсоры, побежали по ним, поделали операции. закрыли индексы закрыли таблицы Такой подход ручного управления позволял программисту самому в каждом конкретном случае выбирать стратегию работы с объектами БД и достигать максимальной производительности. Потом во второй половине и конце 90-х на арену начали выходить SQL-сервера. Декларативный SQL, оптимизаторы по нынешним дням не ахти вообще, дорогущие и малодоступные. Из преимуществ явно видно только отказоустойчивость и возможность настроить безопасность на доступ. Если поставить себя на место спорящих в то время, что лучше SQL или Fox pro, то фокспрошник мог легко запинать скл-щика, т.к. его прямое управление кодом соединений было более эффективно. Аргументы что разработка на скл проще и быстрее (после значительной перестройки и расширения сознания под концепцию обработки множеств а не записей), да и оптимизаторы станут лучше в будущем и возможно, что даже появится когда-нибудь автоматический параллелизм на те времена выглядели бы слабенько. История показала, что SQL выигрыли и на сегодня стали действительно хороши и гибки. И планы исполнения запросов может и не самый лучшие, но достаточно хорошие для решения текущих задач. Мне видится аналогия SQL-я тогдашнего и ФП сегодняшнего. Правда есть исключение, концепция ФП вторая по древности после фортрана, т.е. не является новой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 14:06:12 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
MasterZiv Gluk (Kazan) wrote: > Гмм, повторю вопрос снова. Какая из реализаций ФЯ обеспечивает > автоматическое распараллеливание ??? Не знаю, для меня главное, что это теоретически возможно. Я предупреждаю, я сам не большой фанат читого ФП. Неа, невозможно. Поскольку для автоматического распараллеливания недостаточно функциональной чистоты. Соответсвенно, для императивного прораммирования имеются ровно такие же возможности параллельного программирования как и для функционального. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 14:09:22 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Неа, невозможно. Поскольку для автоматического распараллеливания недостаточно функциональной чистоты. Соответсвенно, для императивного прораммирования имеются ровно такие же возможности параллельного программирования как и для функционального. Я тоже об этом думал. У ФП больше ВОЗМОЖНОСТЕЙ параллелить исполнение. Но не все возможности, очевидно принесут практическую пользу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 14:20:09 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Неа, невозможно. Поскольку для автоматического распараллеливания недостаточно функциональной чистоты. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 14:30:59 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
_мод Код: plaintext 1. Хорошо подумал? А если x будет вызываться многократно (мильйон раз)? И параметром цикла или итерации будут y,z ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 14:51:57 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
_модGluk (Kazan)Неа, невозможно. Поскольку для автоматического распараллеливания недостаточно функциональной чистоты. Код: plaintext 1. Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в большую копеечку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 14:58:26 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Ggg_old wrote: > Мне видится аналогия SQL-я тогдашнего и ФП сегодняшнего. Правда есть > исключение, концепция ФП вторая по древности после фортрана, т.е. не > является новой. Концепция-то старая. Да дело в том, что все эти годы производительности и ресурнов ЭВМ катастрофически было мало для функциональных языков (дело не в самой функциональности, а в том, что они как правило очень высокоуровневые, и, стало быть, жрут ресурсов больше). А вот теперь производительности среднего компа хватает с головой для очень высокоуровневых средств, вот ФП и получило новый виток интереса к себе. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:07:52 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) wrote: > Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в > большую копеечку а может и сократится оптимизацией хвостовой рекурсии в константу. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:09:26 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в большую копеечку А какая разница, что делают эти функции ? Это ведь просто набор машинных команд, который можно рассовать по разным процессорам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:30:16 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mayton А если x будет вызываться многократно (мильйон раз)? И параметром цикла или итерации будут y,z ? То и выигрыш будет в мильйон раз :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:32:42 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
MasterZiv Gluk (Kazan) wrote: > Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в > большую копеечку а может и сократится оптимизацией хвостовой рекурсии в константу. Давай отделять мух от котлет ? Как вот это можно свернуть в константу: Код: plaintext 1. 2. 3. Второй вопрос, как это можно эффективно распараллелить на 2 потока, не имея представления что есть f1 и что есть f2 ??? Ваш выстрел несколько мимо темы, Вы не находите ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:41:11 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
_модGluk (Kazan)Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в большую копеечку А какая разница, что делают эти функции ? Это ведь просто набор машинных команд, который можно рассовать по разным процессорам. Если f1 и f2 пара машинных команд, то основное время в твоей многопоточной программе будет уходить на обеспечение многопоточности и синхронизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:43:05 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
_модТо и выигрыш будет в мильйон раз :) Промах. Смоделируй то что сказал в любом императивном языке и увидишь что это не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:43:48 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Второй вопрос, как это можно эффективно распараллелить на 2 потока, не имея представления что есть f1 и что есть f2 ??? Итак: можно распараллелить. Эффективно по сравнению с последовательным выполнением ? Ну, хуже-то не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:45:35 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mayton[quot _мод]Смоделируй то что сказал в любом императивном языке и увидишь что это не так. Не получится ввиду отсутствия таких языков :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:47:07 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)Если f1 и f2 пара машинных команд, то основное время в твоей многопоточной программе будет уходить на обеспечение многопоточности и синхронизации. Это да. Но накладные расходы не в счет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 15:48:15 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Функциональное программирование - максимально декларативное из всех парадигм по определению, чтобы тут не говорили... Подчеркну максимально, а не чисто, потому как в любой парадигме должны быть императивные элементы изменяющие текущее состояние системы, вопрос лишь в том насколько они высокоуровневые. Так грубо говоря в SQL механизм SELECT'ов - чисто функциональный язык, а INSERT, UPDATE, DELETE - его императивная составляющая. Соответственно SQL представляет из себя максимально функциональное (декларативное) программирование из всех существующих на данный момент. За ним условно следует Haskell, затем Lisp, затем все остальные. Это из общеизвестных ессно. Поэтому говорить о будущем функционального программирования некорректно. Оно уже наступило, про популярность SQL можно судить по названию этого форума. Правильнее говорить о его развитии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 16:15:51 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
_модGluk (Kazan)Если f1 и f2 пара машинных команд, то основное время в твоей многопоточной программе будет уходить на обеспечение многопоточности и синхронизации. Это да. Но накладные расходы не в счет ага, точно в ЮТ-е была такая задача бла бла бла тело падает вводу бла бла бла "сопротивлением воды и воздуха пренебречь" когда они будут на пару порядков больше полезной нагрузки, они будут очень даже в счет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 16:43:29 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Такой вопрос про распаралеливание, так по принципу в новый поток будет пускать каждая фу-ия независимо от того, что она из себя представляет? Или всёже есть какието выборочные критерии?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 16:57:14 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
NxzТакой вопрос про распаралеливание, так по принципу в новый поток будет пускать каждая фу-ия независимо от того, что она из себя представляет? Или всёже есть какието выборочные критерии?! Я как раз про это и спрашиваю сообщество. Где эти самые критерии? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 17:05:39 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
maytonNxzТакой вопрос про распаралеливание, так по принципу в новый поток будет пускать каждая фу-ия независимо от того, что она из себя представляет? Или всёже есть какието выборочные критерии?! Я как раз про это и спрашиваю сообщество. Где эти самые критерии? Критерии вставляют в оптимизатор транслятора. Какие они будут - вопрос исследований. Или вы думаете, что все проблемы уже решены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 17:39:09 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
_модmaytonNxzТакой вопрос про распаралеливание, так по принципу в новый поток будет пускать каждая фу-ия независимо от того, что она из себя представляет? Или всёже есть какието выборочные критерии?! Я как раз про это и спрашиваю сообщество. Где эти самые критерии? Критерии вставляют в оптимизатор транслятора. Какие они будут - вопрос исследований. Или вы думаете, что все проблемы уже решены. Какие могут быть критерии, если вызываемая функция не известна на момент компиляции ??? гадание на облаках ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 17:43:44 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36431358&tid=1343707]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
209ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 568ms |

| 0 / 0 |
