ФЯ для WEB
От: maq Россия http://www.maqdev.com
Дата: 20.09.09 22:20
Оценка:
Хочу использовать один из функциональных языков для разработки веб проекта. Пока стремление исключительно для саморазвития, но кто его знает чем закончится. Что посоветуете из:
haskel
ocaml
erlang
?

Готов тратить некоторые усилия и писать библиотеки, которых недостает.
На данный момент импонирует haskel
Нравится еще что по результатам тестов haskel близок по производительности к C/C++ и опережает большинство других языков:

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

Кстати на форуме и вообще встречал утверждения о медленном haskel, как-то результаты тестов показывают обратное.
Re: ФЯ для WEB
От: Mr.Cat  
Дата: 20.09.09 22:47
Оценка:
Здравствуйте, maq, Вы писали:
Что посоветуете из:
maq>haskel
maq>ocaml
maq>erlang
maq>?
Конечно, LISP.
Scheme, если быть точным.
Re[2]: ФЯ для WEB
От: Аноним  
Дата: 20.09.09 22:51
Оценка:
MC>Конечно, LISP.
MC>Scheme, если быть точным.

Почему?
Re: ФЯ для WEB
От: denisbee  
Дата: 21.09.09 00:42
Оценка:
XQuery. Хороший пример "фрэймворка" — http://exist-db.org — функциональный язык программирования и запросов + БД c общей системой типов XML Schema
Re: ФЯ для WEB
От: FR  
Дата: 21.09.09 04:36
Оценка: +1
Здравствуйте, maq, Вы писали:

maq>Хочу использовать один из функциональных языков для разработки веб проекта. Пока стремление исключительно для саморазвития, но кто его знает чем закончится. Что посоветуете из:

maq>haskel
maq>ocaml

Для Ocaml'а посмотри сюда http://ocsigen.org/

maq>Готов тратить некоторые усилия и писать библиотеки, которых недостает.

maq>На данный момент импонирует haskel
maq>Нравится еще что по результатам тестов haskel близок по производительности к C/C++ и опережает большинство других языков:

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, как-то результаты тестов показывают обратное.


По моему здесь наоборот только говорят
Re: ФЯ для WEB
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 21.09.09 07:01
Оценка:
Здравствуйте, maq, Вы писали:

maq>Хочу использовать один из функциональных языков для разработки веб проекта. Пока стремление исключительно для саморазвития, но кто его знает чем закончится. Что посоветуете из:

maq>haskel
maq>ocaml
maq>erlang
maq>?

Для Scala есть интересный фреймфорк Lift (как мимнимум seaside сессии заслуживают внимания).
Преподносится, как все новое, что появилось в веб разработке за последние годы.
Re: ФЯ для WEB
От: palm mute  
Дата: 21.09.09 07:43
Оценка: 43 (3)
Настоящие функциональщики, маргиналы и социопаты, выбирают:
* Links — детище аспирантов Филипа Вадлера.
* Ur — язык для веба с зависимыми типами.

Всерьез советовать ничего не буду, я вебом не занимаюсь.
Re: ФЯ для WEB
От: Code Digger Грузия  
Дата: 21.09.09 08:00
Оценка:
Здравствуйте, maq, Вы писали:

maq>Хочу использовать один из функциональных языков для разработки веб проекта. Пока стремление исключительно для саморазвития, но кто его знает чем закончится. Что посоветуете из:

maq>haskel
maq>ocaml
maq>erlang
maq>?

В последнее время наметилась (думаю, вполне оправданная) тенденция писать клиент-серверные веб-приложения с Javascript RIA клиентом и что-там-нравится на сервере.

Я сейчас (по наводке коммерческих разработчиков) ковыряю qooxdoo RIA библиотеку. Она — ООП.
На сервере для её поддержки можно использовать любой язык с поддержкой HTTP запросов-ответов, JSON парсером и интерфейсом к Вашей любимой базе данных.

Сам, пожалуй, воспользуюсь PLT Scheme.
Re: ФЯ для WEB
От: Mamut Швеция http://dmitriid.com
Дата: 21.09.09 08:13
Оценка:
maq> Хочу использовать один из функциональных языков для разработки веб проекта. Пока стремление исключительно для саморазвития, но кто его знает чем закончится. Что посоветуете из:
maq> haskel
maq> ocaml
maq> erlang
maq> ?

Любой, какой понравится

maq> Готов тратить некоторые усилия и писать библиотеки, которых недостает.

maq> На данный момент импонирует haskel
maq> Нравится еще что по результатам тестов haskel близок по производительности к C/C++ и опережает большинство других языков:


Wikipedia, Flickr — PHP
Youtube — Python
Myspace — сначала Coldfusion, сейчас C#

Какой из этих языков близок по производительности к С/С++?
avalon 1.0rc2 rev 295, zlib 1.2.3 (01.08.2009 02:47:12 EEST :z)(Qt 4.5.1)


dmitriid.comGitHubLinkedIn
Re[3]: ФЯ для WEB
От: Mr.Cat  
Дата: 21.09.09 08:28
Оценка:
Здравствуйте, Аноним, Вы писали:
MC>>Scheme, если быть точным.
А>Почему?
Ну кроме достоинств самой scheme, которые, полагаю, вне топика — у plt довольно годный веб-фреймворк с определеной историей практического применения. Для plt еще есть leftparen, для chicken — spiffy&Ко.
Re[2]: ФЯ для WEB
От: Mr.Cat  
Дата: 21.09.09 08:33
Оценка: +1
Здравствуйте, Mamut, Вы писали:
M>Wikipedia, Flickr — PHP
M>Youtube — Python
M>Myspace — сначала Coldfusion, сейчас C#
M>Какой из этих языков близок по производительности к С/С++?
C#?
Re[2]: ФЯ для WEB
От: maq Россия http://www.maqdev.com
Дата: 21.09.09 08:57
Оценка:
M>Wikipedia, Flickr — PHP
M>Youtube — Python
M>Myspace — сначала Coldfusion, сейчас C#

M>Какой из этих языков близок по производительности к С/С++?


C# близок. Помимо этого, обычно на таких проектах пишут некоторые части на C/C++, так как PHP (или кто там еще) не справляются. Хочется этого избежать.
Re: ФЯ для WEB
От: lant Россия  
Дата: 21.09.09 09:04
Оценка:
Здравствуйте, maq, Вы писали:

maq>Хочу использовать один из функциональных языков для разработки веб проекта. Пока стремление исключительно для саморазвития, но кто его знает чем закончится. Что посоветуете из:

maq>haskel
maq>ocaml
maq>erlang
maq>?

есть опыт использования erlang (библиотека yaws) для написания веб страниц — админки для игрового сервера, написанного на эрланге. для этой цели очень хорошо подходит. для erlang также есть хитрые mvc фреймворки, но пока в них не было необходимости. если бы писал веб проект не привязанный к игровому серверу, то выбрал бы хаскель.
Re[2]: ФЯ для WEB
От: palm mute  
Дата: 21.09.09 09:08
Оценка:
Здравствуйте, palm mute, Вы писали:


PM>Настоящие функциональщики, маргиналы и социопаты, выбирают:

PM>* Links — детище аспирантов Филипа Вадлера.
PM>* Ur — язык для веба с зависимыми типами.

Забыл WebDSL от авторов Stratego.
Re: ФЯ для WEB
От: Аноним  
Дата: 21.09.09 09:31
Оценка:
Здравствуйте, maq, Вы писали:

maq>Хочу использовать один из функциональных языков для разработки веб проекта. Пока стремление исключительно для саморазвития, но кто его знает чем закончится. Что посоветуете из:


Посоветую смотреть на SISCweb. First class continuations (отсутствующие в вышеперечисленных языках) для веба — самое то.
Re[2]: ФЯ для WEB
От: vshabanov http://vshabanov-ru.blogspot.com
Дата: 21.09.09 09:38
Оценка:
Здравствуйте, lant, Вы писали:

L>есть опыт использования erlang (библиотека yaws) для написания веб страниц — админки для игрового сервера, написанного на эрланге. для этой цели очень хорошо подходит. для erlang также есть хитрые mvc фреймворки, но пока в них не было необходимости. если бы писал веб проект не привязанный к игровому серверу, то выбрал бы хаскель.


А какие проблемы с хаскелем для игрового сервера? Или там уже было все на эрланге?
Re[2]: ФЯ для WEB
От: thesz Россия http://thesz.livejournal.com
Дата: 21.09.09 09:42
Оценка:
FR>Во вторых надо различать тесты и реальные приложения. Например у того же Хаскеля для реальных приложений есть очень большой недостаток непредсказуемые тормоза из-за ленивости.

"Уж сколько раз твердили миру!"

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

FR>Кроме того на Хаскеле в отличии от Эрланга, Окамла и Лиспов практически нет достаточно объемного промышленного кода.


Да что ты говоришь!

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


FR>По моему здесь наоборот только говорят


Это если читать вполне определённым способом.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[3]: ФЯ для WEB
От: FR  
Дата: 21.09.09 10:05
Оценка:
Здравствуйте, thesz, Вы писали:

T>К тому моменту, как программа на неленивом языке хоть как-то начнёт работать, в программу на Хаскеле уже будут внесены все аннотации строгости.


Не будут, нормальный вариант для Хаскелитстов сделать прототип и забить

FR>>Кроме того на Хаскеле в отличии от Эрланга, Окамла и Лиспов практически нет достаточно объемного промышленного кода.


T>Да что ты говоришь!


Правду!

FR>>По моему здесь наоборот только говорят


T>Это если читать вполне определённым способом.


Угу, тихо что-то на rsdn
Re: ФЯ для WEB
От: Mr.Cat  
Дата: 21.09.09 10:13
Оценка:
Раз уж тема превратилась в парад фреймворков, то вот:
http://hop.inria.fr/
Re[4]: ФЯ для WEB
От: vshabanov http://vshabanov-ru.blogspot.com
Дата: 21.09.09 10:46
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, thesz, Вы писали:


T>>К тому моменту, как программа на неленивом языке хоть как-то начнёт работать, в программу на Хаскеле уже будут внесены все аннотации строгости.


FR>Не будут, нормальный вариант для Хаскелитстов сделать прототип и забить


Прототип-то рабочий, в отличии от.

FR>>>Кроме того на Хаскеле в отличии от Эрланга, Окамла и Лиспов практически нет достаточно объемного промышленного кода.


T>>Да что ты говоришь!


FR>Правду!


Как человек, писавший 4 года на кемле, скажу -- на хаскеле библиотек больше и уровень их выше.
Re[5]: ФЯ для WEB
От: FR  
Дата: 21.09.09 10:56
Оценка:
Здравствуйте, vshabanov, Вы писали:


FR>>Не будут, нормальный вариант для Хаскелитстов сделать прототип и забить


V>Прототип-то рабочий, в отличии от.


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

V>Как человек, писавший 4 года на кемле, скажу -- на хаскеле библиотек больше и уровень их выше.


Угу библиотек больше, популярность языка и размер комьюнити гораздо больше, а продуктов и промышленного кода почему-то меньше.
Re[4]: ФЯ для WEB
От: thesz Россия http://thesz.livejournal.com
Дата: 21.09.09 10:59
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, thesz, Вы писали:


T>>К тому моменту, как программа на неленивом языке хоть как-то начнёт работать, в программу на Хаскеле уже будут внесены все аннотации строгости.

FR>Не будут, нормальный вариант для Хаскелитстов сделать прототип и забить

А почему? А потому, что либо и так нормально работает, либо прототип подтвердил худшие опасения насчёт алгоритма вообще.

FR>>>Кроме того на Хаскеле в отличии от Эрланга, Окамла и Лиспов практически нет достаточно объемного промышленного кода.

T>>Да что ты говоришь!
FR>Правду!

"Научный факт меняется постоянно" (С) Грегори Хаус.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[6]: ФЯ для WEB
От: vshabanov http://vshabanov-ru.blogspot.com
Дата: 21.09.09 11:44
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, vshabanov, Вы писали:


FR>>>Не будут, нормальный вариант для Хаскелитстов сделать прототип и забить


V>>Прототип-то рабочий, в отличии от.


FR>Проблема в том что он только прототипом и остается, до продукта не доходит.


Значит не надо было. Такое ощущение от хаскеля возникает не потому, что делают прототип и забивают, а потому, что большинство интересных/известных прототипов сейчас делаются на хаскелле (что тоже показатель). Соотношение кол-ва прототип/production одинаковое.

V>>Как человек, писавший 4 года на кемле, скажу -- на хаскеле библиотек больше и уровень их выше.


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


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

Если смотреть по кол-ву проектов, то стоит сразу выбирать кобол и не думать. Надо смотреть на тенденции. Хаскель, как язык, всегда был на голову выше остальных. В последние годы он имеет очень неплохой рантайм, да еще и hackage появился. Т.е. если лет 5-10 назад еще как-то можно было отмазываться, что мол медленный/библиотек нет, то сейчас уже нет.
Re[3]: ФЯ для WEB
От: Mamut Швеция http://dmitriid.com
Дата: 21.09.09 15:47
Оценка:
maq> M>Wikipedia, Flickr — PHP
maq> M>Youtube — Python
maq> M>Myspace — сначала Coldfusion, сейчас C#

maq> M>Какой из этих языков близок по производительности к С/С++?


maq> C# близок. Помимо этого, обычно на таких проектах пишут некоторые части на C/C++,


Можно примеры? Кстати, помимо РНР в вебе еще, например, используются Питон или Руби (как на Твиттере). Или Coldfusion. Или Java. И вообще — highscalability.com в руки. икто не жалуется на скрипты, все говорят о том, как бороться с базами данных и файлами.

maq> так как PHP (или кто там еще) не справляются. Хочется этого избежать.


Планируется 15 миллионов пользователей и миллионы хитов в день сразу?
avalon 1.0rc2 rev 295, zlib 1.2.3 (01.08.2009 02:47:12 EEST :z)(Qt 4.5.1)


dmitriid.comGitHubLinkedIn
Re: ФЯ для WEB
От: Prikrutil  
Дата: 21.09.09 16:29
Оценка:
Есть еще Clojure =)

Живые:

Compojure: http://github.com/weavejester/compojure/
Conjure: http://github.com/macourtney/Conjure/
Cascade: http://github.com/hlship/cascade/

Не очень живые:

Webjure: http://github.com/tatut/Webjure/
Weld: http://github.com/mmcgrana/weld/
Madison: http://github.com/danlarkin/madison/

+ Nitrogen и BeepBeep для Эрланга.

Кстати, кто-нибудь в курсе, что за фреймворк HOP? Упоминается в мэйл-листе Ur вместе с Links: Comparison with other frameworks
Re[2]: ФЯ для WEB
От: Prikrutil  
Дата: 21.09.09 16:46
Оценка:
P>Кстати, кто-нибудь в курсе, что за фреймворк HOP?
Не заметил сообщения Mr.Cat
Re[3]: ФЯ для WEB
От: lant Россия  
Дата: 21.09.09 20:58
Оценка:
Здравствуйте, vshabanov, Вы писали:

V>Здравствуйте, lant, Вы писали:


L>>есть опыт использования erlang (библиотека yaws) для написания веб страниц — админки для игрового сервера, написанного на эрланге. для этой цели очень хорошо подходит. для erlang также есть хитрые mvc фреймворки, но пока в них не было необходимости. если бы писал веб проект не привязанный к игровому серверу, то выбрал бы хаскель.


V>А какие проблемы с хаскелем для игрового сервера? Или там уже было все на эрланге?


1) когда сервер уже написан на эрланге, писать к нему админку на хаскеле очень интересно, но не выгодно.
2) сервер писали на эрланге по многим причинам, главная из которых — простота изучения эрланга, что не характерно для Хаскеля.
Re[7]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.09.09 20:13
Оценка: +2
Здравствуйте, vshabanov, Вы писали:

V>Да как-то не сильно меньше. На эрланге проектов достаточно мало, кажется много из-за того, что они обычно обслуживают много клиентов. На кемле проектов может и чуть больше (кемл постарше хаскеля будет), но они уже старые, новые проекты на кемле почти никто не делает. На лиспе проектов еще больше, но, опять же, старые, новых никто не делает.


Э... ну это уже полнейший оговор. Не скажу за Кэмл, а вот на разновидностях Лиспа проектов делается не мало. Все же макры лиспа способны затмить любые проблемы этого старичка.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: ФЯ для WEB
От: thesz Россия http://thesz.livejournal.com
Дата: 23.09.09 08:56
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, vshabanov, Вы писали:


V>>Да как-то не сильно меньше. На эрланге проектов достаточно мало, кажется много из-за того, что они обычно обслуживают много клиентов. На кемле проектов может и чуть больше (кемл постарше хаскеля будет), но они уже старые, новые проекты на кемле почти никто не делает. На лиспе проектов еще больше, но, опять же, старые, новых никто не делает.


VD>Э... ну это уже полнейший оговор. Не скажу за Кэмл, а вот на разновидностях Лиспа проектов делается не мало. Все же макры лиспа способны затмить любые проблемы этого старичка.


Если бы это было так, то мы бы все сейчас использовали Лисп.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[8]: ФЯ для WEB
От: Аноним  
Дата: 23.09.09 08:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Э... ну это уже полнейший оговор. Не скажу за Кэмл, а вот на разновидностях Лиспа проектов делается не мало. Все же макры лиспа способны затмить любые проблемы этого старичка.


В случае с вебом, это не лисп, а схема, и не макры, а first class continuations.
Re[7]: ФЯ для WEB
От: FR  
Дата: 23.09.09 09:29
Оценка:
Здравствуйте, vshabanov, Вы писали:

V>Да как-то не сильно меньше. На эрланге проектов достаточно мало, кажется много из-за того, что они обычно обслуживают много клиентов. На кемле проектов может и чуть больше (кемл постарше хаскеля будет), но они уже старые, новые проекты на кемле почти никто не делает. На лиспе проектов еще больше, но, опять же, старые, новых никто не делает.


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

V>Если смотреть по кол-ву проектов, то стоит сразу выбирать кобол и не думать. Надо смотреть на тенденции. Хаскель, как язык, всегда был на голову выше остальных. В последние годы он имеет очень неплохой рантайм, да еще и hackage появился. Т.е. если лет 5-10 назад еще как-то можно было отмазываться, что мол медленный/библиотек нет, то сейчас уже нет.


Да Хаскель неплохо подтянулся, OCaml в этом отстает, но подвижки тоже есть, те же батарейки скоро зарелизятся.
Если смотреть на такие тенденции то надо пересаживатся на F#
Re[8]: ФЯ для WEB
От: thesz Россия http://thesz.livejournal.com
Дата: 23.09.09 12:51
Оценка:
V>>Если смотреть по кол-ву проектов, то стоит сразу выбирать кобол и не думать. Надо смотреть на тенденции. Хаскель, как язык, всегда был на голову выше остальных. В последние годы он имеет очень неплохой рантайм, да еще и hackage появился. Т.е. если лет 5-10 назад еще как-то можно было отмазываться, что мол медленный/библиотек нет, то сейчас уже нет.

FR>Да Хаскель неплохо подтянулся, OCaml в этом отстает, но подвижки тоже есть, те же батарейки скоро зарелизятся.

FR>Если смотреть на такие тенденции то надо пересаживатся на F#

Ты смотришь на языки, как на "нужные языки".

На F# никогда не будет интересно.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[9]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 12:55
Оценка:
Здравствуйте, thesz, Вы писали:

VD>>Э... ну это уже полнейший оговор. Не скажу за Кэмл, а вот на разновидностях Лиспа проектов делается не мало. Все же макры лиспа способны затмить любые проблемы этого старичка.


T>Если бы это было так, то мы бы все сейчас использовали Лисп.


А это так. Но не для всех. Просто кто-то ценит качества лиспа выше чем то что может предоставить другие языки. А кто-то нет.

Точно так же это и про твой любимый Хаскель. Для тебя он идеален. А для меня — нет. И ты по-своему прав. Как и я по-своему прав.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 12:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А> В случае с вебом, это не лисп, а схема, и не макры, а first class continuations.


Ваши континюэшоны есть много где. И их почти куда угодно можно приделать. А вот Мары есть только в 3-4 языках из которых широко используется только Лисп.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: ФЯ для WEB
От: Qbit86 Кипр
Дата: 23.09.09 13:00
Оценка: :))) :))) :)))
Здравствуйте, VladD2, Вы писали:

VD>...И ты по-своему прав. Как и я по-своему прав.


«Каждый человек по-своему прав. А по-моему — нет.» ©
Глаза у меня добрые, но рубашка — смирительная!
Re[9]: ФЯ для WEB
От: FR  
Дата: 23.09.09 13:15
Оценка:
Здравствуйте, thesz, Вы писали:

T>Ты смотришь на языки, как на "нужные языки".


Нет, иначе бы я начал свой небольшой проектик не на OCaml а на смеси питона и C++

T>На F# никогда не будет интересно.


Да ладно на нем гораздо интересней чем на C#
Re[9]: ФЯ для WEB
От: FR  
Дата: 23.09.09 13:19
Оценка:
Здравствуйте, thesz, Вы писали:

T>Ты смотришь на языки, как на "нужные языки".


T>На F# никогда не будет интересно.


Кстати нужность не исключает интересности, это две ортогональные оси для оценок.
Re[10]: ФЯ для WEB
От: Mr.Cat  
Дата: 23.09.09 13:28
Оценка: +1
Здравствуйте, VladD2, Вы писали:
VD>Ваши континюэшоны есть много где.
Только в половине случаев они будут escape-only.
Плюс, в scheme уже есть готовая инфраструктура работы с континуациями и готовое комьюнити, которое знакомо с континуациями.
Достаточно хорошо продуманы и реализованы на уровне библиотек (в той же plt) вещи более высокого уровня, чем простой call/cc (например, shift/reduce, composable continuations, serializable continuations).
А в этом "много где" — кто даст гарантию, что не придется писать shift/reduce руками и найдутся в комьюнити люди, у которых можно будет консультироваться?

VD>И их почти куда угодно можно приделать.

И будет БДСМ: либо бондаж с чем-то типа монады Cont, либо садо-мазо с ручным CPS.
Re[10]: ФЯ для WEB
От: Аноним  
Дата: 23.09.09 13:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ваши континюэшоны есть много где.


Где, например? First class, причём, а не такие, которые можно на исключениях эмулировать.

VD> И их почти куда угодно можно приделать.


Если бы всё было так красиво. Но в действительности всё совсем не так, увы.
Re[10]: ФЯ для WEB
От: Denom Украина  
Дата: 23.09.09 14:37
Оценка:
Здравствуйте, FR, Вы писали:

FR>Кстати нужность не исключает интересности, это две ортогональные оси для оценок.

так может точечную диаграмму изобразишь с разными языками и со шкалой от 0 до 10?
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[11]: ФЯ для WEB
От: FR  
Дата: 23.09.09 14:47
Оценка:
Здравствуйте, Denom, Вы писали:


FR>>Кстати нужность не исключает интересности, это две ортогональные оси для оценок.

D>так может точечную диаграмму изобразишь с разными языками и со шкалой от 0 до 10?

А смысл?
У каждого будут свои диаграммы, к тому же меняющиеся со временем.
Re[12]: ФЯ для WEB
От: Denom Украина  
Дата: 23.09.09 14:49
Оценка: +1
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, Denom, Вы писали:



FR>>>Кстати нужность не исключает интересности, это две ортогональные оси для оценок.

D>>так может точечную диаграмму изобразишь с разными языками и со шкалой от 0 до 10?

FR>А смысл?

FR>У каждого будут свои диаграммы, к тому же меняющиеся со временем.
А если голосованием а потом по средним значениям диаграмму
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[13]: ФЯ для WEB
От: Mr.Cat  
Дата: 23.09.09 15:00
Оценка:
Здравствуйте, Denom, Вы писали:
D>А если голосованием а потом по средним значениям диаграмму
Это будет интересно, конечно. Нужно прикинуть шкалу и список сравниваемых языков.
Re[10]: ФЯ для WEB
От: thesz Россия http://thesz.livejournal.com
Дата: 23.09.09 15:27
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, thesz, Вы писали:


T>>Ты смотришь на языки, как на "нужные языки".


FR>Нет, иначе бы я начал свой небольшой проектик не на OCaml а на смеси питона и C++


А почему выбрал OCaml?

T>>На F# никогда не будет интересно.


FR>Да ладно на нем гораздо интересней чем на C#


Но при этом он всё равно нужный.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[11]: ФЯ для WEB
От: FR  
Дата: 23.09.09 15:36
Оценка:
Здравствуйте, thesz, Вы писали:

FR>>Нет, иначе бы я начал свой небольшой проектик не на OCaml а на смеси питона и C++


T>А почему выбрал OCaml?


Потому что хаскель не осилил
Если серъезно, то куча причин и все субъективные.

FR>>Да ладно на нем гораздо интересней чем на C#


T>Но при этом он всё равно нужный.


А какая разница если он интересный.
Re[13]: ФЯ для WEB
От: FR  
Дата: 23.09.09 15:37
Оценка:
Здравствуйте, Denom, Вы писали:


FR>>А смысл?

FR>>У каждого будут свои диаграммы, к тому же меняющиеся со временем.
D>А если голосованием а потом по средним значениям диаграмму

Мне не понятно что может показать такая диаграмма.
Re[11]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 16:04
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

VD>>Ваши континюэшоны есть много где.

MC>Только в половине случаев они будут escape-only.

Что означает сие высказывание?

MC>Плюс, в scheme уже есть готовая инфраструктура работы с континуациями и готовое комьюнити, которое знакомо с континуациями.


Ну, комьюнити — это сильно конечно. А инфраструктура дело наживное. Вон даже в Моно хотя всроить континюэшоны в рантайм.

MC>Достаточно хорошо продуманы и реализованы на уровне библиотек (в той же plt) вещи более высокого уровня, чем простой call/cc (например, shift/reduce, composable continuations, serializable continuations).

MC>А в этом "много где" — кто даст гарантию, что не придется писать shift/reduce руками и найдутся в комьюнити люди, у которых можно будет консультироваться?

Ну, если вспомнить, что Схема язык не лучше и не хуже чем другие и что комьюнити у него не самый огромный, то на все вопросы можно смело ответить — "да".

VD>>И их почти куда угодно можно приделать.

MC>И будет БДСМ: либо бондаж с чем-то типа монады Cont, либо садо-мазо с ручным CPS.

Да какая разница что там будет? Фанатство каое-то. Это чисто технический аспект. К тому же для веб-фрэймворков вообще не важны аспекты производительности, так как передача континиэшонов не будет в этой задаче занимать основное время. Есть туча фрэймворков использующих интерпретируемые языки для описания вокфлоу веб-сайтов и никто не жалуется на производительность.
Меж тем кроме вокфлоу, проблему которого и решают континюэшоны, есть еще и обычный код которого по любому прийдется писать много.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 16:11
Оценка:
Здравствуйте, Аноним, Вы писали:

VD>>Ваши континюэшоны есть много где.


А> Где, например?


Ява, Питон, F#, туча фрэймворков... Скоро будет даже в Моно. Короче гугль тебе в помощь.
Если же вспомнить о сопрограммах и зеленых потоках, то это почти любое средство разработки.

А>First class, причём, а не такие, которые можно на исключениях эмулировать.


А вот это уже не важно для задач которые в веб-приложения с их помощью решаются.

VD>> И их почти куда угодно можно приделать.


А> Если бы всё было так красиво. Но в действительности всё совсем не так, увы.


В действительности все совсем так. И не используют их в большей степени из-за того, что не понимаю, что это такое.
Просто кому-то хочется видеть выдать некоторую фичу за мега-приемущество забивающие все остальное.
Может быть макры и можно было бы за таковое выдать, так как ни хороших макрах можно много чего реализовать. Но континиэшоны вещь весьма специфичная. Конечно хорош иметь ее в своем арсенале, но ею мир не заканчивается.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: ФЯ для WEB
От: Аноним  
Дата: 23.09.09 16:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ява, Питон, F#, туча фрэймворков...


Нет, нет, нет, тем более нет.

VD> Скоро будет даже в Моно. Короче гугль тебе в помощь.

VD>Если же вспомнить о сопрограммах и зеленых потоках, то это почти любое средство разработки.

Опа. По потоку на каждый запрос, и прибивать по таймауту? Стильно.

А>>First class, причём, а не такие, которые можно на исключениях эмулировать.


VD>А вот это уже не важно для задач которые в веб-приложения с их помощью решаются.


Нет, именно это как раз и важно. Прошу посмотреть на SISCweb внимательнее. Там не просто continuations нужны, а вообще сериализируемые.

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


Ага. В случае в вебом, и вообще с любым асинхронным взаимодействием клиента с сервером, это мегафича, забивающая начисто всё остальное.

VD>Может быть макры и можно было бы за таковое выдать, так как ни хороших макрах можно много чего реализовать.


Много чего можно, а вот first class continuations нельзя.

VD> Но континиэшоны вещь весьма специфичная. Конечно хорош иметь ее в своем арсенале, но ею мир не заканчивается.


Для асинхронного обмена сообщениями — можно считать, что и заканчивается. Все остальные фичи уже и не нужны, когда есть такое.
Re[12]: ФЯ для WEB
От: Аноним  
Дата: 23.09.09 16:28
Оценка:
Здравствуйте, VladD2, Вы писали:

MC>>Только в половине случаев они будут escape-only.


VD>Что означает сие высказывание?


Я так понимаю — то, что нельзя взять текущий continuation, сериализовать его в БД, а ключик послать клиенту. И потом по этому ключику достать и исполнить.
Re[13]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 16:52
Оценка:
Здравствуйте, Аноним, Вы писали:

VD>>Ява, Питон, F#, туча фрэймворков...


А> Нет, нет, нет, тем более нет.


Не надо говорить ерунду.

VD>> Скоро будет даже в Моно. Короче гугль тебе в помощь.

VD>>Если же вспомнить о сопрограммах и зеленых потоках, то это почти любое средство разработки.

А> Опа. По потоку на каждый запрос, и прибивать по таймауту? Стильно.


По зеленому потоку. Это не так накладно для многих применений.

VD>>А вот это уже не важно для задач которые в веб-приложения с их помощью решаются.


А> Нет, именно это как раз и важно. Прошу посмотреть на SISCweb внимательнее. Там не просто continuations нужны, а вообще сериализируемые.


а) Это не накладывает ограничений на скорость; б) Это не обязательное требование для веба.

А> Ага. В случае в вебом, и вообще с любым асинхронным взаимодействием клиента с сервером, это мегафича, забивающая начисто всё остальное.


См. выше. Я по этому поводу уже все сказал.

VD>>Может быть макры и можно было бы за таковое выдать, так как ни хороших макрах можно много чего реализовать.


А> Много чего можно, а вот first class continuations нельзя.


См. Выше.

VD>> Но континиэшоны вещь весьма специфичная. Конечно хорош иметь ее в своем арсенале, но ею мир не заканчивается.


А> Для асинхронного обмена сообщениями — можно считать, что и заканчивается. Все остальные фичи уже и не нужны, когда есть такое.


Есть и другие решения. Скажем туча веб-фрэймворков использует передачу сообщений и идеи акторов. Другие пользуются теми же континюэшонами или сопрограммами реализованными разным образом.
По любому интерпретатор (я правильно понял, что используемая схема там интерпретируется?) проиграет компилятору на большой задаче.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 17:00
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Я так понимаю — то, что нельзя взять текущий continuation, сериализовать его в БД, а ключик послать клиенту. И потом по этому ключику достать и исполнить.


Ну, кое-где это наверно можно. Только не очень ясно зачем же в БД пихать? Народ вон от вюстэйта избавляется, а тут...
Не проще ли держать в памяти, а тех что давнно не ворочаются выкидывать?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: ФЯ для WEB
От: Аноним  
Дата: 23.09.09 17:09
Оценка:
Здравствуйте, VladD2, Вы писали:

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


Затем, что вернуться за ним могут весьма не скоро. Это вовсе не обязательно в рамках одной сессии.

VD>Не проще ли держать в памяти, а тех что давнно не ворочаются выкидывать?


Того врага народа, который придумал таймауты, надо выпороть публично. Чтоб другим неповадно было.
Re[11]: ФЯ для WEB
От: Mr.Cat  
Дата: 23.09.09 17:20
Оценка:
Здравствуйте, Mr.Cat, Вы писали:
MC>shift/reduce, composable continuations
Прошу прощения. Запятую читать как "ака".
Re[2]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 17:41
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>* Ur — язык для веба с зависимыми типами.


На первый взгляд весьма интересная штука.
Вот только неформального описания языка я так и не нашел. Интересно есть по нему статьи?

Плюс, похоже что это экспериментальная хреновина работающая только под линуксом.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: ФЯ для WEB
От: palm mute  
Дата: 23.09.09 17:47
Оценка:
Здравствуйте, VladD2, Вы писали:

PM>>* Ur — язык для веба с зависимыми типами.

VD>На первый взгляд весьма интересная штука.
VD>Вот только неформального описания языка я так и не нашел. Интересно есть по нему статьи?

Похоже, что статей нет, иначе в анонсе на LtU и на офсайте были бы ссылки.

VD>Плюс, похоже что это экспериментальная хреновина работающая только под линуксом.


Понятно, что экспериментальная. Проект энтузиаста-одиночки. Я же говорил, что для социопатов .
Re[4]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 18:21
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>Понятно, что экспериментальная. Проект энтузиаста-одиночки. Я же говорил, что для социопатов .


Жаль. Проектное решение весьма грамотное + весь хайтек CS в одном флакоен.
Приятно что на практике все монады и другие классы типов спрятаны (похоже что средствами метапрограммирования) под красивыми абстракциями и конечный код смотрится чисто и понятно даже непосвященному.

В общем, я бы с удовольствием почитал бы про это дело статейку.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 18:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А> Затем, что вернуться за ним могут весьма не скоро. Это вовсе не обязательно в рамках одной сессии.


Ага. Хранение viewstate в БД тоже так же обосновывали... Сейчас вот переходят на ASP MVC, так как оказалось, что состояние проще не хранить вовсе.

VD>>Не проще ли держать в памяти, а тех что давнно не ворочаются выкидывать?


А> Того врага народа, который придумал таймауты, надо выпороть публично. Чтоб другим неповадно было.


Публично надо пороть тех кто заходит на сайт и держит там сессии без надобности.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: ФЯ для WEB
От: Mr.Cat  
Дата: 23.09.09 18:39
Оценка:
Здравствуйте, VladD2, Вы писали:
MC>>Только в половине случаев они будут escape-only.
VD>Что означает сие высказывание?
Ну континуации можно реализовать полноценно (т.е. континуация и обычная функция неразличимы) — а можно сделать видимость их реализации. Например, если континуацию, захватываемую через call/cc, можно использовать только для "преждевременного" возврата — и больше никак — то говорят об escape-only.

VD>Вон даже в Моно хотя всроить континюэшоны в рантайм.

Это они глядя на parrot? Но идея хороша, да.

VD>Меж тем кроме вокфлоу, проблему которого и решают континюэшоны...

Я бы отнес континуации к средствам метапрограммирования по части control flow.
Re[13]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.09.09 18:57
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Ну континуации можно реализовать полноценно (т.е. континуация и обычная функция неразличимы) — а можно сделать видимость их реализации. Например, если континуацию, захватываемую через call/cc, можно использовать только для "преждевременного" возврата — и больше никак — то говорят об escape-only.


Это уже хрень какая-то а не континюэшоны... если я тебя правильно понял.

VD>>Вон даже в Моно хотя всроить континюэшоны в рантайм.

MC>Это они глядя на parrot? Но идея хороша, да.

Х.з. Просто наткнулся недавно на роадмап Моно. Увидел много нового.

VD>>Меж тем кроме вокфлоу, проблему которого и решают континюэшоны...

MC>Я бы отнес континуации к средствам метапрограммирования по части control flow.

А не надо это делать. Для МП есть куда более подходящие средства.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: ФЯ для WEB
От: Mr.Cat  
Дата: 23.09.09 19:04
Оценка: +3 -1
Здравствуйте, VladD2, Вы писали:
VD>Это уже хрень какая-то а не континюэшоны... если я тебя правильно понял.
Конечно хрень.

MC>>Я бы отнес континуации к средствам метапрограммирования по части control flow.

VD>А не надо это делать. Для МП есть куда более подходящие средства.
Почему не надо? С помощью континуаций делаются эксепшены, корутины и прочая ересь, которую уже используют прикладные программисты. По мне так и есть — метасредство.
Re[5]: ФЯ для WEB
От: palm mute  
Дата: 24.09.09 06:36
Оценка: 9 (1)
Здравствуйте, VladD2, Вы писали:

VD>В общем, я бы с удовольствием почитал бы про это дело статейку.


Я поторопился, среди публикаций автора нашлась статья не совсем про Ur/Web, но, судя по всему, про его предшественника:
Scrap Your Web Application Boilerplate, or Metaprogramming with Row Types.
Re[16]: ФЯ для WEB
От: Аноним  
Дата: 24.09.09 10:58
Оценка: +1
Здравствуйте, VladD2, Вы писали:

А>> Того врага народа, который придумал таймауты, надо выпороть публично. Чтоб другим неповадно было.


VD>Публично надо пороть тех кто заходит на сайт и держит там сессии без надобности.


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

Не, таймауты — это редкостный идиотизм, которому нет никакого оправдания.
Re[15]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.09.09 17:03
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Почему не надо?


Я уже отвечал на этот вопрос. Для этого есть лучшие средства.

MC>С помощью континуаций делаются эксепшены, корутины и прочая ересь, которую уже используют прикладные программисты. По мне так и есть — метасредство.


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

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

И исключения, и сопрограммы — это системные вещи. Метапрограммирование же призвано решать прикладные задачи.
Тут вообще какая-то подмена понятий. То что через одну фичу можно с горем пополам выразить другую не делает саму фичу метапрограммированием. Скажем через функции можно выразить циклы, но функции не дают поддержку МП.
Покажи мне как с помощью континюэшонов создать какую-то новую синтаксическую конструкцию. Тогда и поговорим.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.09.09 17:06
Оценка:
Здравствуйте, Аноним, Вы писали:

А> На всяких гос. сайтах заполнение анкет часто занимает немалое время — надо найти разные документы, просмотреть. Очень потом приятно, после часа работы, увидеть по сабмиту что мол опа, таймаут.


А зачем для заполнения анкеты держать соединение?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: ФЯ для WEB
От: Аноним  
Дата: 24.09.09 17:21
Оценка:
Здравствуйте, VladD2, Вы писали:

А>> На всяких гос. сайтах заполнение анкет часто занимает немалое время — надо найти разные документы, просмотреть. Очень потом приятно, после часа работы, увидеть по сабмиту что мол опа, таймаут.


VD>А зачем для заполнения анкеты держать соединение?


А это надо "программистов" так называемых спрашивать, кто эти сайтики клепает. Обычно сессия выглядит так — авторизация (вот тут контекст сессии и создаётся) — две-три страницы с вопросами, а потом большая страница с большой формой. И вот при её сабмите таймаут и происходит.

Но вопрос не в этом. Вопрос простой — зачем вообще эти таймауты?!?
Re[19]: ФЯ для WEB
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.09.09 19:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А> А это надо "программистов" так называемых спрашивать, кто эти сайтики клепает. Обычно сессия выглядит так — авторизация (вот тут контекст сессии и создаётся) — две-три страницы с вопросами, а потом большая страница с большой формой. И вот при её сабмите таймаут и происходит.


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


Я вообще не понимаю о каких таймаутах речь.
Авторизация может тупо вернуть некий билет который можно хранить в куках. Сессия тут просто не нужна.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[16]: ФЯ для WEB
От: WolfHound  
Дата: 24.09.09 20:14
Оценка: 42 (1)
Здравствуйте, VladD2, Вы писали:

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

Не так.
Сопрограммы конечно же выражаются через продолжения. Через продолжения можно выразить вообще любую конструкцию управляющую потоком исполнения.
Но у полноценных продолжений есть очень большая проблема которой нет у сопрограмм.
Продолжения в общем случае не совместимы с детерминированной финализацией. Сопрограммы этой проблемы не имеют.
А детерминированная финализация не практике необходима.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[17]: ФЯ для WEB
От: palm mute  
Дата: 25.09.09 07:46
Оценка: +4
Здравствуйте, WolfHound, Вы писали:

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

WH>Продолжения в общем случае не совместимы с детерминированной финализацией. Сопрограммы этой проблемы не имеют.
WH>А детерминированная финализация не практике необходима.

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

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

з.ы. Заметьте, я не утверждаю, что при применении продолжений проблем совсем не возникает.
Re[16]: ФЯ для WEB
От: Mr.Cat  
Дата: 25.09.09 10:08
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>Сопрограммы и континиэшоны во многом похожи, но имеют принципиальные различия. Вольфхаунд где-то очень хорошо это продемонстрировал.
А ссылочку можно?

VD>Исключения же точно не стоит делать. Они просто должны быть в языке, если его дизайн на них расчитан.

Ну это, пожалуй, один из немногих примеров механизма "нелокальных переходов", который стал общепризнанным. А вот корутинами каждый в своем языке называет что-то свое.

VD>И исключения, и сопрограммы — это системные вещи. Метапрограммирование же призвано решать прикладные задачи.

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

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

Не с горем пополам одно через другое, а реализовать на основе одного целый класс схожих механизмов.
Так, гигиенические макросы позволяют создавать новые синтаксические конструкции, обладающие свойством лексической области видимости.
А континуации — создавать механизмы нелокального перехода.
Re[16]: ФЯ для WEB
От: palm mute  
Дата: 25.09.09 10:40
Оценка:
Здравствуйте, VladD2, Вы писали:

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

VD>Покажи мне как с помощью континюэшонов создать какую-то новую синтаксическую конструкцию. Тогда и поговорим.

Синтаксическую конструкцию, конечно же, сделать нельзя. Но сделать так, чтобы вызов обычной функции выглядел как ключевое слово, можно.
Например, можно сделать некое подобие list-comprehensions:
(* test() возвращает [(1, 11); (1, 13); (2, 12); (3, 11); (3, 13)] *)
let test () = generate (fun () ->
                         let x = oneof [1;2;3] in
                         let y = oneof [11;12;13] in
                           begin
                             guard ((x + y) mod 2 == 0); 
                             return (x, y)
                           end)


oneof, guard, return кажутся ключевыми словами, но таковыми не являются.
Вот их определение (без комментариев, там происходит монадная рефлексия и прочее колдунство):
open Delimcc

let p = new_prompt () 

let shift f = take_subcont p (fun sk () ->
  push_prompt p (fun () -> (f (fun c -> 
    push_prompt p (fun () -> push_subcont sk c)))))

let generate f = push_prompt p f
let bind m k = List.concat (List.map k m)
let return x = [x]
let oneof m = shift (fun k -> bind m (fun x -> k (fun () -> x)))
let guard cond = if cond then oneof [()] else oneof []


Признаю, для данной задачи макросы подходят гораздо лучше. А вот для веба, если мы хотим программировать серверную часть так, будто это обычный десктопный ГУЙ, показывающий модальные диалоги и дожидающийся ответа, все не так очевидно.
Re[18]: ФЯ для WEB
От: WolfHound  
Дата: 25.09.09 13:53
Оценка:
Здравствуйте, palm mute, Вы писали:

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

Ты не прав.
Засовываем все ресурсы в uniqueness типы и нет проблем.
Более того ты сейчас говоришь о искусственном продлении жизни ресурса.
Это не проблема особенно если обязать разработчика делать это явно и не давать продлевать жизнь уже убитым ресурсам. С uniqueness типами это получается автоматом.

С продолжениями другая беда.
Покажу на псевдокоде:
{
  mutable problemMaker;
  def file = File.Open(...);
  try
  {
    callcc(fn => problemMaker = fn);
  }
  finally
  {
    file.Close();
  }
  ...
}

Не трудно заметить что file.Close() может быть вызвана более одного раза.
Что является фундаментальной проблемой и не может быть устранено при наличии полноценных продолжений вне зависимости от модели детерминированной финализации.

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

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

PM>з.ы. Заметьте, я не утверждаю, что при применении продолжений проблем совсем не возникает.

Ты просто сильно занижаешь их вредность...
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[17]: ФЯ для WEB
От: WolfHound  
Дата: 25.09.09 14:15
Оценка:
Здравствуйте, palm mute, Вы писали:

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

Сам же ссылку на Ur/Web давал
Вот из такого кода
fun counter n = return <xml><body>
  Current counter: {[n]}<br/>
  <a link={counter (n + 1)}>Increment</a><br/>
  <a link={counter (n - 1)}>Decrement</a>
</body></xml>

fun main () = counter 0

получаем вот такой HTML
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><body><sc>
Current counter: 0<br />
<a href="/ur/demo/Demo/Counter/counter/1">Increment</a><br />
<a href="/ur/demo/Demo/Counter/counter/-1">Decrement</a>
</body></html>

Обошлось без всяких там продолжений.
Просто сериализовали имя и аргументы функции в url и все.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[19]: ФЯ для WEB
От: palm mute  
Дата: 25.09.09 16:18
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, palm mute, Вы писали:


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

WH>Ты не прав.
WH>Засовываем все ресурсы в uniqueness типы и нет проблем.
Подтягивается тяжелая артиллерия . Только что у нас были только макросы, теперь уже навороченные системы типов появились. Какие есть принципиальные трудности реализации такой же системы типов, которая поддерживает продолжения?

WH>С продолжениями другая беда.

WH>Покажу на псевдокоде:
...
WH>Не трудно заметить что file.Close() может быть вызвана более одного раза.
WH>Что является фундаментальной проблемой и не может быть устранено при наличии полноценных продолжений вне зависимости от модели детерминированной финализации.

Предположим, у нас есть система типов, о которой ты говоришь.
Компилятор делает CPS-преобразование, callcc в псевдокоде превращается в:
  mutable problemMaker;
  problemMaker = (() => file.Close(() => ... k());

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

PM>>з.ы. Заметьте, я не утверждаю, что при применении продолжений проблем совсем не возникает.

WH>Ты просто сильно занижаешь их вредность...
Ни в коем случае. Я вообще не делаю оценочных утверждений типа "фича икс зло, а фича игрек — рулит". Мне просто не нравится, что о продолжениях создаются мифы.
Re[18]: ФЯ для WEB
От: palm mute  
Дата: 25.09.09 16:36
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

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

WH>Сам же ссылку на Ur/Web давал
WH>...
WH>Обошлось без всяких там продолжений.
WH>Просто сериализовали имя и аргументы функции в url и все.

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

Обошлось без first-class продолжений, что неудивительно в прикладном DSL, зачем они там? Т.к. автор выбрал трудный путь — создать полноценный язык, с компилятором и стандартной библиотекой, написанными с нуля, — юзеру ничего не нужно знать о продолжениях, ими занимается компилятор.

А вот если general-purpose язык поддерживает first-class продолжения, то, теоретически, использовать его для веба проще, т.к. можно легко создать embedded DSL. Что важно, не нужно переписывать стандартную библиотеку, запросы пользователю можно отправлять из глубин библиотечных функций, подсунув им правильный callback.
Re[19]: ФЯ для WEB
От: Mr.Cat  
Дата: 25.09.09 18:22
Оценка:
Здравствуйте, WolfHound, Вы писали:
WH>Что является фундаментальной проблемой и не может быть устранено при наличии полноценных продолжений вне зависимости от модели детерминированной финализации.
Я не согласен, что это фундаментальная проблема континуаций. С аналогичной проблемой можно столкнуться (а можно и не столкнуться) хотя бы в C#:
using(var resource = AllocateResource())
    return Enumerate(resource);

...если в Enumerate используется yield.
Если бы компилятор мог такие ошибки предотвращать — было бы хорошо. Но то, что это фундаментальная проблема — не согласен.
Re[19]: ФЯ для WEB
От: WolfHound  
Дата: 25.09.09 18:40
Оценка:
Здравствуйте, palm mute, Вы писали:

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

Это не продолжение. Это замыкание. Стек вызовов не сохраняется. Пожалуйста не путай их.
Кстати сам автор говорит о том же

Pressing the button triggers a call to loop, with the first argument given explicitly as count+1. Notice that this means that we are using closures, stored on the client side, to track state.


PM>А вот если general-purpose язык поддерживает first-class продолжения, то, теоретически, использовать его для веба проще, т.к. можно легко создать embedded DSL. Что важно, не нужно переписывать стандартную библиотеку, запросы пользователю можно отправлять из глубин библиотечных функций, подсунув им правильный callback.

Да не нужны продолжения.
Замыканий более чем достаточно.
Ur/Web это прекрасно демонстрирует.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: ФЯ для WEB
От: WolfHound  
Дата: 25.09.09 19:18
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

WH>>Что является фундаментальной проблемой и не может быть устранено при наличии полноценных продолжений вне зависимости от модели детерминированной финализации.

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

MC>С аналогичной проблемой можно столкнуться (а можно и не столкнуться) хотя бы в C#:

MC>
MC>using(var resource = AllocateResource())
MC>    return Enumerate(resource);
MC>

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

MC>Если бы компилятор мог такие ошибки предотвращать — было бы хорошо.

То что C# не может не значит что другие языки не могут.

MC>Но то, что это фундаментальная проблема — не согласен.

С корутинами типа yield действительно проблем нет.

Вот смотри:
def ReadLines(file : File) : Stream[string]
  match (file.ReadLine())
  | Some(line) =>
    yield line;
    ReadLines(file);
  | None =>
    Stream.End;
  end
end

def DoSome(...) : Stream[string]
  ...
  def file = File.Open(...);
  ...//если тут будет исключение файл будет закрыт
  ReadLines(file);
end

Типы File и Stream[T] uniqueness.
Это значит что в один момент времени на объект может существовать одна и только одна ссылка.
Если ссылка на объект uniqueness типа вышла из зоны видимости то у объекта вызывается деструктор.

В данном случае функция ReadLines забирает владение открытым файлом, создает корутину в контексте которой будет жить открытый файл. И возвращает объект Stream[string].
При разрушении Stream[string] будет вызван деструктор объекта File.
Таким образом мы гарантировали что файл будт закрыт один и только один раз.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: ФЯ для WEB
От: palm mute  
Дата: 25.09.09 19:18
Оценка:
Из описания фаз компилятора в мануале:

12.8 Rpcify
Pieces of code are determined to be client-side, server-side, neither, or both, by figuring out which standard
library functions might be needed to execute them. Calls to server-side functions (e.g., query) within mixed
client-server code are identified and replaced with explicit remote calls. Some mixed functions may be
converted to continuation-passing style to facilitate this transformation
.

Re[20]: ФЯ для WEB
От: WolfHound  
Дата: 25.09.09 19:24
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>Подтягивается тяжелая артиллерия . Только что у нас были только макросы, теперь уже навороченные системы типов появились.

Пожалуйста не путай меня и Влада.

PM>Какие есть принципиальные трудности реализации такой же системы типов, которая поддерживает продолжения?

Если только продолжения то ни каких.
А если мы еще и детерминированную финализацию хотим то придется выбирать либо то либо другое.

PM>Предположим, у нас есть система типов, о которой ты говоришь.

PM>Компилятор делает CPS-преобразование, callcc в псевдокоде превращается в:
И отвергается проверяльщиком типов. Ибо нефиг плодить ссылки на uniqueness тип.

PM>Ни в коем случае. Я вообще не делаю оценочных утверждений типа "фича икс зло, а фича игрек — рулит". Мне просто не нравится, что о продолжениях создаются мифы.

Какие мифы? Только факты.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
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&amp;lang=all&amp;d=data&amp;calc=calculate&amp;gpp=on&amp;gcc=on&amp;java=on&amp;csharp=on&amp;ghc=on&amp;sbcl=on&amp;hipe=on&amp;mzscheme=on&amp;vw=on&amp;lua=on&amp;tracemonkey=on&amp;php=on&amp;python=on&amp;perl=on&amp;ruby=on&amp;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. А дьявол-то наверняка в деталях.
Re[26]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 12:11
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

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

Нет. Это о том что решение проблем неформальными механизмами это очень простой способ отстрелить себе голову.

MC>Тут ты пожалуй прав. Сами по себе континуации и сими по себе uniqueness плохо сочетаются.

Продолжения вообще с детерминированной финализацией не совместимы.
Просто в случае с uniqueness-типами ты получишь по голове во время компиляции, а в случае с try/finally во время исполнения.

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

Гм. А компилятор языка с продолжениями вообще может не знать о продолжениях?
Или даже так: Может ли компилятор языка не знать о какой бы то ни было фиче языка который он компилирует?

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

О! Пошли ограничения. delimited continuations действительно можно засунуть в ту часть программа которая не общается с внешним миром.
Еще можно использовать escape-only continuations которые по сути исключения вид в профиль.
Вопрос лишь в том, а оно нужно? Учти что придется под них наворачивать систему типов, а она если говорить о языке удобном для практического использования и так получается весьма кучерявой.

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

А это уже получается корутина... совсем другой зверь.

MC>Ну на концептуальном-то уровне все понятно. Просто я ни разу не писал на языках с uniqueness. А дьявол-то наверняка в деталях.

uniqueness-типы это лучший из известных мне способов контролировать ресурсы. Он очевидно более гибкий чем try/finally и деструкторы С++. И его нельзя использовать не правильно. Программа просто не скомпилируется.
Что касается практики использования то: Ты на С++ писал? std::auto_ptr знаешь? Вот это оно самое и есть. Только не формализовано и интерфейс дырявый. На практике std::auto_ptr обычно используется когда нужно выпустить объект из функции (внутри функции справляются обычные дуструкторы) и при этом не потерять гарантии его удаления.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[27]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 12:18
Оценка:
Здравствуйте, WolfHound, Вы писали:

MC>>Ну на концептуальном-то уровне все понятно. Просто я ни разу не писал на языках с uniqueness. А дьявол-то наверняка в деталях.

WH>uniqueness-типы это лучший из известных мне способов контролировать ресурсы. Он очевидно более гибкий чем try/finally и деструкторы С++. И его нельзя использовать не правильно. Программа просто не скомпилируется.
А как делать разделяемое владение в твоей схеме?

Всё равно кроме счётчиков ссылок ничего не придумывается, со всеми их недостатками.
Sapienti sat!
Re[28]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 12:29
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А как делать разделяемое владение в твоей схеме?

Ты мне лучше скажи какую задачу ты решаешь.
А потом я тебе скажу как ее решить.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[29]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 12:40
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>А как делать разделяемое владение в твоей схеме?

WH>Ты мне лучше скажи какую задачу ты решаешь.
WH>А потом я тебе скажу как ее решить.
Не, понятно что всегда разделяемый ресурс можно на уровень выше вынести и сделать его уникальным. Только это иногда ведёт к тому, что ресурсы выносятся на самый верх. У region inference (для управления памятью) проблема с этим есть как раз, и решается как раз полумерами в виде счётчиков.
Sapienti sat!
Re[30]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 13:02
Оценка:
Здравствуйте, Cyberax, Вы писали:

WH>>Ты мне лучше скажи какую задачу ты решаешь.

WH>>А потом я тебе скажу как ее решить.
C>Не, понятно что всегда разделяемый ресурс можно на уровень выше вынести и сделать его уникальным. Только это иногда ведёт к тому, что ресурсы выносятся на самый верх. У region inference (для управления памятью) проблема с этим есть как раз, и решается как раз полумерами в виде счётчиков.
Ты на вопрос пожалуйста ответь.
А то у меня есть сомнения что разделяемые ресурсы вообще нужны.
Я вот что-то не могу вспомнить ни одного случая из моей практики когда был нужен разделяемый ресурс.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[31]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 13:41
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Не, понятно что всегда разделяемый ресурс можно на уровень выше вынести и сделать его уникальным. Только это иногда ведёт к тому, что ресурсы выносятся на самый верх. У region inference (для управления памятью) проблема с этим есть как раз, и решается как раз полумерами в виде счётчиков.

WH>Ты на вопрос пожалуйста ответь.
К примеру, логгер пишущий в файл, который должен жить пока не закроется последняя ссылка на него.

Или случай, когда временем жизни управляет внешняя система (графическое окно, к примеру).

WH>А то у меня есть сомнения что разделяемые ресурсы вообще нужны.

WH>Я вот что-то не могу вспомнить ни одного случая из моей практики когда был нужен разделяемый ресурс.
У меня есть примеры, но пока не могу придумать простой случай, где всё было бы понятно.
Sapienti sat!
Re[32]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 14:17
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>К примеру, логгер пишущий в файл, который должен жить пока не закроется последняя ссылка на него.

Лично я давно пришел к выводу что временем жизни логера и ему подобных компонентов гораздо проще и надежнее управлять явно.

C>Или случай, когда временем жизни управляет внешняя система (графическое окно, к примеру).

Вот окно и будет жить в другом процессе (они у нас дешевые типа ерланговских) а с окном мы будет разговаривать через типизированный канал типа тех что в сингулярити.
В данном случае нашим ресурсов будет конец этого канала. Шарить его нет никакого смысла.

C>У меня есть примеры, но пока не могу придумать простой случай, где всё было бы понятно.

А может когда ты доведешь до состояния "все понятно" то будет понятно что никаких разделяемых ресурсов и не надо было?
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[33]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 14:20
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>К примеру, логгер пишущий в файл, который должен жить пока не закроется последняя ссылка на него.

WH>Лично я давно пришел к выводу что временем жизни логера и ему подобных компонентов гораздо проще и надежнее управлять явно.
Ну вот так оно и получается.

C>>Или случай, когда временем жизни управляет внешняя система (графическое окно, к примеру).

WH>Вот окно и будет жить в другом процессе (они у нас дешевые типа ерланговских) а с окном мы будет разговаривать через типизированный канал типа тех что в сингулярити.
WH>В данном случае нашим ресурсов будет конец этого канала. Шарить его нет никакого смысла.
А разница-то? Для твоего кода время жизни соединения с окном будет непредсказуемо. Особенно, если это не диалог, а основное окно приложения.

C>>У меня есть примеры, но пока не могу придумать простой случай, где всё было бы понятно.

WH>А может когда ты доведешь до состояния "все понятно" то будет понятно что никаких разделяемых ресурсов и не надо было?
Они всё равно есть и будут, пока у нас есть реальный мир — он разделяемый между всеми.
Sapienti sat!
Re[34]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 14:25
Оценка:
Здравствуйте, Cyberax, Вы писали:

WH>>Лично я давно пришел к выводу что временем жизни логера и ему подобных компонентов гораздо проще и надежнее управлять явно.

C>Ну вот так оно и получается.
А оно в любом случае именно так и получается.
Иначе свихнешься.

C>А разница-то? Для твоего кода время жизни соединения с окном будет непредсказуемо. Особенно, если это не диалог, а основное окно приложения.

Что значит не предсказуемо?

C>Они всё равно есть и будут, пока у нас есть реальный мир — он разделяемый между всеми.

Понеслась...

Твоя методика фигня по тому что есть случае которые туда не вписываются.
Какие?
Не скажу. Но они есть и твоя методика фигня.

Вот к этому у нас сводятся все разговоры.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[27]: ФЯ для WEB
От: Mr.Cat  
Дата: 27.09.09 14:29
Оценка:
Здравствуйте, WolfHound, Вы писали:
WH>Нет. Это о том что решение проблем неформальными механизмами это очень простой способ отстрелить себе голову.
Ну я про то и говорю. Неформальный механизм try/finally даже в сишарпе с лямбдам не является серебряной пулей.

WH>Продолжения вообще с детерминированной финализацией не совместимы.

Пока, как я понял, под этим ты понимаешь: "Продолжения несовместимы с зависимыми типами, которые гарантируют, что время владения ресурсом совпадает со временем использования".
Так вот я с этим не согласен.

WH>Просто в случае с uniqueness-типами ты получишь по голове во время компиляции, а в случае с try/finally во время исполнения.

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

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

WH>Гм. А компилятор языка с продолжениями вообще может не знать о продолжениях?
WH>Или даже так: Может ли компилятор языка не знать о какой бы то ни было фиче языка который он компилирует?
Зависит от того, как фича реализована. Континуации можно приделать, если произвести над кодом cps-преобразование до проверки типов и добавить в библиотеку функцию call/cc. Т.е. континуации типам будут ортогональны. А можно ввести примитивы shift и reset (для delimited continuations), а то и сам call/cc, о которых известно системе типов.

WH>О! Пошли ограничения.

А что ты хотел? Впихнуть садистскую систему типов в язык — и чтобы ничего не поменялось?

WH>delimited continuations действительно можно засунуть в ту часть программа которая не общается с внешним миром.

Ну по крайней мере не держит ссылок на ресурсы.

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

Ну это неспортивно. Сперва объявить, что некоторая система типов лучше других, а потом объявить, что некоторая фича Х не нужна, потому что в этой системе типов реализуется слишком сложно.

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

WH>А это уже получается корутина... совсем другой зверь.
Это может быть что угодно. Возможностью несколько раз вызывать континуацию не так уж часто приходится пользоваться.
Re[35]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 14:33
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Ну вот так оно и получается.

WH>А оно в любом случае именно так и получается.
WH>Иначе свихнешься.
А таки в С++ я могу использовать счётчик ссылок и всё ОК.

C>>А разница-то? Для твоего кода время жизни соединения с окном будет непредсказуемо. Особенно, если это не диалог, а основное окно приложения.

WH>Что значит не предсказуемо?
Время жизни объекта не совпадает с лексическим диапазоном.

WH>Твоя методика фигня по тому что есть случае которые туда не вписываются.

WH>Какие?
WH>Не скажу. Но они есть и твоя методика фигня.
Ну вот, такой пример:
void someFunc(resource res1, resource res2)
{
   window win=new window(res1, res2);
   win.show();

   window win2=new window(res1, res2);
   win2.show();
//Окна продолжают жить дальше
}

unique resource res1;
unique resource res2;
someFunc(res1, res2);

Что произойдёт в этом случае с ресурсами?

Можешь представить окна как процессы, с которыми ты обмениваешься сообщениями — это тоже ничего не изменит. Тем более, что mutlithreaded GUI ещё ни у кого не получился на практике, слишком уж это сложная задача: http://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html
Sapienti sat!
Re[35]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 14:44
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Вот к этому у нас сводятся все разговоры.

Дополню ещё. То что ты предлагаешь — это по-сути вариант region'ов без автоматического region inference.

Region inference изначально разрабатывался для автоматического управления памятью без классического GC (неудивительно, просто рассматриваем память как ресурс, который надо освободить). Очевидно, что добавив к выделяемым объектам деструктор — мы получим твою схему.

На практике, в OCaml'е с регионами и в Cyclon'е пришлось добавить refcounted-регионы, слабые ссылки и прочие аналоги С++-ности.

http://www.cs.umd.edu/projects/cyclone/papers/cyclone-regions.pdf
http://cyclone.thelanguage.org/wiki/Cyclone%20for%20C%20Programmers#Regions
Sapienti sat!
Re[36]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 18:03
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А таки в С++ я могу использовать счётчик ссылок и всё ОК.

С логером ОК не будет. Это не та штука с которой можно так поступать.

C>Время жизни объекта не совпадает с лексическим диапазоном.

Ну так это тебе не С++ деструкторы. Примеры кода когда объект уходил далеко от того места где его создали я уже приводил в этой теме.

WH>>Твоя методика фигня по тому что есть случае которые туда не вписываются.

WH>>Какие?
WH>>Не скажу. Но они есть и твоя методика фигня.
C>Ну вот, такой пример:
хъ
C>Что произойдёт в этом случае с ресурсами?
Программа не скомпилируется.
Но ты опять придумал оторванный от реальности пример в котором нет никакой логики и пытаешься что-то доказать.

C>Можешь представить окна как процессы, с которыми ты обмениваешься сообщениями — это тоже ничего не изменит. Тем более, что mutlithreaded GUI ещё ни у кого не получился на практике, слишком уж это сложная задача: http://weblogs.java.net/blog/kgh/archive/2004/10/multithreaded_t.html

А я и не собираюсь делать mutlithreaded. Я вообще считаю что mutlithreaded нужно искоренить ибо программисты него не понимают. Ага практически 100% не понимает.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[37]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 18:17
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>А таки в С++ я могу использовать счётчик ссылок и всё ОК.

WH>С логером ОК не будет. Это не та штука с которой можно так поступать.
Как раз будет ОК, так как логгер обычно "листовой" объект, и мала вероятность возникновения циклических ссылок.

C>>Ну вот, такой пример:

WH>хъ
C>>Что произойдёт в этом случае с ресурсами?
WH>Программа не скомпилируется.
Я понимаю. Но как такое сделать?

WH>Но ты опять придумал оторванный от реальности пример в котором нет никакой логики и пытаешься что-то доказать.

Пример абсолютно жизненный — у меня есть два окна, в котором показываются два вида одного ресурса. Как быть? Это просто как раз случай, когда нужно реальное разделение ресурсов.

Или более другой пример — HTTP-сессия с данными. И клиент, который с ней работает из двух табов в браузере.

Вероятно, ты просто слишком много серверного кода писал, а там обычно с временем жизни как раз всё просто — оно привязано к времени жизни вызова.
Sapienti sat!
Re[38]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 18:41
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Как раз будет ОК, так как логгер обычно "листовой" объект, и мала вероятность возникновения циклических ссылок.

Ссылки кончились, а через минуту он снова понадобился.
Что делать?
Геморрой все это. Логгер должен быть вечно живым.

C>Я понимаю. Но как такое сделать?

Сделать что? Передать один файл в два окна? Зачем на уровне ГУИ файл?

C>Пример абсолютно жизненный — у меня есть два окна, в котором показываются два вида одного ресурса. Как быть? Это просто как раз случай, когда нужно реальное разделение ресурсов.

Как ты собрался сокет в окне показывать?

C>Или более другой пример — HTTP-сессия с данными. И клиент, который с ней работает из двух табов в браузере.

Данные они и есть данные. Ими ГЦ рулит. Не понятно что ты тут вообще придумываешь.

C>Вероятно, ты просто слишком много серверного кода писал, а там обычно с временем жизни как раз всё просто — оно привязано к времени жизни вызова.

С временем жизни внешних ресурсов всегда все просто.
А если нет это значит косяк в дизайне.
Примеров обратного я не видел.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[39]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 18:45
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Как раз будет ОК, так как логгер обычно "листовой" объект, и мала вероятность возникновения циклических ссылок.

WH> Ссылки кончились, а через минуту он снова понадобился.
Если он понадобиться, то на него будет ссылка.

WH>Что делать?

Ну заново создай, если уж совсем криво сделал.

WH>Геморрой все это. Логгер должен быть вечно живым.

Не-не. Вечноживые объекты — это статики в миниатюре. А они суть зло.

C>>Я понимаю. Но как такое сделать?

WH>Сделать что? Передать один файл в два окна? Зачем на уровне ГУИ файл?
Ну не файл, а модель, привязанная к соединению в БД, в котором открыта транзакция.

C>>Пример абсолютно жизненный — у меня есть два окна, в котором показываются два вида одного ресурса. Как быть? Это просто как раз случай, когда нужно реальное разделение ресурсов.

WH>Как ты собрался сокет в окне показывать?
См. выше.

C>>Или более другой пример — HTTP-сессия с данными. И клиент, который с ней работает из двух табов в браузере.

WH>Данные они и есть данные. Ими ГЦ рулит. Не понятно что ты тут вообще придумываешь.
Ну представь, что там у тебя не просто данные.

C>>Вероятно, ты просто слишком много серверного кода писал, а там обычно с временем жизни как раз всё просто — оно привязано к времени жизни вызова.

WH>С временем жизни внешних ресурсов всегда все просто.
WH>А если нет это значит косяк в дизайне.
WH>Примеров обратного я не видел.
Это не значит, что их нет.
Sapienti sat!
Re[40]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 18:56
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Ну не файл, а модель, привязанная к соединению в БД, в котором открыта транзакция.

Ахринеть! Ты это серьезно? Держать открытой транзакцию пока юзер чай пьет? Тебя где программы писать учили?

C>Ну представь, что там у тебя не просто данные.

Не могу.
Зачем сесии что-то кроме данных?

C>Это не значит, что их нет.

В науке принято доказывать существование.
Причем это должен сделать тот кто утверждает что что-то существует.
Вот и доказывай.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[41]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 19:11
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Ну не файл, а модель, привязанная к соединению в БД, в котором открыта транзакция.

WH>Ахринеть! Ты это серьезно? Держать открытой транзакцию пока юзер чай пьет? Тебя где программы писать учили?
А почему бы и нет?

Hint: оптимистические транзакции ещё никто не отменял.

C>>Ну представь, что там у тебя не просто данные.

WH>Не могу.
WH>Зачем сесии что-то кроме данных?
А просто так.

C>>Это не значит, что их нет.

WH>В науке принято доказывать существование.
WH>Причем это должен сделать тот кто утверждает что что-то существует.
WH>Вот и доказывай.
Я тебе привёл пример.
Sapienti sat!
Re[42]: ФЯ для WEB
От: WolfHound  
Дата: 27.09.09 20:06
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>А почему бы и нет?

C>Hint: оптимистические транзакции ещё никто не отменял.
Мы наверное очень разный софт разрабатываем.
Лично я считаю длинные транзакции очень серьезной кривью.

C>А просто так.

Понятно. Значит не надо.

WH>>Вот и доказывай.

C>Я тебе привёл пример.
Где? Там все либо совсем левое либо откровенные косяки.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[43]: ФЯ для WEB
От: Cyberax Марс  
Дата: 27.09.09 20:48
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>А почему бы и нет?

C>>Hint: оптимистические транзакции ещё никто не отменял.
WH>Мы наверное очень разный софт разрабатываем.
Как ты догадался?

WH>Лично я считаю длинные транзакции очень серьезной кривью.

Они кривы в общем случае. В частных случаях зато иногда полезны.

Я по этому поводу всё хочу написать в "Архитектуру"...

WH>>>Вот и доказывай.

C>>Я тебе привёл пример.
WH>Где? Там все либо совсем левое либо откровенные косяки.
Ну так то что не укладывается в твою модель — у тебя по определению косяк. Это, конечно, классный подход.
Sapienti sat!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.