Почему многие выбирают PHP

    Тут было задано много вопросов в одном топике, ответы на которые частично дали в другом.

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

    И кажущаяся несправедливость, почему PHP рулит на рынке веб-приложений, как Microsoft в десктопном софте, обернется очевидностью.

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

    Посмотрим, какие ответы дает PHP на типовые вопросы разработки веб-приложений, какой выбор вариантов ответов существует.

    Вопрос (В): Сколько программистов могут сделать мне сайт?
    Ответ (О): По запросу «резюме php» в Яндексе находится 28 млн. ответов, «резюме python» / «резюме ruby» — один миллион. Nuff said. Навскидку, в 30 раз больше PHP-разработчиков. Значит, и конкуренция среди них выше, и оплата труда разумнее, и найти легче.

    Вопрос (В): Я хочу поднять сайт-визитку. Есть ли готовые движки?
    Ответ (О): Да, сотни. Навскидку: Joomla, Drupal, ModX, Битрикс.

    Вопрос (В): А если интернет-магазин?
    Ответ (О): Нет проблем! Magento, PHPShop, osCommerce и т.д

    Вопрос (В): Еще потребуется форум и блог.
    Ответ (О): Wordpress для блогов, vBulletin/IPB для форумов.

    Вопрос (В): А если небольшую социальную сеть с блогами, типа Хабра?
    Ответ (О): Livestreet — лучший движок ИМХО. Вообще, очень крутой.

    Вопрос (В): Так. Хочу Фейсбук, поеду зарабатывать свои первые миллиарды.
    Ответ (О): Нет проблем. PHPfox — out of the box лицокнига движок.

    Вопрос (В): Фух, вроде все проекты продумал, движки нашел. А как с хостингами?
    Ответ (О): На любом хостинге стоит PHP+MySQL. Over 9000 их.

    Вопрос (В): Хорошо. А если нужно доработать сайты?
    Ответ (О): Нет проблем. Любые студии, фриланс-сайты. См. пункт про резюме программистов на PHP.

    Вопрос (В): А как же с нагрузкой? Мой Фейсбук будут посещать много-много людей!
    Ответ (О): Прекрасно. Вконтакте, Фейсбук, Викимедиа — отлично работают под нагрузками.

    Вопрос (В): А мне что-то друг рассказывал, что вроде PHP это говно, а рулит Питон.
    Ответ (О): Питон рулит, несомненно. В 28 раз меньше программистов, в 30 раз меньше готовых фреймворков, готовых движков единицы. Посчитать тебе, сколько будет стоить разработать твои проекты с нуля? — Давай. — $3,000,000 — Спасибо, окей, попробуем Питон в другой раз. Заряжай своей команде, будем делать.

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

    Поэтому на данном моменте бизнес выбирает PHP. Как домохозяйки выбирают Windows. Большинство — оно не всегда право, конечно. Может я бы тоже хотел Н. в президенты, однако народ голосует за ВВП.
    Поделиться публикацией
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 537
    • +32
      в 30 раз меньше готовых фреймворков

      Количество — не значит качество. Не хочу обидеть PHP-фреймворки, сам с ними работаю. Но наличие некого мейнстрима не повредило бы
      Посмотреть на те же плагины для фреймворков, какой PHP-фреймворк сравниться по количеству гемами для рельсов?
      • +19
        Толку от этих гемов для рельсов, если нет нормальных готовых продуктов на них, или хостинг фиг найдешь. Если бы Ruby/Python был бы таким белым и пушистым он бы уже давно вытеснил PHP. А все эти рассуждения о красивости, мейнстримовости, для всяких языкодрочеров.

        Возьмем тот же упомянутый Битрикс, даже среди PHP программеров он считается сборником говнокода. И это как бы не мешает ему быть самой продаваемой коммерческой CMS в рунете…
        • +5
          во всем виноваты маркетологи :/
          • +64
            Скорее в этом виноваты программеры, которые вместо того, чтобы делать классный софт — пишут статьи о плохом php.
            • +5
              Самый разумный комментарий за последнюю неделю
              • –3
                Жаль, что голосовать не могу, но полностью поддерживаю!
                Хочу только добавить, мне кажется что, проблемы языка в первую очередь в его популярности. Будет питон или руби таким же популярным, и у них найдутся проблемы и ни чуть не лучше, чем у PHP.
                • +1
                  Пожалуй, всё же лучше. Эти языки объективно более целостные.
              • 0
                И господство 1С в сфере учета. С Битриксом проще всего хоть как-то настроить интеграцию — не через ручной обмен в XML или CSV, а автоматизированный, по оригинальному и крайне изящному протоколу 1С.
                • +2
                  > по оригинальному и крайне изящному протоколу 1С.
                  > изящному
                  > 1С

                  image
            • 0
              хостингом для php можно считать любой сервер с настроенным apache + mod_php только потому, что у большинства php apps/frameworks нет другой стратегии деплоя кроме как «закачайте файлы на сервер по ftp»
              • +4
                Для этого ещё надо настроить ftp. :) Но вообще наличие стратегии «закачайте файлы на сервер по ftp» для подавляющего большинства php приложений — это плюс, и большой плюс.
                • 0
                  системы контроля версий получается тоже херня — можно же раз в день в папочку бекапиться и все
                  • –1
                    Лучше раз в день бэкапиться, чем не бэкапиться вообще. И лучше деплоить по ftp, чем только удаленно работать.
            • +3
              Думаю мейнстрима, как во всех нормальных языках, не будет еще долго. Хотя, да, что-то начинает вырисовываться (сектор сайтов-визиток, я думаю, эта тенденция не затронет никогда).

              Но php-комьюнити есть какая-то мания, я бы даже сказал, религия велосипедостроения: «Зачем разбиваться в чужом коде, если я это могу написать и сам?! Свой код и лучше и ближе». В итоге имеем кривую, 100500-ю по счету реализацию своей cms, orm, mvc; но зато свою, родную. Которую через полтора-два года выкинут и перепишут заново. Или новая команда разработчиков (а чо, мы разбираться в этом говнокоде будем?), либо текущая, которая поняла, что их идеальное решение не такое уж и идеальное.

              Поэтому долгое время комьюнити (могу сейчас сказать по времени с 2007 по 2011й, сейчас не знаю что там и как) по большей части топталось на месте — потому что каждый пишет одно и тоже и примерно на одном уровне, миллионы человеко часов тратятся на то, что бы понять как же правильно написать обработку запросов на уровне «вон как у соседа, только трубу покрасим в синий цвет». Все.

              Возьмем к примеру тот же symfony, как наиболее продвинутый фреймворк и посмотрим как в 2012м году программисты на php обрабатывают формы: опять работаем на уровне вычленяем данные из запроса, сами вставляем, сами валидируем. На два шага ушли от $_GET['someshit']. В том же java мире эту проблему давно уже решили, для примера отправляю в мануал по spring-framework.

              И если когда-то очень давно ничего кроме помойки в виде phpclasses не было, и такой подход был применим, то последние несколько лет эта практика не применима и ведет к тому, что более-мение адекватные специалисты понимают что они ошиблись с выбором языка. Не многим нравится по несколько раз писать одно и тоже
              • +2
                а вы symfony 2 смотрели и пробовали?
                • 0
                  Как раз о ней и говорю. И смотрел, и прбовал
                  • +2
                    тогда может я не понял ваш комментарий, где в симфони нужно вычленять данные из запроса?
                • 0
                  Возьмем к примеру тот же symfony, как наиболее продвинутый фреймворк

                  Обычно свое мнение как-то выделяют, чтобы другим не казалось, что это аксиома.
                  • –2
                    Вы с этим не согласны? Тогда предлагайте свой вариант.
                    • +3
                      Обычно в комментариях пишут своё мнение, а «аксиомы» указывают со ссылками на авторитетные источники ;)
                      • 0
                        Расскажите мне о более продвинутом фреймворке, чем Symfony2.
                        • 0
                          Вам это сделают где-нибудь в «религиозных войнах», но не здесь и не я.
                      • 0
                        А выложите пожалуйста пример какой-либо несложной формы с валидацией, чтобы было с чем сравнивать?
                      • +1
                        Мейнстрим есть — это ZF. По популярности среди вакансий он первый, все остальные — примерно столько же в сумме(в порядке популярности: Yii, Kohana, Symfony, ...).
                        • +1
                          Symfony2 вродь попопулярнее будет сейчас, некий драйвер комьюнити.
                          • 0
                            По какой статистике она популярнее? Я — по вакансиям.
                            • –1
                              На гитхабе популярней (sf2, zf2), разработчики друпал 8 выбирали между этими двумя фреймворками и выбрали именно компоненты symfony 2 для ядра новой версии.
                              • 0
                                по статистике существующих библиотек/компонентом, которые безшовно вписываються в систему на базе конкретного фреймворка. вродь их еще называют «батарейки».

                                как один из источников — knpbundles (1131 модуль). можно еще добавить packagist (около 1000 взаимозависимых компонентов) — инициативу единого инсталятора для php composer, некоего аналога ruby gems или python pip.
                          • 0
                            какой PHP-фреймворк сравниться по количеству гемами для рельсов?

                            rubygems.org/ — 37 483 гема для Руби (сколько из них для подходят/используются для рельсов? не знаю)
                            drupal.org/ — 15 583 модуля.
                            Это, как минимум, «сравнимо». Количество гемов для языка общего назначения всего лишь вдвое больше количества модулей под одну CMS/CMF.
                            • 0
                              Мне интересен именно фреймворк, а не CMS. Как бы Drupal не был похож на обычный фреймворк, это все равно другое.
                              • 0
                                В данном случае — не другое. Потому что многие модули, такие как Views, CCK, Image являются именно «плагинами к фрэймворку». Иначе, я бы говорил о 20 000 дополнений к Вордпрессу ;).
                                • +2
                                  А что общего у Друпала с фреймворком?
                                  • 0
                                    Общего больше, чем различий.
                                    • 0
                                      По сути все более-менее популярные CMS являются фреймворками с набором модулей, включая админку, заточенную на этот набор. Собственно потому они и популярны, что стандартное поведение можно изменить не лазя в код CMS, а перехватывая управление — чем не фреймворки?
                                      • 0
                                        MS Sharepoint тоже фреймворк? SaaS конструкторы сайтов? Там тоже есть наборы модулей и переопределение поведения. Это же есть, например, в ERP-системах.
                                        • 0
                                          Про Sharepoint не знаю и за все конструкторы скажу, но которые встречал — нет, свой модуль, исполняемый на сервере и с доступом к среде выполнения самого конструктора не получить
                                      • 0
                                        Он позиционирует сябя как CMF (Content Management Framework).
                                  • 0
                                    Ну вы же сами понимаете, что друпал — это не самая лучшая система со стороны программиста, там даже ооп нету, причем я хочу заметить — я не фанат ооп, просто я видел как можно делать красиво расширения, и я видел как делают расширения на друпал — игнорирую какие-либо правила и шаблонизаторы ;)
                                    • –2
                                      Друпал — одна из лучших систем со стороны программиста. Если, конечно, правила, заложенные в саму систему не игнорировать.
                                      • +3
                                        Лучшая, это потому что поддерживает совместимость с php4? :)
                                        • +1
                                          Это вы на пару лет с этим вопросом опоздали. 5.2 — минимум.
                                          • +1
                                            ого, теперь осталось подождать лет 5 и друпал сможет поддерживать замыкания и неймспейсы? ;)
                                            • +1
                                              Drupal 8 требует 5.3, наверное что-то из этого использует. Правда, неизвестно еще, когда он выйдет.
                                              • 0
                                                Главное чтобы не как Перл6
                                                • 0
                                                  Я продолжу — все плагины, которые видел я даже не использовали шаблонизатора. Код друпала хоть на сколько-то покрыт тестами? Там их вообще пишет кто-нибудь?
                                                  • 0
                                                    Шаблонизатор не используется в CI, ZF, Wordpress… дальше продолжать?
                                                    Код ядра покрыт тестами.
                                                    • 0
                                                      К ZF он прикручивается с половины тычка. К CI чуть сложнее.
                                                      • 0
                                                        К Drupal, тоже прикручиваются с половины тычка. Просто в качестве «шаблонизатора по умолчанию» используется PHP.
                                                • 0
                                                  8-й использует Symfony Components, а значит использует нэймспэйсы, да и замыкания никто не запрещает использовать, как и ООП в 6-м.
                                                  • 0
                                                    Представил себе неймспейсы и ООП в сочетании с друпалевскими хуками

                                                    • 0
                                                      А что хуки? Какая разница функция в глобальном нэймспэйсе или метод в локольном?
                                            • +2
                                              Это в ней авторы принципиально пишут без ООП в 21 веке?
                                              • 0
                                                Писали когда-то.
                                              • 0
                                                Со стороны программиста — навряд ли. А вот со стороны человека не знающего программирования вообще — одна из лучших. Можно получить довольно сложный сайт, просто поклацав мышкой. Правда работать будет медленновато, за подобный функционал надо платить большим количством http- SQL-запросов. А с точки зрения программиста — система, мягко говоря, не идеал.
                                                • 0
                                                  Вот это хороший комментарий :) Кстате говоря — я лично наблюдал работу самого высоконагруженного друпала в России ;) Который потом был переписан нами на рельсы. Со стороны юзера все очень удобно, поставил модули (через ssh, а не какой-то там удобный интерфейс, lol) и работай себе на здоровье :)

                                                  Со стороны программиста это полный п. В стандартной поставке нет даже пакетного менеджера, я уж молчу про обновления :)
                                                  • 0
                                                    Ссылку в студию ;)
                                                  • 0
                                                    Я программист, мне нравится.
                                                    А медленновато — это да. Правда, до ZF 2 далековато по тормознутости, но неправильной разработкой можно это исправить!
                                          • +63
                                            Автоваз — очень популярен, много запчастей, еще больше специалистов. Опять же — дешевле и ездит.
                                            • +1
                                              Согласен с вами. Будучи студентом, подрабатывал делая «сайты на заказ». Большинству заказчиков важным фактором была стоимость, получалось в пределах 200-300 долларов. Им все равно было что будет внутри, главное результат и удобный интерфейс. С моей же стороны нужно было вкладывать в это как можно меньше усилий. PHP с его огромным количеством готовых CMS и просто морем плагинов для них, прекрасно подходит. Лишь тем заказчикам, которым действительно нужно было что то хитрое, масштабируемое и с заделом на будущее, делалось на более серьезных штуках.
                                              • +7
                                                Будучи человеком знакомым с такими студентами, часто приходилось как-то модифицировать плагины для популярных cms под нужды заказчика, тк студенты были не в состоянии сами что-то сделать, но отлично находили клиентов. Так вот, на решение проблем заказчика используя рельсу/джангу и написание небольших сайтов уходило значительно меньше времени, чем сидеть и разбираться в говнокоде этих плагинов.
                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                  • +1
                                                    ИМХО все эти допиливания CMS до нужного состояния — это костыль говнокодович.
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                      • +2
                                                        Если нужен постоянный допил, то я бы вообще никогда не делал ставку на готовую CMS. У любого решения есть предел расширяемости, и если у фреймворков он почти бесконечен (мы говорим о хороших фреймворках), то у CMS крайне ограничен. Конечно, в тех случаях, когда нужно только добавить пользователю новое поле и разместить на сайдбаре няшную штучку, смысла изобретать велосипед и переписывать вордпресс с нуля нет. Но когда из того же вордпресса пытаются сделать магазин, я хватаюсь за пистолет… Как было сказано выше и ниже, если появляется нужда в допиливании, задайтесь вопросом: а не быстрее ли написать нужный функционал на %frameworkname%?
                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                          • 0
                                                            как-то категорично про вордпресс, который давно не только блог — тот блог с которого начиналось
                                                            • 0
                                                              Drupal, Wordpress и Joomla вполне себе полноценные CMS, просто в каждой из них прослеживается их родословная.
                                                      • +1
                                                        О том и речь, 99% заказчиков не требовали написать ещё один фэйсбук, либо новый хабр. Сайты были достаточно примитивными, магазины не требовали функционал, который предоставляет магента итп.
                                                        На написание с нуля используя джангу уходило меньше времени, чем на использование цмски, плагин и попытки модификации плагина, которые превращались в кучу костылей.
                                                        Но конечно же не надо забывать что примерно в половине случаев заказчика всё полностью устраивало после установки цмски и настройки пары плагинов, что даже не приходилось прикасаться к коду.
                                                        Да, это всё из разряда создания «говно»-сайтов, но ведь речь ведь сейчас как раз про них, где нужно экономить на всём :)
                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                          • 0
                                                            Ну тут больше суть не в технологиях, а в том что большинство этих сайтов делалось ради того чтобы он просто был. В случае с магазинами заказчики ожидали что вдруг откуда-то появится поток новых клиентов, не вкладывая никаких усилий в раскрутку. Если это была какая-то информационая площадка, то на контент и периодическое его обновление с таким же успехом забивалось. Вот что я имею в виду под говносайтами :)
                                                  • 0
                                                    Не поверите, но ГАЗели. Аккурат выбор небольшого бизнеса.
                                                    • +1
                                                      Охотно верю, просто тот факт, что большинство выбирает что-то не делает это что-то лучше остального(или хуже).
                                                  • 0
                                                    Глупо делать выводы на основе количества результатов в поисковой системе. По остальным пунктам вы назвали плюсы PHP, но не оценили его в сравнении с другими языками. Разумеется, у PHP есть плюсы, но какие-то плюсы есть у любого реального языка. Ничто не стало очевидным, вы ничего не доказали, вы просто постулируете свою точку зрения.
                                                    • +1
                                                      Увы, но иффиктиные манагеры именно так и думают, а решают, к сожалению, они!
                                                    • +15
                                                      Почему люди выбирали PHP?
                                                      Возможно потому, что он понятнее, чем Perl, и потому, что писать на нем сайты проще, чем на C++.
                                                      Все остальные языки 10 лет назад не имели достаточной аудитории, чтобы рассматривать их в качестве кандидатов для изучения с последующим применением к веб-разработке.
                                                      А сейчас его выбирают, скорее всего, из-за того, что он доминирует на рынке.
                                                      • +8
                                                        Ну если Руби с гемами, или Питон с Джангой в 10 раз круче, и существуют в расцвете уже года три минимум (для широкой общественности), почему они не откусили рынок?

                                                        Банальный пример. Был браузер, глючный, но лидер — IE. Потом его долю откусил ФФ.
                                                        У ФФ была проблема (вроде починили — летает теперь) — утечка памяти, и с плугинами тупил.
                                                        Вышел мегабыстрый Хром — и откусил долю ФФ.

                                                        То есть хорошие вещи откусывают рынок быстро.

                                                        А как это не печально, RoR и Python по совокупности ответов на вопросы -смотри пост — не откусили пока рынок.

                                                        Но все возможно… Когда-то правила Альтависта, Яха, Лайкос и Хотбот, рулил Нетскейп, а Гуглеры были студентами-ботанами, работающими над диссером… А потом они запатентовали алгоритм со свистелками и перделками, и все заверте.
                                                        • +1
                                                          инстаграмм — миллиард. работает на джанге.
                                                          пинтерест — хз сколько. на ней же. уверен, можно еще не один десяток примеров найти. видимо, мы по разному на этот рынок смотрим.
                                                          • +6
                                                            Инстаграм — это, как и Фэйсбук, исключение из правил. Нужно брать обычные веб-проекты.
                                                          • –1
                                                            хром откусил рынок своей огромной рекламой.
                                                            • +3
                                                              Руби — сложный язык. Намного сложнее питона и пхп. РоР — сложный фреймворк. За последние пару лет он стал очень newbie-unfriendly.

                                                              Большинство книг по руби подразумевают что читатель знаком с программированием. А если не подразумевают, то все равно написанны программистами и воспринимаются тяжело.

                                                              У пхп по-прежнему самый низкий порог вхождения, что обеспеивает им постоянный приток студентов, делающих визитки за 300 долларов, а потом продолжающих писать на пхп, потому что «а что, нормальный язык, все работает вон».
                                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                                    • +1
                                                                      А если будут делать качественные сайты за 6000 рублей — это плохо? Если человек более опытен стал, овладел профессиональными инструментами и методиками, то производительность его труда должна возрасти и за тоже время он сделает больше. Почему вдруг за то, что «студент» делает за две недели и 6000, а профи за неделю нужно платить 12 000?

                                                                      Под качественным сайтом я имею в виду качественный код сайта, потому как дизайн и прочее юзабилити к компетенции php/python/ruby/… программиста не относится.
                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                        • 0
                                                                          Я как-то делаю один, умудряясь не выступать в роли дизайнера и юзабилиста. Бывает верстаю по макету, а чаще предлагаю на выбор из разных коллекций (в т.ч.платных). Хотя какие-то знания по веб-дизайну есть, но так, для общего развития. И вообще с трудом человека представляю, который сможет и качественный дизайн сделать, и качественный код написать — по-моему совершенно разные способы мышления нужны.
                                                                          • НЛО прилетело и опубликовало эту надпись здесь
                                                                • +1
                                                                  Руби никак нельзя назвать сложным языком. Приведите, пожалуйста, пример, в чем конткретно он «сложнее» как язык, чем пхп?
                                                                  RoR сложный фреймворк? Думаю, он попроще аналогичных фреймворков на пхп. У него отличная документация, есть масса статей и бесплатных скринкастов в интернете. Не знаю, что там unfriendly.
                                                                  Или вы сравниваете применение RoR с созданием пары тестовых php-страниц и запуском на денвере?
                                                                  • 0
                                                                    Куда чаще используется функциональная парадигма — проще от этого язык уж точно не становится.
                                                                    • +4
                                                                      Документация у RoR — говно. Об этом все коммьюнити ноет последние года полтора как. Райан Бигг вяло пытается ее как-то дописывать, но ему последнее время сильно не до этого, он занят книгой своей. Плюс, она написанна так, как хочет ДХХ, а кроме ДХХ так никто все равно не делает. Пример – Test::Unit. Я давненько не встречал проекта, тесты которого написанны на Test::Unit. В 99% случаев он сразу выкидывается и заменяется на RSspec.

                                                                      За примерами «сложности» языка далеко ходить не надо. Практически любой пример из середины и дальше книги Metaprogramming Ruby поставит в тупик среднестатистического разработчика. Мне самому потребовалось олоко двух лет чтобы по-настоящему разобраться и понять все тонкости, описанные в книге и реально начать ими пользоваться. И я по-прежнему иногда путаю instance_eval с class_eval.

                                                                      Да просто можно посмотреть внутрь того же RSpec. Врядли после этого повернется язык назвать руби простым.
                                                                      • +1
                                                                        Ну и плюс из коробки текущие рельсы ставят sass, coffeescript и asset_pipeline. Человек, который только что прочитал «Ruby для чайников», увидев все это, скорее всего крепко задумается и пойдет делать блог на вордпрессе.

                                                                        Я очень люблю sass, coffeescript и asset_pipeline. Они реально чудесные и повышают производительность программиста на отличненько. Но я уже много лет во всем этом варюсь и у меня была куча времени вникнуть в эти фичи. А новичок со знанием css/html/javascript/ruby скорее всего обломится.
                                                                        • +1
                                                                          Не знаю, чем так плоха документация рельсов. Документация по API отлично оформлена, есть очень удобный аякс-поиск. Еще есть отличные guides.rubyonrails.org/… Сообщество руби слишком любит поныть имхо.

                                                                          > А новичок со знанием css/html/javascript/ruby скорее всего обломится.
                                                                          Так никто же не запрещает использовать голые js/css в asset pipeline или вовсе забить на него и кидать файлы в public директорию.

                                                                          По поводу ваших аргументов про метапрограммирование — ну да, там все непросто, но это advanced фичи языка, и ими совершенно необязательно уметь пользоваться, чтобы писать веб-проекты. Я плохо знаю пхп, но подозреваю, что там большинство подобных вещей вообще сделать нельзя. Делает ли это пхп более простым языком? Возможно, но только в смысле количества функционала. Это не делает его более простым в изучении или применении.
                                                                      • 0
                                                                        Не такой уж сложный. Думаю сложнее настроить сервер под него. А для PHP под Windows есть Denwer и т.д. Скачал установил и начинай писать
                                                                        echo "Hello world";
                                                                        
                                                                      • 0
                                                                        Пример в корне неверен. ФФ и хром активно продвигаются в массы, Руби и Питон продвигать нафиг никому не сдалось. Да и как долго ФФ с Хромом что-то там себе отхватили? Еще несколько лет назад IE безраздельно властвовал на рынке, несмотря на давнее существование ФФ и Оперы. Пока, собственно, альтернативные браузеры не начали продвигать.
                                                                        Вот вам другой «банальный пример»: в мире существует Windows, Mac OS X и Ubuntu. И не смотря на то, что третья неплоха, а вторая прекрасна, с отрывом лидирует первая.
                                                                        • +1
                                                                          некому продвигать Руби и Питон?
                                                                          да я уже немогу без головной боли на хабр зайти, чтоб не наткнутся на какого нибудь «евангелиста»
                                                                          а год работы на роре у меня отбил все желание пересекаться с руби сообществом
                                                                          потому что такого агрессивного продвигания своих «правильных идей» надо поискать
                                                                          аллергию чес слово заработал
                                                                          • 0
                                                                            На то они и правильные идеи, чтобы их продвигали. В противном случае получим ситуацию, сложившуюся в PHP-сообществе, когда вставка html-кода в модель или контроллер является вполне обыденным явлением.
                                                                            • +1
                                                                              Покажите хоть один MVC фрэймворк, где такое происходит.
                                                                              • 0
                                                                                | В противном случае получим ситуацию, сложившуюся в PHP-сообществе, когда вставка html-кода в модель или контроллер является вполне обыденным явлением.

                                                                                где такое сложилось, я с такими не знаком :) а на основании кода видимого мной на роре я могу сделать такие же глобальные выводы :)

                                                                                | На то они и правильные идеи, чтобы их продвигали

                                                                                я не случайно поставил кавычки «правильные идеи» — потому что эти сообщества колеблятся с линией партии и то что превозносится ими как гениальное и единственно верное решение через пару лет ими же порицается а на пьедестал возносится что либо другое
                                                                                и я не люблю секты, но это личное :)
                                                                                • 0
                                                                                  > где такое сложилось, я с такими не знаком :)
                                                                                  Да вы счастливый человек!

                                                                                  >я не случайно поставил кавычки «правильные идеи» — потому что эти сообщества колеблятся >с линией партии и то что превозносится ими как гениальное и единственно верное решение >через пару лет ими же порицается а на пьедестал возносится что либо другое

                                                                                  Ммм… пример?
                                                                                  • +2
                                                                                    > Да вы счастливый человек!
                                                                                    к сожалению не настолько, я видел такое в рор проекте :)

                                                                                    > Ммм… пример?
                                                                                    rjs -> cofeescript
                                                                                    erb -> haml
                                                                                    «а сейчас вышла новая версия рора которая встотыщь раз лучше всего остального, да кстати и предыдущей версии тоже, так что то что вы написали до этого можете выкинуть на помойку»
                                                                                    повальное использования орм

                                                                                    как то так
                                                                                    • 0
                                                                                      Пардон, но это бред)

                                                                                      > rjs -> cofeescript
                                                                                      Абсолютно разные вещи для разных нужд.

                                                                                      > erb -> haml
                                                                                      Официальный шаблонизатор рельсов все еще erb. Haml использую те, кому он нравится, так же как и scss, coffeescript, итд.

                                                                                      > «а сейчас вышла новая версия рора которая встотыщь раз лучше всего остального, да кстати и предыдущей версии тоже
                                                                                      Это настолько неестественно для PHP-сообщества, что новая версия лучше предыдущей? оО

                                                                                      > так что то что вы написали до этого можете выкинуть на помойку
                                                                                      Эмм… а вы точно с рельсами работали? Рельсы — это гем, который, как и все прочие, спокойно обновляется до последней версии. Более того — разработчики всегда выпускают инструкцию по переводу проекта на новые рельсы.
                                                                                      Сам имею проект, начавшийся на RC 3х рельсов и работающий сейчас на 3.2.

                                                                                      > повальное использования орм
                                                                                      Если вы хотите писать модели без использования AR — пишите. Но зачем?

                                                                                      Вы выглядите как слепой фанатик php, уж простите…
                                                                                      • +1
                                                                                        > Это настолько неестественно для PHP-сообщества, что новая версия лучше предыдущей? оО

                                                                                        неестественно что не поддерживается старая :)

                                                                                        > Эмм… а вы точно с рельсами работали? Рельсы — это гем, который, как и все прочие, спокойно обновляется до последней версии. Более того — разработчики всегда выпускают инструкцию по переводу проекта на новые рельсы.

                                                                                        работал на 1.2 четыре года назад :) и насколько знаю пару лет назад проект продолжал бежать на том же, кажется они не смогли перейти :) расскажите мне что 1.2 отстой недостойный упоминания :)

                                                                                        > Если вы хотите писать модели без использования AR — пишите. Но зачем?
                                                                                        я использую актив рекорд :)
                                                                                        разница в терминологии, актив рекорд да, а повальное использование связей чтобы по аттрибуту конструктор сам сабирал джойны было тогда оч популярно

                                                                                        > Вы выглядите как слепой фанатик php, уж простите…
                                                                                        ну конешо давайте уже поговорим обо мне :) а почему вы решили что если я против навязывания руби/рор сообществ своих «идеалов» я фанатик php? :)
                                                                                        я антифанатик руби :)
                                                                                        а питоны, сишарпы, нод джи эсы да сколько угодно, раньше и руби но теперь аллергия :)
                                                                                        • 0
                                                                                          >неестественно что не поддерживается старая :)
                                                                                          К 3.0 и 3.1 выходят обновления. 2я версия да, устарела и не поддерживается. У всего есть свой период поддержки.

                                                                                          > работал на 1.2 четыре года назад :) и насколько знаю пару лет назад проект
                                                                                          > продолжал бежать на том же, кажется они не смогли перейти :)
                                                                                          Я, к сожалению, не застал времена первых рельс и не могу с точностью сказать, что же помешало им обновиться. Но подозреваю, что руки и нежелание.

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

                                                                                          • 0
                                                                                            > К 3.0 и 3.1 выходят обновления. 2я версия да, устарела и не поддерживается. У всего есть свой период поддержки.

                                                                                            я имел ввиду что переход на новую версию настолько труден что выходом чаще остается только переписывание по новой. И насколько я понимаю 2 не поддерживает 1.2 а 3 не поддерживает 2? И каждая следущая настолько другая и лучше предыдущей что становится не понятно кому предыдущая нужна была в принципе :)

                                                                                            > Но подозреваю, что руки и нежелание.

                                                                                            полностью с вами согласен :) что плохие программисты есть везде

                                                                                            > И сейчас популярно. Это плохо — писать меньше кода?

                                                                                            к сожалению путаница в терминологии с моей стороны.
                                                                                            я предпочитаю использовать только конструктор запросов без связи один в один объекта с таблицей и связей с другими таблицами.
                                                                                            :) попробую на примере того самого большого рор проекта: были связаны все таблицы через модели. и указание аттрибута через точку влекло за собой выборку через три джойна этого аттрибута из четвертой таблицы без того что программист понимал что нагибает весь проект
                                                                                            опять же моя претензия к конкретным людям очень любящих слово «мэджик» :)

                                                                                            хорошо писать понятный код :)
                                                                                            • 0
                                                                                              > я имел ввиду что переход на новую версию настолько труден что выходом чаще остается только переписывание по новой.
                                                                                              Это, мягко говор, неправда.

                                                                                              > И насколько я понимаю 2 не поддерживает 1.2 а 3 не поддерживает 2?
                                                                                              Вот эту фразу я не понял вообще.

                                                                                              > И каждая следущая настолько другая и лучше предыдущей что
                                                                                              > становится не понятно кому предыдущая нужна была в принципе :)
                                                                                              Тут дела обстоят как с любым софтом. Выходит новая улучшенная версия. Хочешь — пользуйся старой. Хочешь новых плюшек — обновляйся.

                                                                                              > попробую на примере того самого большого рор проекта: были связаны
                                                                                              > все таблицы через модели. и указание аттрибута через точку влекло за
                                                                                              > собой выборку через три джойна этого аттрибута из четвертой таблицы
                                                                                              Бездумное использование предоставленных возможностей — беда не языка или фреймворка, а человека, использующего из.
                                                                                              А если конкретно по примеру, то для каждой ассоциации можно указывать свои SQL-запросы, коль уж не нравятся сгенерированные автоматом. И выглядеть будет красиво, и работать оптимально.
                                                                                        • 0
                                                                                          > Это настолько неестественно для PHP-сообщества, что новая версия лучше предыдущей?

                                                                                          «why switching from Ruby»
                                                                                          groups.google.com/forum/?fromgroups#!topic/urug/UZ8fDVcNiOA

                                                                                          1) Ruby version hell
                                                                                          2) Rails 3 also seems to be imploding on version — it requires at least 1.8.7 but wait, it crashes on the last few p releases
                                                                                  • +1
                                                                                    Вы хотите сказать, что в RoR нельзя вставить html в модель или контроллер?
                                                                              • 0
                                                                                Ну, одно дело — поменять браузер, другое — язык, на котором пишешь.
                                                                                • 0
                                                                                  По-моему, C# неплохо так занял место под солнцем ;)
                                                                            • –27
                                                                              Вопросы которые вы привели — типичные для быдла, которое хочет тупо заработать бабла на чужой идее. Да — это работает, но только первый после *бога* получает такую возможность.
                                                                              Так вот, а что насчет новых, революционных проектов?
                                                                              Я к веб программированию не имею никакого отношения, просто мимопроходил.
                                                                              • +19
                                                                                Думаете человека который хочет сделать себе интернет-магазин волнует красота языка? Его интересуют в первую очередь сроки и цена разработки и поддержки, а какие там гемы бывают у руби ему пофиг.
                                                                                • –8
                                                                                  Я вааще не об этом спрашивал. Может вы ошиблись веткой?
                                                                                  • +4
                                                                                    Ну это я к вопросам для быдла. Или вы своих заказчиков быдлом считаете, ну тогда ладно.
                                                                                    • –6
                                                                                      А где вы увидели, что я своих заказчиков быдлом считаю? Я спросил у вас — как обстоят дела у пхп с нестандартными проектами, но вы видимо не хотите отвечать на этот вопрос и уходите от ответа.
                                                                                      • +12
                                                                                        точно так же обстоят как у любых других языков.
                                                                                        на пхп при должном умении можно реализовывать любые нестандартные проекты. так же как на руби, питоне, перле, си.
                                                                                        • 0
                                                                                          напишите простенький аналог erlyvideo или flumotion на php.
                                                                                          • 0
                                                                                            PHP это язык для разработки веб-сайтов (PHP: hypertext preprocessor)

                                                                                            вполне очевидно, что на нем легко и удобно реализовывать любые стандартные (визитка, блог, форум) и нестандартные проекты, из области создания веб-сайтов

                                                                                            но предлагать на пхп реализовать сервер для стриминга видео это все равно что предложить на vbscript написать сервер для мморпг.
                                                                                            • +1
                                                                                              на пхп при должном умении можно реализовывать любые нестандартные проекты. так же как на руби, питоне, перле, си.

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

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

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

                                                                                                ответ: да, на нем можно делать нетиповые проекты, так же как на любрм другом языке. но не нужно пытаться домкратом накачать колесо
                                                                                                • 0
                                                                                                  а в чём сложность с онлайн-трансляцией на сайте?

                                                                                                  почему на erlang/python/java это можно сделать, а на php — «домкратом накачать колесов».

                                                                                                  вообще, php — уникальный проект. хотя бы потому, что это один из немногих проектов, в котором security officer отчаялся и устроил террор, публикуя по критической уязвимости в неделю.

                                                                                                  • 0
                                                                                                    я же один раз уже вам ответил:
                                                                                                    PHP: hypertext preprocessor.
                                                                                                    это официальное название этого языка. еще раз: hypertext preprocessor.

                                                                                                    в пхп нет сложности с онлайн-трансляцией на сайте, просто пхп будет генерировать хтмл-код сайта, отображать видео на клиенте будет флеш или сильверлайт или сам браузер в случае хтмл5, а отдавать контент с сервера будет апач или nginx или какое нибудь специализированное решение.

                                                                                                    я тоже могу сказать «реализуйте видео-плеер для браузера на эрланге. почему на яве, экшнскрипте и сильверлайте это сделать можно, а на эрланге и питоне нельзя?».
                                                                                                    • 0
                                                                                                      >а отдавать контент с сервера будет апач или nginx или какое нибудь специализированное решение.

                                                                                                      так почему эти «специализированные решения» на erlang/java/python пишут, а на php — нет?

                                                                                                      вариантов относительно немного:

                                                                                                      1)язык для этого не подходит(неудобен/противоречив/etc)
                                                                                                      2)язык для этого не предназначен
                                                                                                      3)сообщество программистов вокруг данного языка не в состоянии написать

                                                                                                      Пытаясь защититься пунктом N2, вы сужаете пространство для поиска ответов на пункты N1 & N3.

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

                                                                                                      и это будет неверная аналогия. на серверной стороне может быть что угодно, хоть brainfuck.
                                                                                                      • 0
                                                                                                        ну это уже слишком толстый троллинг.

                                                                                                        почему люди не накачивают колеса домкратом?
                                                                                                        вариантов немного:
                                                                                                        1. им неудобно качать колеса
                                                                                                        2. он для этого не предназначен
                                                                                                        3. сообщество пользователей домкратов слишком слабо чтобы накачать им колесо.

                                                                                                        прикрываясь пунктом 2 я пытаюсь закрыть глаза на пункты 1 и 3.
                                                                                                        • +1
                                                                                                          спасибо, поржалъ! 8))))

                                                                                                          Но аналогия не верна, т.к вы путаете «не применим вообще» и «ограниченная область применения».

                                                                                                          Если уж сравнивать компрессоры, то это:

                                                                                                          «компрессор с питанием от электросети автомобиля или 220V с универсальным набором насадок и опций» vs «компрессор для автомобиля».

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

                                                                                                        • 0
                                                                                                          4) написать можно, но плюсов по сравнению с существующими реализациями на других языках не будет.

                                                                                                          У php в подобных случаях нет сильных сторон, из-за которых стоило бы использовать именного его. И одна откровенно слабая — нет многопоточности. Реализовать вроде можно, но сложно. А главное зачем?
                                                                                              • +1
                                                                                                легко — есть такое. Пример: mark.koli.ch/2009/02/07/streamer.phps
                                                                                            • +18
                                                                                              Пишу последние годы на ПХП одни нестандартные проекты. Проблем нет вообще никаких. Полностью всего хватает с головой
                                                                                              • 0
                                                                                                А есть с чем сравнивать?
                                                                                                • +2
                                                                                                  Главный вопрос зачем? Лично мне производительность PHP вполне хватает. И я не думаю что другой интерпретируемый язык тут что-то поменял бы в корне. Если уж реально надо получить прирост скорости (5-10 раз) — тогда на джаву смотреть надо. Обычно так и делаем — самые нагруженные демоны выносим на джаву, все остальное — ПХП.
                                                                                                  • 0
                                                                                                    Преимущество других языков вовсе не в скорости. Математические расчеты на сайтах вы в больших количествах врядли проводите, а запросы к БД по большому счету безразлично на каком языке составлять.
                                                                                                    Преимущество в удобстве разработки и поддержки.
                                                                                                    • +6
                                                                                                      Ну и в чем проблема. Я использую набор классов из Symfony2 для роутинга и валидации основанной на аннотациях, Twig шаблонизатор, Doctrine для ORM. Почему бытует такое мнение, что раз PHP то это сразу неудобно и говнокод сплошной?
                                                                                                      • 0
                                                                                                        В других языках может быть больше возможностей для сохранения результатов своей работы в виде библиотек за счет унификации понятий языка. В результате функций и классов больше область применения — не надо дублировать код.

                                                                                                        Это играет тем большую роль, чем больше у вас своего кода.
                                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                          • –6
                                                                                                            Напишите на php такую функцию:

                                                                                                            def make_list(xs):
                                                                                                                return ''.join('<li>'+x+'</li>' for x in xs)
                                                                                                            


                                                                                                            Функция берет то, что можно перечислять, элементов чего является строка (может быть список, строка и т.д) и возвращает строку c элементами исходного объекта, обрамленными тегами li.

                                                                                                            Пример:

                                                                                                            print make_list('abc')
                                                                                                            print make_list(['1', '2', '4'])
                                                                                                            
                                                                                                            Output: 
                                                                                                            
                                                                                                            <li>a</li><li>b</li><li>c</li>
                                                                                                            <li>1</li><li>2</li><li>4</li>
                                                                                                            
                                                                                                            

                                                                                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                                                                              • –2
                                                                                                                ну вот это я и называю «приходится дублировать код»
                                                                                                              • +6
                                                                                                                return '<li>'.implode('</li><li>',$array).'</li>';
                                                                                                                

                                                                                                                Не?
                                                                                                                • 0
                                                                                                                  cработает ли implode со строкой?
                                                                                                                  с множеством?
                                                                                                                  со множетсвом ключей dictionry?
                                                                                                                  со можеством его жлементов?
                                                                                                                  • +1
                                                                                                                    Если вы подразумеваете, что нужно «проимплодить» каждый символ строки — нет. И, думаю, это не очевидное поведение.

                                                                                                                    В PHP, как уже было сказано, нет отдельного типа для массивов, хешей, словарей и т.д. Есть просто массивы. Для них всё сработает предсказуемо.

                                                                                                                    Если вы хотите какую-то более сложную структуру, можно создать класс-имплементацию итератора, который будет итерировать хоть по значениям, хоть по ключам, хоть по их сумме — всё зависит от того, что вы хотите сделать.
                                                                                                                    • 0
                                                                                                                      не является ли естественным, что строка — это массив символов?
                                                                                                                      implode с этим итератором будет работать?
                                                                                                                      • +1
                                                                                                                        Является. Не очевидно, что при передачи строки «abc» в такую функцию в результате будет список из трёх элементов. Да, вы можете такое сделать, но поддерживать такое неочевидное поведение может потом оказаться накладно. в этом плане подход PHP мне больше импонирует — нужно сделать такую итерацию — лучше явно передать массив символов. если это часто используется — можно сделать класс, который умеет делать .toString() к той же самой строке, но за счёт имлементации итератора его можно использовать как аргумент подобной функции.
                                                                                                                        • 0
                                                                                                                          >>>Не очевидно, что при передачи строки «abc» в такую функцию в результате будет список из трёх элементов.

                                                                                                                          Почему? Если вы согласились, что строка концептуально — массив символов, то почму передача такого массива в функцию, которая представляет последовательность в виде списка, не должна преставить эту конкретну последовательность в виде html списка? По-моему это логично, абстрактно и мощно
                                                                                                                          • 0
                                                                                                                            Это, конечно, мощно… Но часто ли используется, особенно в применении к Web? Так что не думаю что это хороший пример того, почему питон сильно лучше.
                                                                                                                            • +1
                                                                                                                              Я думаю, вы просто не смотрели пока на код с этой точки зрения — представьте себе что практически все функции, которые работают с массивами работают и со строками и с последовательностями сгенерированными ORM и другими вещами, которые можно представить как последовательность — и этих функций много (например см. модуль itertools)
                                                                                                                        • +1
                                                                                                                          Для PHP не является. Это скалярный тип прежде всего, который в некоторых ситуациях может работать как массив. Но не во всех. Далеко не во всех, прежде всего приведение (array)$str (как и любого другого скалярного типа) вернёт массив с одним элементом. Отсюда и пляшем при использовании.
                                                                                                                      • 0
                                                                                                                        > cработает ли implode со строкой?

                                                                                                                        Конкретно для вашего примера ваша функция получилась компактнее.
                                                                                                                        А теперь представьте, что строку не нужно бить по символам.
                                                                                                                        Как изменится код вашей функции?
                                                                                                                        • 0
                                                                                                                          тогда ей не нужно передавать строку, потому, что она работает со перечислениями.

                                                                                                                      • 0
                                                                                                                        Не.
                                                                                                                        С пустым array() будет
                                                                                                                        <li></li>
                                                                                                                        • 0
                                                                                                                          Не. Ответ не верен, если массив пуст.
                                                                                                                        • 0
                                                                                                                          function make_list($obj){
                                                                                                                          for($res = ''; $i=each($obj); $res.= "$i[1]");
                                                                                                                          return $res;
                                                                                                                          }
                                                                                                                          • 0
                                                                                                                            В документации по each написано что она работает только с массивами — join работает с iterable
                                                                                                                            • –1
                                                                                                                              Странная подсветка кода. Вообщем там $res = в li оборачивается. Будет работать с массивами и всем что реализует Iterator
                                                                                                                              • 0
                                                                                                                                Странно, я не вижу в доке про iterator там явно написано array, но так как строка — не объект, ей потребуется особое приглашение?
                                                                                                                            • +1
                                                                                                                              А зачем вообще в коде генерировать html?
                                                                                                                              • 0
                                                                                                                                во-первых, это просто пример. Можно привести в пример itertools и functools как часть того, что можно сделать еще.

                                                                                                                                во-вторых, можно, например, генерировать интерфейс на основе общих правил, типа «html представление списка объектов — это html представление оъектов, заключенные в li». Чтобы не хардкодить каждую страничу по своему, грубо говоря (ну там придется не зардкодить это li, а обратиться к микрошаблону)
                                                                                                                              • +2
                                                                                                                                В лоб:
                                                                                                                                function make_list($xs) {
                                                                                                                                  $result = '';
                                                                                                                                  foreach ($xs as $x) {
                                                                                                                                    $result .= '<li>' . $x . '</li>';
                                                                                                                                  }
                                                                                                                                  return $result;
                                                                                                                                }
                                                                                                                                


                                                                                                                                Работает с тем, что можно перечислять: массивы, простые объекты (перечисление свойств) и объекты, реализующие интерфейс Iterator (коллекции, списки и т. п., включая стандартные вроде FilesystemIterator). Строки, увы, скалярный тип в PHP, неперечисляемый, хотя можно добавить
                                                                                                                                if (is_string($xs)) {
                                                                                                                                  $xs = explode('', $xs);
                                                                                                                                }
                                                                                                                                

                                                                                                                                чтобы получить аналогичную функциональность.

                                                                                                                                Можно написать и в функциональном стиле, но для PHP это скорее извращение будет в данном случае.
                                                                                                                                • 0
                                                                                                                                  Насколько я знаю, вы смотрели в сторону python и можете сами сравнить, насколько обобщенный код можно написать там и там — я php смотрел несколько лет назад и то, что я увидел, мне сильно не понравилось.
                                                                                                                                  • 0
                                                                                                                                    Угу, смотрел, как и в сторону Ruby. Ни один из этих трёх языков не могу назвать идеальным для веба. Вот смешать бы их :)
                                                                                                                                    • 0
                                                                                                                                      А что вам нравится php как в языке (про дешевый хостинг и большую кодовую базу понятно)
                                                                                                                                      • 0
                                                                                                                                        Не совсем в языке — простота разворачивания и администрирования среды выполнения для типовых задач (под пакетными дистрами) прежде всего. Хотя, вроде, стало получше с этим у python и ruby в последнее время. Но пока для меня это главный плюс.

                                                                                                                                        Чисто как в языке — тесная интеграция с HTTP, включая сессии. По сути PHP является микрофреймворком для веба.
                                                                                                                                        • 0
                                                                                                                                          >>>Чисто как в языке — тесная интеграция с HTTP, включая сессии

                                                                                                                                          Нужно ли это прям в языке?