powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Функциональное программирование
25 сообщений из 300, страница 3 из 12
Функциональное программирование
    #36431338
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насколько я понимаю, что автоматическое распараллеливание не является killer feature на сегодняшний день. Важно скорее то, что подход ФП в будущем принципиально дает возможность развиваться в этом направлении. Для себя я понимаю, что основными достоинствами на сегодня является быстрая разработка некоторого рода ПО, которое связано с разбором сложных структур данных (парсеры/реализации протоколов/порождающее метапрграммирование). И второе достоинство - разработка более безопасных, безглючных программ за счет статической типизации.
Правда последнее достоинство важно в слабораспространенных в наших краях ИТ-направлениях как торговые роботы для бирж, медэлектроника, космос.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431358
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton wrote:

> Так вот. К чему я это. В императивном языке я вручную управлял
> параллелизмом выбирая ту степень, которая наиболее оптимальня для
> отклика. Функциональный язык, очевидно будет руководствоваться какими-то
> другими критериями которых я не знаю. И если он выбырет ТРИВИАЛЬНЫЙ или
> МАРГИНАЛЬНЫЫЙ критерий количества потоков/процессов на функцию то мы
> вместо роста performance получим просадку.

Ещё раз, в ФЯ (определённых, не во всех) этот процесс МОЖЕТ хотя бы
иногда происходить без вмешательства человека. В обычных языках
человек должен всё сделать руками.

Не, конечно есть языки программирования с высокоуровневыми
операциями типа перемножения матриц, там ТОЖЕ это возможно.
Ключевым тут является то, что есть специфицированная чётко
операция, которую можно выполнять как угодно. Либо это
встроенная в язык операция, либо , в ЧФЯ -- это вообще любой
алгоритм, написанный на этом языке.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431365
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) wrote:

> Гмм, повторю вопрос снова. Какая из реализаций ФЯ обеспечивает
> автоматическое распараллеливание ???

Не знаю, для меня главное, что это теоретически возможно.
Я предупреждаю, я сам не большой фанат читого ФП.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431384
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь попробую описать какого рода объяснения мне не хватает.
Давайте сделаем экскурс в недавнее прошлое, лет на 10-15 назад. В ту славную эпоху мэйнстримом в строении учетных систем были клиент-сервреные комбайны типа dbase/clipper/foxpro/paradox.
Уже тогда мало кто напрямую писал код на си по открытию таблиц в своем формате, индексации итп. Программирование выглядело на встроенном интерпретирующем языке типа так:

USE таблица 1 с индексом 1
use таблица 2 синдексом 2
Установить фильтр на таблицу 1 по условию ......
открыли курсоры, побежали по ним, поделали операции.
закрыли индексы
закрыли таблицы

Такой подход ручного управления позволял программисту самому в каждом конкретном случае выбирать стратегию работы с объектами БД и достигать максимальной производительности. Потом во второй половине и конце 90-х на арену начали выходить SQL-сервера.
Декларативный SQL, оптимизаторы по нынешним дням не ахти вообще, дорогущие и малодоступные.
Из преимуществ явно видно только отказоустойчивость и возможность настроить безопасность на доступ.
Если поставить себя на место спорящих в то время, что лучше SQL или Fox pro, то фокспрошник мог легко запинать скл-щика, т.к. его прямое управление кодом соединений было более эффективно. Аргументы что разработка на скл проще и быстрее (после значительной перестройки и расширения сознания под концепцию обработки множеств а не записей), да и оптимизаторы станут лучше в будущем и возможно, что даже появится когда-нибудь автоматический параллелизм на те времена выглядели бы слабенько.
История показала, что SQL выигрыли и на сегодня стали действительно хороши и гибки. И планы исполнения запросов может и не самый лучшие, но достаточно хорошие для решения текущих задач.
Мне видится аналогия SQL-я тогдашнего и ФП сегодняшнего. Правда есть исключение, концепция ФП вторая по древности после фортрана, т.е. не является новой.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431394
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Gluk (Kazan) wrote:

> Гмм, повторю вопрос снова. Какая из реализаций ФЯ обеспечивает
> автоматическое распараллеливание ???

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


Неа, невозможно. Поскольку для автоматического распараллеливания недостаточно функциональной чистоты. Соответсвенно, для императивного прораммирования имеются ровно такие же возможности параллельного программирования как и для функционального.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431432
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Неа, невозможно. Поскольку для автоматического распараллеливания недостаточно функциональной чистоты. Соответсвенно, для императивного прораммирования имеются ровно такие же возможности параллельного программирования как и для функционального.
Я тоже об этом думал. У ФП больше ВОЗМОЖНОСТЕЙ параллелить исполнение. Но не все возможности, очевидно принесут практическую пользу.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431472
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Неа, невозможно. Поскольку для автоматического распараллеливания недостаточно функциональной чистоты.
Код: plaintext
1.
x=f(f1(y),f2(z))
f1 и f2 можно выч. параллельно, достаточно их функциональной чистоты.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431547
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод
Код: plaintext
1.
x=f(f1(y),f2(z))
f1 и f2 можно выч. параллельно, достаточно их функциональной чистоты.
Хорошо подумал? А если x будет вызываться многократно (мильйон раз)? И параметром цикла или итерации будут y,z ?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431563
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модGluk (Kazan)Неа, невозможно. Поскольку для автоматического распараллеливания недостаточно функциональной чистоты.
Код: plaintext
1.
x=f(f1(y),f2(z))
f1 и f2 можно выч. параллельно, достаточно их функциональной чистоты.

Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в большую копеечку
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431588
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old wrote:

> Мне видится аналогия SQL-я тогдашнего и ФП сегодняшнего. Правда есть
> исключение, концепция ФП вторая по древности после фортрана, т.е. не
> является новой.

Концепция-то старая. Да дело в том, что все эти годы производительности
и ресурнов ЭВМ катастрофически было мало для функциональных языков
(дело не в самой функциональности, а в том, что они как правило
очень высокоуровневые, и, стало быть, жрут ресурсов больше).
А вот теперь производительности среднего компа хватает с головой
для очень высокоуровневых средств, вот ФП и получило новый
виток интереса к себе.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431596
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) wrote:

> Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в
> большую копеечку

а может и сократится оптимизацией хвостовой рекурсии в константу.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431659
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в большую копеечку
А какая разница, что делают эти функции ? Это ведь просто набор машинных команд, который можно рассовать по разным процессорам.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431664
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton А если x будет вызываться многократно (мильйон раз)? И параметром цикла или итерации будут y,z ?
То и выигрыш будет в мильйон раз :)
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431691
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv
Gluk (Kazan) wrote:

> Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в
> большую копеечку

а может и сократится оптимизацией хвостовой рекурсии в константу.


Давай отделять мух от котлет ? Как вот это можно свернуть в константу:

Код: plaintext
1.
2.
3.
(define (run f f1 f2 x y)
  (f (f1 x) (f2 y))
)

Второй вопрос, как это можно эффективно распараллелить на 2 потока, не имея представления что есть f1 и что есть f2 ??? Ваш выстрел несколько мимо темы, Вы не находите ?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431697
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модGluk (Kazan)Недостаточно. Если f1 это инкремент, такая многопоточность влетит тебе в большую копеечку
А какая разница, что делают эти функции ? Это ведь просто набор машинных команд, который можно рассовать по разным процессорам.

Если f1 и f2 пара машинных команд, то основное время в твоей многопоточной программе будет уходить на обеспечение многопоточности и синхронизации.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431701
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модТо и выигрыш будет в мильйон раз :)
Промах. Смоделируй то что сказал в любом императивном языке и увидишь что это не так.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431710
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)
Второй вопрос, как это можно эффективно распараллелить на 2 потока, не имея представления что есть f1 и что есть f2 ???
Итак: можно распараллелить. Эффективно по сравнению с последовательным выполнением ? Ну, хуже-то не будет.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431716
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton[quot _мод]Смоделируй то что сказал в любом императивном языке и увидишь что это не так.
Не получится ввиду отсутствия таких языков :)
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431723
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Если f1 и f2 пара машинных команд, то основное время в твоей многопоточной программе будет уходить на обеспечение многопоточности и синхронизации.
Это да. Но накладные расходы не в счет
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431797
Nitro_Junkie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Функциональное программирование - максимально декларативное из всех парадигм по определению, чтобы тут не говорили... Подчеркну максимально, а не чисто, потому как в любой парадигме должны быть императивные элементы изменяющие текущее состояние системы, вопрос лишь в том насколько они высокоуровневые. Так грубо говоря в SQL механизм SELECT'ов - чисто функциональный язык, а INSERT, UPDATE, DELETE - его императивная составляющая. Соответственно SQL представляет из себя максимально функциональное (декларативное) программирование из всех существующих на данный момент. За ним условно следует Haskell, затем Lisp, затем все остальные. Это из общеизвестных ессно.

Поэтому говорить о будущем функционального программирования некорректно. Оно уже наступило, про популярность SQL можно судить по названию этого форума. Правильнее говорить о его развитии...
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431866
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модGluk (Kazan)Если f1 и f2 пара машинных команд, то основное время в твоей многопоточной программе будет уходить на обеспечение многопоточности и синхронизации.
Это да. Но накладные расходы не в счет

ага, точно в ЮТ-е была такая задача
бла бла бла тело падает вводу бла бла бла "сопротивлением воды и воздуха пренебречь"

когда они будут на пару порядков больше полезной нагрузки, они будут очень даже в счет
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431905
Nxz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Nxz
Гость
Такой вопрос про распаралеливание, так по принципу в новый поток будет пускать каждая фу-ия независимо от того, что она из себя представляет? Или всёже есть какието выборочные критерии?!
...
Рейтинг: 0 / 0
Функциональное программирование
    #36431928
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NxzТакой вопрос про распаралеливание, так по принципу в новый поток будет пускать каждая фу-ия независимо от того, что она из себя представляет? Или всёже есть какието выборочные критерии?!
Я как раз про это и спрашиваю сообщество. Где эти самые критерии?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432023
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonNxzТакой вопрос про распаралеливание, так по принципу в новый поток будет пускать каждая фу-ия независимо от того, что она из себя представляет? Или всёже есть какието выборочные критерии?!
Я как раз про это и спрашиваю сообщество. Где эти самые критерии?
Критерии вставляют в оптимизатор транслятора. Какие они будут - вопрос исследований. Или вы думаете, что все проблемы уже решены.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432034
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модmaytonNxzТакой вопрос про распаралеливание, так по принципу в новый поток будет пускать каждая фу-ия независимо от того, что она из себя представляет? Или всёже есть какието выборочные критерии?!
Я как раз про это и спрашиваю сообщество. Где эти самые критерии?
Критерии вставляют в оптимизатор транслятора. Какие они будут - вопрос исследований. Или вы думаете, что все проблемы уже решены.

Какие могут быть критерии, если вызываемая функция не известна на момент компиляции ???
гадание на облаках ?
...
Рейтинг: 0 / 0
25 сообщений из 300, страница 3 из 12
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Функциональное программирование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]