Re[21]: ФЯ для WEB
От: Mr.Cat  
Дата: 25.09.09 20:11
Оценка:
Здравствуйте, WolfHound, Вы писали:
WH>Ну давай раскажи как заставить try/finally bли любой другой способ детерминированной финализации работать в присутствии продолжений.
В языках, как ты говоришь, с "позорными" системами типов — так же, как и в присутствии yield в C# или в присутствии нескольких потоков. Если программист хочет бесконтрольно шарить ресурс между корутинами/потоками — программист должен сам определить, где надо освобождать ресурс.

WH>Простейшие uniqueness решают данную проблему на корню.

Что мешает uniqueness-типам решать ту же проблему на корню в коде с континуациями? Ты же сам сказал, что твой исходный бажный пример с call/cc uniqueness-типы не пропустят. Вот и замечательно — этого нам и было надо.
Re[22]: ФЯ для WEB
От: WolfHound  
Дата: 25.09.09 20:50
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

WH>>Ну давай раскажи как заставить try/finally bли любой другой способ детерминированной финализации работать в присутствии продолжений.

Ответ на вопрос будет?

MC>В языках, как ты говоришь, с "позорными" системами типов — так же, как и в присутствии yield в C# или в присутствии нескольких потоков. Если программист хочет бесконтрольно шарить ресурс между корутинами/потоками — программист должен сам определить, где надо освобождать ресурс.

А давай ты расскажешь при решении какой задачи нужно бесконтрольно шарить ресурс?

MC>Что мешает uniqueness-типам решать ту же проблему на корню в коде с континуациями? Ты же сам сказал, что твой исходный бажный пример с call/cc uniqueness-типы не пропустят. Вот и замечательно — этого нам и было надо.

Так они и решают. Примерно как гильотина лечит головную боль.
При появлении хоть одного uniqueness типа программа с продолжениями компилироваться перестанет ибо у нее не будет шансов пройти проверку типов.
А если учесть что любой внешней ресурс это uniqueness тип и в программе есть хотя бы один внешней ресурс (иначе она не сможет оставить следов своей жизнедеятельности) то ни одна программа с продолжениями не скомпилируется.
Спрашивается: Если все равно ни одна программа с продолжениями не скомпилируется то нахрена их вообще добавлять?
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[18]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.09.09 05:10
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>Насколько я понимаю, Влад противопоставляет макросы и продолжения в качестве средств метапрограммирования. Опять же, в отношении детерминированной финализации они ничем не отличаются. Ничем не ограниченные трансформации AST в общем случае ничуть не безопаснее ничем не ограниченных манипуляций потоком управления.


А можно объяснить почему продолжения вообще относятся к средствам метапрограммирования?
Ну, и за одно хотелось бы услышать определение термина "метапрограммироваине". Может дело в трактовании?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.09.09 05:22
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>oneof, guard, return кажутся ключевыми словами, но таковыми не являются.


Не знаю. Может у меня фантазия слабая? Они мне кажутся вызовами функций.

PM>Признаю, для данной задачи макросы подходят гораздо лучше.


Я что-то в этой задаче не углядел место где было метапрограммирование.
То что макросы подходят для МП — это и ёжику понятно, так как они и есть МП.

PM> А вот для веба, если мы хотим программировать серверную часть так, будто это обычный десктопный ГУЙ, показывающий модальные диалоги и дожидающийся ответа, все не так очевидно.


Все как раз очевидно. Макры == МП. Они позволяет реализовать тот синтаксис и ту семантику что нужно.
Что до примеров применения МП для Веба, то Вольфхаунд дал тебе отличный пример (твой же, если не ошибаюсь).

ЗЫ

И все же хотелось бы объяснений того каким боком продолжения относятся к МП.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.09.09 05:24
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>Как это обошлось без продолжений? "сериализовали имя и аргументы функции в url" — это и есть продолжение. Думаю, если бы у функции counter были локальные переменные — их мы бы тоже увидели в url.


Не обязательно. Их примеры это хорошо демонстрируют.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.09.09 05:33
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

VD>>Тут вообще какая-то подмена понятий. То что через одну фичу можно с горем пополам выразить другую не делает саму фичу метапрограммированием.

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

Да по фигу с горем или без. Мой вопрос был — "Какое отношение имеет возможность реализации одной фичи через другую к метапрограммированию?".

MC>Так, гигиенические макросы позволяют создавать новые синтаксические конструкции, обладающие свойством лексической области видимости.


Макры позволяют определять синтаксис и семантику. Отсюда понятно почему они могут помогать менять язык. Но МП — это возможность написания программ пишущих программы. И причем тут продолжения? Макры == МП. Заметь, не макры позволяют релизовать МП, а макры сами являются МП. Как только ты их применил, так сразу у тебя появилось МП. Но разве с продолжениями будет тоже самое?

MC>А континуации — создавать механизмы нелокального перехода.


Ну, и что?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: ФЯ для WEB
От: BulatZiganshin  
Дата: 26.09.09 06:00
Оценка: +2 :)
Здравствуйте, maq, Вы писали:

maq>http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=all&d=data&calc=calculate&gpp=on&gcc=on&java=on&csharp=on&ghc=on&sbcl=on&hipe=on&mzscheme=on&vw=on&lua=on&tracemonkey=on&php=on&python=on&perl=on&ruby=on&box=1


maq>Кстати на форуме и вообще встречал утверждения о медленном haskel, как-то результаты тестов показывают обратное.


вот для этого и существуют тесты — чтобы проталкивать мусор дуракам, которые не способны сами разобраться в предмете. ценность этих конкретных тестов — нулевая. одни из них говорят о том, что в c++ нет стандартной green threads библиотеки, а в ghc она есть. другие — о том, что и на хаскеле можно писать в assembler style.

там в одном тесте кажется php был на первом месте вообще, большая часть тех тестов зависела исключительно от библиотек, причём запрещалось использовать third-party ones, оставшиеся три теста были изрядно низкоуровнево оптимизированы любителями хаскела, дело дошло даже до включения в стандартные билиотеки ghc функции, необходимой для ускорения одного из них
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: ФЯ для WEB
От: MasterZiv СССР  
Дата: 26.09.09 12:28
Оценка:
Аноним 379 wrote:

> MC>Конечно, LISP.

> MC>Scheme, если быть точным.
>
> Почему?

Действительно, почему Scheme ? Common LISP !
Posted via RSDN NNTP Server 2.1 beta
Re[6]: ФЯ для WEB
От: MasterZiv СССР  
Дата: 26.09.09 12:31
Оценка:
FR wrote:

> Угу библиотек больше, популярность языка и размер комьюнити гораздо

> больше, а продуктов и промышленного кода почему-то меньше.

Во, опять. про комьюнити. Ну тебе-то на кой ххх это комьюнити сдалось ?
Думаю, не желторотый циплёнок чай.
Posted via RSDN NNTP Server 2.1 beta
Re[14]: ФЯ для WEB
От: MasterZiv СССР  
Дата: 26.09.09 12:41
Оценка:
VladD2 wrote:

> А> Я так понимаю — то, что нельзя взять текущий continuation,

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

Я вот только что подумал тоже, что если параллельно с выполнением
сессии писать всё в БД с поддержко MVCC, в одной транзакции от
начала сессии, -- очень было бы удобно. Но я не понимаю тоже,
в чём там могли бы быть проблемы.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: ФЯ для WEB
От: FR  
Дата: 26.09.09 13:23
Оценка: :)
Здравствуйте, MasterZiv, Вы писали:


MZ>Во, опять. про комьюнити. Ну тебе-то на кой ххх это комьюнити сдалось ?

MZ>Думаю, не желторотый циплёнок чай.

Угу вот я взял OCaml c маленьким комьюнити и пофлеймить не с кем
Re[8]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.09.09 13:45
Оценка:
Здравствуйте, FR, Вы писали:

FR>Угу вот я взял OCaml c маленьким комьюнити и пофлеймить не с кем

FR>

Я так понимаю, что одна из причин этого кроется в том, что комьюники у ОКамала франкоязычное.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ФЯ для WEB
От: FR  
Дата: 26.09.09 14:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я так понимаю, что одна из причин этого кроется в том, что комьюники у ОКамала франкоязычное.


В этом наверно тоже, но вот недавно в рассылке плач был на тему что французы ничего про OCaml не знают и пишут на вражеских языках.
Re[10]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.09.09 15:10
Оценка:
Здравствуйте, FR, Вы писали:

FR>В этом наверно тоже, но вот недавно в рассылке плач был на тему что французы ничего про OCaml не знают и пишут на вражеских языках.


Как-то странно. Ничего не знают, но в то же время что-то пишут.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: ФЯ для WEB
От: FR  
Дата: 26.09.09 16:09
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Как-то странно. Ничего не знают, но в то же время что-то пишут.


Ну так нормально кроме узкой страшно далекой от народа группы никто и не знает
Re[20]: ФЯ для WEB
От: Lloyd Россия  
Дата: 26.09.09 16:13
Оценка:
Здравствуйте, VladD2, Вы писали:

А>> Но вопрос не в этом. Вопрос простой — зачем вообще эти таймауты?!?


VD>Я вообще не понимаю о каких таймаутах речь.

VD>Авторизация может тупо вернуть некий билет который можно хранить в куках. Сессия тут просто не нужна.

Дык, сессия именно так и работает.
Re[21]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.09.09 16:29
Оценка:
Здравствуйте, Lloyd, Вы писали:

VD>>Я вообще не понимаю о каких таймаутах речь.

VD>>Авторизация может тупо вернуть некий билет который можно хранить в куках. Сессия тут просто не нужна.

L>Дык, сессия именно так и работает.


Тут кто-то хотел хранить состояние сессии в БД. И это точно был не я.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[23]: ФЯ для WEB
От: Mr.Cat  
Дата: 26.09.09 18:43
Оценка:
Здравствуйте, WolfHound, Вы писали:
WH>>>Ну давай раскажи как заставить try/finally bли любой другой способ детерминированной финализации работать в присутствии продолжений.
WH>Ответ на вопрос будет?

Уже, можно сказать, был. То, что try/finaly не является способом детерминированной финализации в присутствии лямбд, корутин и потоков — ты сам согласился. Из твоих доводов остались uniqueness-типы. Я не знаком с ними настолько, чтобы аргументированно спорить, но на мой взгляд их внесение в язык окажет не большее влияние, чем монада IO, а она, как видно, ничуть не мешает писать код в cps — для него в хаскеле даже хелпер в виде монады Cont есть. Т.е. максимум надо будет разделять чистый и нечистый код, и в чистом можно будет использовать в том числе и континуации. Что касаетсмя использования континуаций в коде с побочными эффектами — с ходу не могу сформировать мнение. Возможно, стоит полистать ветку, где ты расписывал прелести uniqueness-типов Ремарку, но пока я плохо знаком с их основами — не вижу для себя в этом смысла.

WH>При появлении хоть одного uniqueness типа программа с продолжениями компилироваться перестанет ибо у нее не будет шансов пройти проверку типов.

WH>А если учесть что любой внешней ресурс это uniqueness тип и в программе есть хотя бы один внешней ресурс (иначе она не сможет оставить следов своей жизнедеятельности) то ни одна программа с продолжениями не скомпилируется.
WH>Спрашивается: Если все равно ни одна программа с продолжениями не скомпилируется то нахрена их вообще добавлять?
Re[24]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 01:08
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Уже, можно сказать, был. То, что try/finaly не является способом детерминированной финализации в присутствии лямбд, корутин и потоков — ты сам согласился.

Ты что-то не так понял.
Цитату можно?

MC>Из твоих доводов остались uniqueness-типы. Я не знаком с ними настолько, чтобы аргументированно спорить, но на мой взгляд их внесение в язык окажет не большее влияние, чем монада IO, а она, как видно, ничуть не мешает писать код в cps — для него в хаскеле даже хелпер в виде монады Cont есть.

Тут вот в чем дело.
Если uniqueness-тип попадает в продолжение то программа не сможет пройти проверку типов.
Проблема в том что call/cc засовывает в продолжение весь стек на момент вызова call/cc.
И в ста процентах случаев мы будем иметь в стеке хоть один uniqueness-тип. Иначе программа просто не сможет ничего сказать внешнему миру.
В случае с ручным CPS мы сами контролируем содержание стека. И можем избежать попадание в стек чего не надо.

MC>Возможно, стоит полистать ветку, где ты расписывал прелести uniqueness-типов Ремарку, но пока я плохо знаком с их основами — не вижу для себя в этом смысла.

Задача простая: Гарантировать что на объект существует одна и только одна ссылка.
Решается тоже очень просто: в переменную uniqueness-типа можно записать и прочитать из нее ровно один раз.
Таким образом мы просто реализуем семантику передачи владения.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[25]: ФЯ для WEB
От: Mr.Cat  
Дата: 27.09.09 10:45
Оценка:
Здравствуйте, WolfHound, Вы писали:
MC>>Уже, можно сказать, был. То, что try/finaly не является способом детерминированной финализации в присутствии лямбд, корутин и потоков — ты сам согласился.
WH>Ты что-то не так понял.
WH>Цитату можно?

Но в данном случае ты приводишь проблему которая есть только в конкретном языке с весьма позорной системой типов.
Простейшие uniqueness решают данную проблему на корню.

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

WH>Если uniqueness-тип попадает в продолжение то программа не сможет пройти проверку типов.

Тут ты пожалуй прав. Сами по себе континуации и сими по себе uniqueness плохо сочетаются. Но из этого только следует то, что компилятор должен знать о контунцациях. Например, можно встроить поддержку delimited continuations, которые позволяют ограничить захватываемую континуацию. Также, я полагаю, в некоторых случаях можно доказать, что континуация, захваченная с call/cc вызывается не более одного раза.

WH>Задача простая: Гарантировать что на объект существует одна и только одна ссылка.

WH>Решается тоже очень просто: в переменную uniqueness-типа можно записать и прочитать из нее ровно один раз.
WH>Таким образом мы просто реализуем семантику передачи владения.
Ну на концептуальном-то уровне все понятно. Просто я ни разу не писал на языках с uniqueness. А дьявол-то наверняка в деталях.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.