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

К>И да и нет

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

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

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

Безусловно, многое придет с опытом , но хотелось бы услышать как делают гуру ) ведь если знание нельзя выразить, то значит это не знание, а всего лишь догадки
... << RSDN@Home 1.2.0 alpha rev. 787>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.