powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Функциональное программирование
25 сообщений из 300, страница 4 из 12
Функциональное программирование
    #36432037
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модКритерии вставляют в оптимизатор транслятора. Какие они будут - вопрос исследований. Или вы думаете, что все проблемы уже решены.
А, вы тоже - капитан? Тогда нет вопросов.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432101
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldТеперь попробую описать какого рода объяснения мне не хватает.
...
Мне видится аналогия SQL-я тогдашнего и ФП сегодняшнего. Правда есть исключение, концепция ФП вторая по древности после фортрана, т.е. не является новой.
Какие объяснения нужны из аналогий непонятно.
ФП вобще понятие общее. haskell и ocaml построены на типизированом лямбда исчислении. Теория категорий играет для него примерно ту же роль что и теория множеств для реалиционной алгебры.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432110
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old
Давайте сделаем экскурс в недавнее прошлое, лет на 10-15 назад. В ту славную эпоху мэйнстримом в строении учетных систем были клиент-сервреные комбайны типа dbase/clipper/foxpro/paradox.
Уже тогда мало кто напрямую писал код на си по открытию таблиц в своем формате, индексации итп. Программирование выглядело на встроенном интерпретирующем языке типа так:

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

Такой подход ручного управления позволял программисту самому в каждом конкретном случае выбирать стратегию работы с объектами БД и достигать максимальной производительности. Потом во второй половине и конце 90-х на арену начали выходить SQL-сервера.
Декларативный SQL, оптимизаторы по нынешним дням не ахти вообще, дорогущие и малодоступные.
Из преимуществ явно видно только отказоустойчивость и возможность настроить безопасность на доступ.
Если поставить себя на место спорящих в то время, что лучше SQL или Fox pro, то фокспрошник мог легко запинать скл-щика, т.к. его прямое управление кодом соединений было более эффективно. Аргументы что разработка на скл проще и быстрее (после значительной перестройки и расширения сознания под концепцию обработки множеств а не записей), да и оптимизаторы станут лучше в будущем и возможно, что даже появится когда-нибудь автоматический параллелизм на те времена выглядели бы слабенько.
..
Мне видится аналогия SQL-я тогдашнего и ФП сегодняшнего. Правда есть исключение, концепция ФП вторая по древности после фортрана, т.е. не является новой.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432191
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_old
Давайте сделаем экскурс в недавнее прошлое, лет на 10-15 назад. В ту славную эпоху мэйнстримом в строении учетных систем были клиент-сервреные комбайны типа dbase/clipper/foxpro/paradox.
Уже тогда мало кто напрямую писал код на си по открытию таблиц в своем формате, индексации итп. Программирование выглядело на встроенном интерпретирующем языке типа так:

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

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

Стоит ли мне мне сейчас взять алгоритм параллельного быстрого преобразования Фурье разметить его тегами src и запостить в форум?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432448
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давай. Только со спойлером, ежели сильно большой.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432449
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Какие могут быть критерии, если вызываемая функция не известна на момент компиляции ???
гадание на облаках ?

Например, можно профилировать приложение при тестовом прогоне, а потом используя статистику распараллеливать.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432455
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beluginНапример, можно профилировать приложение при тестовом прогоне, а потом используя статистику распараллеливать.
Не вариант! Вспоминаем что одной из задач, решаемых ФП является автоматическое построение значительной части программы по описанию структур данных. Это означает что тестового прогона может не быть вообще, если еще нет данных на входе.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432457
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Не вариант! Вспоминаем что одной из задач, решаемых ФП является автоматическое построение значительной части программы по описанию структур данных.

Поясни, проиллюстрируй.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432461
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
а скачать никак (придупреждяаю - literal haskell)? Вообще-то я имед ввдк что концепции иллюстрируют на небольших, необязательно реальных примерах. Типа иерархии кошка-собака-животное для ООП.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432462
antares0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Не вариант! Вспоминаем что одной из задач, решаемых ФП является автоматическое построение значительной части программы по описанию структур данных. Это означает что тестового прогона может не быть вообще, если еще нет данных на входе.
А вот с этого места поподробнее. Такое определение больше похоже на метапрограмирование или суперкомпиляцию, чем на ФП.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432478
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beluginПоясни, проиллюстрируй.
Судя по постам - ты не новичёк в ФП. Возможно я даже меньше
твоего писал. Поэтому пояснять не буду. Просто переадресую
тебя к книге Р.Душкина - Функциональное
программирование на языке Haskell
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432482
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antares0А вот с этого места поподробнее. Такое определение больше похоже на метапрограмирование или суперкомпиляцию, чем на ФП.
Согласен. Похоже.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432494
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonbeluginПоясни, проиллюстрируй.
Судя по постам - ты не новичёк в ФП. Возможно я даже меньше
твоего писал. Поэтому пояснять не буду. Просто переадресую
тебя к книге Р.Душкина - Функциональное
программирование на языке Haskell

Я опять не понимаю (книга на полке стоит) - можешь дать точную ссылку с цитатой?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432516
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, можно профилировать приложение при тестовом прогоне, а потом используя статистику распараллеливать.

Отлично. Сделали.

Вариант #1: В результате анализа статистики выяснилось что 99% времени исполнения программа затратила в одной единственной функции которая принимает одну квадратную матрицу A размером N x N, выполняет её факторизацию - т.е. находит такую нижнетреугольную матрицу L размером N x N и верхнетреугольную матрицу U размером N x N что A = L*U и возвращает в вызывающую программу L и U. Пусть при дальнейшем скурпулёзном анализе оказалось что проблемная функция написана так что отвечает всем критериям чистоты ф.я. Апологеты ф.я., расскажите как в соответствии с заветами г-на _мод_ можно распараллелить эту фукцию в режиме "моск офф".

Вариант #2. Проанализировали статистику, оказалось всё не так глухо как в предыдущем случае. Даже наоборот, проблемный кусок параллелизуется на ура, причём теоретически долженa иметь место быть линейная масштабируемость. Распараллелили, запустили, пересобрали статистику - стало либо хуже чем было, либо лучше, но никакой линейной масштабируемостью и близко не пахнет. Причин почему так может быть - мульён, гора книг об этом написана и т.д. В императивном языке существует довольно много способов повлиять на результат путём изменения положения данных внутри массивов (например чтобы избежать false sharing эффекта), привязкой конкретных тредов к конкретным процам так чтобы императивная прога занималась действительно полезными вычислениями а не гоняла туда - сюда данные по кэшам разных процессоров пытаясь догнать тред внезапно переехавший с одного проца на другой и т.д. и т.п. Да, всё это не бесплатно, всё надо тем или иным способом кодить. Тем не менее, оно есть. А какой инструментарий для разрешения этих проблем предоставляет ф.я? Особенно в случае использования абстракций высокого уровня...
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432517
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belugin

Я опять не понимаю (книга на полке стоит) - можешь дать точную ссылку с цитатой?
Пруфлинк с цитатой.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432523
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beluginmayton,
а скачать никак (придупреждяаю - literal haskell)? Вообще-то я имед ввдк что концепции иллюстрируют на небольших, необязательно реальных примерах. Типа иерархии кошка-собака-животное для ООП.
Пролистал. Слишком много букв. Может скажешь куда именно смотреть что-бы была понятная твоя мысль?
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432685
belugin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonbeluginmayton,
а скачать никак (придупреждяаю - literal haskell)? Вообще-то я имед ввдк что концепции иллюстрируют на небольших, необязательно реальных примерах. Типа иерархии кошка-собака-животное для ООП.
Пролистал. Слишком много букв. Может скажешь куда именно смотреть что-бы была понятная твоя мысль?

Это ты у Gluk (Kazan) спроси - ему фибоначчи было мало ;).

Еще раз есть страничка с говорящим названием nofib с разными параллельными алгоритмами на parallel haskell. Если хочется просто иллюстрации как это выглядит, можно посмотреть простые алгоритмы в начале. Но Gluk (Kazan) такой простой иллюстрации было не достаточно, поэтому я предложил ему посмотреть быстрое преобразование Фурье. Вот такая моя мысль.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432712
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beluginGluk (Kazan)
Оооо да !!! это оооочень полезно. Распараллеливать вычисление чисел Фиббоначи.

Стоит ли мне мне сейчас взять алгоритм параллельного быстрого преобразования Фурье разметить его тегами src и запостить в форум?

Наверное стоит, но не на форум, а в дельную статью относительно бенефитов ФП в отношении параллелизма. С удовольствием почитаю. И журнальчик есть :)
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432764
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
belugin
Это ты у Gluk (Kazan) спроси - ему фибоначчи было мало ;).


То есть статьи не будет жалка

FFT не смотрел, про parfib скажу следующее:

1. Это не автоматическое распараллеливание, а ровно такое, какое было с OMP (`par` программист определяет где вставить, и это правильно)
2. parfib и quicksort забавны в качестве иллюстративного учебного материала. На практике - бред, по причинам указанным выше
3. quicksort c его карманным биллиардом над списками порадовал особо. Тяжело ему будет угнаться за Си-шной реализацией над мутабельным массивом ;(
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432790
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И уж коли здесь принято подтверждать свое мнение ссылками на авторитеты, позволю себе сослаться на п. 1.5 описывающий сложности рекурсивного параллелизма, на мой взгляд, исключающие его автоматическую реализацию.

Кстати, все примеры в книге насквозь имеперативные
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432800
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я чего-то не понимаю, но о чем спор? Вот, например, рядовая задача - обработка коллекций:

Код: plaintext
1.
dest_list = scr_list.foreach(item => process_item(item));

Если process_item() - "чистая" функция, то "умный" компилятор запросто может применить реализацию foreach, запускающую process_item в несколько потоков.

// рассуждаю теоретически, на практике не сталкивался.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432844
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mikhail_n Да, всё это не бесплатно, всё надо тем или иным способом кодить. Тем не менее, оно есть.
Вспомните историю: первые компиляторы порождали плохой код, а сейчас далеко не всякий программер напишет код на асме лучше, чем оптимизирующий компилятор. Так что всему свое время.
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432852
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_модmikhail_n Да, всё это не бесплатно, всё надо тем или иным способом кодить. Тем не менее, оно есть.
Вспомните историю: первые компиляторы порождали плохой код, а сейчас далеко не всякий программер напишет код на асме лучше, чем оптимизирующий компилятор. Так что всему свое время.

Дык проблемой над автоматического распараллеливания далеко не первый год бьются (и не только функциональщики), а Грааль и ныне там
...
Рейтинг: 0 / 0
Функциональное программирование
    #36432858
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДиезМожет я чего-то не понимаю, но о чем спор? Вот, например, рядовая задача - обработка коллекций:

Код: plaintext
1.
dest_list = scr_list.foreach(item => process_item(item));

Если process_item() - "чистая" функция, то "умный" компилятор запросто может применить реализацию foreach, запускающую process_item в несколько потоков.

// рассуждаю теоретически, на практике не сталкивался.

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


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