LINUX.ORG.RU

Подскажите ЯП со встроенной загрузкой HTTP, потоками, распределённостью.


0

2

Представьте псевдокод:

http_load("http://google.com/", func);
http_load("http://mail.ru/", func);
http_load("http://linux.org.ru/", func);
http_load("http://membrana.ru/", func);
http_load("http://gazeta.ru/", func);
...
func(x)
{
   html_process(x);
   ...
}

Семантика - загружается страница, отдаётся функции func, где с ней что-нибудь делается.

Вопрос - существует ли язык, в котором нужно:

1. Автоматическая параллелизация на потоки, которые возможно запускаются на различных машинах. Что-то типа erlang. Есть некая абстрактная среда исполнения программы, которая может быть растянута на 1000 физических машин. И когда я пишу 100 строк, загружающих страницы, у меня рождается 100 потоков (или N, если в настройках есть ограничение), выполняющихся на, возможно, физически разных машинах, загружающих эти ссылки.

2. Минимум действий для загрузки страницы. Наличие таких понятий как «открыть/закрыть поток (сокет)» - уже минус. Я хочу просто загрузить страницу, мне пофигу на то, что там надо открывать и закрывать - пусть среда/интерпретатор/VM само решает.

Ответ на: комментарий от baverman

Вопроса роскошности, квартир в центре Парижа, балов, карет, коней, свечей, форели, швейцаров, алмазов, куч денег ТС тоже не затрагивал.

kiverattes ★☆
() автор топика
Ответ на: комментарий от Eddy_Em

А ты считаешь, сколько интерпретатор питона отжирает?

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

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

Ну по вашей логике, текстовые редакторы, которые жрут гигабайт ОЗУ появляются из-за всяких уродов, но при этом другого ПО просто нет. Выходит, НЕ уродов почему-то не пускают к разработке ПО. Интересная тема для диссера по социологии - почему крупнейшая отрасль народного хозяйства населена сплошными уродами.

kiverattes ★☆
() автор топика
Ответ на: комментарий от baverman

Я проснулся, просто какое мне дело до того, кто там что считает роскошью или НЕ роскошью, когда вопрос роскошности в этом топике не обсуждается?

kiverattes ★☆
() автор топика
Ответ на: комментарий от baverman

Это был мой очередной ничем не оправданный высер (т.к. я просто не люблю всякие питоны).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от kiverattes

Выходит, НЕ уродов почему-то не пускают к разработке ПО

Пускают, но оно не пользуется спросом. Закон 95% же.

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

Как по мне, тема для толксов, а не для dev.

ТС может взять *любой* понравившийся язык. И спрашивать уже по существу — как организовать конкурентное скачивание и обработку web-страниц.

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

Конечно нет. Вопрос ТС предполагает асинхронность (действие/коллбэк). А пример с унылым последовательным выполнением.

baverman ★★★
()

F#. В книге Expert F# описан такой пример. Делается через асинхронные вычисления.

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

В примере нет унылого последовательного выполнения, есть последовательная запись, а это не означает последовательного выпол, мать его, нения.

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

Ты почему такой мнительный? Школоло что ли? Или дислектик? Продай свисток, купи очки. Претензии были к рубишному примеру, а не твоему.

baverman ★★★
()

Еще Scala подойдет. Через продолжения, которые появились в версии 2.8.0. Но если в F# вычисления async содержатся в основной библиотеке, и они уже готовы к использованию, то в случае Scala придется ставить стороннюю либу (какую, уже не помню).

Еще один вариант. Хаскель с его монадой Cont. Тоже должно сработать.

Минус один. Учить надо новое. Не все на это способны.

dave ★★★★★
()

Продолжим список. Подойдет, конечно же, еще Common Lisp. Скорее всего, можно задействовать пакет cl-cont. По сути, все, что я перечислил, вертится вокруг продолжений.

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

Да, в хаскеле можно и без Cont. Там потоки зеленые :)

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

По сути Scala предлагает еще один вариант. Можно использовать актеры. Там будет балансировка по ядрам.

В общем, ФП - рулез :)

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

А какой ФП может быть встроен в приложение на C++? Ну то есть чтобы в коде на C++ я вызвал интерпретатор этого ФП, передав этому интерпретатору текст программы на этом ФП и получив назад в C++ какую-нибудь переменную или структуру.

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

Так точно умеют Haskell и Common Lisp. Только интерпретаторов здесь нет. Исключительно натив.

Попробуй для начала Haskell. Там очень просто форкаются потоки. Минус один - будь готов отдать пару мегабайт.

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

Попробуй для начала Haskell.

Мне кажется, ТС неадекватен. Почитай его следующую тему. Он тупо не знает чего хочет.

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

Ты меня странно читаешь. Зачем-то спрашиваешь о сущностях из HTML (colspan, rowspan), про XPath, когда речь не о парсинге HTML или XML...

kiverattes ★☆
() автор топика

загружается страница...

Дальше не читал.

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

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