|
|
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
_модКритерии вставляют в оптимизатор транслятора. Какие они будут - вопрос исследований. Или вы думаете, что все проблемы уже решены. А, вы тоже - капитан? Тогда нет вопросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 17:45:14 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Ggg_oldТеперь попробую описать какого рода объяснения мне не хватает. ... Мне видится аналогия SQL-я тогдашнего и ФП сегодняшнего. Правда есть исключение, концепция ФП вторая по древности после фортрана, т.е. не является новой. Какие объяснения нужны из аналогий непонятно. ФП вобще понятие общее. haskell и ocaml построены на типизированом лямбда исчислении. Теория категорий играет для него примерно ту же роль что и теория множеств для реалиционной алгебры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 18:12:21 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Ggg_old Давайте сделаем экскурс в недавнее прошлое, лет на 10-15 назад. В ту славную эпоху мэйнстримом в строении учетных систем были клиент-сервреные комбайны типа dbase/clipper/foxpro/paradox. Уже тогда мало кто напрямую писал код на си по открытию таблиц в своем формате, индексации итп. Программирование выглядело на встроенном интерпретирующем языке типа так: USE таблица 1 с индексом 1 use таблица 2 синдексом 2 Установить фильтр на таблицу 1 по условию ...... открыли курсоры, побежали по ним, поделали операции. закрыли индексы закрыли таблицы Такой подход ручного управления позволял программисту самому в каждом конкретном случае выбирать стратегию работы с объектами БД и достигать максимальной производительности. Потом во второй половине и конце 90-х на арену начали выходить SQL-сервера. Декларативный SQL, оптимизаторы по нынешним дням не ахти вообще, дорогущие и малодоступные. Из преимуществ явно видно только отказоустойчивость и возможность настроить безопасность на доступ. Если поставить себя на место спорящих в то время, что лучше SQL или Fox pro, то фокспрошник мог легко запинать скл-щика, т.к. его прямое управление кодом соединений было более эффективно. Аргументы что разработка на скл проще и быстрее (после значительной перестройки и расширения сознания под концепцию обработки множеств а не записей), да и оптимизаторы станут лучше в будущем и возможно, что даже появится когда-нибудь автоматический параллелизм на те времена выглядели бы слабенько. .. Мне видится аналогия SQL-я тогдашнего и ФП сегодняшнего. Правда есть исключение, концепция ФП вторая по древности после фортрана, т.е. не является новой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 18:14:52 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
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-оф, то что ,в твоем понимании, обобщает ФП? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 19:01:15 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Оооо да !!! это оооочень полезно. Распараллеливать вычисление чисел Фиббоначи. Стоит ли мне мне сейчас взять алгоритм параллельного быстрого преобразования Фурье разметить его тегами src и запостить в форум? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:18:41 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Давай. Только со спойлером, ежели сильно большой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:19:49 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) Какие могут быть критерии, если вызываемая функция не известна на момент компиляции ??? гадание на облаках ? Например, можно профилировать приложение при тестовом прогоне, а потом используя статистику распараллеливать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:20:49 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
beluginНапример, можно профилировать приложение при тестовом прогоне, а потом используя статистику распараллеливать. Не вариант! Вспоминаем что одной из задач, решаемых ФП является автоматическое построение значительной части программы по описанию структур данных. Это означает что тестового прогона может не быть вообще, если еще нет данных на входе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:26:37 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mayton Не вариант! Вспоминаем что одной из задач, решаемых ФП является автоматическое построение значительной части программы по описанию структур данных. Поясни, проиллюстрируй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:34:41 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mayton, а скачать никак (придупреждяаю - literal haskell)? Вообще-то я имед ввдк что концепции иллюстрируют на небольших, необязательно реальных примерах. Типа иерархии кошка-собака-животное для ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:42:38 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mayton Не вариант! Вспоминаем что одной из задач, решаемых ФП является автоматическое построение значительной части программы по описанию структур данных. Это означает что тестового прогона может не быть вообще, если еще нет данных на входе. А вот с этого места поподробнее. Такое определение больше похоже на метапрограмирование или суперкомпиляцию, чем на ФП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:42:57 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
beluginПоясни, проиллюстрируй. Судя по постам - ты не новичёк в ФП. Возможно я даже меньше твоего писал. Поэтому пояснять не буду. Просто переадресую тебя к книге Р.Душкина - Функциональное программирование на языке Haskell ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:51:44 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
antares0А вот с этого места поподробнее. Такое определение больше похоже на метапрограмирование или суперкомпиляцию, чем на ФП. Согласен. Похоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 22:57:50 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
maytonbeluginПоясни, проиллюстрируй. Судя по постам - ты не новичёк в ФП. Возможно я даже меньше твоего писал. Поэтому пояснять не буду. Просто переадресую тебя к книге Р.Душкина - Функциональное программирование на языке Haskell Я опять не понимаю (книга на полке стоит) - можешь дать точную ссылку с цитатой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 23:16:43 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Например, можно профилировать приложение при тестовом прогоне, а потом используя статистику распараллеливать. Отлично. Сделали. Вариант #1: В результате анализа статистики выяснилось что 99% времени исполнения программа затратила в одной единственной функции которая принимает одну квадратную матрицу A размером N x N, выполняет её факторизацию - т.е. находит такую нижнетреугольную матрицу L размером N x N и верхнетреугольную матрицу U размером N x N что A = L*U и возвращает в вызывающую программу L и U. Пусть при дальнейшем скурпулёзном анализе оказалось что проблемная функция написана так что отвечает всем критериям чистоты ф.я. Апологеты ф.я., расскажите как в соответствии с заветами г-на _мод_ можно распараллелить эту фукцию в режиме "моск офф". Вариант #2. Проанализировали статистику, оказалось всё не так глухо как в предыдущем случае. Даже наоборот, проблемный кусок параллелизуется на ура, причём теоретически долженa иметь место быть линейная масштабируемость. Распараллелили, запустили, пересобрали статистику - стало либо хуже чем было, либо лучше, но никакой линейной масштабируемостью и близко не пахнет. Причин почему так может быть - мульён, гора книг об этом написана и т.д. В императивном языке существует довольно много способов повлиять на результат путём изменения положения данных внутри массивов (например чтобы избежать false sharing эффекта), привязкой конкретных тредов к конкретным процам так чтобы императивная прога занималась действительно полезными вычислениями а не гоняла туда - сюда данные по кэшам разных процессоров пытаясь догнать тред внезапно переехавший с одного проца на другой и т.д. и т.п. Да, всё это не бесплатно, всё надо тем или иным способом кодить. Тем не менее, оно есть. А какой инструментарий для разрешения этих проблем предоставляет ф.я? Особенно в случае использования абстракций высокого уровня... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 23:57:11 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
belugin Я опять не понимаю (книга на полке стоит) - можешь дать точную ссылку с цитатой? Пруфлинк с цитатой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2010, 23:59:24 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
beluginmayton, а скачать никак (придупреждяаю - literal haskell)? Вообще-то я имед ввдк что концепции иллюстрируют на небольших, необязательно реальных примерах. Типа иерархии кошка-собака-животное для ООП. Пролистал. Слишком много букв. Может скажешь куда именно смотреть что-бы была понятная твоя мысль? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 00:09:19 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
maytonbeluginmayton, а скачать никак (придупреждяаю - literal haskell)? Вообще-то я имед ввдк что концепции иллюстрируют на небольших, необязательно реальных примерах. Типа иерархии кошка-собака-животное для ООП. Пролистал. Слишком много букв. Может скажешь куда именно смотреть что-бы была понятная твоя мысль? Это ты у Gluk (Kazan) спроси - ему фибоначчи было мало ;). Еще раз есть страничка с говорящим названием nofib с разными параллельными алгоритмами на parallel haskell. Если хочется просто иллюстрации как это выглядит, можно посмотреть простые алгоритмы в начале. Но Gluk (Kazan) такой простой иллюстрации было не достаточно, поэтому я предложил ему посмотреть быстрое преобразование Фурье. Вот такая моя мысль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 08:08:03 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
beluginGluk (Kazan) Оооо да !!! это оооочень полезно. Распараллеливать вычисление чисел Фиббоначи. Стоит ли мне мне сейчас взять алгоритм параллельного быстрого преобразования Фурье разметить его тегами src и запостить в форум? Наверное стоит, но не на форум, а в дельную статью относительно бенефитов ФП в отношении параллелизма. С удовольствием почитаю. И журнальчик есть :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 08:44:31 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
belugin Это ты у Gluk (Kazan) спроси - ему фибоначчи было мало ;). То есть статьи не будет жалка FFT не смотрел, про parfib скажу следующее: 1. Это не автоматическое распараллеливание, а ровно такое, какое было с OMP (`par` программист определяет где вставить, и это правильно) 2. parfib и quicksort забавны в качестве иллюстративного учебного материала. На практике - бред, по причинам указанным выше 3. quicksort c его карманным биллиардом над списками порадовал особо. Тяжело ему будет угнаться за Си-шной реализацией над мутабельным массивом ;( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 09:10:14 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
И уж коли здесь принято подтверждать свое мнение ссылками на авторитеты, позволю себе сослаться на п. 1.5 описывающий сложности рекурсивного параллелизма, на мой взгляд, исключающие его автоматическую реализацию. Кстати, все примеры в книге насквозь имеперативные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 09:22:54 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
Может я чего-то не понимаю, но о чем спор? Вот, например, рядовая задача - обработка коллекций: Код: plaintext 1. Если process_item() - "чистая" функция, то "умный" компилятор запросто может применить реализацию foreach, запускающую process_item в несколько потоков. // рассуждаю теоретически, на практике не сталкивался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 09:29:32 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
mikhail_n Да, всё это не бесплатно, всё надо тем или иным способом кодить. Тем не менее, оно есть. Вспомните историю: первые компиляторы порождали плохой код, а сейчас далеко не всякий программер напишет код на асме лучше, чем оптимизирующий компилятор. Так что всему свое время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 10:00:21 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
_модmikhail_n Да, всё это не бесплатно, всё надо тем или иным способом кодить. Тем не менее, оно есть. Вспомните историю: первые компиляторы порождали плохой код, а сейчас далеко не всякий программер напишет код на асме лучше, чем оптимизирующий компилятор. Так что всему свое время. Дык проблемой над автоматического распараллеливания далеко не первый год бьются (и не только функциональщики), а Грааль и ныне там ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 10:03:47 |
|
||
|
Функциональное программирование
|
|||
|---|---|---|---|
|
#18+
ДиезМожет я чего-то не понимаю, но о чем спор? Вот, например, рядовая задача - обработка коллекций: Код: plaintext 1. Если process_item() - "чистая" функция, то "умный" компилятор запросто может применить реализацию foreach, запускающую process_item в несколько потоков. // рассуждаю теоретически, на практике не сталкивался. теоретически оно конечно так, а на практике предпочитает не заменять и правильно делает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2010, 10:06:10 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36432523&tid=1343707]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
213ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 561ms |

| 0 / 0 |
