LINUX.ORG.RU

[!holywar][!lisphaters] Веб-фреймворки


0

0

Специально(или нет?) сделал малоинформативный тайтл. Просто не пришло в голову что написать.
А тема нашего разговора сегодня - веб-фреймворки, а точнее что мы сейчас имеем и что мы можем сделать, изменить. Начнём из далека.
Сейчас у нас есть огромное количество различных веб-фреймворках на разных, но, в основном, популярных языках:

  • Python
  • Ruby
  • PHP
  • Lisp
  • Java

etc Что мы имеем?

  • На пайтоне всё медленное, требует не хилых машин, а как следствие - не хилых оптимизаций.
    По статистике(я провёл небольшой опрос среди знакомых и не очень) получается что ~10% времени уходит на разработку(основной кодинг логики, версия 0.1, если угодно). Не важно что это - GAE, Pylons, Django. Не важно что за проект - форум, соцсеть, личный сайт, блог. Одна фигня.
    На что тратится остальное время? Темплейты - да, но часто оно меняется по сложности. Кому сложный сайт с AJAX и JQuery, а кому простой сайтец времён web1.0(как я такое мог сказать... ну, в общем, я думаю вы поняли про что я). Возьмём условно - 20%.
    На что уходят ещё 70%? Чем занимаются веб-кодеры на пайтоне в 7! раз дольше чем основной логикой? Оптимизацией! KVS, быдлокод etc etc. Что можно сказать? Всё круто, да только оптимизировать такой код лично для меня дорого. Да и глядя на то что мой код(да простейший) рендерит страницу за 0,9сек(без KVS), когда другой портал(на том-же VDS) рендерит похожее, да только с большей информацией и несколькими ещё запросами в БД, за 0,5сек(без KVS). Обидно, не правда ли? Оптимизация сильно исправляет положение но... Зачем тратить время на оптимизацию своего кода, когда зло глубже? И да, как сказал уже не помню кто: «Использование KVS это не оптимизация, а кешинг». Что намекает на то что код на пайтоне практически не оптимизируем(можно поспорить, но зачем если правда рядом?)
  • Руби. Как много в имени его. Как оно рекламируется, как оно всем нравится, как оно гламурно. И что? Руби считается одним из самых малопроизводительных языков(тоже спорно, но давайте просто скажем что в этом плане он не лучше пайтона, так будет честнее).
    Признаюсь, сам не юзал. Хотя, конечно, приходилось немного кодить для redmine. У кого не спрошу «а почему ты юзаешь?» дык почти все отвечают: «по работе нужно».
    В общем, на одну полку с пайтоном. Чисто так, «округляя».
  • PHP. Это язык, в первую очередь, который создан для веба. Производительность? Не скажу что так плохо как у руби или пайтона. Скорость разработки? Фреймворков не мало. Не плохо, жить можно(но не мне).
    Но! Этот язык является сильно ограниченным. Да, есть гтк-биндинг и другие плюшки, но всё это больше похоже на клоунаду.
    Признаться, сам язык не так плох как о нём думают. Однако! Это полностью интерпретируемый язык. Да! Есть сотни компиляторов и оптимизаторов. Но зачем, простите, ипаться с тем что не заложено «внутри»?
    Я говорю что PHP плох. Почему? Есть более простые, серьёзные, удобные, хорошие языки.
  • Тут спорить не буду и не хочу. Как выразился тв. «архимаг»: «у лиспа одно спасение - веб». Лично я не вижу применения для него в вебе.
    Быстрый интерпретатор? Может быть. Возможность делать всё что хочешь? Да.
    Но я такое юзать не буду. Не принципиально, просто не буду(уже сто раз говорил чем лисп плох, все согласны, кроме самих лисперов).
  • Джава она и в африке джава. Как и эрланг(вы не против что в одном пункте?) это фантастическая платформа для гигантских приложений, где производительность не проблема. Главное чтобы не падало, а точнее падало, но только было максимум механизмов для удержания таких систем на плаву.
    Я к такому отношусь негативно. Почему? Да я готов поспорить что на таких системах теряется уйма производительности(везде, не нужно говорить что я не знаю каких-то механизмов, просто я не хочу раздувать эту тему).

Что можно добавить в этот список? Всякие асп.нет, веб-фреймворки на xml(был тут на лоре один человек) etc etc. Оно не интересно с точки зрения использования в реальном мире.

Картина, мягко говоря, не самая лучшая. Да, есть деньги - будет хоть на брейнфаке с JVM. Но кризис, студентота. Что делать? Думать о оптимизации раньше!

Да! C, C++ и.... D.

  • C. Кто не писал на этом языке или считает его ущербным? Да школота и только.
    Нет, у меня не фанатизм, я не считаю что «C - бох» и на него нужно молиться, как некоторые. Но при том что язык низкоуровневый, он ещё и обладает неплохим синтаксисом.
    Всё круто, да вот только нет OOP, что заставило бы в веб-фреймворке делать массу костылей. Не столько костылей сколько вообще не красивый код. Да и управление памятью... Не хочется этим заниматься в веб-фреймворке при написании приложения.
    Да и сам язык хоть и хорош, но только для низкоуровневого.
  • С++. Просто для того чтобы не обделять. Язык съедобен, но только с Qt(раньше кодил на C++ без кути, но сейчас просто принципиально не хочу). Ну и всё, просто глупо что-то ещё здесь говорить.
  • D. Вам хиханьки и хаханьки, а другим - профит.
    Сам язык является таким C++, но каким он должен быть. Удобным, красивым, быстрым, с функциональщиной и ООП. Да всё в нём есть.
    Оптимизация? Его создатели - короли оптимизации. Сам по себе компилятор оптимизирует ещё в компайл-тайме всё что можно и нельзя. На выходе получаем убершустрый код.

Я видел веб-фреймворки(не путать с веб-тулкитами) на плюсах. Мне было страшно. Весь код был в костылях и тысячах темплейтов. Мне было жалко кодеров.
Лично я вижу очень хорошую нишу для D - веб.
Увы, пока язык только развивается, по сему пока приходится писать костыли и придумывать иные пути реализации. Однако, и того что есть достаточно для многих и многих вещей.
Недели 3 назад я начал исследовать данный вопрос и пришёл к выводу - реализуемо, реально, может быть простым и функциональным.

Последний год я использую Python, а в частности Pylons, для вебкодинга(сам я прикладник-сетевик, но деньги нужны, да и потом понравилась логика веб-фреймворков, т.е. сам я html не пишу, ofc). Больше всех мне понравился Pylons. Так-же очень понравились некоторые идеи GAE.
В общем, подумав хорошенько, я решил начать написание веб-фреймворка. Без фанатизма, начиная с самых опасных частей, которые могут убить проект и-за не реализуемости.
И вот оно - Dylons(ха-ха, да-да):
https://launchpad.net/dylons

Работает шустро, проблем нет. Как бэк-енд юзается моя же обёртка - libdfcgi на базе libfcgi.
Олсо, есть абстрактный слой для бекэнда. Хочешь - прикрути свой наследуя нужный класс.
Сейчас над данным экспериментом трудятся два человека - я и мой знакомый. Я пишу основную систему, а он - небольшой темплейт-енжин.
Сейчас самая большая проблема - ORM. QtDSQL просто не существует, т.е. обёртки нет, да и его производительность не на столько велика.
Одна из целей треда - сообщить о таком эксперименте и о том, что нам нужны люди. Не только желающие заняться ORM, но и просто кодеры, что хотят высказать своё мнение о том что хорошо бы сделать и что они хотели бы от Dylons.
Для затравки, вот экземпл.

Далее, пойдём дальше.
В ди нет пока возможностей распаралелливания(да даже на x86_64 нет компилятора, сам юзаю x86-либы). Нет OpenMP(хотя написать то можно, но сложно). Использование в продакшне - ферма. Хотя оно не плохо.

По сему я стал отталкиваться от распаралелизации и вообще шустрой VM. Здесь я слаб. Вижу Parrot. И что? Как там? Говорят не плохо. Но на сколько шустро?

Какие вообще есть мысли у Вас по этому поводу?


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

>Оно (контейнер) нормально, по крайней мере легче, чем Java EE.
Сколько сообщений я пытаюсь из вас всех вытянуть сравнение с иной системой, а не джавой. Я не знаю(а знаю я только стереотипы и, надеюсь, неудачные решения) как джава по производительности. Может кто-нить просветить? ._.

Бррр и вообще весь сыр-бор не верен в начале

Стоп стоп стоп. Всё верно. Про масштабируемость не говорится вообще.

Особенно рассмешило про медленный питон, посмотри на tornado, twisted и прочие.

Стоп! Куда вы так спешите? Твистед и торнадо == пайтон? Вот это смешно. Да и при том что они написаны на пайтоне, почти полностью написаны на си с использованием cpython-api. Это я к тому что они не могут быть медленными внутри. Однако! Мы не про твистед, торнадо или с говорим здесь. Мы про пайтон! А пайтоне медленный. Очень. Одна из проблем - отсутствие оптимизации функциональщины. Списки и операции с ними просто не оптимизируются, а бурется «как есть». А таких операций тысячи в одном рендере. Что мы получаем? Медленный питон.

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

>Чисто так, как специалиста, что можешь сказать относительно пайтонофреймворков?
я в другой области сейчас специализируюсь, поэтому особо ничего не скажу. У питона, насколько я знаю, всё плохо с обратной совместимостью и с ORM'ом


Извини если слишком много вопросов задаю, а не иду в гугл, но хочется о таких вещах с людьми поговорить :)

а не проще потратить пару часов и пробенчмаркать всё что нужно?

Темплейты оно понятно, а лайоуты это что? Нужно ли оно?

паттерн декоратор, http://www.opensymphony.com/sitemesh/


Ну как-же. Вот наделает человек 3 базовых темплейта, которые наследуются друг от друга, и в конце вызывает свой убертемплейт, в котором ещё импортируется другой. Как оно? Фигово. Лучше всё это прекомпилить в один темплейт, в котором не будет вызывов функций, а только слияние строк, как в Dylons.


мдя, матчасть вам ещё учить и учить...

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

Мы про пайтон!

Пайтон без байндингов абсолютно не интересен как язык и похож на duck-typed жаву.

А таких операций тысячи в одном рендере.

Код в студию!

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

>У питона, насколько я знаю, всё плохо с обратной совместимостью и с ORM'ом
Э. Что? ORM на пайтоне и у пайтона плохая обратная совместимость с ORM? Не понял что ты хочешь сказать.

а не проще потратить пару часов и пробенчмаркать всё что нужно?

Зачем если оно может быть медленно как пайтон?

паттерн декоратор, http://www.opensymphony.com/sitemesh/

Ну ок, почитаю.

мдя, матчасть вам ещё учить и учить...

Что? Не понял что ты хотел сказать. Я тебе только рассказал один из методов подготовки темплейтов для рендеринга. А как оно внутри? Или ты именно намекаешь на то что я не знаю как оно внутри? Лол. Ну вот это я тебя и спрашиваю ибо я джаву то не знаю.

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

>Пайтон без байндингов абсолютно не интересен как язык и похож на duck-typed жаву.
Дык не об этом сейчас. Ты не в теме, видимо. Мы говорим про производительность языка, на котором построены абстрактные слои: ORM, TE, WF etc etc.

Код в студию!

Ох. Посмотри SQLAlchemy. Много чего откроешь для себя.

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

>Э. Что? ORM на пайтоне и у пайтона плохая обратная совместимость с ORM? Не понял что ты хочешь сказать.

я имел в виду 2 утверждения:
у питона плохая совместимость 2.x<->3.x
у питона нету хороших ORM

Зачем если оно может быть медленно как пайтон?

чтобы хотя бы знать что это такое и как оно работает, не? тем более что пайтон - это не фреймворк и сравнение в таком виде некорретно по определению

Или ты именно намекаешь на то что я не знаю как оно внутри?

именно. опять же, если открыть хотя http://ru.wikipedia.org/wiki/JSP, то количество вопросов сильно уменьшится

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

>у питона плохая совместимость 2.x<->3.x
Да. Но оно тут не к месту. Т.е. не вижу к чему сравнение.

у питона нету хороших ORM

Да, ибо все они высокоуровневые(читай «построены на пайтоне, а не на Си с использованием API CPython»). Именно из-за этого так сильно проявляются проблемы пайтона даже на простейших веб-приложениях.

чтобы хотя бы знать что это такое и как оно работает, не?

Чисто для ознакомления - да. Но сейчас не могу себе позволить тратить время на исследование того, что мне не пригодится. Да и вакансий у нас, в ДС2, на Grails нет.

сравнение в таком виде некорретно по определению

Я сравнивая Grails с веб-фреймворками на пайтоне, или с пайтоном, я подразумеваю ещё и сравнивение груви(и джавы?) с пайтоном. Т.е. грейлс написаны на джаве. Это хорошо. Джава быстрая? Хорошо. Что грейлс даёт юзать? Груви? Хорошо. А как он относительно Пайтона? Плохо? Значит нафиг.
Вот такой ход мыслей возможен.

именно. опять же....

А хотелось всё кратко, чтобы заинтересовало. Ладно, буду читать.

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

Хех, смешно. Хотя кто-то на лоре тут говорил что на асме веб-приложения писать круто. Я же считаю это троллингом.

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

Ты не в теме, видимо

Я в теме

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

Слои можно выносить в отдельные сервисы и делать быстрыми. В общем этого тебе и так хватит с запасом. Можно и на D эти сервисы делать. По теме выходит, что лепить веб-фреймворк не D не стоит, хватит уже велосипедов, а вот написать что-то вроде быстрого шаблонизатора можно. Хотя он и на питоне (руби, что-то другое) с сишным модулем будет шустро бегать. Программист, помни: лишь 20 процентов кода выполняется 80 процентов времени. Кароче проблемы какие-то высосаные из пальца.

dizza ★★★★★
()

>Что можно добавить в этот список? Всякие асп.нет, веб-фреймворки на xml(был тут на лоре один человек) etc etc. Оно не интересно с точки зрения использования в реальном мире.

Как asp.net попал в разряд веб-фреймворки на xml? И почему оно не интересно с точки зрения использования в реальном мире?

Этот фреймворк быстрый, так как при первом обращении (хотя можно деплоить сайт и в виде dll) шаблоны компилируются в il код, который потом jit'ится.

Есть поддержка asp.net со стороны mono в виде модуля к apache, кроме того есть fastcgi. По поводу производительности могу сказать, что мой проектик без проблем (10% загрузки CPU) выдержал хабраэффект.

Поэтому asp вполне юзабельная вещь.

Аргументация про Lisp конечно крутая - «я такое юзать не буду». С таким успехом можно было просто написать посмотрите, что я начал писать на D.

Хотя в этой затеи есть здравое звено, если D на этапе компиляции (знаю, что там есть макросы, но не знаю насколько мощные) позволяет интерсептить типы и на их основе создавать новые, то используя метапрограммирование можно замутить крутой ORM, Routing...

P.S. Мечтаю что бы этот фреймворк появился на Nemerle=)

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

> А уж после того, как написал, что PHP быстрее...

может быть пруфы будут? Питон очень любит тормозить на списках, я прям диву даюсь, как оно там тормоза находит

Уйди читать про Django, школьник, а разработчики D и без тебя определят, что им нужно.

только вот их высер мне нафиг не нужен, ЧЯДНТ?

Компилируемые языки для веба вообще бред, если честно

lold

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

> Зная Java на базовом уровне в этой связке можно разобраться за 2 недели и клепать нерушимые сайты по одному в день. В нем все сделано с умом и близко к идеалу (в моем понимании)

Можно примеры работ на данном «немонстре»? Желательно с сорсами, но пойдут и просто ссылки

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

> Слои можно выносить в отдельные сервисы и делать быстрыми. В общем этого тебе и так хватит с запасом. Можно и на C эти сервисы делать.

fixed, +100500

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