>по началу кажется офигенным языком, а потом понимаешь какое говно?
а потом понимаешь, что он не для программирования, а для computer science. Например, массивы там задаются вот так:
a = array (i_min, i_max) [(i_min, x_min), ... (i_max, x_max)],
где i_min и i_max соответствующий минимальный и максимальный индекс, а в [] перечислены соответствия индекса элементу. Вроде функции. Может быть это и правильно с точки зрения функциональщины, но использовать такие штуки на практике неудобно.
Вообще когда программируешь на Haskell, думаешь не о задаче, а о том как ее натянуть на средства, предоставляемые Haskell. Так, конечно, происходит со всеми языками, но Haskell делает акцент на формальном описании системы. Как будто записываешь детальное определение задачи на расширенном языке формул, показывая таким образом, что ее можно решить. Но описание не есть решение. Очень специфичный узкоспециализированный язык.
Сам ты узкоспециализированный! Если ты не делаешь акцент на формальное описание системы, вот интересно: когда ты пишешь программу на своем любимом языке ты прыгаешь с бубном призывая добрых богов, развешиваешь чеснок, что бы отпугнуть злых, а также сверяешься с вазой луны и картой звездного неба???
>когда ты пишешь программу на своем любимом языке ты прыгаешь с бубном призывая добрых богов, развешиваешь чеснок, что бы отпугнуть злых, а также сверяешься с вазой луны и картой звездного неба???
Глупости. Описание само сабой всплывает в голове, иногда рисую на бумаге квадратики и стрелочки, чтобы показать как связаны различные части программы. Отдельные вычислительные алгоритмы используют формальное математическое описание, но оно уже есть и его не нужно создавать заново. В масштабе всей программы формализация мне не нужна, потому что я знаю что программа заработает так, как от нее требуется. Доказательство тому - работа программы.
Ой ой... типичное порождение индусокода... доказательство правильности программы - она работает! ага, знаем мы... видели... одни вот так понапишут... а других потом трабл реквестами заваливают, исправляйте мол. А оно ведь всё работало! только вот не всё учли горе программисты, оно ж работало...
> Описание само сабой всплывает в голове, иногда рисую на бумаге квадратики и стрелочки, чтобы показать как связаны различные части программы.
Но ведь ты делаешь, черт побери, формализацию! Просто твоя проблема, на сколько я вижу, в том, что ты сделал формализацию в рамках одной парадигмы, а потом оказалось типа опа в Haskell совсем другая парадигма, и приходится делать тоже самое еще раз, но уже по другому. У меня тоже было что-то подобное, но потом прошло само собой.
> В масштабе всей программы формализация мне не нужна, потому что я знаю что программа заработает так, как от нее требуется. Доказательство тому - работа программы.
Все равно формализация есть, просто ты ее делаешь подсознательно. В результате принятия необдуманных решений велика вероятность, что получится программа в кишках которой все ноги переломаешь. Прелесть Haskell в том, что он заставляет думать ВСЕГДА, это большой ПЛЮС!
для вас что не на Haskell - все индусокод? Чтобы грамотно написать программу, нужно для начала хорошо представлять, что она должна делать, разбить задачу на подсистемы, выявить взаимосвязи. Затем наложить получившееся описание на структуры данных языка программирования и закодировать алгоритмы. Есть простые объективные критерии качества программы, в частности это корректность и эффективность алгоритмов, абстрактность программных сущностей, модульность, хороший стиль кодирования. Разумеется, программист должен иметь базовые знания в областях, связанных с программированием и такие безграмотные перлы вроде проверки boolean на что-то отличное от true и false исключаются.
Корректность 99,9% программ формально не доказывается. Есть проект и есть его реализация, ошибки исправляются в процессе эксплуатации. Все остальное - теория, имеющая отдаленное отношение к практики.
> В масштабе всей программы формализация мне не нужна
> нужно для начала хорошо представлять, что она должна делать, разбить задачу на подсистемы, выявить взаимосвязи. Затем наложить получившееся описание на структуры данных языка программирования и закодировать алгоритмы.
Ты плохо думаешь и ничего не замечаешь. Я от программирования на хаскеле почувствовал прежде всего одну вещь: реактивную скорость отдладки. Всё остальное неважно.
P.S.: за это и люблю ЛОР... я готов пролистать сотню флейм сообщений ананимусов, ради полезных ссылок, которых тут встречается неимоверное количество... люди как бы невзначай выпаливают ссылки, для них совершенно обычные, даже может быть "повседневные"... а кто-то возможно уже не один день/неделю/месяц ищет что-то подобное.
чтобы не говорили про ЛОР и его обитателей, я считаю его одним из полейзнейших сайтов :)