Ещё одно разочарование.

Jan 21, 2016 16:51

Для Хаскеля нет простых веб-фреймворков.

Вообще нет, совсем, никаких.

Это связано с тем, что все (ВСЕ!) веб-фреймворки используют WAI. WAI, Web Application Interface, представляет из себя библиотеку в 18 (примерно) каталогов, каждый из которых содержит по несколько исходных файлов ( Read more... )

web design, не нравится, Хаскель

Leave a comment

Comments 194

veremeenko_alex January 21 2016, 14:04:09 UTC
Если нужна простота то только рельсы или теплый ламповый php

Reply

thesz January 21 2016, 14:05:29 UTC
На данный момент это так.

Увы.

Reply

dmzlj January 21 2016, 20:21:35 UTC
Да нет же. Говорю как человек, который с 2004-го прошел все круги этого ада. PHP, Perl, Python, Erlang.

Веб на happstack, scotty или servant - проще.

У нас камрады и на голом WAI делали, тоже несложно.

Reply

thesz January 22 2016, 10:44:37 UTC
happstack, похоже.

Просто до того, как nealar указал на happstack, все фреймоврки были с использованием WAI. WAI is needlessly complicated and tailored to the programming style of their authors.

Вот хочу я лог. Зачем мне WAI лог? Все фреймворки на WAI как шаг в сторону, так WAI, wai-extra, wai-plus-plus, и тп. Рассчитываешь на простоту, а тут тебя хлоп по голове мешком с 18 библиотеками, которые ещё и haddock не имеют (настоящее положение дел со spock, что ли - он ссылается на WAI 3.2, а у неё документации на hackage нет).

Reply


nikita_timofeev January 21 2016, 14:10:56 UTC
У Сноймана как мне кажется две проблемы. Во-первых большинство его решений какие-то не хаскелёвые. Вместо того чтобы пользоваться возможностями языка, он создаёт сложный рантайм, потом прячет его, потом вынимает к нему ручки и ещё бог знает что. Во-вторых он создал целую экосистему, которая размазана по огромному количеству маленьких пакетов и активно этой экосистемой пользуется. Последнее впрочем вообще характерно для сегодняшнего хаскеля.

А servant, о котором говорили на последнем митапе тоже показался сложный?

Reply

thesz January 21 2016, 14:18:12 UTC
http://www.well-typed.com/blog/2015/11/implementing-a-minimal-version-of-haskell-servant/

Один из авторов Серванта рассказывает, как сделать более простой вариант Серванта, поскольку обычные люди его не понимают.

Внимательное вглядывание в http://hackage.haskell.org/package/servant-server показывает наличие зависимости от WAI.

Так что нет, сервант не может быть простым.

Reply

ext_2145935 January 21 2016, 14:32:18 UTC
Я так понял, что там описывается как написать свой сервант, если приспичит, для того, чтобы люди понимали, как писать решения с таким уровнем работы с типами и "генерацией" кода по типам. Т.е. пост имеет чисто образовательные цели. У серванта действительно есть другой вариант от sol, там больше вещей вынесено в typelevel и используются закрытые и инъективные типы, поэтому можно сделать больше анализа на typelevel, но он не расширяем. Если надо могу попробовать найти.

Я не очень много пользовался servant и с очень простыми задачами, но мне ни разу не пришлось задумываться, что же используется там внутри, и в кишки wai лезть было не надо.

Reply

thesz January 21 2016, 15:11:08 UTC
Скажи мне, если ты будешь писать на серванте Вики с историей страниц и разграничением доступа, то придётся ли тебе лезть в кишки WAI?

Reply


nivanych January 21 2016, 14:31:25 UTC
Напиши простой интерфейс, какой ты считаешь нужным?

Reply

thesz January 21 2016, 14:54:41 UTC
Странный вопрос.

Вроде бы и указание, но с вопросительным знаком.

Так что это - указание, что мне делать, или вопрос?

Reply

nivanych January 22 2016, 07:06:27 UTC
Любопытно твоё мнение по поводу того, как должен выглядеть простой веб-фреймворк.
И есть тебе не сложно, то сделай пост и напиши свои мысли (или даже наброски интерфейса) по этому поводу, пожалуйста.
Думаю, что это будет интересно не мне одному.

Reply

thesz January 22 2016, 11:01:39 UTC
Ну, это просто.

Фреймворк делится на две части - RPC с использованием HTTP и, собственно, цельное приложение. RPC это для внешних сервисов и его можно делать по остаточному принципу. Цельное приложение можно строить с помощью Raft, считая, что страничка пользователя это всё ещё наша программа, отдельная её нить или копия, которая участвует в Raft, но не может быть лидером.

Примерно так.

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

Reply


ext_2030572 January 21 2016, 14:31:46 UTC
Я юзаю Scotty. Прост как грелка -- прячет WAI. Разве нет?

Reply

thesz January 21 2016, 15:00:19 UTC
"Разве нет?" это был вопрос про что - про простоту или про упрятывание WAI?

Reply

ext_2030572 January 21 2016, 15:07:16 UTC
Перефразирую вопрос: пробовал ли ты Скотти и, если да, какие его части показались слишком сложными?

Reply

thesz January 21 2016, 15:24:58 UTC
Сейчас попробую.

На первый взгляд, вроде бы просто, но 1) нет формочек и 2) https://github.com/scotty-web/scotty-starter АААА!!!!!!

http://adit.io/posts/2013-04-15-making-a-website-with-haskell.html - WAI прямо указано в зависимостях. Если оно не нужно, его не надо указывать прямо. Поэтому получается, что WAI при работе со Scotty необходимо.

Используются: Network.HTTP.Types, Network.Wai.Middleware.RequestLogger, Network.Wai.Middleware.Static, "You can test your Scotty app with wai-test." Знание WAI требуется.

Я отринул его, увидев WAI в зависимостях. Поэтому близко не смотрел. И не буду.

Reply


highway99 January 21 2016, 15:33:19 UTC
Ну вот нахера пытаться писать вебморды на Хаскеле? Когда-то бэкенды писали на С++ через CGI, но это не значит, что надо продолжать убиваться ап стену. Чем JS устраивает? Ну, или, там, Руби, Скала, Го, наконец. Да мало ли.

Reply

thesz January 21 2016, 15:37:45 UTC
Вы читали ли про преимущества Хаскеля в программировании?

Reply

highway99 January 21 2016, 16:06:04 UTC
Года четыре (или больше) назад я весьма заинтересовался Хаскелем, перерешав кучу Эйлеровых задачек. Написал пару эвристических парсеров, типа как вытаскивать человеческий смысл из доменных имен, чтобы из newyorkforkids.com стабильно получался New York For Kids, а не New York Fork IDs. Да, я понимаю академический интерес использования чистых функций и практическую ценность _некоторых_ решений. Но совершенно не понимаю ценность Хаскеля в вебе. Так что если поделитесь ссылкой на "преимущества Хаскеля в программировании веб-бэкендов", буду весьма признателен.

Reply

thesz January 21 2016, 16:10:42 UTC
Типы.

Reply


Leave a comment

Up