URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 132136
[ Назад ]

Исходное сообщение
"Релиз языка программирования PHP 8.3"

Отправлено opennews , 23-Ноя-23 21:29 
После года разработки представлен релиз языка программирования PHP 8.3. Новая ветка включает серию новых возможностей, а также несколько изменений, нарушающих совместимость...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=60172


Содержание

Сообщения в этом обсуждении
"Релиз языка программирования PHP 8.3"
Отправлено DEF , 23-Ноя-23 21:29 
Большинство слоупоков до сих пор сидят на 7.4.

"Релиз языка программирования PHP 8.3"
Отправлено нах. , 24-Ноя-23 09:45 
> Большинство слоупоков до сих пор сидят на 7.4.

а некоторые и на 5.x

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



"Релиз языка программирования PHP 8.3"
Отправлено Дмитрий , 23-Ноя-23 21:31 
Когда строгие коллекции??

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 23-Ноя-23 21:44 
Для этого дженерики нужны. Можно, конечно, сделать только массивы, как в Golang, а потом страдать, но в пхп и так достаточно страданий

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 23-Ноя-23 22:19 
Вроде в HHVM есть дженерики, может и в PHP когда-нибудь завезут, если решать что они там нужны

"Релиз языка программирования PHP 8.3"
Отправлено Вы забыли заполнить поле Name , 23-Ноя-23 22:47 
> Для этого дженерики нужны.

А еще указание variance. Ибо если делать как в Java, то получается нетипобезопасно, потому что массивы коварианты. Хорошо хоть в golang инварианты.


"Релиз языка программирования PHP 8.3"
Отправлено Вы забыли заполнить поле Name , 24-Ноя-23 07:59 
Так, например, след. код на java

class Main {
  public static void main(String[] args) {
    String strings[] = {"house", "daisy"};
    Object objects[] = strings; // covariant

    objects[1] = "cauliflower"; // works fine
    objects[0] = 5;             // throws exception
  }
}


"Релиз языка программирования PHP 8.3"
Отправлено Вы забыли заполнить поле Name , 24-Ноя-23 08:05 
>> Для этого дженерики нужны.
> А еще указание variance. Ибо если делать как в Java, то получается
> нетипобезопасно, потому что массивы коварианты. Хорошо хоть в golang инварианты.

Также есть хорошее сравнение по variance в одном из последниз PEP питона https://peps.python.org/pep-0695/#summary


"Релиз языка программирования PHP 8.3"
Отправлено Vlad VIolentiy , 24-Ноя-23 08:33 
Решается через PHPDoc и добавления анализаторов кода типа psalm и phpstan

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 12:36 
Не проще сразу другой язык выбрать?

"Релиз языка программирования PHP 8.3"
Отправлено пох. , 23-Ноя-23 21:49 
не хочу быть банальным, но не могу удержаться от вопроса: ОНО ЕЩЁ ЖИВО?! лол

"Релиз языка программирования PHP 8.3"
Отправлено лютый арчешкольник... , 23-Ноя-23 22:03 
>ОНО ЕЩЁ ЖИВО

оно небось всё ещё 50+ % веба занимает.


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 23-Ноя-23 22:17 
это если как измерять? по количеству посетителей? сомневаюсь, что гугл написан на пыхе.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 23-Ноя-23 22:17 
Facebook/VK по-прежнему крутятся на нём.

Лол оставьте дома.


"Релиз языка программирования PHP 8.3"
Отправлено glad_valakas , 24-Ноя-23 03:28 
оно нас переживет.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 23-Ноя-23 22:48 
кто знает, а пы-хы-пы такой же безопасный как раст или как си дидов?

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 23-Ноя-23 22:51 
поставлю вопрос по другому, какой безопасный язык программирования использовать для веба?

"Релиз языка программирования PHP 8.3"
Отправлено Смузихлёб , 23-Ноя-23 23:02 
> какой безопасный язык программирования использовать для веба

Будто у тебя есть выбор. Ответ на моей аватарке.


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 11:47 
тут спрашивают про безопасный, а не про язык для смузихлёбов

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 23-Ноя-23 23:03 
Пых уязвимей ассемблера, если ты хотел об этом знать.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 23-Ноя-23 23:05 
F#

"Релиз языка программирования PHP 8.3"
Отправлено Тот_ещё_аноним , 23-Ноя-23 23:51 
На вебне эксплуатируют кривизну поделки или браузера и от языка сервера это мало зависит.
Вордпресс и битрикс на пыжике например, вспотеешь обижать, если(ага) правильно стоят.
За жабаскрипт или го? Да так же точно всё.

А бебезопастность памяти? Так уборщик мусора есть.


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 01:33 
Для веба нужно HTML.
Ещё немного (НЕМНОГО Я СКАЗАЛ!) css.

"Релиз языка программирования PHP 8.3"
Отправлено BlackRot , 24-Ноя-23 09:56 
Html, css, Javascript а ещё уметь юзать графические редакторы, бек на php тож не лишним будет

"Релиз языка программирования PHP 8.3"
Отправлено nox. , 24-Ноя-23 07:01 
Можно попробовать C (например, с фреймворком Wt). Но в любом случае безопасность упирается в WEB сервер.

"Релиз языка программирования PHP 8.3"
Отправлено vitektm , 24-Ноя-23 18:22 
Вопрос в  другом,  напишет какой-то Васян на безопасном языке, а его поезд собъёт. Владельцу бизнеса искать еще одного Васяна???

Так в России поездов больше, чем не криворуких модно-кодеров.
Бизнесу на твою моду как то наплевать. Бизнесу  прибыль нужна!

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 25-Ноя-23 00:34 
> поставлю вопрос по другому, какой безопасный язык программирования использовать для веба?

Поставлю вопрос иначе. Большинство приложений в мире сейчас сервируют веб. Так нахера его писать на жручих тормозных "безопасных" есыках, если даже на них обезьяна с гранатой всё равно напишет что-то опасное? Капиталисты убивают планету ставя печки для исполнения этого тормозного кода лишь бы не нанимать кодеров, способных писать безопасный код на "опасных" есыках!


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 08:04 
А кто сказал, что раст безопасный?

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 08:12 
какие-то маркетологи

"Релиз языка программирования PHP 8.3"
Отправлено nonon , 24-Ноя-23 00:35 
Думаю пора этот язык не развивать. А рекомендовать переходить на другие ЯП.

На Пайтон. Он куда более универсальный, хоть и похож
На модный go
Та даже на JS

Жаль что до сих пор когда гуглишь какой первый ЯП учить натыкаешься на PHP


"Релиз языка программирования PHP 8.3"
Отправлено alchekalin , 24-Ноя-23 00:42 
Думаю, сэр немного заблуждается. Так что не жаль.

"Релиз языка программирования PHP 8.3"
Отправлено Александр , 24-Ноя-23 01:12 
Из динамически типизируемых скриптовых PHP по структуре как раз больше всего подходит для бэкенда. То есть, это такой баланс: когда проект достаточно здоровый, чтобы писать его на python, но и нет необходимости скорости, чтобы переходить на шарпы/джаву. В целом, свою нишу занимает. 8-ой не трогал, писал на 7-ом. За исключением пары исторических моментов, язык понравился.
Js в беке имхо тот ещё мазохизм. Тогда уж лучше Ts

"Релиз языка программирования PHP 8.3"
Отправлено Другой Александр , 24-Ноя-23 05:46 
Надо ввести жёсткую модерацию на попытки уместить в одном предложении слова "скорость" и "джава".

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 24-Ноя-23 12:57 
Или познакомиться с продуктами JetBrains, давно развенчавшими этот стереотип.

"Релиз языка программирования PHP 8.3"
Отправлено Вы забыли заполнить поле Name , 24-Ноя-23 17:55 
У вас ошибка, должно быть подтвердившими

"Релиз языка программирования PHP 8.3"
Отправлено MT , 27-Ноя-23 01:42 
Если только не видел PhpED.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 27-Ноя-23 11:39 
Win-only IDE в 2023? Не видел и не увижу.

"Релиз языка программирования PHP 8.3"
Отправлено MT , 27-Ноя-23 12:53 
Речь не об ОС, а о быстродействии.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 27-Ноя-23 13:26 
> Речь не об ОС, а о быстродействии.

Если что-то летает, но только под Мак - мне от этого ни горячо, ни холодно.

И если вы подозреваете, что я за тридцать лет программирования ничего, кроме Шторма, не видел и поэтому хвалю JetBrains - боюсь, вы заблуждаетесь.
Я хорошо помню, как MSVS С++ летала в версии 2008 года и как она же стала диким тормозом в 2010, например. Хотя язык отнюдь не менялся... просто эти рyкoжoпы загнали анализ кода в свою монструозную БД. Никакие Кресты и Шарпы от этого, внезапно, не спасли.


"Релиз языка программирования PHP 8.3"
Отправлено MT , 27-Ноя-23 15:31 
Java-продукция JetBrains работала заметно медленнее версии PhpED, выпущенной в то же время. Это и понятно — managed-язык закономерно медленнее компилируемого.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 27-Ноя-23 15:41 
> Это и понятно — managed-язык закономерно медленнее компилируемого.

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


"Релиз языка программирования PHP 8.3"
Отправлено MT , 27-Ноя-23 15:43 
PhpED был быстрее не в теории, а на практике. В одно и то же время, в одной и той же ОС.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 27-Ноя-23 15:57 
А Notepad++ был еще быстрее. Переходите уже на него и не делайте мне голову.

"Релиз языка программирования PHP 8.3"
Отправлено MT , 27-Ноя-23 16:08 
У ПО одного класса в одно и то же время обычно паритет по функциональности.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 27-Ноя-23 16:35 
> У ПО одного класса в одно и то же время обычно паритет по функциональности.

Я, наверное, мало знаю IT. Не могу припомнить ни одного примера, подтверждающего это заявление.


"Релиз языка программирования PHP 8.3"
Отправлено Александр , 26-Ноя-23 01:26 
В сравнении с чем? С каким-нибудь python и думаю PHP быстрее

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 06:24 
Нишу дохлого легаси занимает успешно, да. Кол-во вакансий не даст соврать.

"Релиз языка программирования PHP 8.3"
Отправлено Александр , 26-Ноя-23 01:31 
И что мне должно сказать количество вакансий? То, что сейчас у каждой компании по 3-х страничному сайту? Это и без количества вакансий понятно. Компаний много, всем нужен интернет магаз на коленке собранный или лендинг какой-нибудь. Тут и заходят все эти python, node.js и PHP. Считай их ниша. Для чего-то по серьёзнее (что, понятно, нужно реже) берут C#, java. В совсем нагруженных случаях вообще C++. От сюда и получаем такую статистику по вакансиям, а вовсе не от того, что легаси

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 09:52 
«Больше всего подходит для бэкенда» и переменные, мутирующие от того, что на них косо посмотрят, в одном предложении…

"Релиз языка программирования PHP 8.3"
Отправлено Александр , 26-Ноя-23 01:33 
А в python или js всё ровно с этим? Особенно в js

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 01:35 
Не то, чтоб я за пхп, но в чём преимущество питона в вебе?
Ну чем оно лучше? Нет, можно и питон, но чем он лучше?

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 07:23 
Он быстрее пыха вот в чём.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 08:07 
Сомнительно, а с учетом того, что PHP где нужна скорость компилируется JIT, то и неверно.

"Релиз языка программирования PHP 8.3"
Отправлено Сталин , 24-Ноя-23 08:14 
Нет, не быстрее )

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 08:27 
А вот тут по подробнее. Пхп с версии 7 вроди как нехило так ускорился, за счет использования jit компиляции и обошел по скорости питон, причем значительно. Не?

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 10:05 
JIT в 8
Но тем не менее 7 нехило так ускорилась, в частности за счёт прекращения копирования части структур до момента, пока их не поменяют.

"Релиз языка программирования PHP 8.3"
Отправлено Бывалый смузихлёб , 24-Ноя-23 08:31 
настолько быстрее что в разы медленнее

"Релиз языка программирования PHP 8.3"
Отправлено User , 24-Ноя-23 10:01 
Учитывая, что на голом что Пыхе, что змеюке под веб никто почитай и не пишет - то сравнивать надо не "языки", а конкретные фреймворки умножая на коэффициент руко...крылости разработчиков и тут возможны разнообразные варианты. Впрочем, для большинства проектов голый пырформантц в первую тройку критериев для выбора не попадает.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 24-Ноя-23 12:59 
Производительность веб-проекта - что на пыхе, что на питоне, да даже на жабоскрипте - в основном зависит от того, насколько хорошо разработчик знает... SQL.

"Релиз языка программирования PHP 8.3"
Отправлено User , 24-Ноя-23 14:05 
> Производительность веб-проекта - что на пыхе, что на питоне, да даже на
> жабоскрипте - в основном зависит от того, насколько хорошо разработчик знает...
> SQL.

Вообще да, но нет ). Или вернее, от того, насколько хорошо SQL знает разработчик ORM\framework'а - поскольку в большинстве случаев будет примерно дефолт :).


"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 24-Ноя-23 14:19 
> насколько хорошо SQL знает разработчик ORM\framework

Эти ребята обычно все-таки разбираются, и проблемы с конечным разработчиком.
Например, запрос можно сформировать с пагинацией, а можно без. На тестовых объемах разница незаметна, а вот через несколько лет работы полумиллионная таблица, которую чисто для вывода первых 20 записей запрашивают целиком... ну, не будем о Битриксе ;)



"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 26-Ноя-23 13:32 
вы про что? limit 20 нет в запросе? логика там какая - чтобы без доп запроса показать всё по требованию? where пользоваться под нужный диапазон тоже не научились?)

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 26-Ноя-23 14:35 
> вы про что?


#bitrix/modules/sale/admin/transact_admin.php
-$dbTransactList = CSaleUserTransact::GetList(array($by => $order), $arFilter, false, false, array("*"));
+$dbTransactList = CSaleUserTransact::GetList(array($by => $order), $arFilter, false, array("nPageSize" => CAdminUiResult::GetNavSize($sTableID)), array("*"));


"Релиз языка программирования PHP 8.3"
Отправлено Нанонимус53 , 26-Ноя-23 14:55 
Вообще-то нет. CRUD какой-нибудь сильно на производительность не влияет, а сложные запросы всё равно приходится писать на SQL, просто оборачивая результаты их работы в объекты ORM. Так что действительно тут больше зависит от знания SQL и оптимизации базы данных.

Часть логики, если она сильно влияет на производительность, пишется модулями на C, и тогда в целом тоже всё равно - это модуль для PHP или для Питона. Мы так писали например функции для работы с географическими данными, типа рассчёта расстояния между точками на карте с учётом кривизны планеты, быструю выборку из нескольких близких точек и т.п.


"Релиз языка программирования PHP 8.3"
Отправлено User , 27-Ноя-23 07:29 
Хм. У нас на последнее postgis воткнут - в общем-то хватает, впрочем задач крупнее городской теплосети пожалуй что и нет.

"Релиз языка программирования PHP 8.3"
Отправлено YetAnotherOnanym , 24-Ноя-23 13:21 
> голый пырформантц в первую тройку критериев для выбора не попадает

Это временно. Пока начальство не вызвало и не попросило объяснить счета за хостинг и/или почему всё так тормозит.


"Релиз языка программирования PHP 8.3"
Отправлено User , 24-Ноя-23 13:58 
>> голый пырформантц в первую тройку критериев для выбора не попадает
> Это временно. Пока начальство не вызвало и не попросило объяснить счета за
> хостинг и/или почему всё так тормозит.

АБСОЛЮТНОЕ большинство веб-проектов до этого светлого момента просто никогда естественным образом не дорастает, вот в чем фокус.


"Релиз языка программирования PHP 8.3"
Отправлено YetAnotherOnanym , 24-Ноя-23 17:27 
Да и фиг с ними. Главное, что кодер на модном язычке получит свой гонорар и свалит в следующий стартап.

"Релиз языка программирования PHP 8.3"
Отправлено User , 24-Ноя-23 21:10 
> Да и фиг с ними. Главное, что кодер на модном язычке получит
> свой гонорар и свалит в следующий стартап.

Клиент получает требуемую функциональность, разработчик - гонорар, win-win практически. А то, что через три года у клиента _могут_ возникнуть проблемы с производительностью... ну в общем "клиент типовой, резиновый" не готов ждать на полгода дольше и платить в три раза больше, чтобы _возможно_ не иметь проблем в будущем. Как-то так оно в реальном мире устроено.


"Релиз языка программирования PHP 8.3"
Отправлено x3who , 25-Ноя-23 01:02 
Ну вообще в реальном мире бизнес борется за живучесть и задаётся вопросами техподдержки. Кто не задаётся такими вопросами со временем всё равно отомрёт, даже если приложение спроектировано грамотно.

"Релиз языка программирования PHP 8.3"
Отправлено User , 25-Ноя-23 19:28 
> Ну вообще в реальном мире бизнес борется за живучесть и задаётся вопросами
> техподдержки. Кто не задаётся такими вопросами со временем всё равно отомрёт,
> даже если приложение спроектировано грамотно.

Ну в общем да. Стоимость поддержки решения в критериях выбора - есть. Тыр-пыр-формантца (Который, заметим, с этой "стоимостью" некоторым образом в контрах) - нет. Нет, если говрить о чисто IT'шных бизнесах - то тут возможны варианты, и то не факт - мордокнига смотрит на вас с определенным недоумением.


"Релиз языка программирования PHP 8.3"
Отправлено YetAnotherOnanym , 25-Ноя-23 01:15 
Клиент планирует посещаемость своих сервисов и сейчас, и через год, и через три года, и если он не прописал в договоре требования к производительности и масштабируемости, и не определил методику тестирования, а просто ограничился проверкой сервиса со своего клиентского устройства, принял и оплатил работу, а при мало-мальской нагрузке сервис лёг - ну, не повезло, связался с мошенником, а мозгов разоблачить его на хватило.

"Релиз языка программирования PHP 8.3"
Отправлено User , 25-Ноя-23 19:25 
> Клиент планирует посещаемость своих сервисов и сейчас, и через год, и через
> три года, и если он не прописал в договоре требования к
> производительности и масштабируемости, и не определил методику тестирования, а просто
> ограничился проверкой сервиса со своего клиентского устройства, принял и оплатил работу,
> а при мало-мальской нагрузке сервис лёг - ну, не повезло, связался
> с мошенником, а мозгов разоблачить его на хватило.

Айтишники-такие-айтишники. За первые два года закрывается больше половины бизнесов в России - но инструмент для создания сайт-визитки надо выбирать исходя из требований к производительности и масштабируемости. Да. Такъ победiмъ!


"Релиз языка программирования PHP 8.3"
Отправлено YetAnotherOnanym , 26-Ноя-23 10:57 
Однодневки-прачечные, как правило, обходятся без сайтов, даже одностраничных визиток. Для прочих видов бизнеса желательно умение смотреть чуть дальше собственного носа.

"Релиз языка программирования PHP 8.3"
Отправлено User , 26-Ноя-23 12:49 
Ну, надеюсь что "про it" вы знаете хоть чуть-чуть больше, чем "про бизнес", да.

"Релиз языка программирования PHP 8.3"
Отправлено YetAnotherOnanym , 26-Ноя-23 16:09 
Вы своё знание и того, и другого продемонстрировали. Так что да, надежда - это всё, что Вам остаётся.

"Релиз языка программирования PHP 8.3"
Отправлено nonon , 24-Ноя-23 14:06 
Если учитывать что писать на нескольких языках такое себе.. типа прыгать с одного на другой так себе удовольствие..

На пайтоне можно писать скрипты, программы для десктопа. машинное обучение, нейронные сети, ну и бекенд..
На пхп только бекенд. Если нет у вас в планах писать всю жизнь бекенд, мне кажется вы освоете новый ЯП который вам понравится больше не для бека, для других целей, но начнете писать на нем так же и бекед) Хех)
Там на гошке, либо еще на чем-то


"Релиз языка программирования PHP 8.3"
Отправлено OpenEcho , 24-Ноя-23 02:12 
> Думаю пора этот язык не развивать.

Обоснуй, а то звучишь так авторитетно, прям так и хочется поверить

> На Пайтон. Он куда более универсальный, хоть и похож

Ты по скорости не пробовал его с сабжем сравнивать?

> На модный go

Го - значительно больше низкоуровневый, не всегда это надо

> Та даже на JS

Сорри, но жoпy с пальцем сравнивать, JS - асинхронный, управляемый событиями, когда  PHP - синхронный.

> Жаль что до сих пор когда гуглишь какой первый ЯП учить натыкаешься на PHP

Use the right tool for a job


"Релиз языка программирования PHP 8.3"
Отправлено лул , 24-Ноя-23 07:13 
Юзай Swoole, ежели асинхронщину желаешь.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 11:18 
Ну, у меня допустим ныне свой стек короутин для PHP. Линейный (в отличие от реакта, который заставляет строить ужасающие своим размахом деревья), очень коротенький (тысячи 2 строк на всё про всё включая сахар), простой и пристойный. Будет время - выложу в паблик, хотя смузям не зайдёт.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 11:20 
И да, с не***ческим перформансом - ~10000000/s переключений задач на 3.4GHz ядре, если задачи на генераторах. Это всего ничего - ~350 тактов на переключение. Если на файберах - в ~1.6-1.8 раза больше тактов, меньше задач.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 06:35 
>рекомендовать переходить на другие ЯП.

На Пайтон. Он куда более универсальный, хоть и похож

А какая универсальность яп тебе нужна для веба? Сайты должны загружать страницы и все. Как бы я не любил php, но с этим он отлично справляется, собственно для этого его и создавали.


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 08:17 
php после 4й версии закончился
Сейчас мы наблюдаем какую-то химеру

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 08:37 
Его бы немного почистить от лишнего, создается впечатление что уж больно много всего в языке. Создается впечатление что внем функции под каждый чих...(утрированно)

"Релиз языка программирования PHP 8.3"
Отправлено OpenEcho , 24-Ноя-23 12:51 
> создается впечатление что уж больно много всего в языке.

Классический вариант, когда подхватывается корпоративно

> Создается впечатление что внем функции под каждый чих...(утрированно)

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


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 13:33 
И вот в этом его прелесть. Для простейшей задачи не надо тащить 100500 зависимостей из разных npshit'ов.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 24-Ноя-23 14:10 
> в нем функции под каждый чих

Это пугает только новичков, которые в панике представляют, что это все надо вызубрить.
На самом деле, это как раз приятная особенность пыха: в его стандартной библиотеке куча оптимального кода на С, которым можно воспользоваться, как только тебе понадобилась эта оптимальность - вызвав одну из этих многочисленных функций (собственно, просто оберток над вызовом библиотечной функции).
Например, недавно при обсуждении одного довольно ресурсоемкого алгоритма, реализованного на чистом пыхе, мне подсказали функцию, о существовании которой я и не подозревал, хотя давно пишу на РНР. С минимальными изменениями алгоритма замена одного из его блоков на эту функцию ускорила его в 25 раз!


"Релиз языка программирования PHP 8.3"
Отправлено vitektm , 24-Ноя-23 18:23 
Озвучьте функцию все равно аноним

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 24-Ноя-23 19:01 
А смысл? Это не какая-то серебряная пуля, которая сделает любому быстрее и лучше.
Это оптимальная реализация конкретного алгоритма, который мне подходил по логике.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 12:52 
В пыхе нынешнем конечно есть свои idiosyncrazy с производительностью, если надо в качестве ЯОН.

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

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

switch с case $this::const или class::const менее производителен, чем switch с case "string". Если аргумент switch - строка и более-менее постоянен (внутренний хеш формируется для каждой строки 1 раз), например редко меняемая property - вместо констант класса в критичных участках кода в switch лучше использовать строки напрямую.

И т.п.


"Релиз языка программирования PHP 8.3"
Отправлено noc101 , 24-Ноя-23 14:11 
> На Пайтон. Он куда более универсальный, хоть и похож

Пару букв схожи? Рукалицо
Почему униварсальность значит лучше?

>На модный go

Го немного про другое. Хотя и на нем есть веб, но все таки он про другое

>Та даже на JS

А где он выполняется, ты знаешь? А где РНР? Разницу объяснять?

>Жаль что до сих пор когда гуглишь какой первый ЯП учить натыкаешься на PHP

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

РНР не зря лучший веб язык для написания ВЕБа разного уровня.
Работает быстро. Работает прозрачно. Обучение дешевое и быстрое. Универсальный.


"Релиз языка программирования PHP 8.3"
Отправлено Ivan_83 , 24-Ноя-23 22:44 
Пыхтон - обречённый язык из за dependency hell.
Он ещё кое как работает обмазанный venv и докерами, но всё больше скатывается к состоянию: "работает только на машине разработчика".
Учитывая то что там часть пакетов - биндинги которым нужны либы из системы, то оно не поддерживаемое для больших проектов.

JS - там проще, всё написано на самом JS, это сразу на порядок меньше головняков у тех кто это использует и обслуживает.

GO - всё нужное опять же носит с собой.

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


"Релиз языка программирования PHP 8.3"
Отправлено x3who , 25-Ноя-23 00:45 
Язык-то красивый сам по себе, только тормоз. Питон тоже тормоз. JS тоже тормоз. Go - ну если не загружать его по новой на каждый запрос, будет быстрее. Но он тоже "безопасный", то бишь обработка строк, из которых чуть более чем полностью состоит веб, будет в разы дороже "опасных" языков. Тормоза - это не только user experience,  это ещё затраты на более мощное железо, на электричество для этого железа в датацентрах, на электричество для кондиционеров для отвода тепла выработанного железом в датацентрах в атмосферу нашей планетки. Т.н. "безопасные" языки программирования опасны для человечества.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 25-Ноя-23 00:51 
На современном веб-сайте обычно работают три языка-посредника.
JS на фронте - между пользователем и веб-сервером.
РНР на бэке - между веб-сервером и сервером БД.
и SQL в БД - между тем, что понадобилось сайту, и реальностью его хранения.
Вот последний бывает критичен по производительности, а чаще - по умению на нем писать.
Два других же, как правило, не играют в скорости работы сайта решительно никакой роли, если писал на них не совсем уж жoпopук.

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 25-Ноя-23 01:10 
> JS на фронте - между пользователем и веб-сервером.

От всей души желаю _некоторым_ разработчикам _некоторых_ сайтов пользоваться RaspberryPi для их просмотра. Иногда страница пару минут грузится. Это говорит от том, сколько бесполезной нагрузки (в т.ч. для экологии) они несут.

> На современном веб-сайте обычно..
> РНР на бэке - между веб-сервером и сервером БД.

Думаю, что похапе - это не обычно. Если считать не по количеству сайтов, а по количеству запросов.

> и SQL в БД - между тем, что понадобилось сайту, и реальностью его хранения.

Вот да, и никакого кеширования между похапэ и БД.

> Вот последний бывает критичен по производительности, а чаще - по умению на нем писать.

Естественно заход в базу дорого обходится. Но _обычно_ данные кешируются. Не у васянов, конечно. Следующий уровень сложности - обеспечение транзакционной целостности не только в БД, но и в кеше. Чот не видел в опенсорце :)


"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 25-Ноя-23 13:16 
Нынешние малинки несут на себе четыре ядра и восемь гигов памяти. Уделывая значительное число офисных машинок ;)

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 25-Ноя-23 13:53 
Именно такой я и пользуюсь. Некоторые сайты тормозят нещадно.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 25-Ноя-23 14:31 
Ну, там скорее не кривые скрипты, а визуальные вытребеньки типа параллаксов и видеоподложек.
Есть в этом мире вещи настолько кривые, что выпрямить их можно только единственным способом...

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 13:11 
Тормоз в PHP начинается тогда, когда идёт совершеннейшее непонимание принципов его работы.
Овердекомпозиция с методом на каждые 10 строк - одно из таковых. Вызов метода в PHP - удовольствие ОЧЕНЬ дорогое.

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 26-Ноя-23 14:35 
> Тормоз в PHP начинается тогда, когда идёт совершеннейшее непонимание принципов его работы.
> Овердекомпозиция с методом на каждые 10 строк - одно из таковых. Вызов
> метода в PHP - удовольствие ОЧЕНЬ дорогое.

Разрабочиков Nextcloud сложно заподозрить в совершенном непонимании пыха, однако как же он тормозит!


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 15:14 
Вы внутрь Nextcloud заглядывали?
Тут не то, что заподозрить, тут как раз таки всё "на лице".
Так можно писать исключительно на компилируемом языке.

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 27-Ноя-23 10:38 
> Вы внутрь Nextcloud заглядывали?
> Тут не то, что заподозрить, тут как раз таки всё "на лице".
> Так можно писать исключительно на компилируемом языке.

Если такое можно писать только на компилируемом языке, то авторы как бэ ни при чем. Виновны только в выборе негодной платформы.


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 27-Ноя-23 10:40 
И я о том же. Выбирают PHP, а пишут как на жабах.

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 27-Ноя-23 16:45 
> И я о том же. Выбирают PHP, а пишут как на жабах.

Тут не понял. Насколько я знаю, в пыхе Zend-оптимизатор компилирует текст программы и потом уже исполняет байткод, т.е. практически как в джава. С чего бы ему быть медленнее?


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 27-Ноя-23 23:15 
Так, да не совсем. В жабе типы и структуры анализируются предварительно, и собранный байт-код работает с фиксированными знаниями о том, что прилетит в тот же вызов, с фиксированными структурами, определяющими, какие у класса есть свойства и каких типов, и т.п. Большая часть сборки осуществляется один раз на этапе трансляции в байт-код. У PHP же вся сборка - динамическая, каждый загружаемый файл, каждый создаваемый класс - всё это парсится и транслируется в рантайме. Да, кешируется в opcache, но всё равно часть трансляции есть даже при взятии из opcache.

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 28-Ноя-23 00:23 
> Так, да не совсем. В жабе типы и структуры анализируются предварительно, и
> собранный байт-код работает с фиксированными знаниями о том, что прилетит в
> тот же вызов, с фиксированными структурами, определяющими, какие у класса есть
> свойства и каких типов, и т.п. Большая часть сборки осуществляется один
> раз на этапе трансляции в байт-код. У PHP же вся сборка
> - динамическая, каждый загружаемый файл, каждый создаваемый класс - всё это
> парсится и транслируется в рантайме. Да, кешируется в opcache, но всё
> равно часть трансляции есть даже при взятии из opcache.

Мне даже такие детали не важны. Важен сам факт, что пых тормознее даже джавы. Дело не только в латентностях. Тупо в ненужных вычислениях, на которые тратится электричество и кремний.


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 01-Дек-23 00:48 
Строчить и строчить однотипные комменты в вебе.
Хватить тратить такты и кремний! Кончай издеваться над природой!

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 27-Ноя-23 10:41 
И не "такое", а "так", не путайте.
Попытка перенести подходы с компилируемых языков на динамический обречены быть унылым тормозом.

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 27-Ноя-23 16:43 
> И не "такое", а "так", не путайте.
> Попытка перенести подходы с компилируемых языков на динамический обречены быть унылым тормозом.

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

Но он и для простых проектов непригоден - не всё ли равно на чем навалять простенький код? Совершенно необязательно это должен быть похапэ. Зачем интерпретировать байткоды на каждый запрос, когда можно сконпелять во время разработки?


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 27-Ноя-23 23:16 
Если вкратце - то да, при овердекомпозиции пых - плохой выбор.

"Релиз языка программирования PHP 8.3"
Отправлено Sw00p aka Jerom , 24-Ноя-23 01:26 
>> // Было array (-5 => 'a', 0 => 'b') // Стало array (-5 => 'a', -4 => 'b')

ухх, а если пихнуть -0?


"Релиз языка программирования PHP 8.3"
Отправлено Тот_ещё_аноним , 24-Ноя-23 01:46 
Imho -0 equ 0

"Релиз языка программирования PHP 8.3"
Отправлено nox. , 24-Ноя-23 07:04 
В математическом смысле нет. Да и в программировании с плавающей точкой тоже.

"Релиз языка программирования PHP 8.3"
Отправлено Sw00p aka Jerom , 24-Ноя-23 08:42 
-0 в пхп нет кажись (

"Релиз языка программирования PHP 8.3"
Отправлено Тот_ещё_аноним , 24-Ноя-23 19:19 
"динамическая типизация" жеж
Он "-0" возьмет как аргумент "знаковое целое" по синтаксису и приведёт к "индекс массива", "-" в процессе отпадёт

А жаль)


"Релиз языка программирования PHP 8.3"
Отправлено Lost Inside , 24-Ноя-23 12:47 
В чем смысл пихания -0, если можно пихнуть просто 0? Я имею в виду - практический смысл, а не трансцендентные фантазии иррационалистов от разработки.

"Релиз языка программирования PHP 8.3"
Отправлено Sw00p aka Jerom , 24-Ноя-23 14:36 
> В чем смысл пихания -0, если можно пихнуть просто 0? Я имею
> в виду - практический смысл, а не трансцендентные фантазии иррационалистов от
> разработки.

я его явно не пихаю, он у меня может быть результатом вычисления индекса, к примеру (x / y) где x = 0, а y = -5, а в пхп как выше указали, -0 === 0

https://ru.wikipedia.org/wiki/%E2%88%920_(�...)


"Релиз языка программирования PHP 8.3"
Отправлено Lost Inside , 24-Ноя-23 15:04 
> он у меня может быть результатом вычисления

Современные CPU не сбрасывают автоматически бит SF, если в результате целочисленной операции все разряды результата сброшены?
Господи, помилуй нас, грешных...


"Релиз языка программирования PHP 8.3"
Отправлено Sw00p aka Jerom , 24-Ноя-23 15:32 
> Современные CPU не сбрасывают автоматически бит SF, если в результате целочисленной операции
> все разряды результата сброшены?
> Господи, помилуй нас, грешных...

https://en.wikipedia.org/wiki/Negative_flag

операции умножения и деления не трогают этот флаг, там по две инструкции на каждую операцию.

https://pdos.csail.mit.edu/6.828/2012/readings/i386.pdf

страница 419-420


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 12:40 
У IPU SF - это просто копия старшего бита результата, поэтому про -0 можно забыть.
В FPU ситуация немножко иная.
Посколько в данном случае индексы у PHP приводятся к строке через целые числа - про -0 можете забыть.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 25-Ноя-23 02:57 
$ php -r 'echo 0 / -100, "\n";'
0

$ php -r 'echo 0 === -0 ? "true" : "false", "\n";'
true

У меня какой-то другой пхп стоит?


"Релиз языка программирования PHP 8.3"
Отправлено Sw00p aka Jerom , 25-Ноя-23 12:14 
-0 нет в пхп

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 13:35 
Интересно, кто-то вообще этим как-то пользовался?
В смысле задефайнить номер первого элемента, но не остальные.
Это ж прямой путь налететь на грабли.

"Релиз языка программирования PHP 8.3"
Отправлено Sw00p aka Jerom , 24-Ноя-23 15:19 
> Интересно, кто-то вообще этим как-то пользовался?
> В смысле задефайнить номер первого элемента, но не остальные.
> Это ж прямой путь налететь на грабли.

индекс первого элемента - 0 (в обычном понимании плоского "сишного" массива), -0 по сути должен был быть индексом последнего элемента, а в пхп нет понятия плоского "сишного" массива, там ключ-значение. Индексы "нумерического массива" даже в пхп это ключ-значение.  


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 21:54 
В PHP все массивы - ассоциативные, то есть хеши, да.

"Релиз языка программирования PHP 8.3"
Отправлено 11111001010 , 24-Ноя-23 01:51 
Чот он каким-то монстром стал, давно на нём не писал ничего.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 03:17 
Да, старые версии на 98 винде работают и поддерживают Utf-8. Если не гоняться за дизайном, можно  PHP сайты с IE5 подружить.

"Релиз языка программирования PHP 8.3"
Отправлено 11111001010 , 24-Ноя-23 04:17 
Зачем ты утрируешь? 😠😡

"Релиз языка программирования PHP 8.3"
Отправлено hshhhhh , 24-Ноя-23 12:23 
пхп сайты можно даже с lynx и wap подружить.

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 25-Ноя-23 00:48 
Только непонятно при чем тут ЯП воще :)

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 07:29 
Это же php с классами, а значит php++. Странно что js с классами тоже не назвали js++.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 08:08 
Есть (был, выкуплен) Objective-J.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 08:42 
О! Вопрос. А вот язык Юля(Julia), что думает о вэбе?
Слышал что ей восхищались, вот интересно стало...

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 08:56 
Юля больше не вставляет.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 09:19 
Mojo?

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 10:09 
This

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 27-Ноя-23 14:08 
Только Julia в отличии от Mojo существует в реальности.

"Релиз языка программирования PHP 8.3"
Отправлено Анонус , 24-Ноя-23 09:53 
> Разрешено создание замыканий из методов и передачи именованных аргументов в эти замыкания.

господи какой трэш и ужас щас начнется


"Релиз языка программирования PHP 8.3"
Отправлено YetAnotherOnanym , 24-Ноя-23 10:48 
> Override

Для Эллочки-людоедочки со словарным запасом в 30 слов.
> генерация отдельных исключений (...) в случае проблем, возникающих в операциях работы с датами и временем
> генерация исключения при попытке передачи объектов, ресурсов или массивов в переменных, определяющих границы диапазона

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


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 11:13 
Учитывая что мой код состоит процентов на 15 из обработки ошибок, могу сказать, что проблемы были, но не столь существенные. Зато выброс исключений где не надо прилично увеличит объём этого кода бесполезными зажимами try { ... } catch (\Exception $e) { }, просто чтобы оно не проваливалось по стеку. Потому что кроме исключения можно получить например false.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 11:15 
А делать из PHP жабу, где все эти цепочки исключений отрабатываются фиг знает где, и в итоге всё равно осыпаются тут и там - я вообще не знаю, чем поколение смузи думает. Нормальная C-подобная отработка ошибок: получил false или другой код ошибки - отработал.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 11:15 
(и только если не хочешь отрабатывать на месте - вот тогда бросил исключение. САМ)

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 13:39 
Ну вот #[Override] - это извращение.
Почему бы просто override не добавить.
Типа public override function xyzzy().
Куда-то оно не туда после 8.1 сворачивать начало совсем...

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 13:40 
Анонимные классы - это тоже какой-то 3.14дец. Зачем??? Вся суть определений классов в их статичности.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 15:16 
Зачем вообще в вебе классы, когда задача в 90 % случаев просто сделать запрос к базе и вернуть результат.

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 25-Ноя-23 01:17 
> Зачем вообще в вебе классы, когда задача в 90 % случаев просто
> сделать запрос к базе и вернуть результат.

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


"Релиз языка программирования PHP 8.3"
Отправлено Sw00p aka Jerom , 25-Ноя-23 12:18 
ага, тенденция микросервисов и классов :))

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 26-Ноя-23 12:50 
это вид сарказма такой? а типовые взаимодействия с бд, что и является основой, каждый раз вручную что-ли кодить? в них же все обработки/чеки и по типизации, кста. автолоадером легко подхватывается и прекрасно работает. помимо них, ещё куча, которая с массивами работает, вычисления проводит и передаёт их предыдущим. нууу... 2/3 процедурных простыней в моём проекте, примерно, скрыто так. чяднт?

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 13:41 
Не, я понимаю, что это очередная попытка решить проблему отсутствия множественного наследования - теперь можно на ходу лепить ***ту из классов, но лучше бы первое сделали.

"Релиз языка программирования PHP 8.3"
Отправлено x3who , 25-Ноя-23 01:20 
> Не, я понимаю, что это очередная попытка решить проблему отсутствия множественного наследования
> - теперь можно на ходу лепить ***ту из классов, но лучше
> бы первое сделали.

Множественное наследование - это извращение. Сам унаследуй и от папы и от мамы - тогда поймешь по реакции окружающих :) Интерфейсы рулят, и, судя по статье, они в пыхе есть.


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 25-Ноя-23 09:27 
Сразу видно дальше хеллоуврота или сборки из всяких pypinpm'ов не писавших...

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 26-Ноя-23 12:52 
ассоциация не решает проблемы?

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 13:43 
А того, чего не хватает - так и нет.
А не хватает
- Множественного наследования (уже упомянул)
- Перегрузки базовых операторов
- Перегрузки методов (варианты наборов аргументов), ну и заодно к ним сахарка темплейтов под типы, последнее для тех, кто очень любит типизацию и смузи

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 14:14 
иди со своими перегрузками и множественным наследованием сам знаешь куда

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 24-Ноя-23 14:25 
> А не хватает

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


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 15:15 
> Пришел в Пых из Крестов

А чего сразу не в Бейсик?


"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 24-Ноя-23 15:36 
Опять он здесь. Пропал тред.

"Релиз языка программирования PHP 8.3"
Отправлено YetAnotherOnanym , 24-Ноя-23 16:54 
> и там не пользовался, и здесь не вижу необходимости

Речь не мальчика, но мужа. Респект.


"Релиз языка программирования PHP 8.3"
Отправлено x3who , 25-Ноя-23 01:32 
> Вот более жесткой типизации, конечно, не хватает. Но тут бытие определяет -
> пых постоянно работает с внешними данными, которые, как правило - строки.
> Все равно приводить и валидировать самому.

Вот в классе и валидировать  - подходят ему эти данные или нет


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 26-Ноя-23 13:08 
+

правда, чеки/конвертеры стоит иногда в отдельные классы выделять, чтобы массив, одними, правильно собрать с инпута и отдать другим на передачу в бд. в хеллоувордах всё это не проблема, конечно же))


"Релиз языка программирования PHP 8.3"
Отправлено подрывник , 24-Ноя-23 15:17 
Наследование реализации — корень всех зол.
Да и не надо его, когда есть интерфейсы классов и подмешивание через "include".

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 24-Ноя-23 21:55 
Подмешивание через include - это пять.
...
Я даже не знаю.
Похоже не только пых свернул куда-то не туда. Шею.

"Релиз языка программирования PHP 8.3"
Отправлено нах. , 25-Ноя-23 10:16 
какие разработчики, такие и технологии.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 26-Ноя-23 13:13 
да композицией, агрегацией это всё решается внутри, не надо ничего подмешивать. классы с неймспейсами легко же тянутся

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 14:50 
Архитектурно есть у тебя сокеты например.

У разных сокетов например (ну, сокетная асинхронная либа у меня) - разные варианты реализации. Есть потоковые, где можно фигачить любыми блоками и доступно чтение любого размера. Есть датаграммы, где надо читать датаграмму целиком. У типичного датаграммного UDP ещё и адрес надо читать. У TCP есть OOB. Есть псевдосокеты сообщений, которые аналогичны датаграммам, но может быть адрес и ID сообщения. И т.п. У разных сокетов есть разные эвенты, которые они пуляют слушателям при событиях.

Сейчас приходится всё это счастье подмешивать через превращение опций в interfaces + traits и цепочке наследования через прототипы, но это такие жёсткие костыли, что блин хочется всё это взять и вырезать. Множественное наследование решило бы проблему полностью,  но нет, приходится костылить.


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 14:53 
Как пример жёсткого костылинга

class PollingSocketPrototype implements \ATL\ITask { use \ATL\TTask; } # bring in Task class first as first level parent

class PollingSocketPrototype2 extends \ATL\Socket\PollingSocketPrototype implements \ATL\ISocket { use \ATL\TSocket; } # bring in base Socket class as second level parent

abstract class PollingSocket extends \ATL\Socket\PollingSocketPrototype2 implements \ATL\Socket\IPollingSocket { use \ATL\Socket\TPollingSocket; }


abstract class StreamBasePrototype extends \ATL\Socket\PollingSocket implements \ATL\Socket\Capabilities\IBulk { use \ATL\Socket\Capabilities\TBulk; }

abstract class StreamBase extends \ATL\Socket\StreamBasePrototype
{
...
}

abstract class StreamPrototype extends \ATL\Socket\StreamBase implements \ATL\Socket\Capabilities\IReadBytes, \ATL\Socket\Capabilities\IDelimitedReads
{
    use \ATL\Socket\Capabilities\TReadBytes; # bring in readBytes capability
    use \ATL\Socket\Capabilities\TDelimitedReads; # bring in delimited reads capability
}

class Stream extends \ATL\Socket\StreamPrototype
{
...
}

Всё вот это вот решилось бы множественным наследованием легко и просто.


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 15:00 
Я понимаю, что ты в линейной вебне, которая в основном банальная модель и шаблонизатор - вряд ли это встретишь, но PHP уже давно вышел за рамки вебни, и поэтому вместо вот этого всего странного #[Override] сахарка хотелось бы чего-то серьёзного :)

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 01-Дек-23 00:58 
Открой для себя композицию, делегирование и стратегии. Помогает от этой вот лажи, что ты пишешь, и множественного наследования избавиться.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 01-Дек-23 14:22 
Попей смузи, и расслабься.
Когда нечем композировать - композировать нечем. Такие дела.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 14:58 
Ну и да, множественное наследование - это как раз часть композиции-агрегации, которой нет, и это печально.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 15:01 
Причём реализовать-то уже просто - эмуляция выше легко бы могла быть сделана через use Class хотя бы, не Trait, а класс, который затягивает все интерфейсы и прочее содержимое эквивалентно Trait. Но нет, приходится костылять.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 15:07 
class Stream
{
    inherit \ATL\Task; # ATL socket is a task
    inherit \ATL\Socket\PollingSocket; # we are a polling socket
    inherit \ATL\Socket\StreamBase; # use PHP Stream socket base
    inherit \ATL\Socket\Capabilities\ReadBytes; # support readBytes
    inherit \ATL\Socket\Capabilities\DelimitedReads; # support delimited reads
}

Специально написал inherit вместо use - как бы это могло быть. Красивенько, да, по сравнению с костылями выше?


"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 26-Ноя-23 15:22 
А решить это заменой наследования композицией - точно не вариант?
Начиная с socket is not a task but task has a socket.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 16:18 
Никак там не решишь, у разных типов сокетов разные включения, они могут частично перекрываться.
Часть включений перекрывает некоторые единичные методы родителей, но прекрасно использует все остальные.

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


"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 16:23 
Just for fun покажу минимальный тест сокета.

class Test extends \ATL\Task
{
    public function main()
    {
        Log::msg("Main task started");
        yield true;

        try {
            Log::msg("Creating socket");
            $this->taskAddChildTask($socket = new \ATL\Socket\TCP('192.168.77.10', 80, 15));
            yield true;

            Log::msg("Waiting for socket to connect");
            if (($result = yield ($wait = new \ATL\Socket\WaitForConnect($socket))) !== true) {
                if (is_array($result)) throw new \Exception("Socket error {$result[0]} while connecting: {$result[1]}");
                throw new \Exception("Socket timed out while connecting");
            }
            Log::msg("Socket connected");
            Log::msg("Local name: ".$socket->socketLocalName);
            Log::msg("Remote name: ".$socket->socketRemoteName);

            Log::msg("Writing HTTP request to the socket");
            $socket->writeBulk([
                "GET /test.php HTTP/1.1\r\n",
                "Host: alex-at.net\r\n",
                "Connection: close\r\n",
                "\r\n",
            ]);

            Log::msg("Waiting for write data to be flushed down");
            if (($result = yield ($wait = new \ATL\Socket\WaitForWriteFlush($socket, 5))) !== true) {
                if (is_array($result)) throw new \Exception("Socket error {$result[0]} while writing: {$result[1]}");
                throw new \Exception("Socket timed out while waiting for write");
            }

            Log::msg("Reading from socket");
            $wait = new \ATL\Socket\Read($socket, 5);
            $fout = fopen(__DIR__.'/socket_test.out', 'wb');
            do {
                if (($result = yield $wait) !== true) {
                    if (is_array($result)) throw new \Exception("Socket error {$result[0]} while reading: {$result[1]}");
                    throw new \Exception("Socket timed out while reading data");
                }
                if ($wait->readData !== null)
                    fwrite($fout, implode('', $wait->readData));
            } while ($wait->readData !== null);
            fclose($fout);

            Log::msg("Waiting for socket to disconnect");
            if (($result = yield ($wait = new \ATL\Socket\Disconnect($socket, 5, true))) !== true) {
                if (is_array($result)) throw new \Exception("Socket error {$result[0]} while disconnecting: {$result[1]}");
                throw new \Exception("Socket timed out while waiting for disconnect");
            }
        } catch (\Exception $e) {
            Log::msg("ERROR: ".$e->getMessage());
        }

        if (!$socket->isDisconnected()) {
            Log::msg("Aborting socket");
            $socket->abort();
            yield true;
        }

        Log::msg("Main task ended");
    }
}


"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 26-Ноя-23 18:28 
Не знаком с используемой библиотекой, но в приведенном коде таски с сокетами смешиваются только в одной строчке. В которой точно так же можно использовать дочерний класс таска с членом-сокетом.
И не гневать святую Барбару..

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 20:57 
В конкретной реализации - не можно.
Данный сокет, повторюсь, живёт своей жизнью, и к конкретному таску, кроме своего - не прибит.
Ещё есть сокеты-ендпоинты, которые вообще не таски.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 21:11 
И да, член у сокета есть, но ему кроме него надо ещё в зависимости от типа затянуть поллинг или нет, стримы или прочие обёртки, дополнительные фичи. Нет, можно всё это замечательно дублировать CTRL-C CTRL-V из класса в класс, ну или вот так извращаться, как выше. Про не-тасковые ендпоинты уже выше писал, они API Socket вполне себе реализуют, но не Task.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 27-Ноя-23 00:32 
Я говорил про тот код, который увидел. В нем сокет используется как таск только в одном месте, причем в этом месте нужен таск, а не сокет.

> CTRL-C CTRL-V

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

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



"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 16:39 
Сокет вообще как таск живёт своей жизнью - он не обязательно прибит к конкретному родителю, всё зависит от задачи. В самом простом случае родитель - это таск протокола, но в сложных случаях там могут быть дочки, которые выполняют одну задачу в рамках конкретного протокола. Например разобрал команду SMTP в протокольном модуле - отдал сокет приёмнику данных, отработает - вернёт сокет.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 26-Ноя-23 16:42 
Ну или например увидел в начале PROXY-протокол - отдал разбирать PROXY, разобрал, отдал SMTP.
И т.д. и т.п.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 14:37 
Все это доживает последние дни. Ведь слышим веб, подразумеваем JS, причем, как бэкэнд, так и фронтэнд.

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 24-Ноя-23 14:51 
> слышим веб, подразумеваем JS

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


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 15:13 
> Сейчас лично для меня самое неудобное в создании сайтов

Это твои проблемы. П.с. слово "сайты" лишь говорит, что к коммерческой разработке ты имеешь отношение примерно никакое.


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 26-Ноя-23 13:16 
соглашусь, но, другого же способа рилтайм обновления веба и нет никакого иного, ведь так? меня вот, если честно, тож наламывает что надо жс учить, чтоб свой бэк на пыхе актуализировать, а что делать?

"Релиз языка программирования PHP 8.3"
Отправлено тоже Аноним , 26-Ноя-23 14:40 
> тож наламывает что надо жс учить

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


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 16:31 
Да-да-да. Пыхыпэ переехал Перл, АСП, ЖСП, КолдФьюжен, Руби. Скоро и Нода туда же отползет.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 25-Ноя-23 09:32 
Отползёт, но не до конца - с нодой удалось попасть в хитрую нишу, когда фронтендщики начали костылить прочее из того, что умеют. Другое дело, что всё это исполняется на по сути моновендорном, да ещё и браузерном, движке кривого-косого по сути своей JS, и поэтому представляет из себя феерический костыль как по рахитектуре так и по перспективам.

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


"Релиз языка программирования PHP 8.3"
Отправлено нах. , 25-Ноя-23 10:14 
> Отползёт, но не до конца - с нодой удалось попасть в хитрую нишу, когда фронтендщики начали
> костылить прочее из того, что умеют.

как будто им на пехепе кто-то мешал?

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

> и поэтому представляет из себя феерический костыль как по рахитектуре так и по перспективам.

напомню, чем в (поделке на игого) grafana заменили (внезапно, ставший неподдерживаемым лефтпад) создавалку, фак... снапшотов графичков?

А тут - всего лишь js от него. Все, расслабься - для современной индус-трии именно такие решения и являются наиболее оптимальными.


"Релиз языка программирования PHP 8.3"
Отправлено ptr , 25-Ноя-23 11:22 
Ну COBOL уже лет 40 хоронят, а 6.4 вышел в мае прошлого года. Legacy он такой, не убиваемый.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 18:41 
На PHP не программировал лет 10. Там наверно уже изменений как у инопланетных технологий. Верно?

"Релиз языка программирования PHP 8.3"
Отправлено Gemorroj , 24-Ноя-23 19:49 
так-то да. пытается на java похожим быть.
единственная реальная проблема в php - отсутствие искоробочной асинхронщины/параллельщины. ну и типизация массивов пригодилась бы.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 26-Ноя-23 13:26 
> типизация массивов пригодилась бы

в классах это всё делается - инпут обрабатывать и бд правильную архитектуру - это все равно ручками всё

> отсутствие искоробочной асинхронщины/параллельщины

да, так бы и не было повального жс везде


"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 21:36 
Скорее подход поменялся. Если раньше, во времена 4 пыхи, она была шаблонизатором, то теперь это монструозное нечто, где фреймворк на фреймворке фреймворком погоняет.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 25-Ноя-23 09:53 
Пых это как раз то место, где вообще фреймворки не нужны по сути.
Но мир смузи без монструозных конструкций не умеет.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 24-Ноя-23 21:41 
Последний раз писал на PHP4, застав ещё PHP3. Но потом вернулся обратно на Perl, благо, работы хватит до пенсии, тем более, осталось не много :)

"Релиз языка программирования PHP 8.3"
Отправлено фыаыаафыа , 25-Ноя-23 00:58 
Лучший язык снова обновился, а это значит я не умру с голоду, и буду дальше получать 5к евро, чисто благодаря тому что пхп существует.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 27-Ноя-23 17:05 
Граждание, почему PHP не используется в банковской отрасли? Или используется?
И второй вопрос, если PHP так стремится быть похожим на Java, сможет ли он её где-нибудь потеснить?

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 28-Ноя-23 09:20 
А зачем тащить это хлам в финансовую сферу? В энтерпрайзе рулит c#.

"Релиз языка программирования PHP 8.3"
Отправлено Аноним , 29-Ноя-23 03:01 
Почему сразу хлам-то?

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 01-Дек-23 14:30 
Потому что сертификацию будет пройти очень сложно.
Но для вебни - используется, почему нет.

"Релиз языка программирования PHP 8.3"
Отправлено Tron is Whistling , 01-Дек-23 14:32 
Те же payment gateways и вёб-платёжки на пыхе встречаются.