Комментарии 124
Собственно привет Laravel, вот что вылилось из понимания устройства php. Это удобный фреймворк взял и написал приложение, но многие люди недоумевают почему он так популярен на больших проектах. Какие нынче тренды, облака, server-less, горизонатальное маштабирование и тд. Представьте, вы пишите стартап, у вас нет времени думать о будущем, вас волнует то что здесь и сейчас, берем Laravel, проблемы которые он решает:
Быстрый старт без заморочек — подняли на 1 ноде сайт
Есть долго играющие задачи (обработка видео например) — фреймворк имеет очередь джобов из коробки
Ваш локальный диск переполнен видео — подрубили какое нибудь s3 и работаете с ним как с обычной FS, просто поменяв конфиги в 1 файле.
Слишком много джобов — окей, система очередей поддерживает удаленные джобы, запустили джобы на других нодах
Файловой системе плохо от того что сессии и кеш у вас файловый — подрубили редис
Одна нода уже не справляется с запросами — окей унесли редис на отдельный сервер (или кластер сразу), подцепили еще пару нод, в конфигах указали один и тотже редис сервер и все о чудо у вас горизонтально маштабируемая аппликации, а кеш и сессии уже чудесным образом берутся из 1 места.
Полнотекстовой поиск по базе — пожалуйста, установил пакет и радуйся
Вы думаете их мало?Понятия не имею. Просто утверждаю, что это более репрезентативный параметр, чем тот, который использован в статье.
Оффтоп: ощущение, что вы и автор перевода один и тот же человек. Сложно понять, что имеете в виду
Несмотря на то что мы имеем большое количество дискуссий о будущем PHP
Есть много устаревших вещей, которые означают, что лучшее решение не всегда есть.
Если вы хотите начать карьеру в качестве разработчика PHP, у вас будет много выбора
Google Translate?
В последнее время PHP активно вбирал идеи из других языков. Там развили привычный ООП, добавлены трейты, генераторы. Принят ряд стандартов, превративших в язык в эдакий мета-фреймворк, когда интерфейсы устоявшихся модулей большинства обычных фреймворков стандартизированы, что сделало их взаимозаменяемыми. Добавлен сборщик мусора и готовится к добавлению jit, т.е. чёткий план на асинхронность, пробные варианты реализаций которой уже существуют. Есть менеджер пакетов. Через type hinting планируется взять под контроль слабую типизацию.
И на что с этого уходить? Может быть на go… Но он в вашем сравнении даже не упоминается…
Однако:
— node.js с Typescript вполне годный способ писать бэкенды. Отличная модель асинхронности.
— asp.net core с версии 2 очень годная вещь: божественный C#, простой движок похожий на node.js express, кросплатформенность, и крутая IDE Rider.
Вместо Java сейчас есть очень годный Kotlin. Для него запилили фрэймворк ktor, который очень лёгкий без ужасов spring'а.
Не холивара ради, но web, rest в основном синхронный. Я с удовольствием пишу асинхронный фронт на TS, но вот на бэке как-то не зашло, даже с async/await. Может дело в отсутствии фреймворков/либ подобных Symfony/Doctrine — слишком много приходится думать об инфраструктуре, слишком сложно выделить чистую бизнес-модель. Опять же банальной проверки instanceof SomeInterface очень не хватает
C DataMapper хоть одна готовая к продакшену есть?
Там реалтайм синхронизация данных с бекендом. Вы просто работаете с данными и забываете обо всем остальном.
Там правда фулстек + довольно жесткая привязка конкретно к монге, но оно решает много проблем. Сейчас новый проект на нем делаю, очень удобно.
Ну либо отдельно на github.com/share/sharedb если все остальное не нужно.
Ну я больше про классический бэкенд с html-шаблонизаторами или restish API
Просто за счет синхронизации пропадает необходимость выдумывать все эти AR/DM. Я записываю данные — они пишутся, читаю — они читаются. Если кто-то где-то что-то меняет, у меня «все само» обновится.
Хотя вот с ограничением доступа так не слишком удобно в силу сути библиотеки.
Не знаю, может быть только конкретно под мои задачи оно подходит, но по мне так это очень удобно.
И конечно нужно учитывать, что это не мега-популярный Реакт/Ангуляр/Вуе о статьи про которые спотыкаешься каждую ссылку.
Perl, который уж точно перешёл в режим «только поддержка написанного»?
У них, кстати, переименование новой версии произошло на днях. Был Perl 6, теперь Raku.
Я с Perl начинал. Но из-за постоянных проблем, что я на Windows 98 код писал, а на сервере был *nix бросил это дело и перешёл на PHP. Всё-таки написание на языке должно удовольствие приносить, а не мозг выносить.
Rust + Web assembly :)
Через type hinting планируется взять под контроль слабую типизацию.
Слабую или динамическую?
Это что за PHP-пропаганда?)
При всей моей любви к этому языку, в статье, как мне кажется, должно быть упоминание о таких вещах, как роль Go в вебе, станет ли разработка сайтов делом, которое вообще требует разработчика и т.д.
Это про сайты. Но, если не брать в расчет популистский заголовок и не скатываться до обзывания PHP "языком для делания сайтов", есть же и более благородное применение сему инструменту.
Легкие веб-приложения. Почему нет ни слова о django и rails? Впрочем, с rails ситуация печальна (и понятна), но django — цветет и пахнет!
Но есть же еще enterprise — symfony, который нагло косплеит жабу сопоставим с Java по масштабам проектов и используемых концепциях — скажем, мне было бы интересно взглянуть, в каком случае коммерсант Вася выберет Spring для автоматизации своей фабрики, а в каком Symfony.
В общем, переводчику респект, а мистеру Daan я бы посмотрел в глаза в поисках 100-долларовой купюры от Расмуса Лердорфа)
75 процентов веб-сайтов работают на PHP
люди предполагают, что PHP мертв
Кто все эти люди?
он просто умирающий
Причем, не первый уже десяток лет.
Как раз в этот период времени перешёл с PHP на питон, работу на питоне нашёл сразу. В итоге углубился в питон. Теперь в резюме упоминаю PHP как "было, но прошло". Рекрутёры с питона пишут примерно 2-3 раза в неделю. При этом проекты уровня Яндекса (Яндекс.Такси), Мэйла (maps.me), и того же самого Авито. Рекрутёры с PHP перестали писать лет 7 назад. Прям взлёт питона.
Яндекс.Такси вроде как на симфони, по крайней мере, когда я туда собеседовался мне было сказано так.
Cерверная часть Я.Такси написана на C#, C++, Python. На python у нас сервисы, которые должны работать в фоновом режиме (наша база по водителям и таксопаркам, система по расчетам комиссии, модуль заказа такси, система антифрода и пр. но в планах есть и написание новых сервисов на python 3.6)
Там питон и плюсы, может вы собеседовать в Еду? Это часть такси, там пхп...
При этом проекты уровня авито, auto0, check24 и всякие «мы как амазон, только из страны Х, нужен разработчик в берлинский офис»
Интересно, на что они рассчитывают. Такие крупные проекты, как авито, не один год пилят и поддерживают десятки разработчиков, на развитие/поддержку уходят хулионны денег. Вот вы сделайте «подобное», только ТЗ пока нет, но в общих чертах я написал(а)
Его смерть будет быстрой и легкой.
Как писали и 10 и 15 лет тому )
Кто выберет РНР для своего нового проекта?
Ну тут вообще-то не так уж и много вариантов для больших проектов: PHP, C# и Java (с производными JVM).
Больше я вообще не могу припомнить языков, которые могут обеспечить крутую масштабируемость на монолитах.
Сайт на laravel можно запустить за пару дней, и то большая часть времени уйдёт на фронтенд. Как много фреймворков на go и nose.js с которыми можно запустить сайт так же быстро?
Так себе троллинг.
У меня в активе php, golang, python и сейчас rust начался.
И для вэб проекта я выберу php, пусть и не пишу на нём года 4. Наилучший старт за минимальное время. И, как показала практика, php хватает полностью до масштабов тысяч запросов в секунду.
Я выберу, и куча Top 500 компаний выберет (SAP, Oracle). Потому что субъективное мнение мало что значит когда нужно быстро разрабатывать приложения для бизнеса.
имею наблюдение и за своим сайтиком на java — довольно частые попытки получить доступ к управлению сайтом — идет обращение к куче всевозможных страниц из перечня сайтов из cms на php (это не гугл и яндекс) т.е. заранее известны дыры через которые можно залезть.
А причина почему они вскрываются кроется в низком пороге входа и, соответственно, множестве малоопытных программистов.
Имею наблюдения за своими проектами на php — довольно частые попытки получить доступ к управлению сайтом, куча левых запросов на страницы из популярных CMSок и на дыры в веб-сервере и на известные веб-приложения и пакеты, том числе и для других языков программирования, но каким образом это говори о дырявости пыха и преимуществах в безопасности других технологий?
Лет 20 назад, когда выбрал PHP, как потом оказалось, в качестве основного языка для бэкенда, мне говорили "да не взлетит он". Последние лет 10 говорят "не сегодня, так завтра умрёт".
Написал тут на Go один микросервис небольшой — ощущение, что вернулся если не во времена PHP3, то PHP4 точно, разве что немного приправленных PSR и composer
P.S.RoR, Django, Node/Express пробовал — не зашло. Java со Spring/Hibernate выглядят понятно, хотя и излишне многословнр, как и экосистемы перегруженной, кажется перейти на них будет не сложно, но зачем? Но это основной резервный вариант если PHP всё же умрёт за ближайшие лет 20.
.Net Core с C# выглядит интересным по описаниям/туториалам, но никаких открытых проектов в интересной мне области не попадалось, чтобы нормально оценить как решаются (и тестируются — это важно) интересные мне бизнес-задач.
Ну на Go удобно писать простые штуки которые должны обрабатывать тучу данных, а вот сложные штуки с меньшим объемом данных уже упираются в простоту языка.
Любопытно. А где в такое упирались?
Я вижу скорость разработки аналогичных приложений нашими Go и PHP командами. Плюс сам пишу на обоих языках постоянно.
Если мне нужно будет сделать бакенд для прокачки пары десятков терабайт контента в облако — Go, написать для этого бакенда админку и систему биллинга — PHP.
У меня обратный опыт — Lazada, Alibaba — сложная логика заказов, скидок. Код изначально на php, итог на go получился если не проще, то таким же.
Но. Переписывали, имея пару умеющих DDD товарищей в команде.
Когда я ходил в школу PHP хоронили. Когда я пошел в универ — PHP хоронили. Когда я женился — PHP хоронили. Когда я устроился на работу веб-разработчиком — PHP хоронили. Да когда ж вы его похороните то.
Опять плохо вычищенный автоперевод…
Не смог читать, статья нуждается в переводе.
Можно сравнить php с медной телефонией, оно всё ещё используется (в основном, старшим поколением и организациями, у которого оно внедрено и работает)
Legacy можно назвать тот же Delphi и Pascal. Помню, когда я начинал писать на PHP, Delphi был везде. Самоделки и крупные проекты. Но пришла мода на веб, облака, контейнеры, и Dephi постепенно сходит на нет. В 2015 году на работе было пару программ на Delphi. Обе явно Legacy, потому что их уже никто не поддерживал, а сама программа была скорее средством доступа к архиву. Сколько они мне тогда крови попортили, потому что должны были обе быть установленными на одной машине и обе требовали BDE, при чём разных версий.
Ну а PHP вполне себе живёт и здравствует, особенно с выходом 7 версии. Веб и облака — это его родная стихия. Просто посмотрите сколько всего было добавлено от 7.0 до 7.4 (которая ещё не вышла, но скоро выйдет), язык активно развивается.
Я знаю, что Double Commander (аля Total Commander под Linux), TransGUI (панель управления для торрент клиента Transmission) на Lazarus делают. Да и вообще, даже если язык фактически мёртв, программисты то просто так никуда не исчезают. Мне сколько раз в чатике матрикса говорили, что PHP фу-фу-фу и пиши, мол, на том же Python. Вот только мои трудозатраты при этом вырастут в разы, а результат будет такой же. Также и с Delphi/Lazarus. Если есть специалисты и они реально могут сделать что-то полезное, то почему бы и нет.
Вот поэтому и можно считать, что Pascal, по сути, мёртвый язык. Мои примеры нифига не энтерпрайз, но при этом могут быть полезны.
Просто зашёл на hh.ru и поискал "язык программист" в своём регионе. Delphi — 9 вакансий, Ruby — 23 вакансии, Python — 137 вакансий, С++ — 153 вакансии, C — 217 вакансий, PHP — 227 вакансий, Java — 299 вакансий. Если PHP — Legacy, то что тогда другие?
Полистал вакансии по PHP. Есть всякое: поддержка текущих проектов, разработка новых проектов. Чаще всего требуется знание современных фреймворков, в том числе Yii2, Laravel. Написать что-то на первом можно было не более 5 лет назад, на втором побольше — не более 8. Оба фреймворка активно развиваются и имеют свежие релизы во второй половине этого года. Не понимаю как это можно назвать легаси. Я понимаю ещё чей-то код на PHP так назвать. Но к языку это явно отношение не имеет.
Ну, то что релизы были ещё не значит, что проекты на свежих релизах. Некоторые проекты начинаются уже на фреймворках, активная поддержка которых прекращена. Или на последнем издыхании году LTS. Например, сейчас можно встретить проекты на Laravel 5.x активная поддержка которых закончена больше 2 лет назад. И конкретных планов на обновление нет у ребят.
Да с 5.х на 6.х апнуться — дело 10ти минут. Там только очереди из фатальных были перелопачены, а так почти тоже самое. Это не с 4.х на новый мажорный релиз перелезать.
У меня грубый эстимейт апа с 5.4 на 6.0 — минимум две человеко-недели. На попытки обновиться "на лету" потратил несколько часов.
Хм, а что там поменялось? Я обновлялся недавно (месяца два назад, кажется) с 5.5 на 6.0 и всё что сделал — тыкнул номер версии в composer и всё.
На Делфи же мы вот пишем всякое. Под веб в том числе (появился тут отличный реймворк — UniGUI, он же, к слову, и бэкэнд).
Специалисты уйдут на другую работу и кто будет поддерживать это? найти паскальщика не просто, тем более на саппорт чужого кода
Паскальщик переучивается, по опыту, за месяц-полтора.
Да, руками на голом сервере пхп поднимается новичком за минуты, об остальных языках такого не скажешь. (Но это не точно )) )
Как по мне, то проблемі хостинга сейчас решаются контейнерами. Но докерфайл для них или типа того всё равно нужно написать и те же плюс-минус знания нужны, что и на голом сервере поднять. Не, есть, конечно образы типа LAMP в одном контейнере, или даже готовый WordPress. Но я как-то кним очень скептически отношусь.
Там достаточно только одной ноды и просто запуска node file.js с экспрессом например.
Дальше конечно все посложнее.
Для PHP тоже много не надо если уйти от php-fpm.
В остальном уйти не получится. Вам в любом случае понадобится чем-то запускать PHP.
UPD: Хотя ладно, можно запустить сервер на самом PHP тем же ReactPHP.
Само собой, просто нет смысла тянуть кучу зависимостей.
Мы запускаем через roadrunner: одной командой автоматом качается бинарник сервера, второй поднимается все приложение, статика, мониторинг и брокеры очередей.
Апач будет необходимо еще настроить, утилита в бинарном виде (go ставить не нужно, сама себя качает), конфиг часть проекта. В среднем я могу запустить проект за 30 секунд на голом сервере после composer update. Работать такая сборка будет раз в 20 быстрее апача.
P.S. Само собой для надежности нужно будет еще добавить супервизор, но пока rr не падал.
php7 + symfony4 просто сказка
Если говорить языком цифр, то вот статистика от w3tech:
80% бэкендов сайтов написано на PHP из них половина это CMS, а другая половина фреймворки или чистый php, т.е. 40% вебсайтов написано на фреймворках php (это я к тому, что даже если исключить говносайты на CMS, то все равно PHP явно доминирует по сравнению с другими языками)
пруфы:
https://w3techs.com/technologies/history_overview/programming_language/ms/y
https://w3techs.com/technologies/overview/content_management/all
Что касается конкурентов:
GO — займет нишу нагруженных микросервисов без сложной бизнес логики, но в вебсайты как таковые не пойдет, будет дополнять PHP, но не заменять его (вообще PHP+GO — идеальная пара)
Java/Kotlin — мобильная разработка + кросплатформенный десктоп + 2% энтерпрайза в вебе, в остальном будут вытеснены связкой php + go
Python — полностью уйдет в ML и научную сферу, в вебе уступит php, как более быстрому (7 версия), более массовому (в плане вебсайтов) и последнее время более активно развивающемуся
NodeJS — будет конкурировать с PHP в SPA, но в остальном без перспектив
Ruby — хорошая попытка, но нет… Язык явно умирает, а PHP фреймворки Symfony / Laravel так хороши, что никакой RoR уже не нужен
Perl — R.I.P.
Мой прогноз, PHP жив, жил и будет жить, сайты, особенно ориентированные на контент, ecommerce, социальную составляющую будут активно его использовать в новых проектах
P.S. Обратите внимание что вебсайт != веб в целом
Но люди, которые не знают пхп, подхватывают эту идею, и не зная истинного смысла фразы, когда ее пересказывают, продолжают свою цепочку мыслей, из серии«Пхп мертв» )
Про умирающий PHP, на мой взгляд, так часто говорят потому что одновременно существует 2 языка PHP… Первый, на котором пишут Symfony и Laravel — это язык использующий современные подходы, ничем не уступающий конкурентам. Второй — это язык, на котором написаны WordPress, Bitrix и другие популярные CMS.
В действительности заметных альтернатив PHP-шным CMS нет ( каким бы они не были legacy ). Да, PHP остается "популярным" за счет этих самых древних CMS, но ведь ни один другой язык не смог предложить ничего подобного. И, к сожалению, эти CMS — то самое PHP-legacy, которое делает его популярным, но и заставляет разработчиков ненавидеть язык.
Что касается не legacy, а современного PHP — в последние 5 лет развивался очень быстро и судя по всему будет продолжать. Symfony и Laravel задали новые стандарты качества. И современные подходы в разработке на PHP ничем не хуже таковых в альтернативных языках. В итоге по сей день PHP остается в списке языков из которых можно выбирать. PHP все еще востребован и удовлетворяет предъявляемым требованиям ( не без оговорок конечно, но в альтернативах — тоже ведь не всё идеально ).
Второй показатель это комьюнити и как язык развивается, так вот PHP развивается очень хороши и обновляется часто.
Третий показатель это фреймворки, их много. Отмечу Laravel который позволяет очень быстро разворачивать API, есть Symfony который похож на Spring (Java) и позволяет строить крупные системы с очень высокой степенью расширяемостью.
Будет ли жить PHP? Да, будет жить долго и активно развиваться. Потому-что это хороший инструмент, особенно для работы с бизнес логикой. Лично мне нравится делать связки из NodeJS\GO + PHP, где PHP отвечает за бизнес логику. Потому-что даже ORM в NestJS и рядом не близко с Doctrine.
Подходите к языкам, как к инструментам, подходите с умом!
Пятница вечером перед длинными праздниками, может быть...
Обсуждаем будущее PHP