Представлен первый альфа-выпуск новой ветки языка программирования PHP 8.4. Релиз намечен на 21 ноября. Основные новшества, уже доступные для тестирования или планируемые к реализации в PHP 8.4:...Подробнее: https://www.opennet.me/opennews/art.shtml?num=61499
Эй, а когда дженерики? С 2016 года прошло много времени, и JIT завезли, и +100500 оптимизаций завезли, каждый релиз всё ускоряют и ускоряют, а дженерики для них всё ещё сильно медленные?Вот бы у пыхи появился бы компилятор... Официальный
Никакой официальный компиль не может быть лучше kphp.
Если нужны дженерики, то специально для Вас разрабатывают ARA Language: https://ara-lang.io/generics/introduction.html
Спасибо, изучим!
> каждый релиз всё ускоряют и ускоряютПредставляю как ты удивишься ускорению, если запустишь движок PHP 4 на современном железе.
Ага, давай для каждого сайтика-визитки по вычислительному кластеру держать.
Сделать визитку статикой религия на позволяет?
а если PHP 1 ?
Вам сюда: https://www.peachpie.io/
Пхп на дотнет машине? Ну допустим.Дотнет ягодка
Php как всегда топчик.
Ты держишь список вверх ногами?
PHP топчик как способ вставки динамического текста в html, всё что нагородили сверху криво и своеобразно до абсурда.
А что, "голый" php уже умеет в наследование шаблонов? В том же джанге это из коробки... Да и сама идея смешивания собственно шаблона и исполняемого кода -- ну очень такое себе, помесь бульдога с носорогом. Смысл шаблонизатора -- в отделении источника данных от представления, а пых сваливает это в одну кучу by design.
А что, джанга теперь самостоятельный язык?
Нет, конечно, но поскольку пых шаблонизатор -- почему бы ему не уметь в возможности нормальных шаблонизаторов? И кстати, что насчет "самостоятельности" языка шаблонов в джанге? По итогу -- нагородили нечто, что гордо хочет считаться как бы языком программирования, но по факту шаблонизатор, который по возможностям и удобству сливает даже встроенному в джанго аналогу, и куче прочих -- тоже.
Эммм.. Вы путаете возможности языка и возможности фреймворка и его составных частей.Не хотите смешивать код и шаблон -- возьмите шаблонизатор и не смешивайте. На PHP есть тот же Twig. Это вообще вопрос не к языку, а скорее к тому, какие архитектурные слои в вашем приложении. Не совсем понимаю, чем принципиально конкретно Django отличается в этом смысле от того же Symfony. Anyway, человеческую архитектуру вам придётся строить при разработке приложения на чём угодно поверх фреймворка.
Хоите сравнить Django -- сравните с Symfoony, Zend, Laravel или Yii. Не против посмотреть на подобное сравнение.
Это вы путаете шаблонизатор с языком программирования. PHP -- шаблонизатор, соответственно, сравнивать его нужно с шаблонизаторами.
Если PHP -- шаблонизатор (что вобщем-то для начала неплохо пояснить и обосновать), то зачем тогда человечество написало шаблонизаторы для шаблонизатора?
> пояснить и обосноватьА как еще назвать html со вставками пыха как не шаблонами?
> зачем тогда человечество написало шаблонизаторы для шаблонизатора?
Видимо, потому что пых -- хреновый шаблонизатор, ч.т.д.
Где вы за последние 10 лет видели "html со вставками пыха"? На каком вообще языке сейчас так выглядят приложения?Какой язык программирования по вашему мнению является хорошим шаблонизатором из коробки без какого-либо дополнительного контриба?
Кто-то ещë им пользуется? Ну кроме дедов админов которые 100500 лет назад освоили это как замену хтмл
Я пользуюсь для быстрого написания RESTful API.
А где рестфул пишется медленно то? В руби, питоне и го это литерали пара строчек. Куда быстрее?
Посмотри в сторону хотя бы FastAPI и обзавидуйся.
Всё бы ничего, но дурацкая идея описывать роуты через декораторы. Роуты в Django удобнее imho.
Джанго до сих пор унылая синхронщина. Фастапи божественная асинхронщина.
Справедливости ради -- они работают над этим: https://django.fun/docs/django/5.0/topics/async/
Справедливости ради над этим работают уже миллион лет. А результат как у переписывания на раст фаерфокса. Т.е. Нет результата.
> Джанго до сих пор унылая синхронщина. Фастапи божественная асинхронщина.Ну, во-первых, асинхронщина там есть уже, с четвёртой версии более менее пользоваться уже можно, в пятой улучшили.
Во-вторых, а вам оно точно надо? В основном профит от асинхронных контроллеров когда нужно делать например кучу не зависящих друг от друга i/o операций типа http запросов куда-то или не связанных друг с другом запросов в БД. Но такое редкость, обычно нужно получить результат запроса и уже потом делать следующий и тут асинк бесполезен.
Ну и глобальный цикл событий, в котором обрабатываются все запросы к сервису, не всегда хорошо.
В чём именно весь ужас такого подхода? Да и API на джанго -- таки уже не пара строк кода, хотя тоже довольно вменяемо.
Вкусовщина, но например если я использую сторонний модуль, в джанге можно переопределить урлы, не внося правок в чужой код.
APIRouter спасёт гиганта мысли и отца русской демократии!
Ну вот как-то переусложнили всё. Красиво только в хелловрлде, а чуть что сложнее то начинается какая-то дичь. https://fastapi.tiangolo.com/tutorial/bigger-applications/
Я боюсь, что это в любом движке так... В том же джанге если шаг-два в сторону от канонических подходов -- дичь начинается не хуже )
> Посмотри в сторону хотя бы FastAPI и обзавидуйся.Результат напичкивания питоном в юниверах сказывается...
Ты хоть сравнивал скорость с пыхом ? Только честно
Я понимаю если б ты вякнул там про just, mormot, atreugo...
А ты сравнивал? Давай, цифры в студию) Только не голое апи, а сразу с БД, с кафкой и тп.
> А ты сравнивал? Давай, цифры в студию) Только не голое апи, а
> сразу с БД, с кафкой и тп.У тебя еще и гуглом проблемы?
https://www.techempower.com/benchmarks/#section=data-r22&hw=...
> только не голое апи, а сразу с БД, с кафкой и тп.
А че сразу не мордо книгу или VK ? И еще и на халяву небось надо
Хм. Когда я сравниваю скорость работы кода на php с плюсами, например, и пых, разумеется, сливает в разы, пыхеры в один голос кричат, что в вебе скорость в рантайме -- дело десятое, главное -- скорость и удобство разработки. Так что я им верю, и сравниваю в первую очередь дизайн языка и веб-фреймворков, а тут пыху даже до питона как до Луны.
> а тут пыху даже до питона как до Луны.балабол... на линк на вверху кликни хотя бы
https://programming-language-benchmarks.vercel.app/php-vs-py...Сюда?
> https://programming-language-benchmarks.vercel.app/php-vs-py...
> Сюда?Вы когда линки ищите для пруфов, читайте не только заголовки.
Где там сравнения с питоном? pypy, cpython, piston ? Вы в курсе вообще что это?
Если беретесь набросить, то сравнивайте хотя с аналогами, типа falcon, HipHop и т.д
А чем надо и что в PHP такого уж плохого?
Динамика, отсутствие какой-либо строгости, плохой дизайн и дубовая семантика из 90х.
Ну если уж люди на сишечке пишут…
Никто не позиционирует сишечку как простой скриптовый язык для быстрого клепания веб-приложух. В отличие от.
Так и php не позиционируют лет уж... много со времен php4 прошло, да?
А как позиционируют сейчас?
А никак. Смузихлебов он отпугивает: слишком уж там всё дремучее. Отголоски перла, с именами переменными, начинающимися со знака доллара. Долгое время отсутствовал пакетный менеджер, неймспейсы, вообще всего подряд в пыхе не было или нет до сих пор. Какой-то невнятный нейминг в стд либе, а дизайн -- адская мешанина перла, си и явы.Итак, смузихлебов пых отпугивает. Посмотрим на, скажем так, противоположностей смузихлебов: профессионалов программирования, со строгой типизацией, структурами данных, алгоритмами и так далее. Найдут ли они для себя что-нибудь в пыхе? Нет. Статья "ПХП: Фрактал плохого дизайна" перечисляет ряд непростительных ошибок пыха. Даже если их исправят (спойлер: вроде как большинство пунктов исправили) -- пых навсегда останется в памяти как недоязычок, который -- внимание! -- не позволяет обратиться к индексу массива, вернувшегося из функции: foo()[42]. Сейчас позволяет, но в историю пых УЖЕ навсегда вошел как недоязычок, который не позволяет.
Итак, смузихлебов пых не привлекает. Профессионалов программирования -- тоже. Остаются... непрограммисты. Ничего удивительного в этом нет, ибо пых -- это не язык программирования, а всего лишь шаблонизатор. Доказательство: конструкция <?php в начале файла. Допустим, язык программирования Си не имеет маркера в начале файла, что "вот сейчас пойдет код на си". Раст, яваскрипт, ява, хаскель... Никто из них такого маркера не имеет. А вот шаблонизаторы имеют.
И тут #!/bin/bash даже как-то и обидно стало...
> И тут #!/bin/bash даже как-то и обидно стало...Баш -- это в первую очередь оболочка, как repl. В значительнейшем (99%) числе случаев ты просто вызываешь команды: имя программы/функции, за которым следует список аргументов. Поэтому по дефолту слова воспринимаются как строки. foo bar baz -- это то же, что spawn("foo", ["bar", "baz"]). Использование переменных в баше -- гораздо более редкая вещь, поэтому использование доллара там оправдано. Ну в самом деле, а как еще отличить слОво-строку от слОва-переменной? Ну а в пыхе строки один хрен оборачиваешь в кавычки, так что нахрена там к Identifier еще добавлять знак доллара спереди -- не ясно. Хотя вроде ясно: доллар -- это просто карго-культ из времен, когда перл еще был популярен.
> И тут #!/bin/bash даже как-то и обидно стало...Хотя видимо ты имел в виду наличие шебанга. Он в баше не обязателен, если запускаешь скрипт не напрямую: bash my_script.sh. И вообще, это не башовская вещь, а линуксовая: именно линукс читает первую строку и воспринимает ее как путь к интерпретатору, и указывается там не название языка. Например, в языке JavaScript интерпретатором может оказаться #!/usr/bin/node, а не гипотетический #!javascript.
Ну а в пыхе конструкция <?php обязательна для начала работы шаблонизатора. Иначе даже прямой вызов php my_script.php просто выплюнет тебе исходники в stdout без их выполнения. ЧТД: пых -- это просто шаблонизатор.
Оспыдя. Ну нахрена брать из головы очень произвольный критерий, а потом рассказывать про НАСТОЯЩИХ шотландцев и "это другое!"?
Чем <?= ?> (Да-да, <?php не обязателен, так тоже можно) отличается от begin...end? О чем должна свидетельствовать возможность php -r?
> Чем <?= ?> (Да-да, <?php не обязателен, так тоже можно) отличается от begin...end?У пыха уже есть аналог begin-end: это фигурные скобки, совсем как в си, яве, яваскрипте и т. д. Это тебе намек на то, что ты пытаешься сравнивать несравниваемое.
А отличается вот чем: там, где у пыха начинается <?php, в других языках *заканчивается* вывод в stdout. Там, где у пыха заканчивается ?>, в других языках *начинается* вывод в stdout. Сравним:
if ($hello) {
?>
Вот и закончился php-код (end).
Идет дефолтное поведение шаблонизатора -- выплевывать в stdout.
А теперь снова начинается php-код (begin).
<?php
}Сравним это с языком программирования:
if (hello) {
stdout.write(`
Вот и начался контент для вывода в stdout (begin).
А теперь он заканчивается (end).
`);
}> О чем должна свидетельствовать возможность php -r?
О том, что в командную строку можно запихнуть php-код. Но не в файл. Файл по прежнему должен -- обязан! -- начинаться с <?php. А в языках программирования такого требования нет.
Таким образом, буквально любой php-файл начинается с конструкции "заканчиваем писать в stdout". Ну разве не лол? Лол, и еще какой.
Ну, охота вам позориться с рассказами о том, что основной характеристической единицей "языка программирования" является наличие\отсутствие в начале файла тегов\ключевых слов - что я вам, мешать буду? Нет, не буду. Мне с того - не жарко, не холодно. Пыху - тоже. Вам, предполагаю, так же однофигственно - а читателям хоть с чего поржать будет...
Пых - не "язык программирования", шотландцы - не настоящие, это - другое! Все понятно, вопросов нет.
По сути ответить тебе значит нечего. А про "аргумент с шотландцами" все-таки почитай детальнее, ты его здесь приводишь не к месту. Вообще, рекомендую книгу "Искусство спора" Поварнина, чтобы больше так не позориться -- тебе твой позор не очевиден, а остальные явно видят, что ты и шебанги приплел ни к селу ни к городу, и шотландцев своих.А вот мой аргумент от того, что пых -- не язык программирования, наоборот понижает требования к нему: на протяжение всех этих лет пых получал сотни упреков, почему он устроен так, а не эдак, но если начать считать его лишь шаблонизатором (коим он и является), то все вопросы сразу снимаются: пых тупо не предназначен для программирования, отсюда дичайший парсер, отсюда дичайший франкенштейн вместо дизайна, отсюда все остальное.
Да-да, вы меня убедили, я с вами полностью согласился! Все так и есть - если в начале файла с исходными кодами есть ключевое слово или тэг - то это не "язык программирования", а если его нет - то это оно и есть! Очевидно.
Поправка: если интерпретатор по умолчанию выплевывает исходники в stdout, а вычисления делает только в специально выделенных местах (<?php ?> в пыхе, {{ }} и {{% %}} у других), то это шаблонизатор, а не ЯП. И этот маркер может стоять в любом месте, а не только в начале файла (это чтоб у тебя снова не появился глупейший аргумент от шебангов).
> Поправка: если интерпретатор по умолчанию выплевывает исходники в stdout, а вычисления
> делает только в специально выделенных местах (<?php ?> в пыхе, {{
> }} и {{% %}} у других), то это шаблонизатор, а не
> ЯП. И этот маркер может стоять в любом месте, а не
> только в начале файла (это чтоб у тебя снова не появился
> глупейший аргумент от шебангов).И брюки превращаются, превращаются брюки... "Ничего удивительного в этом нет, ибо пых -- это не язык программирования, а всего лишь шаблонизатор. Доказательство: конструкция <?php в начале файла. Допустим, язык программирования Си не имеет маркера в начале файла, что "вот сейчас пойдет код на си". Раст, яваскрипт, ява, хаскель... Никто из них такого маркера не имеет. А вот шаблонизаторы имеют."
И килт должен быть в клетку, и спорран не меньше двух жменей объемом, и вообще - настоящие шотландцы в низинах не живут...
А по сути есть что сказать? А то пока только рандомные цитатки суешь.
> А по сути есть что сказать? А то пока только рандомные цитатки
> суешь.А смысл? Посмотреть, какие еще характеристики вы добавите к описанию Ъ-скотчмана? Это забавно только первую пару раундов...
> Допустим, язык программирования Си не имеет маркера в начале файла, что "вот сейчас пойдет код на си". Раст, яваскрипт, ява, хаскель... Никто из них такого маркера не имеет.И тут из прошлого выглядывает Pascal.
> А как позиционируют сейчас?Да так же, как и десять лет назад - "скриптовый язык общего назначения", не?
И снова спрашивается вопрос: назови хотя бы две успешных не-веб софтины на пыхе. Какой же он "общего назначения"? Перешаблонизатор, недоязык.
> И снова спрашивается вопрос: назови хотя бы две успешных не-веб софтины на
> пыхе. Какой же он "общего назначения"? Перешаблонизатор, недоязык.Язык - "общего назначения". Используется - преимущественно для написания всякой вебни. Что не так-то? Язык != framework != экосистеме != сообществу != legacy codebase != да много чему "не равно".
Если даже PHP != "personal home page", а PHP == PHP: Hypertext Preprocessor, то пых начиная с названия сам себя позиционирует как препроцессор гипертекста, сиречь шаблонизатор, без намека на какое-то "общее назначение". О чем спор?
> Если даже PHP != "personal home page", а PHP == PHP: Hypertext
> Preprocessor, то пых начиная с названия сам себя позиционирует как препроцессор
> гипертекста, сиречь шаблонизатор, без намека на какое-то "общее назначение". О чем
> спор?Нумерология.жпг
Акроним пришлось изобретать из уже имевшихся букАв, да?
Но почему то все же не "PHP: High Performance" или "PHP: Holey Pumpkin"... Хотя вот последнее было бы к месту...
> Но почему то все же не "PHP: High Performance" или "PHP: Holey
> Pumpkin"... Хотя вот последнее было бы к месту...Действительно. Почему RedHat? По тому, что они занимаются производством головных уборов - это же ОЧЕВИДНО! Ведь никогда ж такого не было, чтобы название не отражало весь набор функциональных возможностей, позиционирования продукта и вот этого вот всего!
А, то есть Hypertext Preprocessor примерно настолько же соответствует назначению пыха, что и Holey Pumpkin? Ну ок, значит и для этого он не годен, буду знать, спасибо.
> А, то есть Hypertext Preprocessor примерно настолько же соответствует назначению пыха,
> что и Holey Pumpkin? Ну ок, значит и для этого он
> не годен, буду знать, спасибо.Да-да, вы абсолютно правы. RH и головные уборы, IBM и калькуляторы, Microsoft и однострочники, apache и индейцы... Вы продолжайте нейминг-аналитику, продолжайте!
Раз уж пых такой замечательный, может, назовешь хотя бы пару не веб приложений на пыхе? Ну, по идее же такой быстрый и простой язык хочется использовать везде?
Каждый ЯП должен быть применён по месту своего применения и не должен заменять другой специализированный язык!Место применения PHP - web-сайты, web-сервисы, а также скрипты автоматизации с которыми не справляется bash, это место применения почти любого скриптового языка.
Я на php консольную игру с компом в крестики-нолики написал. Подойдёт?
Упс, а тут чуть раньше некоторые товарищи утверждают, что пых -- ЯП общего назначения. Вы там договоритесь между собой, что ли... Но соглашусь, крестики-нолики -- вполне себе уровень пыха. Пусть там и остается.
Вы с perl часом не попутали?
В PHP хоть и довольно кривая и костыльная статика, но всё же она есть.
Хотя в большинстве задач для которых нужен скриптовый язык она не нужна.
Семантика тут лучшая C-подобная среди всех динамических языков в отличие от неочевидной в awk/perl и откровенно убогой в python/go.
Строгость тут тоже вполне достаточная, в отличие от девиза perl.
По сравнению с Node.js и JavaScript PHP не так уж и плох для паутинного программирования.
Есть возможность, начиная с версии 7, включить строгую типизацию в принципе. Для этого существеут директива strict_types.Кроме того, что вам мешает использовать type hints. Пишите в этом стиле:
/**
* @param $subscription Subscription
* @param $addedItems bool
* @param $removedItems bool
* @param $itemsAdded array
* @param $itemsRemoved array
* @return bool
*/
public function trackUpdatedSubscription(
$subscription,
$addedItems = false,
$removedItems = false,
$itemsAdded = [],
$itemsRemoved = []
) : bool {
https://habr.com/ru/articles/142140/ (оригинал https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design)
> А чем надоУдобных популярных фреймворков бы. А то сейчас почему-то Laravel популярен, от которого ощущения как от Битрикса. Symfony тоже не особо фонтан.
symfony-то чем не угодил? если ларавель говнецо на массивах,то symfony вполне по уму сделан.
Symfony это феерический оверинжиниринг в вакууме, где классы пишутся ради классов, а усложнения ради усложнений.
ну, это глупость. там просто более-менее серьезный подход, код и область применения.
Просто интересно. Действительно инетресно. Не пытаюсь накинуть говна на вентилятор. Как вы относитесь к Java и, например, Spring? Это тоже с вашей точки зрения хрень и классы ради классов? Возможно вам в принципе не нравится ООП? Есть, конечно, альтернативные подходы, но вроде как ЯП развиваются в сторону ООП. Нет?
Могу сказать одно: Spring в каждый второй проект не пихают, просто лишь для того, чтобы развести заказчика на бабло, и где по-факту достаточно сделать что-то вроде include header.php и footer.php.
> Могу сказать одно: Spring в каждый второй проект не пихают, просто лишь
> для того, чтобы развести заказчика на бабло, и где по-факту достаточно
> сделать что-то вроде include header.php и footer.php.Давайте так.
Если вы хотите что-то жирное с ООП и архитектурой, вы можете взять Symfony, накидать поверх архитектуру и будет вам счастье (надеюсь, что мы говорим на одном языке и понимаем, что фреймворк по факту сам не является готовым архитектурным решением). Приложения имеют свойство разрастаться вместе с бизнесом, который они обслуживают, поэтому подход Symfony, который изначально предполагает гибкость решений, мне нравится.
Если вы хотите быстро и просто, вы можете взять микрофреймворк. Например, какой-нибудь Slim.
Если вы хотите что-то ещё попроще, просто накидайте композером своих любимых компонентов и играйтесь с ними так, как вам хочется. Я такой подход в принципе не люблю, потому что потом автор становится незаменимым разработчиком (только он посвещён в тонкости того, как это всё работает), что бизнесу не особо выгодно. Ещё потому что при таком подходе я, например, потом дивлюсь архитектурными решениями таких товарищей (и я сейчас не конкретно про PHP). Но будет проще и быстрее без оверинжиниринга.
Если вы хотите какое-нибудь решение под задачу, то есть и такие. Например, на Java есть Drop Wizard, чтобы быстро накидать Rest API. На PHP есть Laminas.
То есть в целом есть много разных подходов и решений на PHP. Вы можете выбрать любое.
P.S. Я не то чтобы "адвокат PHP", но не вижу причин для нападок на язык. Вполне себе в нём есть взрослая инфраструктура и куча разных решений. Сама по себе технология не то чтобы хуже других на мой вкус.
> Удобных популярных фреймворков бы.PHP сам по себе и есть фреймворк. Учите матчасть и держитесь подальше от ютубных "гуру".
Как в этом замечательном фреймворке вызвать ORM?
PHP это шаблонизатор. Для того чтобы быть фреймворком этого мало.
> Кто-то ещë им пользуется?Бóльшая часть веба? Почему? Потому что нет ничего проще, чем перекинуть WP через FTP и начать наполнять контент.
Только из-за легаси. Никто в здравом уме не станет начинать новый проект на пыхе в 2024.
Обязательно стрелять из пушки по воробьям? Прекращайте мыслить в масштабах "проектов", помимо них, есть ещё и "сайты", которые ещё худо-бедно не вытеснены соцсетями и маркетплейсами.
А зачем на сайте динамика? SSG гораздо лучше пхп и в поддержке и в чистоте результата и в безопасности.
а на чём начинает?
А на чём надо начинать в 2024 году?
А какой язык тебе лично больше нравится? Веб-фреймворки есть сейчас практически под любой ЯП. В чем тонкий смысл гальванизировать пыхотрупчик?
Похоже на переставление кроватей. Все этики скобочки, вопросики, одним словом мощный релиз...
В целом да, заколебали сахаром заниматься. Нет в core сейчас сильных программеров, кроме Стогова. А он на JIT фуллтайм сидит.
удивляюсь тому, насколько пых отстает от всей остальной индустрии. Про дженерики уже сказали: в каком там году они были добавлены в Java? геттеры/сеттеры уже давно были в яваскрипте. А вот new MyClass()->method() говорит о том, что они до сих пор не могут нормально допилить свой лексер/парсер. Помню времена, когда пых не умел даже в обращение к индексу возвращенного из функции массива: get_hello()[42]. Пипец одним словом. Я вообще от всех скрываю, что в юности зашкварился об пых. Если бы я шырялся по падикам в поисках закладок, -- это было бы более достойным занятием, чем кодить на Персонал Хоум Пейдж (пхп).
да не, улучшение по new MyClass()->method() один чувак предложил, чем неимоверное гордился в своей тележной группе. Было б чем, фуфломицин и то полезнее, чем его "улучшение"
> дженерикиА теперь скажи нафига они вообще нужны в скриптовом языке для создания веба?
> А теперь скажи нафига они вообще нужны в скриптовом языке для создания веба?Ну как зачем? Вы никогда не видили как собаки за своим хвостом гоняются когда им делать нечего?Сперва сделать из нетипизированных переменных - типизированные, а потом через дженерики обратно. Круто же !
> кодить на Персонал Хоум Пейдж (пхп).Чувак, ты очень сильно отстал от жизни, так он назывался несколько десятилетий назад, и уже очень давно зовется:
PHP stands for PHP: Hypertext Preprocessor.
Нет, ты не прав. Парсер Попов давно допилил. То, что скобки для вызова метода нужны были - это просто небольшая правка, потому что так привыкли в других языках.
А отставание в модных фичах обусловлено отсутствием нормальной core команды на зарплате.
PHP как всегда... В большинстве языков nullable тип обозначается через постфикс (Book?), они же делают через префикс (?Book). Буквально так же, только по-своему, и это можно сказать практически про весь синтаксис.
А так язык неплохой, да, и хорошо, что он активно развивается.
В нормальных языках не изобретают костыль специально для nullable типов, а используют Maybe a, если это Haskell, либо 'a option, если это Ocaml.
> В нормальных языках ...Ты сам то нормальный, если называешь "не нормальным" язык, на которм львиная доля веба держится, в отличие от "правильных" хаскеля и окамла?
Правильный язык, - это тот, на котором можно быстро написать и легко сопровождать логику, язык с легко понимаемой документацией, язык которой развивается и обязательно поддерживается и естесвенно должен быть "right tool for a particular job"
>быстро написать и легко сопровождать логикуТолько если задача не сложнее перекладывания пары json-ов
>язык которой развиваетсяСпустя пару десятилетий в языке появляется null safety, когда в некоторых языках он из коробки. Потрясающая скорость развития.
>>быстро написать и легко сопровождать логику
> Только если задача не сложнее перекладывания пары json-ов
>>язык которой развивается
> Спустя пару десятилетий в языке появляется null safety, когда в некоторых языках
> он из коробки. Потрясающая скорость развития.И тут сишечке прям обидно сделалось...
> Только если задача не сложнее перекладывания пары json-овморда книга вон, вконтакте, на таком перекладывании неплохо так поднялись...
Но я понимаю, у вас то оно "всё сурьезней"...> Спустя пару десятилетий в языке появляется null safety, когда в некоторых языках он из коробки.
"вам шашечки или ехать"?
>вон, вконтакте, на таком перекладывании неплохо так поднялись...Почитайте, какие велосипеды они накрутили, чтобы это у них работало. У них там свой собственный диалект, неспособный запускать произвольный php-код, общего с обычным php - синтаксис и несколько методов из стандартной библиотеки.
>"вам шашечки или ехать"?Php всё ещё далёк до нормальной типизации, так как на данный момент это просто немного подвинет ошибку вверх по стеку. И если в haskell или ocaml ошибка будет заметна во время компиляции, то в php - только во время выполнения. Далеко на таких костылях не уехать.
>Далеко на таких костылях не уехать.вы кажется не понимате как устроен мир, если не видите очевидной статистики
>Те, кто не понимает Linux, обречены воссоздать его. Только хуже.В хаках для php уже частично переизобрели вывод типов, aot компиляцияю, неявную статическую типизацию. Конечно, это всё ещё не haskell или ocaml, но они значительно больше к нему приблизились, чем было в начале. Довольно удивительно, но что php, что c# медленно впитывают те концепции, что были в функциональном программировании среди языков, являющимися их ровесниками. С каждым новым мажорным релизом, они всё больше отличаются от своей первоначальной сути. В новых версиях собираются запретить обращаться к необъявленным свойствам. Однако из-за груза легаси, они так и не смогут приблизится к изяществу функциональных языков.
ну ты вот видишь, и по прежнему ничего не понимаешь.Если бы ты был мордокнигой - или хотя бы скрепным ее клоном, с бесплатно послушать в mp3 - ты бы тоже мог. Потому что у тебя есть собственная стая разработчиков (и деньги наловить в джунглях новых в нужном количестве и в любой момент) и ты не зависишь от желания левой пятки полутора стариков "а давай объявим неподдерживаемыми все версии кроме самой наираспоследней - пусть-ка наши довольные пользователи попердолятся!"
А остальным оно низачем уже не надо.
>язык которой развивается и обязательно поддерживаетсяВ жопу такое развитие и поддержку. Куча несовместимых версий, поддержку старых версий мгновенно бросают.. К примеру, есть сайт на первой джумле, которая, разумеется, не работает на современных пхп. Старые версии пхп , на которых та джумла запускается, как минимум дырявые, а как максимум тупо не собираются в современном окружении. И кто и за какие деньги должен мигрировать существующий сайт с 1000ю документов и сложной структурой на современную версию джумлы, работающую на современной версии пхп? Автоматическая миграция не прокатывает. И не надо мне говорить, что сам дурак, что с джумлой связался - не я это делал 15 лет назад, да и какая разница... Оно ДОЛЖНО работать, ДОЛЖНА быть обратная совместимость или поддержка старых версрй, иначе это просто чье-то безответственное хобби и развлечение, а не развитие "языка".
Творения на перле работают и через 20 лет. Да что там, проект на дельфи 2006 года недавно прекрасно собрался современным компилятором.
А пхп является чем угодно, но не нормальным средством для работы. Пилите, Шура, пилите, через 3 года будете перепиливать, обплевавшись...
>>язык которой развивается и обязательно поддерживается
> В жопу такое развитие и поддержку. Куча несовместимых версий,Вы вероятно про питон не слышали, как впрочем этим многие грешат
> поддержку старых версий мгновенно бросают..
Ерунда, большинство кода написанного под 5-ку работает до сих пор с наименьшими корректировками
> К примеру, есть сайт на первой джумле, которая, разумеется, не работает на современных пхп.
А разве это не к джумле вопрос?
> И кто и за какие деньги должен мигрировать существующий сайт с 1000ю документов и сложной структурой на современную версию джумлы, работающую на современной версии пхп?
И какой это софт этим не грешит? Ну разве что mumps, но то отдтельный разговор
> Автоматическая миграция не прокатывает.
Здесь про машину, а не про водителей. Причем здесь конкретный софт и язык, на котором он был написан?
> И не надо мне говорить, что сам дурак, что с джумлой
> связался - не я это делал 15 лет назад, да и
> какая разница...Да таких проблем валом почти со всеми языками, акромя sed, awk... ну вы поняли, - классика
> Оно ДОЛЖНО работать, ДОЛЖНА быть обратная совместимость или поддержка
> старых версрй, иначе это просто чье-то безответственное хобби и развлечение, а
> не развитие "языка".Там наверху народ плачется за новые плюшки (ну не могут они без дженериков в языке который по дефолту и не имеет типов), их добавляют по просьбе кодеров и в итоге пых превратился уже в вполне такой интерпрайзный язык, кодеры прыгают на новые плюшки и как итог - проблема не в языке, а кодерах, которые решили поиграться со "взрослыми" фишками, хотя оно нах там не укакалось, а результат - то, на что вы жалуетесь, несовместимость ПРОДУКТА написанного на НОВЫХ фишках языка, но язык то здесь при чем если джумла не супортит свой код?
> Творения на перле работают и через 20 лет.
Ну вот это мягко говоря не правда, даже если вы будете юзать use х.хх, то обломы тоже будут.
Вы на досуге почитайте про интерполяцию массивов между 5.4 и следующими версиями, а еще про юникод почитайте и фан между 5.6 и 5.8 версиями, и smart-match в 5.10 и т.д и т.п.
> на дельфи 2006 года недавно прекрасно собрался современным компилятором.И ExpressQuantumTreelist v.4 у вас тоже работает в 2010+ дельфях?
> А пхп является чем угодно, но не нормальным средством для работы. Пилите,
> Шура, пилите, через 3 года будете перепиливать, обплевавшись...Гон, каких то там таких кардинальных изменений в языке где то с 5-й версии, которые тяжело было бы подправить под новые версии, по большому счету нет
>поддержку старых версий мгновенно бросаютБесплатная поддержка одной единственной версии - 4 года, версии выходят раз в год. Можно пару лет бездельничать, а потом сразу через версию перескакивать. Иногда на минорные ветки можно перейти вообще без правок. Интересно, чем же вы таким заняты, что за четыре года не смогли поднять версию?
> Можно пару лет бездельничать,в этом и проблема - что ты ничем кроме безделья не занят.
> Интересно, чем же вы таким заняты, что за четыре года не смогли поднять версию?
развитием проекта, например. Сюрприз. Они иногда бывают посложнее статической странички у помойкохостера.
Поэтому опеннет на перле.
> не я это делал 15 лет назад15 лет назад не было принято бросать поддержку языка каждые четыре года (т.е. меньше чем иной проект делается)
Тогда все еще казалось что это - хороший выбор.
Я все жду, когда добавят возможность огрантчивать область видимости переменной только в рамках текущего блока, т.е. как let и const в JavaScript.
Вот этот синтаксис пропертей выглядит как говно. То у тебя отдельно блок определяющий свойства объекта и отдельно блок определяющий поведение. А тут всё вперемешку. А главное нахрена? Есть же сеттеры. Если только для случаев кривого дизайна когда изначально опубликованы проперти, а потом потребовалось повесить какое-то поведение при изменении добавить
А кто скажет, в пых уже завезли множества, словари, списки, вот это вот всё? Или за всех по прежнему отдувается убогонький ассоциативный массивчик? Варианты реализации как надстройки над ним же не в счет.
Не завезли. Проблема пхп в том, что его дизайнят эксперты по пхп, а не эксперты по программированию =)
Ровно так же, как и в жабоскрипте.
pecl модулем есть https://pecl.php.net/package/ds в ядро, к сожалению, так и не протащили.
Чем ассоциативный массивчик не устраивает вас как словарь?
Хотя бы уже тем, что реализует кучу функционала, не нужного для словаря, а предназначенного для его (ассоциативного массивчика) использования в роли всех прочих структур данных. Я подозреваю, что сами разработчики не дадут вменяемой оценки времени доступа в таком "словаре" из-за всех костылей и рюшечек.
Удивительно, парой фраз поныть, что чего-то нет, и есть чтото лишнее.
> множестваЕсть в pecl: https://www.php.net/manual/en/class.ds-set.php. Для простейших случаев, когда Set<string> или Set<number>, достаточно ассоциативных массивов с фиксированным значением каждого ключа (null сойдет).
> словари
SplObjectStorage
> списки
питонист? ;) а какой список - FixedArray, Linked List, Queue, Stack? Это всё есть в SPL.
Всё равно большинство сайтов пишутся в стиле PHP 4. Эти новые финтифлюшки нужны чуть более чем никому. И нет никого кто бы мог это опровергнуть.
Плюс тонны легаси, которые никто не будет перекраивать вдоль и поперек.
Только копеечные поделки. Коммерческая разработка на фреймворках, а вот фреймворки уже по полной используют новые фичи.
Дружище, ты крези? Большинство файлов пишуется на фреймворках, а там ничего нет от ПХП4.
Оно ещё живо? Им практически никто не пользуется, есть Ява, какой смысл в Пхп ?
> есть ЯваВордпресс с вукомерс уже переписали на джава? Как ты это будешь перекидывать по FTP на shared-хостера за $3 в месяц?
>Вордпресс с вукомерс уже переписали на джава*открыв список CVE для woo* боюсь, там даже джава не поможет...
> *открыв список CVE для woo*Боюсь, это мало актуально для какого-нибудь магазинчика нижнего белья ручной работы на 20 позиций товара с процессингом через PayPal.
Такому магазинчику не нужен ни пхп, ни фтп, а хостер за 3$ — это слишком дорого. Достаточно движка статических сайтов типа Hugo и S3. Будет дешевле 3$ в месяц, при космической надёжности и скорости.
ява устарела гораздо сильнее.
> ява устарела гораздо сильнее.Ява как "язык"... да и то, вряд ли. Со времен 11 мноооого воды утекло - даже если какой kotlin не поминать, а уж как "экосистема"... Но "устаревает", да. Несмотря на "реновации".
> Со времен 11Какой 11, кек, в проде поголовно 8 стоят.
> класс \Dom\HTMLDocument, поддерживающий корректный разбор разметки HTML5Ггг. Да неужели!?
Пыха всегда ассоциируется с чем-то тёплым, ламповым. В своё время, где-то в 2007 году, много кода нагенерировал на этом чуде. Претензии некоторых товарищей совсем непонятны, ведь язык предоставляет возможностей даже больше, чем нужно для веба.
> ведь язык предоставляет возможностей даже больше, чем нужноПожалуй соглашусь https://i.pinimg.com/736x/90/79/66/907966c56175a9a439f001b68...
> много кода нагенерировал на этом чуде
Генерировать можно много и на другом чуде. Только с каких пор это является качественной метрикой?
https://www.youtube.com/watch?v=r3Jzcz7-BnUАга, давайте, расскажите мне про "пхп только для веба".
И это вы еще полнофункциональное ДЕ не видели.
Спасибо, рассмешил. Напомнило: https://www.youtube.com/watch?v=xP5-iIeKXE8
Что именно тебе смешно?Что существует быстрое, удобное, красивое, нетребовательное ДЕ, к тому же писанное на всем ненавистном PHP, а ты в это время срачишься в темах "ЖирноГном vs ТолстоКеды" ?)
Кстати про жирность. Например плагин индикатора языков для панели - 140 строчек изящного PHP-кода. Посмотрел из интереса такой же плагин для lxpanel - 2500 строчек С-лапши. А работает все равно медленнее =)
Не ври себе и опеннету, кучка плагинов к lxde еще не DE ))> изящного PHP-кода
В цирк я больше не пойду! Тут гораздо смешнее!
> $menu_iten->connect(“activate”, function({$widget) {
> exec(”/system/php/bin/php /ssd/supreme-dev/control/index.php lang > /dev/null &");
> });не поверишь, шелл-скрипт тут будет куда "изящнее" и хотя бы по теме
> function write_1x_conf ($group, $key. $value)
> {
> // bla-bla ....
> global $CURRENT_USER;
> // bla-bla ....
> }Мамка не говорила в детстве, что глобальные переменные -- фу? А, ну да, это ж пых...
Дальше код не смотрел. Уныло.
> А работает все равно медленнее =)
Как замерял? Результаты в студию.
> Не ври себе и опеннету, кучка плагинов к lxde еще не DE ))В смысле плагинов?
Это вообще-то именно DE как оно есть - со своей сессией, демоном настроек, рабочим столом, панелью, настройками и интеграцией.
Но да, до последней версии оно юзало lxsession для перерисовки тем и иконок, потому что сам GTK в это не умеет. Сейчас это делается через xsettingsd> В цирк я больше не пойду! Тут гораздо смешнее!
Ну так смейся, кто тебе мешает. От твоего смеха данная система не будет работать ни лучше, ни хуже.
> не поверишь, шелл-скрипт тут будет куда "изящнее" и хотя бы по теме
Конечно не поверю. Хотя бы потому что оно работает идеально.
> Мамка не говорила в детстве, что глобальные переменные -- фу? А, ну да, это ж пых...
Это десктоп, а не сервер. Если бы ты почаще заглядывал в код твоих ДЕ, ты бы видел что там половина переменных объявлена глобально.
> Дальше код не смотрел. Уныло.
Ты всегда можешь сделать правильнее.
> Как замерял? Результаты в студию.
Рукой с секундомером))
Я не могу понять, с чем именно ты споришь?
Исходный комментарий перечитай, и перестань нести ерунду. А лучше похвастайся своим видением рабочего окружения.
Скорее бы уже закончилось изнасилование синтаксиса РНР !
Думаю что после этого должен появиться другой язык web-сценариев,
с НОРМАЛЬНЫМ, ЧЕЛОВЕКОЧИТАЕМЫМ синтаксисом !!!!
> Скорее бы уже закончилось изнасилование синтаксиса РНР !
> Думаю что после этого должен появиться другой язык web-сценариев,
> с НОРМАЛЬНЫМ, ЧЕЛОВЕКОЧИТАЕМЫМ синтаксисом !!!!1с чтоли?
Как ни странно, но C-подобный синтаксис, за исключением некоторых операторов - наиболее читабельный и легкий.Пацкальный begin\end - хорош, если кода до 100 строчек.
Пизтоновские отступы - за них Гвиду вообще ждет отдельный котел в аду.
> наиболее читабельный и легкий.Чем синтаксис более человеко-читабельный, тем лучше. Здесь Ada вне конкуренции, ибо понять можно даже не зная саму Ada. А Си-подобный - это ужас из скобочек, закорючек и прочих невнятных символов !@#$%^&*
> Чем синтаксис более человеко-читабельный, тем лучше. Здесь Ada вне конкуренции, ибо понять можно даже не зная саму Ada. А Си-подобный - это ужас из скобочек, закорючек и прочих невнятных символов !@#$%^&*Нет не лучше. Синтаксис не должен быть человеко-читабельный, он должен быть понятным.
Ada, это там где для закрытия блока нужно указывать имя блока?
Для дебага удобно. Для понимания - не читабельно, особенно когда у тебя десяток вложенных блоков.
```
Объявлено устаревшим поведение, при котором для параметров функций с присвоенным по умолчанию значением null автоматически разрешалось присвоение значений null. Для того, чтобы подобные параметры могли принимать значения null теперь требуется явное указание префикса "?". Например, вместо "function save(Book $book = null) {}" следует указывать "function save(?Book $book = null) {}".
```
Вот и зачем городить такой костыль?