LINUX.ORG.RU

Функциональщина


0

1

Кто больше в теме, киньте ссылкой на те задачи, для которых ФП является хорошим выбором. Я знаю не много, к примеру задачи, связанные с формальными грамматиками. Часто говоря про параллелизм, но что-то не увидел особого профита. Может я плохо смотрел.

★★★★★
Ответ на: комментарий от dizza

> Там ФП по мелочевке используется.

В корне не согласен. Сначала было написал примеры, но потом подумал, что это все есть в учебниках.

dave ★★★★★
()
Ответ на: комментарий от dave

В корне не согласен. Сначала было написал примеры, но потом подумал, что это все есть в учебниках.

Взаимоисключающее параграфы просто. То, что в учебниках пишут - это для детишек.

И я вообще подозреваю, что я просто уже сто лет как наигрался и все эти мелочевые плюшки меня не прут. Хочется чего-то серьезного.

dizza ★★★★★
() автор топика
Ответ на: комментарий от kyz

аналагично. кто мешает писать в ф-ном стиле на гибридных язык

Детсад, ей богу. Я уже года 4 пишу так. Задачи самые обычные, ФП применяю редко, но по делу. Повторяю вопрос: меня интересуют именно ЗАДАЧИ, где чистое ФП применимо целиком.

dizza ★★★★★
() автор топика
Ответ на: комментарий от dizza

>>аналагично. кто мешает писать в ф-ном стиле на гибридных язык

Детсад, ей богу.

Ну так взрослей уже.

меня интересуют именно ЗАДАЧИ, где чистое ФП применимо целиком.

Любые. Бери задачу, и применяй ФП. Если умеешь.

tailgunner ★★★★★
()
Ответ на: комментарий от dizza

ты странный. хаскель тебе в вебе не нравится отсутствием либ. либ нет, да. к _языку_ это какое отношение имеет? бери язык и решай повседневные задачи. нет либ? напиши. и выложи. будет польза.

Rastafarra ★★★★
()
Ответ на: комментарий от dizza

>>Я уже года 4 пишу так. как стыкуется эта фраза со следующей

ФП применяю редко

кто тебе мешает применять фп часто?

kyz
()
Ответ на: комментарий от Rastafarra

хаскель тебе в вебе не нравится отсутствием либ.

Хаскель в вебе мне не нравится не отсутсвием либ. А избыточностью и не предназначенностью (кривое слово, но лучше не придумал) для таких задач.

«Бери и решая повседневные задачи». А зачем, если большинство задач я могу решить более просто? Собственно ищу задачи, где хаскель не будет избыточным переусложненным ограничивающим говном.

dizza ★★★★★
() автор топика
Ответ на: комментарий от kyz

Мешает то, что без ФП большинство задачь решаются проще. От динамической типизации профита и то больше.

dizza ★★★★★
() автор топика
Ответ на: комментарий от Rastafarra

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

dizza ★★★★★
() автор топика
Ответ на: комментарий от dizza

>>Любые. Бери задачу, и применяй ФП. Если умеешь.

Любые... Все с вами ясно.

Да, любые, а что тебе не нравится? =3

Waterlaz ★★★★★
()
Ответ на: комментарий от dizza

> С ФП я обычно решаю как раз похожие на твой пример сиюминутные задачки.

Так ведь дело в чем - любая несиюминутная задача сводится к набору сиюминутных. Если ФП помогает решать сиюмитнуые задачи - значит помогает решать вообще все.

anonymous
()
Ответ на: комментарий от dizza

частица "не" с прилагательными пишется слитно

> ищу задачи, где хаскель не будет избыточным переусложненным ограничивающим говном.

Дело не в говно-языке, а в говно-программисте. Писать всё, что можно, используя только Prelude можно, но это глупо - незачем отказываться ок кучи плющек и пирожков.

Советую не искать задачи, где хаскель будет «на своём месте», а учиться применять хаскель (либо любой другой язык на выбор). Больше пользы будет

anonymous
()
Ответ на: комментарий от dizza

> От динамической типизации профита и то больше.

В чём именно профит-то? Мне всегда было это интересно. У вас каша в голове и коде, часто нужно кастить одно к другом и наоборот? Или это наследии ООП, где нужно бороться с кучей ненужных несовместимых классов используя duck typing?

anonymous
()
Ответ на: комментарий от dizza

Любые... Все с вами ясно.

это был единственно возможный адекватный ответ на твой не очень умный вопрос. вычислитель Чёрча эквивалентен машине Тьюринга, эффективные механизмы работы с реальным миром в функциональных языках - придуманы и проработаны. чего тебе для счастья не хватает? мозгов?

jtootf ★★★★★
()
Ответ на: комментарий от dizza

А зачем, если большинство задач я могу решить более просто?

вот и решай их просто. если ты сам не видишь, каким боком тебе может быть полезно ФП, значит оно тебе на хрен не сдалось. зачем вообще искать задачи под инструмент, если польза есть только от обратного процесса?

jtootf ★★★★★
()
Ответ на: комментарий от jtootf

Уточню вопрос для местной не очень социальной публики, не способной поставить себя на место другого человека:

Какие задачи можно _эффективно_ решать с помощью ФП? Я не знаю какими нужно быть тупыми, что бы из того, что ФП-языки Тьюринг-полные, сделать вывод, что любые задачи на них решаются эффективно.

чего тебе для счастья не хватает? мозгов?

Все с вами тоже ясно. Комплексы? Понимаю-понимаю...

dizza ★★★★★
() автор топика
Ответ на: комментарий от jtootf

зачем вообще искать задачи под инструмент, если польза есть только от обратного процесса?

Затем, что мне очевидно, что некоторый инстсрумент (хаскель) имеет гораздо больший потенциал, чем другие. Коли для моих задачек он как из пушки по воробьям, я и ищу интересную и сложную для себя область деятельности, где его использование будет оправдано.

dizza ★★★★★
() автор топика
Ответ на: комментарий от anonymous

В чём именно профит-то? Мне всегда было это интересно

Профит в том, что код совершеннен не тогда, когда к нему нечего добавить, а когда из него уже нечего убрать (в разумных переделах, естественно). Для некоторых задач типы - это как раз то, что не очень важно для решения задачи. Я знаю некоторые задачи, где развитая система типизации наоборот помошник и проводник.

Или это наследии ООП, где нужно бороться с кучей ненужных несовместимых классов используя duck typing?

А вот тут очень скользкий момент. Объектная _оринетированность_ заключается в использовании классов, которые, как это ни станно, ортогональны объектам и их используют, к примере в хаскеле. И таки да, duck typing - это хороший способ бороться с кучей ненужных классов, которые созданы только что бы удовлетворить бюрократический компилятор.

dizza ★★★★★
() автор топика
Ответ на: комментарий от anonymous

А можно узнать - какие именно?

С одной стороны веб, где важнее компактная запись и динамичность (ruby, python), с другой стороны инфраструктурные задачи, где важнее набор батареек, а нем сам язык (java, c, c++).

dizza ★★★★★
() автор топика
Ответ на: комментарий от dizza

> Какие задачи можно _эффективно_ решать с помощью ФП?

Уточню вопрос для тех, кто не знает, чего хочет: в чем твоя цель - научиться решать задачи с помощью ФП или что-то другое? Если первое - тебе глубоко безразлично, какую задачу решать, лишь бы она была достаточно интересной, чтобы ты не бросил ее на полпути.

P.S. а какие задачи эффективнее решать с помощью структурного программирования? а с помощью ООП?

tailgunner ★★★★★
()
Ответ на: комментарий от dizza

> Профит в том, что код совершеннен не тогда, когда к нему нечего добавить, а когда из него уже нечего убрать (в разумных переделах, естественно). Для некоторых задач типы - это как раз то, что не очень важно для решения задачи.

Ой вэй, не правда ваша. Имея физ-мат образование, мне трудно представить, что кому-то нужно будет умножить фарады на омы и получить заместо секунд метры. Это - феерический бред. Типы как раз не мешают и их не замечаешь в корректной программе. Более того, они часто помогают продумать и видеть структуру программы.

anonymous
()
Ответ на: комментарий от tailgunner

> а с помощью ООП?

С помощью ООП удобно писать fixed point арифметику и перемножать красиво матрицы. Надеюсь, ничего не забыл?

anonymous
()
Ответ на: комментарий от tailgunner

в чем твоя цель - научиться решать задачи с помощью ФП или что-то другое?

Нет. Моя цель найти интересные области деятельности, где можно эффективно применять сложные и продвинутые интсрументы.

Сложность тех задач, что занимаюсь я, лежит несколько в другой плоскости, а именно: комуникация с другими разработчиками, анализ существующих решений, анализ требований заказчика, создание инфраструктурных компоненотов. Практически все это ортогонально языку программирования, можно использовать любой максимально простой, например питон. Применить хаскель в моих задачах - это значит тратить время на написание не нужного кода, потому как успех в моих быдло-задачах зависит от того насколько я хорошо понял задачу, а не то какую систему типизации применил. Для моих текущих задач выгодная стратегия - чем меньше кода, тем лучше.

dizza ★★★★★
() автор топика

Для себя я нашёл только одну ФП-пригодную задачу: всякие парсеры и компиляторы, на камле с паттерн-матчингом их писать куда удобнее, чем на няшной сишке. Да и lex/yacc по сути функциональные, хоть и с сайд-эффектами.

А на хаскеле для себя давно поставил крест. Ясно же, что это игрушечный язычок для профессоров и красноглазых хипсторов, как бы там Пейтон-Джонс не кричал в духе Баллмера, что это лучший язык и язык будущего. В его мире, быть может. А в моей вселенной все ЭВМ, доступные мне, пока что сурово императивные, и гопник-хаскель там себя чувстввет как аммиако-дышаший кремний-белковый инопланетянин в московском супермаркете.

Алсо, http://disciple.ouroborus.net/ выглядит обещающим, посмотрим, что выйдет.

anonymous
()
Ответ на: комментарий от anonymous

> С помощью ООП удобно писать fixed point арифметику и перемножать красиво матрицы.

Ну, если акцент на «красиво»... то тоже не согласен :) Это всё можно делать и в «обычном» языке с АТД (в данном случае «А» обозначает «абстрактные»).

Надеюсь, ничего не забыл?

GUI же.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> Ты в учебник бы заглянул.

Посмотри на парент пост и подумай, как там нужно было писать частицу »не«

kthx

anonymous
()
Ответ на: комментарий от dizza

>> в чем твоя цель - научиться решать задачи с помощью ФП или что-то другое?

Нет. Моя цель найти интересные области деятельности

Ну так ищи область, которая интересна тебе, выбирай задачу из нее и применя ФП. Но откуда другим знать, какая область тебе интересна?

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

Это везде так.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> GUI же.

Не знаю-не знаю. Для GUI нужно 1) посылка сообщений и их обработка 2) красивая работа с контейнарами

Как сюда приплесть ООП?

anonymous
()
Ответ на: комментарий от anonymous

> Для GUI нужно 1) посылка сообщений и их обработка 2) красивая работа с контейнарами

И ты считаешь, что ООП не помагает ни с тем, ни с другим?

Как сюда приплесть ООП?

Посмотри на любой GUI-фреймворк - от Xt до Qt.

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Для себя я нашёл только одну ФП-пригодную задачу: всякие парсеры и компиляторы

Как-то для разминки написал персер JSON на Haskell. Понравилось, сразу видно, что язык очень подходит для такой задачи.

dizza ★★★★★
() автор топика
Ответ на: комментарий от tailgunner

Ну так ищи область, которая интересна тебе, выбирай задачу из нее и применя ФП

Я буду применять не тупо ФП, а то, что подходит. И подходит мне, как правило, не ФП. Потому я и задумался, а может я не тем занимаюсь?

dizza ★★★★★
() автор топика
Ответ на: комментарий от dizza

>Собственно ищу задачи, где хаскель не будет избыточным переусложненным ограничивающим говном.

Нужно время, что-бы чувствовать себя в языке более менее уверенно, особенно если было мало опыта в языках похожих. Чем больше будешь писать => меньше будет казаться язык ограничивающим и переусложненным.

Waterlaz ★★★★★
()
Ответ на: комментарий от anonymous

>А в моей вселенной все ЭВМ, доступные мне, пока что сурово императивные

Какая разница, че там внутри?

Waterlaz ★★★★★
()

Обработка сигналов, изображений, рендеринг не?

anonymous
()
Ответ на: комментарий от dizza

> С одной стороны веб, где важнее компактная запись и динамичность (ruby, python)

функциональная запись компактна, функциональщина != статика. Так что не понятно, чем тут функциональный подход не угодил.

с другой стороны инфраструктурные задачи, где важнее набор батареек, а нем сам язык

Ну так что угодно, что хостится под жавой или под .net, например.

anonymous
()
Ответ на: комментарий от anonymous

> Посмотри на парент пост и подумай, как там нужно было писать частицу »не«

Я там вообще не вижу ни одного прилагательного с частицей «не».

anonymous
()
Ответ на: комментарий от tailgunner

> > Как сюда приплесть ООП?

Посмотри на любой GUI-фреймворк - от Xt до Qt.

Qt: DSL для сигналов + слотов + moc compiler (хотя и не компайлер). Вот и весь GUI, ООП да, но где-то сбоку.

anonymous
()
Ответ на: комментарий от anonymous

Да забейте на эту частицу. Это просто повальная болезнь рунета, когда приставку «не-» пишут раздельно. Я уже смирился.

dave ★★★★★
()
Ответ на: комментарий от anonymous

> Qt: DSL для сигналов + слотов

Ах да, DSL...

ООП да, но где-то сбоку.

Ну да, ни наследования, ни полиморфизма.

Бывает ООП головного мозга, а бывает и наоборот.

tailgunner ★★★★★
()
Ответ на: комментарий от dizza

Ну тебе уже все рассказали - факториал и фибоначчи. Что, мало?

anonymous
()
Ответ на: комментарий от tailgunner

> > Qt: DSL для сигналов + слотов

Ах да, DSL...

Ну да, а что? Он практически eDSL, но не полностью. А жаль

> ООП да, но где-то сбоку.

Ну да, ни наследования, ни полиморфизма.

Стоп, если смотреть на фреймворк Qt и смотреть его отличия от остальных - то это как раз удобный способ связывания евентов и их обработчиков + удобная генерация кода для этого. По крайней мере я так думал, когда писал UI на Qt (qtembedded и потом qtopia). Реализовать это можно и без ООП. А про сообщения и GUI я уже писал.

Бывает ООП головного мозга, а бывает и наоборот.

Болезни бывают, и судя по соседним тредам болезнями болеют большинство. Qt же - вполне здоровый проект на С++, не знаю, поменялось ли там что-нибудь или нет после покупки её нокией

anonymous
()
Ответ на: комментарий от dizza

а, я понял - ты сам не понял чего хочешь? правильно?

kyz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.