Functional programming is beautiful
От: Tonal- Россия www.promsoft.ru
Дата: 02.04.08 04:00
Оценка: 120 (8) :))) :))) :)))
http://www.lisperati.com/landoflisp/panel01.html
Re: Functional programming is beautiful
От: Plague Россия 177230800
Дата: 02.04.08 06:50
Оценка:
Здравствуйте, Tonal-, Вы писали:

T>http://www.lisperati.com/landoflisp/panel01.html


Действительно интересно, если со статической типизацией все понятно, то вот насчет "сайд эффектов" не очень... Я так понимаю, что именно из-за них Лисп иногда называют не совсем функциональным языком. Действительно ли избавление от них дает огромные бонусы?

PS. Правда синтаксис Хаскелла мне больше нравится, чем Лиспа. Он, как бы, "чище"...
... << RSDN@Home 1.2.0 alpha rev. 787>>
Re[2]: Functional programming is beautiful
От: Курилка Россия http://kirya.narod.ru/
Дата: 02.04.08 06:56
Оценка: :)
Здравствуйте, Plague, Вы писали:

P>Здравствуйте, Tonal-, Вы писали:


T>>http://www.lisperati.com/landoflisp/panel01.html


P>Действительно интересно, если со статической типизацией все понятно, то вот насчет "сайд эффектов" не очень... Я так понимаю, что именно из-за них Лисп иногда называют не совсем функциональным языком. Действительно ли избавление от них дает огромные бонусы?


И да и нет
Ибо получается, что рассматривается "абстрактный код в вакууме", для конкретной задачи же может быть удобен какой-то свой язык (или DSL).
А полностью избавиться от сайдэффектов невозможно в принципе, ибо это получится пресловутый "неуловимый Джо", ну нафига нужна программа, в которой нет ввода/вывода?
Плюс я бы ещё сюда добавил субъективную составляющую (ты же вот сказал, что синтаксис Хаскеля тебе больше нравится ), которая играет довольно большую роль.
Re[2]: Functional programming is beautiful
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.04.08 09:38
Оценка: -1
Здравствуйте, Plague, Вы писали:

P>PS. Правда синтаксис Хаскелла мне больше нравится, чем Лиспа. Он, как бы, "чище"...


Ты оригинал. Найти синтаксис в Лиспе...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Functional programming is beautiful
От: deniok Россия  
Дата: 02.04.08 09:51
Оценка: :))) :)
Здравствуйте, Tonal-, Вы писали:

T>http://www.lisperati.com/landoflisp/panel01.html


Понравился коммент в обсуждении на Lambda the Ultimate

This comic is offensive to Haskell and must be taken down. I have started a petition to remove the insulting comic and I hope you will support freedom by signing it.

Re[2]: Functional programming is beautiful
От: Курилка Россия http://kirya.narod.ru/
Дата: 02.04.08 09:59
Оценка: :)
Здравствуйте, deniok, Вы писали:

D>Здравствуйте, Tonal-, Вы писали:


T>>http://www.lisperati.com/landoflisp/panel01.html


D>Понравился коммент в обсуждении на Lambda the Ultimate

D>

D>This comic is offensive to Haskell and must be taken down. I have started a petition to remove the insulting comic and I hope you will support freedom by signing it.


А ты уже подписал петицию?
Re[3]: Functional programming is beautiful
От: deniok Россия  
Дата: 02.04.08 10:06
Оценка:
Здравствуйте, Курилка, Вы писали:

К>А ты уже подписал петицию?


Там враги свободы оперативно ссылку со сбором подписей забанили.
Re[3]: Functional programming is beautiful
От: Plague Россия 177230800
Дата: 02.04.08 10:42
Оценка: +1
Здравствуйте, Курилка, Вы писали:

К>И да и нет

К>Ибо получается, что рассматривается "абстрактный код в вакууме", для конкретной задачи же может быть удобен какой-то свой язык (или DSL).
К>А полностью избавиться от сайдэффектов невозможно в принципе, ибо это получится пресловутый "неуловимый Джо", ну нафига нужна программа, в которой нет ввода/вывода?
В том то и вопрос, на сколько удобоно/быстро/хорошо выносить всю работу с вводом-выводом, т.е. делать код "чистым" или делать как обычно.
Возможно, после практики программирования на не языках ФП, мне сложно поставить во главу угла весь ввод-вывод, но возникает стойкое ощущение, что добавление какого-нибудь еще способа получить/записать данные (будь то файл/сеть/мышь и возможно звук/видео) становится несколько сложнее. Если в обычных программах некоторые вещи делаются непосредственно во время расчетов (или около того), то в Хаскелле приходится собирать всю мега-струтуру состояния и по ее результатам делать ввод-вывод... т.к. большинство вещей так или иначе взаимосвязанно...
К>Плюс я бы ещё сюда добавил субъективную составляющую (ты же вот сказал, что синтаксис Хаскеля тебе больше нравится ), которая играет довольно большую роль.
Ну, мне в этом Хаскелл понравился больше даже чем Scheme (как там "Ским" или "Схема" называть??), которая поприятней и по проще синтаксиса старичка Лиспа. Мне больше нравится статическая типизация, чтоб не думать об ошибках исполнения, а если что чтоб компилятор ругался. но это все не относится к беспокоящему меня вопросу про чистоту языка...

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

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

Безусловно, многое придет с опытом , но хотелось бы услышать как делают гуру ) ведь если знание нельзя выразить, то значит это не знание, а всего лишь догадки
... << RSDN@Home 1.2.0 alpha rev. 787>>
Re[4]: Functional programming is beautiful
От: Курилка Россия http://kirya.narod.ru/
Дата: 02.04.08 10:47
Оценка:
Здравствуйте, Plague, Вы писали:

P>Безусловно, многое придет с опытом , но хотелось бы услышать как делают гуру ) ведь если знание нельзя выразить, то значит это не знание, а всего лишь догадки


Да все они шаманы по сути
Правда пусть за это они сами отдуваются
Re[3]: Functional programming is beautiful
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 02.04.08 10:55
Оценка:
Курилка,

К>А полностью избавиться от сайдэффектов невозможно в принципе, ибо это получится пресловутый "неуловимый Джо", ну нафига нужна программа, в которой нет ввода/вывода?


В Хаскеле не избавляются от сайд-эффектов, а помечают, классифицируют и изолируют их. Примерно, как биологи с микробами.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[4]: Functional programming is beautiful
От: Курилка Россия http://kirya.narod.ru/
Дата: 02.04.08 10:57
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Курилка,


К>>А полностью избавиться от сайдэффектов невозможно в принципе, ибо это получится пресловутый "неуловимый Джо", ну нафига нужна программа, в которой нет ввода/вывода?


LCR>В Хаскеле не избавляются от сайд-эффектов, а помечают, классифицируют и изолируют их. Примерно, как биологи с микробами.


Вопрос только, что сложней — классифицировать и изолировать, или же учитывать
Re[2]: Functional programming is beautiful
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 02.04.08 11:07
Оценка:
deniok,

D>Понравился коммент в обсуждении на Lambda the Ultimate

D>

D>This comic is offensive to Haskell and must be taken down. I have started a petition to remove the insulting comic and I hope you will support freedom by signing it.


В свою очередь улыбнули комменты в c.l.l:

Nah. At least Haskell doesn't kill cats!

Neat magic trick -- mesmerizes the audience and makes a big chunk of the morning disappear...

quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[5]: Functional programming is beautiful
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 02.04.08 11:12
Оценка: :)
Курилка,

LCR>>В Хаскеле не избавляются от сайд-эффектов, а помечают, классифицируют и изолируют их. Примерно, как биологи с микробами.


К>Вопрос только, что сложней — классифицировать и изолировать, или же учитывать


А их много? Они разбегаются? Если да, то первое однозначно
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[4]: Functional programming is beautiful
От: Plague Россия 177230800
Дата: 02.04.08 22:07
Оценка:
Народ! Ну скажите что-нить на мой пост.
Т.к. мне совсем не понятно как при всем удобстве и лаконичности чистого программирования грамотно структурировать "не чистую" часть?
Re[5]: Functional programming is beautiful
От: Code Digger Грузия  
Дата: 03.04.08 03:38
Оценка:
Здравствуйте, Plague, Вы писали:

P>Народ! Ну скажите что-нить на мой пост.

P>Т.к. мне совсем не понятно как при всем удобстве и лаконичности чистого программирования грамотно структурировать "не чистую" часть?

Я, конечно, не гуру, но мне из Вашего поста совершенно непонятно, в чём проблема, о которой Вы говоите.
Можете описать её конкретнее? На примере?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.