LINUX.ORG.RU
ФорумTalks

[У меня гениальнейшая идея!] Кто сказал, что компилируемые языки не подходят для Web?


0

1

Не, ну серьёзно - почему? Забудем сразу CGI как историческое недоразумение. Возьмём к примеру C++.

  • Представление при помощи шаблонизатора (CTPP)
  • Логика в компилируемом приложении
  • SCGI
  • ???
  • PROFIT!

А теперь небольшие пояснения:

Шаблонизатор убивает двух зайцев при использовании компилируемого языка - больше не надо заморачиваться над сложностью генерации самой страницы внутри приложения (кто пробовал на C++ генерировать хотя бы HTML-отчёты - меня поймут), и не надо перекомпилировать, если надо чуть поправить интерфейс. Мухи отдельно, котлеты отдельно.

Да и реализовать SCGI куда проще, чем FCGI.

А если так - то чем так удобные PHP/Python/Perl для чисто логической части приложения (_без_ представления!)? Добавить до C++ ещё фреймворк Qt - и мы имеет кучу штатных плюшек, особенно для БД.

Напомню, что CTPP имеет ещё и биндинги до PHP/Python/Perl, а значит, что логическую часть можно разделить и использовать С++ только в критических участках.

Где я ошибаюсь? Где изъян в моей конгениальной идеи, которая может положить конец тормозам интерпретаторов?

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

Вы сам видели в top/htop 10 ГБ занятой апачем памяти?

Он звонарь, с потерей ориентации.

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

Где я говорил про апач? И зачем 2000 fork'ов?
Cassandra, например, написана на яве, есть тесты производительности в сравнении с другими базами данных. Она не проигрывает. (Вообще, там опционально используется оптимизация работы с памятью на системах, где она доступна).

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

>Зачем думаешь всякие nginx придумали

Чтобы статику эффективнее отдавать.

Сам недавно тестил apache+php-fpm и nginx+php-fpm - разницы в скорости, потреблении памяти и cpu пратически не заметил (все ресурсы отжирал пых-пых). А вот со статикой nginx намного эффективнее себя показал.

И да, кто использует апач с prefork модулем - ССЗБ :)

Rost ★★★★★
()

Паршивая идея. Кресты непригодны для обработки текста.

DNA_Seq ★★☆☆☆
()

>Где изъян в моей конгениальной идеи, которая может положить конец тормозам интерпретаторов?

Тормоза из-за динамической типизации а не из-за интерпретирования. Скрипты на языке со статической типизацией тот еще анекдот.

DNA_Seq ★★☆☆☆
()

Кэп, ты?

Жава, на которой написана половина интернета - компилируемый язык. Все уже придумано. Кури маны.

Где изъян в моей конгениальной идеи

в том, что это идея не нова чуть более, чем полностью

stevejobs ★★★★☆
()

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

Видел суровую вебморду к тулзе для проверки на уязвимости (названия не вспомню), так она была написана на сях с использованием XSLT (да-да, настоящие мужики используют XSLT и правильно делают, велосипеды не нужны :) ).

Binary ★★★★★
()

Что такое SCGI - не знаю. У меня было требование, чтобы работало с минимумом настроек сервера. Делал CGI + C++, и делил на 2 части - одна серверная - делает фоновые задачи, другая клиентская - CGI, обращается к серверной по самописному RPC, и генерирует HTML.

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

Работало это весьма неплохо, но архитектура получилась немного кривоватая, но тут не веб и не плюсы виноваты, а только то, что я - ССЗБ.

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

http://www.kernel.org/doc/man-pages/online/pages/man2/fork.2.html

Вобщем, в нотесах указано, что начиная с glibc 2.3.3 fork() вызывает clone(), которая используется в обычных posix threads. Собственно, как раз об этом я подумал, думая над ответом на вопрос :) Таким образом, сейчас нет особой разницы между форком и потоком в линуксе. И то и другое работают с памятью примерно одинаково. Следовательно, все может упираться в процессорное время, но это также обходится включением кэша. ИМХО, поэтому, нвнешний апач с модулями кэширования не должен проигрывать в скорости nginx. P.S. По вопросу - не видел.

gh0stwizard ★★★★★
()

Я, конечно, понимаю твоё желание писать для веба на нормальном языке. Но написание кода - это ещё не всё. Как ты будешь новую версию выкатывать? У жабы есть для этого средства, для похапе подойдёт тупо /bin/mv. А для плюсов? Не останавливать же серв, пусть даже и на секунду, юзвери недовольны будут.

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

Если реализовывать отдельно SCGI сервер, а остальное - как динамически подгружаемые библиотеки, то можно будет постепенно убивать бездействующих старых чайлдов, и порождать новых, на основе обновленной версии.

Chaser_Andrey ★★★★★
() автор топика

А когда я сказал в школе в 14 лет, что хочу писать сайт на С++, на меня посмотрели, как на идиота.

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

Да это понятно. Но работающее отлаженное решение есть? Нету, надо изобретать. Изобретёшь - поделись :)

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

Хех, я вот в колледже говорил: «А давайте вместо пераццкого Windows 2003 Server на роутер колледжа поставим Debian GNU/Linux!» - ты не поверишь, на меня посмотрели так же.

Вывод: учителя и преподаватели - не последняя инстанция, и далеко не всегда правая.

//я учуял в твоём сообщении стёб, и тем не менее оно неубедительно.

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

Главное, в такой ситуации не сильно настаивать. А то потом сам же себя проклянешь, когда будут дергать «ой, а где енто здесь ворд?».

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

А для плюсов? Не останавливать же серв, пусть даже и на секунду, юзвери недовольны будут.

А ведь ещё в прошлом тысячелетии КЛ умел изменять свой образ на лету.

З.Ы. Теперь это тред про лисп.

ugoday ★★★★★
()

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

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

не отправилось в первый раз

лисп может быть очень быстр - tepedee - сервер на CL, DRAGONFLY - веб фреймворк на newlisp

P.S. хочу веб-фреймворк на ассемблере

XVilka ★★★★★
()

> Кто сказал, что компилируемые языки не подходят для Web?

Открой для себя С# и ASP.NET (про Java тут уже сказали, так что.. Кстате ЛОР сделан на яве).

gandjubas
()

Вообще-то кое-кто уже реализовывал движок ЛОРа на C++.

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

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

Кроме того есть ещё и жаба - она по сути компилируема в байт-код VM.

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

>> Кто сказал, что компилируемые языки не подходят для Web?

Открой для себя С# и ASP.NET

Ну, если строго формально подходить, то и Python, и PHP, и Ruby 1.9 (до него — не знаю) — компилируемые языки (с интерпретируемой виртуальной машиной).

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

> Ну, если строго формально подходить, то и Python, и PHP, и Ruby 1.9

Если ещё более строго подходить, то у С# и С++ больше общего, чем у питона и ПХП с С++ же (за руби не скажу): статическая типизация.

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

> Компилируемые языки менее удобны из-за отладки.

Лолшто? Для справки: компиляция позволяет выявить целый класс ошибок несоответсвия типов/неправильного использования объектов на этапе компиляции, в то время как для интерпретируемых языков для этого нужно писать кучу тестов или ловить баги в рантайме.

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

> Только это уже к вопросу компиляции не относится.

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

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

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

Подотрись своим справочником. В реальности всё несколько иначе.

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

Я скорее подотрусь твоим очень информативным постом.

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

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

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

>Ну отчасти таки относится

Статическая типизация бывает и у интерпретируемых языков. Динамическая — у компилируемых.

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