metaclass: (Default)
[personal profile] metaclass
В свете утренних разборок с многопоточной прогой особенно полезным выглядит следующий пост:

дизайн системы, в которую вносятся изменения, должен быть элегантен и прочувствован. Если я непонимаю системы, которую изменяю, как я могу понять происходящие в ней процессы? Если лучшая ассоциация для дизайна, которую я могу подобрать, сводится к канализационной трубе, по которой передвигаются искаженные до неузнаваемости входные данные, то о каких высоких материях я могу медитировать над stack trace?

Вот. Поэтому даже в безумном дельфи приходится писать программы, выглядящие как ручная реализация функциональной парадигмы, только ради того, чтобы при анализе можно было абстрагироваться от всего, кроме сошедшего с ума модуля. А еще это позволяет нам с [livejournal.com profile] belnetmon независимо писать модули, не занимаясь постоянным согласованием связей между ними.

Поток данных в программе должен представляться наглядно, чтобы его можно было крутить в мозгу в свободное время, не за компом. В этом отношении, конечно, c Haskell, сложно сравнить что либо из известных мне языков - на нем очень удобно думать.

Date: 2008-02-19 06:58 pm (UTC)
From: [identity profile] vp.livejournal.com
дык а разве на хаскеле что-то написать можно? конкретные реализации есть?

Date: 2008-02-19 07:03 pm (UTC)
From: [identity profile] kong-en-ge.livejournal.com
Неиллюзорная ситиинфа на хаскеле -- ночной кошмар всех картописателей!

Date: 2008-02-19 07:19 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Я, кстати, думал, как бы выглядела GIS, реализованная в функциональной парадигме. Голова сломалась на этапе представления окна вывода, где каждый пиксель это список функция, определяющих его цвет, но при этом вызываются только те, которые ближе всего по Z-order.
А уж решение задач коммивояжеров это вообще, по моему, ближе туда, чем к императивной.

Date: 2008-02-19 07:21 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Ситиинфа на хаскеле - это функция от списка списков кортежей и введенных пользователем параметров в изображение экрана. Осталось только разобрать эту функцию на примитивы и их комбинаторы наиболее оптимальным образом.

Date: 2008-02-19 07:29 pm (UTC)
From: [identity profile] kong-en-ge.livejournal.com
Ребе, признайтесь, вы когда это пишете, непроизвольно не кончаете?

Date: 2008-02-19 07:31 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Мозговой оргазм, да.

Date: 2008-02-19 07:16 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Можно. Например, парсер хаскеля :)

На самом деле, я бы сильно хотел встроенный интерпретатор хаскеля на предмет генерации заумных отчетов, но для этого придется разбираться во внутренностях Hugs для исправления ограничения вывода типов кортежей 5 полями. Интерфейс его внешний, слава богу, сишный и более-менее мозгом осознаваем.

Или же разобраться как клепать dll с экспортами в сишном стиле на GHC и генерить для них обертки на дельфи.

Date: 2008-02-20 06:48 am (UTC)
From: [identity profile] blackyblack.livejournal.com
Наверное все железячники рано или поздно ударяются в функциональщину и test driven development. Отладчика то толком нет, а стек трейс мне вообще только снится. :)
Я так пишу на си с элементами функционального программирования. У меня по минимуму циклов (в основном на таймерах), условия как правило приводят сразу к завершению функции, если используются циклы, то как правило бесконечные с множественными выходами. В итоге минимум вложенности и модульность программы.

А насчёт канализационной трубы... У неё кстати весьма неплохой дизайн. И продумано там всё очень даже неплохо.

Date: 2008-02-20 07:30 am (UTC)
From: [identity profile] metaclass.livejournal.com
Для железячников функциональная парадигма естественна, после функциональных схем, фильтров, ТАУ и прочего. Я программу так себе и представляю - последовательность фильтров, через которые проходит сигнал - список объектов.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 17th, 2025 06:10 am
Powered by Dreamwidth Studios