LINUX.ORG.RU

haskell или lisp?


0

0

У меня появилось свободное время, которое я хочу плодотворно потратить на написание оконного менеджера. Хочу реализовать в нем многопоточность всего, что параллелится, возможность изменения самого себя в рантайме. 6е чувство в месте с 7й полуастральной чакрой подсказывает, что мне придется писать какой-то хитрый DSL, а может и не один. Глас с небес указал на 2 инструмента — Haskell и Lisp. От правильности выбора между ними будет зависеть попаду я в рай или в АдЪ. Сам я предпочитаю послушать преимущества и того, и другого пристанища от тех, кто уже побывал за гранью Дзена.

Поле для дискуссии — наиболее кошерные реализации Common Lisp и (template)Haskell для решения поставленной задачи, которая предполагает что super-druper-WM обладает такими свойствами:

  • Многопоточна и распараллелена вдоль и поперек
  • Написана на проблемно-ориентированном DSL
  • Плагинная структура, возможность изменения функциональности, подключение плагинов прямо в рантайме
  • Скорость _без_ уродования кода, как в текстах программ на shootout.alioth.debian.org
  • Хочется ООП!!! Можно в виде CLOS или подобного

Отдельная просьба. Объясните на пальцах, что такое лисповские рестарты. И подходит ли template Haskell для метапрограммирования (в понимании создания бесконечно забористых DSL)?

Не является ли это снобизмом — писать гуй на статически-типизированном языке? На сколько зрелы и полноценны биндинги Qt к этим языкам? (вопрос для тех, кто юзал)

PS: Просьба не агитировать за другие языки. Даже за OCaml

Почему никто еще не сказал про xmonad?

fluorite ★★★★★
()

Топик не читал, но, судя по набору языков, цель ТС - поднятие ЧСВ. Тогда биметаллический решатель рулит.

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

> Топик не читал, но, судя по набору языков, цель ТС - поднятие ЧСВ.

Цель - практическая задача на подходящем для задачи и интересном мне языке.

Тогда биметаллический решатель рулит.


Что это?

dens-dens-dens
() автор топика

Надо знать и Хаскелль, и Лисп, это как Си.

Sphinx ★★☆☆
()

>6е чувство в месте с 7й полуастральной чакрой подсказывает, что мне придется писать какой-то хитрый DSL, а может и не один.

Советую натянуть на чакру шапочку из фольги, а то торсионные поля создают через неё помехи для разума.

Написана на проблемно-ориентированном DSL

Съезд коммунистической партии КПСС.

Плагинная структура, возможность изменения функциональности, подключение плагинов прямо в рантайме

Это не от языка зависит (разве что в лиспе подгрузка легко сделается).

Просьба не агитировать за другие языки. Даже за OCaml

Ты настолько веришь гласу с небес?

Что по сути, странноватое сочетание цели и инструментов. Ты обосновал для себя, какие бонусы даст использование DSL в конкретной задаче? Есть ли смысл заморачиваться распараллеливанием для WM? Создаётся впечатление, что ты хочешь свой WM (кстати, xmonad на хаскелле очень неплох, можешь посмотреть на сорсы), а ещё слышал умные слова типа дэ-сэ-эл и многопоточности и хочешь заиспользовать это без оглядки на задачу.

Хочешь написать WM? Используй компонентную архитектуру, делая упор на производительность (опустим вопрос о надобности 100500-го велосипеда). Хочешь написать нечто многопоточное с DSLом? Обратись в сторону гибкой обработки данных, тут поле непаханное - хотя бы вон в толксах на днях обсуждали, что можно сделать для биологов (computational biology вообще имхо отличная сфера, если мозгов хватит).

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

Я вроде не в толксах запостил

а я вроде как не в толксах ответил. ни один твой критерий не позволяет сделать выбор в пользу того или иного языка

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

P.S. пока писал мозговправную телегу, про выбор языка правильно сказал jtoof ;)

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

> Цель - практическая задача на подходящем для задачи и интересном мне языке.

У тебя дофига широкие интересы - Хаскель и Лисп практически языки-антиподы. Если ты именно _выбираешь один из них_, ты лишаешь себя большого пласта CS-культуры.

Тогда биметаллический решатель рулит.

Что это?

Это монетка. Если ты ничего не знаешь ни о Лиспе, ни о Хаскеле, это единственный способ выбора.

tailgunner ★★★★★
()

> Глас с небес указал на 2 инструмента — Haskell и Lisp.

Как хорошо знаешь оба языка? А ты не думал что не смотря на все удобства будешь сначала цикл с книжеской в руках 2 часа писать. Определись с целью: оконный менеджер или образование. Если первое, то С, С++ тебе в руки, если образование, то правильно ставь вопрос

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

> Советую натянуть на чакру шапочку из фольги, а то торсионные поля создают через неё помехи для разума.

Съезд коммунистической партии КПСС

Это не от языка зависит (разве что в лиспе подгрузка легко сделается)


Ты настолько веришь гласу с небес?



Ты либо идиот, либо тебя в детстве насиловали люди с нормальным чувством юмора.

Что по сути, странноватое сочетание цели и инструментов


Да нет, если ты читаешь по-русски, а не по-китайски русскоязычный текст.

Ты обосновал для себя, какие бонусы даст использование DSL в конкретной задаче?


Я предположил, что написание DSL в объемной задаче более чем вероятно. Этого обоснования для использования ЯП, позволяющего писать DSL, достаточно для любого человека без тяжелой черепно-мозговой травмы. Но, видимо, не для тебя

Есть ли смысл заморачиваться распараллеливанием для WM?


Этот вопрос выдает в тебе слабоумного

на днях обсуждали, что можно сделать для биологов


Я не биолог, мне оно нахрен не нужно, я как бы решаю задачу для себя

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

> Я предположил, что написание DSL в объемной задаче более чем вероятно.

Кто тебе сказал, что wm - это объемная задача?

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

> Как хорошо знаешь оба языка?

Очень поверхностно

А ты не думал что не смотря на все удобства будешь сначала цикл с книжеской в руках 2 часа писать


Это не имеет никакого значения для выбора инструмента. Даже если бы я мог писать только ногами

Определись с целью: оконный менеджер или образование


Образование, оконный менеджер это просто интересная для меня задача

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

> ЯП, позволяющего писать DSL

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

Ты либо идиот, либо тебя в детстве насиловали люди с нормальным чувством юмора.


Идиот тут пока только ты после

проблемно-ориентированном DSL

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

>> Я предположил, что написание DSL в объемной задаче более чем вероятно.

Кто тебе сказал, что wm - это объемная задача?


А кто-то обязательно это должен был сказать?

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

ЯП, позволяющего писать DSL

в той или иной мере любой язык, имеющий средства абстракции вычислительного процесса, позволяет писать eDSL; DSL позволяет писать вообще любой язык с IO

насколько просто это сделать, и насколько близко полученный язык может быть к тому, что ты хочешь видеть - вот вопросы, которыми можно руководствоваться при выборе; в случае выбора из CL и Haskell разница несущественна

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

> Идиот тут пока только ты после

проблемно-ориентированном DSL


ok, проблемно-ориентированный язык. Ты ущербный какой-то, если придираешься к таким опечаткам, сходи к психотерапевту

Мне кажется, у тебя DSL головного мозга


Да мне похер, что тебе кажется. Ты либо по делу что-то говори или вали из этого треда, смысл тратить мое и свое время?

Изволь привести пример языка, не позволяющего писать DSL тогда


Естественно, _удобно_ писать DSL. Кушать тоже можно топором, но я в повседневной жизни не прошу прибор, которым было бы _удобно_ кушать, а прошу просто прибор.

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

> Образование, оконный менеджер это просто интересная для меня задача

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

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

> CL и Haskell разница несущественна

Ты имеешь ввиду Template Haskell?

Template Haskell is a GHC extension to Haskell that adds compile-time metaprogramming facilities

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

Это ж надо - писать парсер на языке Хаскель с использованием parsec для языка расширяющего Хаскель. Да ещё с синтаксисом аля

[$expr|$my_name_is_crazy ++ $so_much_crazy]

Почему сразу не сделать язык с нормальными мета свойствами? Или только мне все эти templates/etc. кажутся костылями?

//Sorry

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

Почему сразу не сделать язык с нормальными мета свойствами?

потому что в результате получится Common Lisp

Это ж надо - писать парсер на языке Хаскель с использованием parsec для языка расширяющего Хаскель

если ты не заметил, то обращаю твоё внимание особо - там один язык. для всего

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

>> потому что в результате получится Common Lisp

Ya! `CL ,fan detected :(

если ты не заметил, то обращаю твоё внимание особо - там один язык. для всего.

Я пока не заметил. Но parsec таки используется, что заставляет меня усомниться в мощности интроспекции в Haskell. Но я, конечно, могу опять ошибаться.

anonymous
()

Начни писать на обоих языках. Я так часто делаю ( не с языками, с вариантами вообще ), один из вариантов как правило сам собой отпадает, другой берет верх. proof-of-concept, you know.

Многопоточна и распараллелена вдоль и поперек

Распаралеллен что? Если сам event loop, то мне кажется, модель reactor в одном потоке подойдет намного лучше многопоточности. Been there, done that.

Не агитирую, но таки Смоллток сюда прям просится. И в отличие от лиспа и хаскеля, на нем еще _никто_ не сделал годного WM для иксов.

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

Поддержу Alex Ott'а - пиши на Clojure и параллелиться вдоль и поперек будет на раз-два. Среди лиспов сейчас это будет самым оправданным выбором - с ним гемора меньше чем с остальными (точнее, с ним - вообще никакого).

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

Ya! `CL ,fan detected :(

не угадал

parsec таки используется, что заставляет меня усомниться в мощности интроспекции в Haskell

какое отношение парсер имеет к интроспекции?

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

>> не угадал

(1) Ну так это я про себя.

какое отношение парсер имеет к интроспекции?

См. пункт (1) :) Привык к скобочкам. Наличие парсера в данном случае - следствие нерегулярного синтаксиса. При таком синтаксисе трудно ворочить какие-то шаблоны (макро-системы), вот и приходится пыхтеть :))

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

> Среди лиспов сейчас это будет самым оправданным выбором -

с ним гемора меньше чем с остальными


Вот уж не думал, что лисп выбирают для того, что бы иметь меньше гемора. Скорей его берут, что бы получить какие-либо его преимущества. А Clojure это весьма компромиссное решение.

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

> Вот уж не думал, что лисп выбирают для того, что бы иметь меньше гемора. Скорей его берут, что бы получить какие-либо его преимущества. А Clojure это весьма компромиссное решение.

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

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

> Haskell — xmonad, CL — stumpwm. ставь, смотри, сравнивай, решай. =)

Не стоит их сравнивать, xmonad то безусловно лучше, но это говорит только о том, что xmonad лучше.

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

Не стоит их сравнивать, xmonad то безусловно лучше, но это говорит только о том, что xmonad лучше.

соглашусь. кстати, это как раз может быть аргументом в пользу выбора CL - написать на нём WM, который будет лучше xmonad

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

> Не стоит их сравнивать, xmonad то безусловно лучше, но это говорит только о том, что xmonad лучше.

Не безусловно лучше. xmonad-то все-таки динамический, а stumpwm- статический. Хотя то, что stumpwm ужасен и баговит - это да.

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

> Ты либо по делу что-то говори или вали из этого треда, смысл тратить мое и свое время?

Любой пост на ЛОРе уже давно стал тратой времени. Особенно, если он содержит слова Lisp и Haskell в названии. Попробуй запостить вопрос на lisper.ru и каком-нибудь форуме хаскелистов.

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

> пиши на Clojure и параллелиться вдоль и поперек будет на раз-два. Среди лиспов сейчас это будет самым оправданным выбором

WM, работающий на jvm? Удачи. Надеюсь, этим будет пользоваться ещё кто-кто, кроме вас.

(Если же Clojure уже научилась вести себя как правильная Лисп-система и/или компилиться в машинный код, не включая в бинарник всю jdk - прошу дать ссылку на документацию и скачивание)

naryl ★★★★★
()

Напиши аналог xmonad на лиспе, чтоб с лайаутами и поддержкой нескольких мониторов не только при старте, цены небудет.

И не заморачивайся с dsl, понадобится - оно органически появится в используемых макросах, в крайнем случае этим dsl будет cl.

cvb
()

У меня появилось свободное время, которое я хочу плодотворно потратить на написание оконного менеджера.


Жениться тебе пора.. Или хотя бы телочку заведи.
Если совсем невмоготу то лучше бы помогал разрабам пилить гном.
Ну что там можно распараллеливать в DM ? Это до какой степени он должен быть тормозом ? Понимаю там рендер написать, или архиватор, или еще что - что смысл параллелить есть.

Нет, ну а зачем ? Напиши причины !

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

> (Если же Clojure уже научилась вести себя как правильная Лисп-система и/или компилиться в машинный код, не включая в бинарник всю jdk - прошу дать ссылку на документацию и скачивание)

Угу. И бинарник stumpwm весом 40 метров.

zahardzhan
()

Хочется ООП!!! Можно в виде CLOS или подобного

Ну, если ты уже решил, что тебе нужно ООП, то, конечно, Лисп. В Хаскелле есть ООП (Олег сделал), но никто им не пользуется.

И подходит ли template Haskell для метапрограммирования (в понимании создания бесконечно забористых DSL)?

В Хаскелле DSL-и создаются БЕЗ метапрограммирования.

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

> Напиши аналог xmonad на лиспе

Нет, ну его это xmonad, там много левых наворотов , а скратчпадов нет, лучше аналог ion3 (тем более, что он умер). Было бы у меня свободное время, я бы сам этим занялся.

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

>Нет, ну его это xmonad, там много левых наворотов , а скратчпадов нет, лучше аналог ion3

Там все навороты в contrib, сам xmonad довольно небольшой, и скратчпады явно должны быть в contrib, главное чтобы они были реализуемы, но это уже зависит как этот xmonad на лиспе писать.

cvb
()

ТС, ты совсем забыл про Смолтолк. Лисп и Хаскель - мода прошедшего сезона, которую распродают с 60%-ной скидкой в любом бутике. А Смоллтолк - настоящий от-кутюр!

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

Хочется ООП - ну тогда тебе точно на кложе это дело писать надо - там недостатка в объектах не будет, потому как всё (кроме макросов), с чем ты бужешь иметь дело - родные джавовские объекты.

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