PHP 8.0 Released

The PHP development team announces the immediate availability of PHP 8.0.0. This release marks the latest major release of the PHP language.

PHP 8.0 comes with numerous improvements and new features such as:
— Union Types
— Named Arguments
— Match Expressions
— Attributes
— Constructor Property Promotion
— Nullsafe Operator
— Weak Maps
— Just In Time Compilation
— And much much more...

www.php.net/releases/8.0/en.php

Migration guide:
www.php.net/...​manual/en/migration80.php

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Кстати, вот: youtu.be/e13EydMHxKk
В этом видео (см. на 2х скор.) я наглядно показываю о проблемах совместимости
разных версий php.

Я установил себе локально PHP 7 и пострадал из-за этого (как показано в видео). Код перестал запускаться. Теперь писать вслепую или прямо на хостинге придется.

Депрекейтнули ещё в php 5.5, который релизнулся 20 June 2013

Что это за конструкция, позволяющая связать два значения одной и той же переменной — до и после изменения? Иногда надо, получив значение после изменения, сравнить его со значением до изменения. Я вижу такую реализацию: такая переменная имеет тип ассоциативного массива, где ключ — «номер итерации» Кто-нибудь применял что-нибудь вроде этого?

Я думаю, что время надо учитывать при программировании задач.А что такое время, если не количество изменений между двумя состояниями ?
Например: если было X, стало Y то X-Y это величина, которая не имеет смысла без X и Y .
Мы можем назвать ее Z и даже сделать целый ряд таких Z1...Zn но без X1..Xn , Y1...Yn различий между ними уникальных нет.
Поэтому время разное (не сравнимое) для X-W и Y-A несмотря на то, что и X-W=5 и Y-A=5
То есть можно в таблицу сложить, тогда будет так:


ID P1 P2 Q
1 X Y  4
2 X W 5
3 Y A  5
Id primary но может и p1p2 составной primary
Вот это и есть время — difference between

ну и о том кто сейчас пилит ядро:
Rasmus Lerdorf @rasmus
People are congratulating me on PHP 8.
That is completely misdirected.
@nikita_ppv and @dstogov have been the driving forces behind PHP for years now.
Countless others pitch in regularly as well.

PHP 8 is significantly better because it contains a lot less of my code.

twitter.com/...​tatus/1332004256661037056

Вот тут djinni.co/jobs2/?category=php уже 966 PHP вакансий, например.

Для React Native теж повно вакансій на якомусь Апворку, але це не робить технологію меньш гівняною. Те саме з пхп.

Match Expressions

Скорее бы под JS завезли вместе с пайпами)

— Just In Time Compilation

Так это что выходит, пэхэпэшникам потребовалось эволюционировать аж до 8-ой версии, чтоб открыть для себя JIT?

jit пилился уже...
05.2014
В списке рассылки разработчиков PHP объявлено о начале тестирования проекта phpng, в рамках которого ведётся работа над следующим поколением интерпретатора для языка программирования PHP, отличающегося переходом на новый вариант движка Zend Engine, в котором будут воплощены новые идеи по организации работы с памятью и применению технологий JIT-компиляции. Итогом разработки станет выпуск PHP 5.7, примечательный существенным увеличением производительности выполнения скриптов.

оказались сложности с
— для ЯП с динамической типизацией
— сохранением совместимости (пришлось ее немножко подломить, сделано в 7.*)
— с полезностью для типичных приложений. а она все равно оказалась низкой — ввод/вывод

там, в линке
Компиляция Just-In-Time
... на синтетических бенчмарках показывает улучшение производительности примерно в 3 раза и в 1,5–2 раза на некоторых долго работающих приложениях. Стандартная производительность приложения находится на одном уровне с PHP 7.4.

ну и — у PHP нет вливаний денег уровня гуглов, ораклов, ibm, и ms
так что — «тихой сапой»

PHP по этому критерию — самый народный ЯП из мейнстримовых :)
со всеми издержками народного, а не академического творчества

оказались сложности с
— для ЯП с динамической типизацией

LuaJIT сделали уже очень давно, при том что Lua с чисто динамической типизацией, причём тот проект тянул 1 человек на донатах. Основан на LLVM, который существует тоже очень давно, появился ещё до PHP5. Ну а для оценки производительности получившегося в результате JIT-компиляции кода, естественно никакие асинхронные операции считать в бенчмарках неуместно.

В php тоже jit сделал один человек, но одна из проблем, что там серьёзных core-девелоперов — раз-два и обчёлся. Уж не говорю что не особо заметил какого-то чёткого roadmap’а и общего понимания куда язык движется. Похоже фичи добавляются ситуативно.

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

Похоже фичи добавляются ситуативно.

да, насколько понял так и добавляются
гласом народным — люди просят, PHP-FIG рассматривает

какого-то архитектора, почетного диктатора, интересов корпораций нет

сами core-разработчики проблему в его отсутствии не видят.

я тоже не вижу, зачем в PHP асинхронщина
а тем более что появились и разиваются swoole, если очень надо

но то такое, если народ будет очень просить, думаю PHP-FIG рассмотрит

я тоже не вижу, зачем в PHP асинхронщина

Появляется всё больше задач где нужны постоянные соединения, а модель — fpm-процесс на коннект не работают, где нужно отправлять на внешний сервис(ы) сотни тысяч запросов и по-старинке поднимать десятки процессов, которые это синхронно рассылают уже не сильно то и современно.

Поэтому и появляются swoole, amphp, reactphp и т.д.
Swoole самый интересный и перспективный (имхо), всё думаю начать помогать им с документаций, да руки не доходят )
А пока и получается что бывает проще сбоку node.js поставить или тут-же пачку php-демонов запустить.

Swoole да, мне тоже видится самым перспективным.

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

Моё поэтому отношение
сделают ее из коробки — хорошо. Не сделают, да и ладно: нода,го, своле, для самописов, пушер ком,и т.д.если хватает функционала — меньше кода — проект проще :)

Или другое моё правило
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.

а в руби так и не сделали.

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

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

как по мне — лучше позже чем никогда.

фейсбуковцы отказались от идеи jit и сделали вообще другой язык Hack

Така статья на ДОУ была еще:
Когда PHP не справляется: практический опыт перехода на Hacklang.

не прижился он в массах

даже редкие
Phalcon
phalcon.io/en-us
RoadRunner
medium.com/...​golang-intro-9cc562fb4a09
roadrunner.dev

более известны, популярны в сравнении с Hack

Тот случай когда хотел в строгую типизацию но не смог, по этому добавил побольше не совсем строгой типизации ))))
Пхп как всегда, на 1 одну полезную фичу 5 каких то зашкваров.

Коментар порушує правила спільноти і видалений модераторами.

Благодарю! Кстати, какое у Вас самое любимое PHP IDE?

Когда-то был топик на похожую тему, правда наверное он немного устарел за 5 лет:
dou.ua/forums/topic/14158

Здравствуйте. Меня зовут Вячеслав, мне 22 года и я пхп программист. Я сижу на пхп с 18 лет.

Первый раз я попробовал пхп с другом. Мы сидели, обсуждали веб-технологии и тут он сказал, что недавно пробовал пхп. Он предложил попробовать мне. Поначалу я не согласился, ведь это пхп, я слышал много плохих слухов про него, слышал, что он вызывает зависимость. Но друг настаивал, говорил, что в жизни нужно попробовать все и я сдался. Он предложил бесплатный скрипт, выводящий «Hello world!». Он казался совсем безобидным, но как потом оказалось, я уже не мог остановиться. Уже очень скоро благодаря пхп я попробовал свою первую cms. Это сейчас я понимаю, насколько опасным был этот шаг, но тогда я ничего не понимал, и мне это нравилось. Я не заметил, как после первой испробованной cms, мне уже захотелось написать свою. Дальше было только хуже. Я уже рискнул попробовать кое что потяжелее. Я решил попробовать свой первый фреймворк. Это было прекрасно. Но это была дорога в никуда. На тот момент родственники уже отчаялись мне помочь, а моя девушка узнав, что я использую пхп бросила меня. Я все больше отдалялся от своих друзей и родных, мое окружение составляли такие же пхп-программисты как и я. Мы собирались у одного в квартире, подключались к серверу и совместно программировали, используя пхп и фреймворки. Я попал в этот капкан пхп и теперь не могу самостоятельно избавиться от этого, моя жизнь сломана. Если бы мог вернуться в то время, я бы все исправил, и никогда не купился на эту уловку.

Здравствуйте. Меня зовут Бот, мне 36 лет и я боянист. :-))))

и я боянист

речіст, голосіст і бояніст

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

Давайте обсудим как этого избежать!
www.linkedin.com/...​ents/6738138413498724352

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

кстати, боты бомбят не только известные php шные приложения
часто вижу какие-то asp.netовские щупают, по тому же принципу, ищут открытые для чтения конфиги.

ну и конечно папочку .git пытаются прочесть.
а что, «опенссорс» же :)
а вдруг там еще и ключики лежат к дев окружению. надо ж поучиться разработке, вот боты и любопытствуют.

З авторами ботів не знайомий, тому не можу запитати, навіщо вони мацають asp аплікуху.

Що до вашого знання по пхп то воно просто з згаданої категорії не вміющих читати.
то так, поширене явище в пхп світі

Запит формує пропозицію. Коли ані бюджету, ані часу на «джаву» то от і пропозиція.

А зміни у пхп, оті що у списку ініціює як раз інша частина пхпистів. Звісно вона менша.
І чекає ще асинхронщини, щоб без swoole та reactphp.
В PHP-FIG в курсі, але не слідкував за обговоренням. Там здається хочуть спочатку дженеріки зробити, щоб можна було проміси зробити типизованими

І так потроху пиха стає ... хм, а тепер не знаєш чим.

та джавою вона становиться. і використивується там де колись тільки джава та .net були

тому й такі фічи у мову затягуються.

Та туди де такий запит краще і не лізти.

не лізьте. я ж не лізу :)

але якщо є запит — то буде й пропозиція, і будуть лізти.
то особиста справа, «кожному своє».

UPD я забув про секту Го!

В Go какие-то обсуждения насчёт удалённого исполнения кода не имеют под собой почвы, поскольку Go компилируемый язык без виртуальной машины. К конфигу — также никакого доступа нет, и быть не может. Более того, лично я юзаю сшивку всех ресурсов в пак, который загружается в память, и контент раздаётся только оттуда через виртуальную файловую систему внутри него, которая никак не вылазит за пределы пака github.com/schwarzlichtbezirk/wpk.

В древние времена были популярны «shared web hosting», где куча веб-сайтов лежит на одном сервере. С ASP.NET там прокралась годная уязвимость.

ASP.NET выполняется в отдельном процессе (worker pool или как-то так). Этот процесс имеет минимальный футпринт где-то 50MB памяти. Когда хостинг стоит пару долларов в месяц, на один сервер вешали сотни веб-сайтов. По 50 МБ на всех не напасешься, поэтому все веб-сайты выполнялись под одним и тем же процессом. И как следствие — с одними и теми же привилегиями.

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

Возможность в другом:
если можно передать любой код и php-fpm его выполнит, то ой.
а по хорошему надо лезть в протокол php-fpm чтобы точно знать — а это возможно в общем случае?

Заявление о том что конфиги прочесть раз плюнуть для меня и звучит что — возможно.
Не знаю, протокол не изучал.Как и реализацию php-fpm.

Если заявляющий не понял о чем речь выше,то имеем Д-К эффект.

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

php-fpm общается по cgi протоколу с web-сервером, в самом протоколе нет возможности указать: а выполни вот этот произвольный код. Бекдор со стороны fpm’а, тоже нет, код открыт уже порядка 15 лет.
А вот новая уязвимость, может быть, ничто не идеально.

Прочесть «конфиги» — если разработчик/devops набокопорит с настройкой веб-сервера или в приложении, что позволит выполнять загружаемые файлы или какой-то eval над входящими параметрами, то ой.
С одной стороны, это вроде как и не проблема самого языка/fpm’а, с другой — есть способ выстрелить себе в ногу, чем неопытные разработчики с удовольствием пользуются. «Стабильности нет».

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

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

Мне вот все же уже интересно, он гений, или вообще не понял о чем там ему писали, и что мы с вами затронули :)

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

google.com
никонда не понииал люлей которые гуглят вместо кого -то типичную инфу

Вопросов больше не имею. Надеюсь, что вы так не посылаете свою команду, которую лидите.

общая рекомендация для тимлидов, на курсах, докладах, и т.п.

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

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

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

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

посмотрел сразу, как предложил вам нагуглить.

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

но вы да, телепатируйте дальше, о том кто я и что я знаю.

Если есть возможность, как-то ограничить пространство где этот remote code execution может произойти. И закинуть все это в сендбокс, у которого не будет досутпа к конфигурационным файлам.

Не хранить пароли в конфигурационных файлах, хранить их отдельно от исходного кода

Делать rotation паролей к базе данных, чтоб однажды слитые пароли нельзя было использовать бесконечно.

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

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

Хотите обсудить меры противодействия? Приходите на дискуссию!

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

Уважаемые посетители DOU!
Перед вами наглядный пример Даннинга — Крюгера. Человек, не имеющий фундаментального понятия о том, что такое ошибка нулевого дня, контекст процесса и имеющий опыт разработки на уровне 1С/PHP, и мыслящий теми-же категориями, просто не может осознать уровень проблемы безопасности.

Пожалуйста, постарайтесь избегать подобных ситуаций.

Перед вами наглядный пример Даннинга — Крюгера.

esupport.org.ua
У вас https отклеился, товарищ безопасник :)

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

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

в-третьих, в вакансиях на php нередко значится требуемое знание — «понимание HTTP запросов». И это совсем не о зазубривании спеки.
такое пишут потому что часто густо программист понятия не имеет как оно там работает. «он же Кодер, и уже скоро Архитектор»

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

а то что универсально — описано. так же как анонсируются CVE для которых уже вышли патчи. И на проекте кто-то обязан за этим следить.

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

А почему вы решили, что я хочу дать некую «экслюзивную инфу, которой нет в инете»?
Что до дыр — то уязвимость нулевого дня выходит раньше, чем CVE, отсюда и ее название. То есть вы можете стать успешной жертво атаки, так как патча просто еще нет в природе.
Именно о такой ошибке я и хочу провести дискуссию.

А почему вы решили, что я хочу дать некую «экслюзивную инфу, которой нет в инете»?

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

То есть вы можете стать успешной жертво атаки, так как патча просто еще нет в природе.

так и происходит обычно.
и от того чтобы не быть в первых рядах этих несчастных — тоже есть методы

но, когда например ситуация как была с Stripes для Java — хакнули тьму федеральных(США) сайтов из-за тонкостей сочетании десериализации в системной библиотеке и обработки внутри этого фреймворка — то никак от этого не защиться заранее. только потом — не применять таких решений в коде.

Именно о такой ошибке я и хочу провести дискуссию.

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

а смысл тогда вас читать?

Так не читайте, я не заставляю. Если человек хочет оставаться невеждой — это его право, и кто я такой чтоб решать это за него?

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

Хорошо, $5000 заплатите чтоб я для вас провел это на DOU?

Хорошо, $5000 заплатите чтоб я для вас провел это на DOU?

Может скинемся всем ДОУ и заплатим, а есть за что? Какие у вас регалии, чтоб с чистой совестью брать деньги за консультации в области безопасности?

Например за методологию решения этой задачи

Это ж Андрейка — «Карина не суть имя». 20 лет назад гнал в одесских группах, теперь гонит вот здесь.

Хорошо, $5000 заплатите чтоб я для вас провел это на DOU?

конечно нет. как вы поняли я гроша пока ломаного не дам за ваши знания.
даже в вашем где-то не на доу обсуждении участвовать не вижу смысла.
там где вы будете рассказывать про чтение конфигов раз плюнуть :)

Хорошо, как взломают — приходите, только стоимость может быть выше

В одном ты был прав — тебя тут закидают ссаными тряпками, правда ты угадал за что именно :)

¯\_(ツ)_/¯

Вопрос вы поставили, как для меня:
Что нужно, можно сделать для случая запуска вредоносного кода от имени и с правами приложения.

Буду думать, спасибо. Прикольная задачка.

Пожалуйста. Если хотите услышать больше интересного все-таки приходите на дискуссию. Интересны решения кейсов не только со стороны ops, но и со стороны dev.

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

Именно по этому, как DevSecOps я и предлагаю обсудить комплексные решения. Заходите, будет интересно.

Не, спасибо. «круто» вы на хабре автору Yii2 ответили :D
Там достаточно.

И где ваш хабр сейчас? www.host-tracker.com/...​df-4547-a90a-f99049e60ebb

Как тебе такое, Илон Маск?

Ведутся технические работы. На эту надпись по выходным нередко натыкался что на хабре что на других сайтах. Но если ваших рук дело — респект и уважуха :)

Если я скажу да — то нарушу закон. Если скажу нет — буду выглядеть глупо. По этому скажу так:
Ответ на данный вопрос существует.

Да это понятно что отвечать надо всегда — не я :) я и не задавал этого вопроса :)
на Yii кстати много сайтов в СНГ. Так что и samdark’у сможет кто-то ответить о его фреймворке :)

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

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

Хакнуть мировой екомерс — это не биткойны тырить.
а на вашу репутацию тем кто это понимает глубоко наплевать.
Так что берегите себя, им то вы все расскажете и покажете

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

Спросите у тех поддержки свифт кей

нашёл битков на 15 лямов ? (курс на 02.12.2020)

Вы наверное далеки от практики.

Сорян, у моего прошлого работодателя PHP был в блеклисте по директиве Senior VP из соображений безопасности, поэтому да, в этом плане я чисто теоретик.

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

Вообще не должен. Это дизайн из времен 90-х, сейчас так уже никто не делает. Веб-интерфейс, даже если он написан на PHP, не будет иметь прямого доступа к базе данных, он будет обращаться с каким-то mid tier или микросервисам. Эти микросервисы можно (и нужно) реализовать на какой-то другой технологии, в итоге, если атакующий захочет пройти квест до конца, ему нужно будет использовать zero-day PHP и одновременно zero-day, скажем, Java, что намного более проблематично.

Что это значит — если процесс PHP может прочитать файл с кодами или окружение, то значит и хаккер сможет.
А это значит, что все ваши совет про хранение отдельно файлов, ротации и файрволл — бесполезны. Раз хаккер действует в контексте PHP процесса, то он получает все доступы.

Это базовые вещи из области defense in depth, странно, что вы их считаете бесполезными. Позволяют снизить разные характеристики уязвимости. Например, если база данных не принимает подключения из интернета, то злоумышленник не сможет атаковать ее из интернета, имея логин и пароль — ему/ей прийдется постоянно сидеть на машине, которую он скомпрометировал.
Ротация паролей — значит, что ему прийдется постоянно эти пароли получать, что добавляет ему головной боли и т.п.
Чем больше проблем на пути у злоумышленника, тем менее вероятность того, что у него в итоге что-то получится.

Хотите обсудить меры противодействия? Приходите на дискуссию!

Если есть что сказать, пишите здесь.

Ну, что же — поздравляю. У вас неплохие понимания азов построения архитектуры. Но представьте себе, что очень много финтека, в сердце которого идут те самые php-скрипты времен 90-ых, причем мало того — они еще и заэнкожены от поставщика.
Конечно, их надо переписать, но... Вспомните историю с COBOL. Это старая штука все еще работает, потому что заменить ее — весьма долгий процесс. А у нас — финансы. То есть, пока процесс замены идет — надо защитить то, что уже есть.

К сожалению ваши базовые познания о защите абсолютно не помогут от атак на уязвимости класса PHP RCE типа CVE-2019-13224. А моя цель — как раз обсуждение предотвращения атак такого уровня.

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

Например, положить сайт внутри корпоративной VPN, прикрутить mutual TLS, добавить кучу trails, в итоге получить доступ к нему можно будет с ограниченного количества компьютеров и все ходы будут записаны. Если найдется какой-то инсайдер, который захочет что-то поломать с компьтера, выданного компанией, он может параллельно искать адвоката, который поможет ему 20 лет в федеральной тюрьме скосить до 5 лет + пожизненный запрет пользоваться компьютером.

Также нанимаются серьезные компании, которые специализируются в подобных проблемах, они предоставляют софт, который ставится на компьютеры и будет следить за подозрительной активностью. Эти люди обычно немного впереди публикаций zero-day vulnerability и предоставят обновления безопасности до того, как инфа о уязвимости попадет в паблик.

Это все прекрасно. В теории.
А по факту, у вас может быть ядром то самое приложение на PHP, которое принимает HTTP запрос на изменение баланса. И никакие VPN, TLS и прочее — просто не помогут. Так как экслплуатация узявомостей идет именно через запрос.
И если бы все было так радужно, и компании которые специализируются на подобных проблемах, были бы столь эффективны как вы себе воображаете — мы бы никогда не получили таких печальных казусов, как Petya-A, который нанес ущерб в размере 0,5% ВВП Украины.
Но я вижу, что вас тема немного затронула. Предлагаю вам принять участие в дискусси, я выскажу свои тезисы и затем с удовольствием выслушаю ваши.
t.me/moderncybersec

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

Андрей, единственное, что вы продемонстрировали в этом топике — это токсичность и нетолерантность к чужому мнению. Ничего, что заинтересовало бы идти на какую-то дискуссию о безопасности с вами куда-то там :)

Если вам есть что сказать, пишите здесь. Я уже сделал свою fair share предложений и пока что ничего не увидел с вашей стороны.

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

Профессору высшей математики его тайтл был выдан ученым советом. Какой у вас тайтл и кем он был выдан?

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

Если желаете, то можете называть меня кратко — пророк.

К сожалению ваши базовые познания о защите абсолютно не помогут от атак на уязвимости класса PHP RCE типа CVE-2019-13224.

так она ж и гуглится сразу :)
как и эксплойт,
This is an exploit for a bug in php-fpm (CVE-2019-11043) github.com/neex/phuip-fpizdam

вы сами то читали о причинах этой дыры, чтобы предложить общий и навсегда рецепт? ;)
и конфиги даже с этой дырой — прочесть выйдет далеко не всегда.

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

И живо, и проекты на нем новые стартуют :)

Намного более показательный рейтинг tiobe.com/tiobe-index
А рейтинг на ДОУ, это так, измерения в песочнице :)

The index is calculated from the number of search engine results for queries containing the name of the language.
www.tiobe.com/...​ing-languages-definition
en.wikipedia.org/wiki/TIOBE_index

Можно еще и так оценивать рейтинги octoverse.github.com

нельзя, если питон
преподается в школах, колледжах, курсах для вайтнишников, то там масса репозиториев — стопицотая лабораторка и ее форки

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

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

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

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

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

хотя, может на Julia переедут, не вникал

а пока эта сфера тоже накачивает популярности.

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

все правильно.
само слово популярность об этом
Популя́рность (от лат. populares, от populus — народ) — высокая степень востребованности кого-либо или чего-либо в определённой области.

но вот что неправильно, когда популярность ставят в утверждениях вместо «профессиональное программирование». ну типа синонимы, а чё.

а так, естественно, если под популярностью языков программирования понимать именно популярность, то берем TIOBE и все сойдется:
Visual Basic популярней и JS, и PHP, и SQL

а у С++ — 4ая строчка.
популярен, факт!

Что есть

«профессиональное программирование»

? Писать программу машинными кодами?
Популярность языка — это одна из сторон его живучести и возможности применения его в ближайшей перспективе. Большинство ЯП, в основном, развиваются благодаря все той же популярности. Незачем развивать ЯП, которым интересются 2 человека.
Взять туже самую пыху — лет пятнадцать назад до 90% всех динамических сайтов в тырненте были на ней. Сейчас ситуация здорово изменилась — добавилось большое количество альтернативных вариантов забацать сайт — шарп, ява, го, пайтон и т.д. и т.п. При этом, все эти ЯП, не заточены только под вэб!
Огласите список того, где ещё можно применить пыху, кроме вэба? И на сколько серьезно это все?

профессиональная деятельность это такая, за результат которой платят деньги.
водитель своего авто — занимается непрофессиональной деятельностью
таксист — профессиональной.

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

Огласите список того, где ещё можно применить пыху, кроме вэба?

там где она и применялась изначально — на бекенде.
пыха на вебе никогда и не применялась. там HTML, CSS и JS

добавилось большое количество альтернативных вариантов забацать сайт — шарп, ява, го, пайтон

ну забацайте сайт без HTML, CSS и JS.
покажете?

что такое «для веба», моя твоя не понимай

С++ тоже для веба применяется, на нем браузеры написаны. не?

И на сколько серьезно это все?

несерьезно конечно «это все».
веб это вообще несерьезно, пыхи эти, jsы. баловство одно этот веб.
давайте вычеркнем из списка профессиональной разработки.
джангу тоже вычеркивайте.

что оставите?
серьезным что у вас называется?

там где она и применялась изначально — на бекенде.
пыха на вебе никогда и не применялась. там HTML, CSS и JS

Так он и имеет в виду вэб-бекэнд. Пхп для разработки десктопных приложений — не применяется, для работы с большими объёмами данных — не применяется, для встраиваемых решений — не применяется, и т.п.

Так он и имеет в виду вэб-бекэнд

я догадываюсь что имеется ввиду :)

Пхп для разработки десктопных приложений — не применяется, для работы с большими объёмами данных — не применяется, для встраиваемых решений — не применяется, и т.п.

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

не только конечно, есть и системный софт на них.

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

оставляем:
десктопные приложения
с большими объемами данным (а там питон, или все же NumPy какой-нить, на С ;)
встраиваемые решения. которые да, бывает на и на урезанном C# делают. и даже в рапсбери на питоне — бывает.
еще что-то?

а, кстати, забыл, если интересно про jit

Самое интересное в PHP 8 / Дмитрий Стогов (Zend Technologies)
youtu.be/nJ2jtYazx68

там и про асинхронщину он кратко ответил

Самое интересное в PHP 8 / Дмитрий Стогов (Zend Technologies)
youtu.be/nJ2jtYazx68

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

Пишите, кто ж неволит.
только есть доклад и об этом.
от разрабов roadrunner(он на Go) . Они ж его для себя писали, и клиентам делают решения на смешанном стеке.

Так вот там из зала тоже был вопрос,так зачем вообще вам php

Понимаете, мы убеждались неоднократно,что скорость разработки на php раза в 3 выше, чем на Go — был ответ.

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

А каждый конечно пусть пишет на чем хочет. И в области где хочет.Дело личное.

Понимаете, мы убеждались неоднократно,что скорость разработки на php раза в 3 выше, чем на Go

Ну я года 3 назад тоже проводил такие тесты. Были некоторые задачи по обработке данных, я писал решение на Go, а другой чувак, который лет 10 пишет на пхп, писал те же самые решения на пхп. Ну так вот, скорость написание кода на Go оказалась в 6-10 выше, чем на пхп, а производительность более чем в 30 раз выше, причём точно мерить там уже нет смысла, сливает вчистую.

Ну так вот, скорость написание кода на Go оказалась в 6-10 выше, чем на пхп

интересно было бы узнать задачу :)

потому что дело в этой разнице совсем не конкретно в «Go» и «PHP»
и не программистах как таковых. если мы конечно не берем джуна и синьора в соревновании

конечно есть и такие задачи. и были, и будут, где скорость разработки будет обратная.

и Пять миров Спольски — никто не отменял, а наоборот, по моему еще парочка добавилась, статья то старая

а производительность более чем в 30 раз выше

вы вроде как доклад смотрели?
там ведь сказано что вроде бы очевидно
если приложение ждет ответа БД — то...

на Go оно будет ждать быстрее в 30 раз? ;)

а если вас числодробилки интересуют, так вот они, не с Go конечно, а с питоном который кручее
benchmarksgame-team.pages.debian.net/...​/fastest/php-python3.html

а вот по вебщине. конечно там есть такие специально заточенные решения, что на практике вряд ли кто применять будет
www.techempower.com/...​data-r19&hw=ph&test=query

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

интересно было бы узнать задачу :)

Никакой БД, парсинг и преобразование данных из файла. В случае, если бы БД всё-таки участвовала, то никаких задержек на чтение/запись туда не было бы. Почему? Потому, что есть очередь и события. Код на Go в конечном счёте упирается в скорость работы винта, а код на пхп — вообще не понятно во что, винт там не загружен, проц — частично. Чувак код на пхп оптимизировал, пробовал разные варианты, и никакого кардинального профита не было.

Понятно.
Без БД? Не могу припомнить таких задач.
разве что разовые скрипты ,перегнать экспорт — импорт.
На perl их помнится писал. По времени работы -да без разницы, это ж разовая операция. Абы не недели.

А про «если бы БД была», то очередь организовывается внешними тулзами. Даже когда это вполне себе джава. В пхп то же самое. В Go принято самим эти велосипеды писать? Ну ок, тоже подход, для разового скрипта, или времянки на выброс.

Что там чувак оптимизировал, непонятно.Числодробильная задача ж.
Не удивлюсь если на эти «оптимизации» у него и ушло время :)

гадать можно долго, как это у него на такой задаче разработка вышла дольше во столько раз.

Учитывая насколько Go синтаксически и семантически беднее.

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

Никаких тулз не нужно, всё делается элементарно через каналы. То есть, необходимость выстраивать пирамиду из нод и мессдж брокеров — отпадает, если надо переработать базу в несколько десятков гиг за несколько минут. А собственно нафига всё это раньше делалось? Ну и работа с базой упирается всё в то же бутылочное горлышко — скорость работы винта.

всё делается элементарно через каналы

да, на джаве тоже никаких тулз не нужно, все элементарно делается потоками и парой классов с библиотеки

А собственно нафига всё это раньше делалось?

долго объяснять, зачем очереди организацией внешними тулзами, и на джаве, а не «элементарно»

и работа с базой упирается всё в то же бутылочное горлышко — скорость работы винта.

а в Go эта проблема решается элементарно, через каналы.
я вас понял.

не говоря о более насущной в системах где БД просто «по дефолту».
Когда DDD или что-то подобное, и т.д. и т.п.
о скорости разработки в конечном итоге :)

В таких задачах сравнивать производительность компилируемого языка и языка с виртуальной машиной без jit (не на php 8 он же писал) большого смысла нет. Победитель очевиден. Но, если сравнить с языками своей весовой категории — python, ruby, то уже будет всё вполне ок у php.

Ну и конечно сильно много неизвестных как что делалось, на Go очевидно что через корутины,каналы с использованием всех ядер. А на php неизвестно, это ж консольно запускалось скорее всего. По дефолту нет работы с потоками, использовался ли какой-то extension или делался ли форк основного процесса хотя бы по количеству ядер — неизвестно. С большой вероятностью всё работало в один поток, может ещё и логика/структуры данных не совсем удачно выбраны, пишут то как привыкли — вызывать in_array() в цикле, вроде и норм, но не когда итераций и элементов в массиве овер-дофига, вместо того чтоб как с хеш-мапой работать и подобное, что уводит big-O вверх.

Что до скорости разработки, хз, в таких задачах там всего-то и нужно if/else, циклы и работа со строками и массивами. На любом языке быстро делается. А вот чтоб распаралелить, «обычному» php-шнику будет сложнее, чем go-разработчику, для которых это типичная рутинная задача.

Кстати, здесь уже не раз упоминался swoole — экстеншн для php, как раз вдохновлялись golang’ом — корутины, каналы, отдельный шедулер и вот это вот всё. Но пока это ещё экзотика.

Да, конечно и вычисления и запись/чтение в коде на Go осуществлялись в горутинах, и с каналами, загрузка всех ядер — равномерная. Но общая производительность всё равно не будет произведением производительности 1 ядра на их количество, эффективность зависит от синхронизации в первую очередь, кроме того за скобками остаётся эффективность использования кэша проца.

На php — в один поток. Насчёт многопоточного варианта — спрашивал, он сказал что в пхп есть такая возможность, но выяснилось, что там юзается глобальный мьютекс, типа как в пайтоне, а значит и толка от этой многопоточности для вычислений нет. Вычисления состояли в парсинге json-документов, и формировании других документов на основе этих данных.

но выяснилось, что там юзается глобальный мьютекс

у меня как-то один мэтр php на собеседовании выдал
— ... так MySQL же однопоточный
— 8) рылли? MySQL?
— да! мы проверяли, написали скрипт, дергали его, смотрели загрузку ядер. MySQL использовал всегда только одно ядро. однопоточный он.

ясно. понятно.

он сказал что в пхп есть такая возможность,

есть там некоторые возможности.
но обычно не стоит трогать эти возможности :)

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

Вычисления состояли в парсинге json-документов, и формировании других документов на основе этих данных.

и в 6-10 раз дольше писать, на пхп, пусть и работает в 100 раз медленее чем на С??

у меня как-то один мэтр php на собеседовании выдал

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

зная что пхп — однопоточный, сделать открытие что там «глобальный мьютекс» это да

Да это как бы не мои проблемы.

и в 6-10 раз дольше писать, на пхп, пусть и работает в 100 раз медленее чем на С??

Факт в том, что когда я уже всё сделал на Go, он всё ещё продолжал писать скрипт на php. А работал скрипт 2 дня, пока его не остановили, поскольку надоело это ждать, и так всё ясно. С другими задачами картина та же примерно была.

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

что — ясно?

Да это как бы не мои проблемы.

и не мои :)
php однопоточный от рождения, потому что менеджером потоков или процессов для него изначально выступала — вызывающая приложение на нем сторона.
ему встроенная многопоточность поэтому и не нужна была.
И сейчас непонятно зачем.
Поэтому и нет её.

Факт в том, что когда я уже всё сделал на Go, он всё ещё продолжал писать скрипт на php.

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

потому и интересно — причины такого странного, редкого в природе явления

С другими задачами картина та же примерно была.

еще и с другими. офигеть просто, какая у вас другая вселеннная!
разработка на php в 6-8 раз медленее чем на С — той же задачи «парсинга» «текста».

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

Поэтому такое и внимание к факту что вы видели ещё и на других задачах:

разработка на php в 6-8 раз медленее чем на «С»

А работал скрипт 2 дня, пока его не остановили, поскольку надоело это ждать, и так всё ясно.

что — ясно?
что интерпретатор, даже с jit, уступит машинному кодому, сгенерированному даже средненьким по оптимизациям компилятору?

разработка на php в 6-8 раз медленее чем на «С»

У нас тут речь о Go vs php.

что интерпретатор, даже с jit, уступит машинному кодому, сгенерированному даже средненьким по оптимизациям компилятору?

Судя по докладу, становится ясно, что чудес от того jit ожидать не стоит, в то время как производительность кода LuaJIT примерно как у аналогичного кода на Go. И в Lua тоже нет поддержки многопоточности, как в php и остальных скриптовых языках.

Я в курсе что речь шла о Go.
Усугубил для подсказки :)

В общем подробностей о чуде в скорости разработки в ваших случаях можно не ждать?

Что же до возможностей jit которые обусловлены/ограничены свойствами ЯП уже писал.
Как и о том что в типичном применении у приложений в бизнес ПО затыки в другом месте. У джавовских и дотнетовских такие же.
Как и такой же тип хейтинга — взять числодробильную задачу, реализовать на С, и показать какая жаба вашая тупая и жрущая память.

Вы подтвердили что хейтер не способен вести рациональное обсуждение. Потому что причина хейтинга — иррациональна.

Исключение ребята из мира ФП. (это не те что что-то там из фишек используют в мейнстрим ЯП если что)

Усугубил для подсказки :)

Что-то не совсем ясно, что вы усугубили для подсказки. Разработка на C и Go значительно отличается друг от друга по ряду обстоятельств, прежде всего отсутствием GC в C, и workflow в целом совершенно иной.

В общем подробностей о чуде в скорости разработки в ваших случаях можно не ждать?

А какие ещё подробности? Просто садишься, и пишешь код как обычно, что ещё.

Вы подтвердили что хейтер не способен вести рациональное обсуждение.

Вам только кажется обсуждение не рациональным, поскольку рациональность фактов вы не готовы воспринять. А факт совершенно очевиден: php сливает и по скорости написания кода, и по производительности решения.

Как и о том что в типичном применении у приложений в бизнес ПО затыки в другом месте.

Затыки возникать могут по разным причинам, в связи с неоптимальной архитектурой системы, например ключевой высоконагруженный сервис с кучей запросов на php, или разделение на микросервисы, там где можно всё реализовать в одном сервисе, ненужные посредники/врапперы, да и мало ли что.

А какие ещё подробности?

как так вышло что у вас рыбы по небу полетели :)

поскольку рациональность фактов вы не готовы воспринять.

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

А факт совершенно очевиден: php сливает и по скорости написания кода,

бред же :)
но вы из этого первого, основного типа. ничего не личного :)
поэтому остальное что вы пишите — туда же.

чисто рационально :)

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

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

бред же :)

Здесь можно посоветовать только провести эксперименты самостоятельно.

Кстати, ещё скрипты на Lua очень удобны в плане работы со строками и обработки документов, и весьма производительны. Там есть свой производительный вариант регулярных выражений (хотя если есть возможность, лучше вообще без регулярок).

Спасибо, столкнусь с проблемой скорости обработки строк, посмотрю lua. Смотрел уже на него как-то, прикольный. Как и с удовольствием читал интервью и цели его автора.

Go тоже смотрел, и следил.
Вам стоит пересмотреть презентации Пайка где он рассказывает ради какой ниши он его преднамеренно обеднил. Я глянул слайды одного его доклада, а то мало ли, за столько лет забыл что.
Эксперементы без анализа причин результата, или предварительной гипотезы — это просто метод мимодумного тыка.

Это и было интересно обсудить.
Как на обедненном ЯП можно писать быстрее в фантастическое число раз. В каких случаях и почему.

Ну а то что вы сьезжаете с своего тезиса, ещё и в сторону не имеющую никакого отношения к нему — говорит о том что у вас нет ничего, кроме того что «я лично видел! »

Самую распространённую я и назвал, хейтер, весьма похоже первого типа :)
Это нормально, обычное дело у нас в айти.
Поэтому и ничего личного, не телепат же

Читал я Пайка, он поступил абсолютно правильно, что снизил входной барьер для разработчиков. То что Go — обеднённый язык, это одна точка зрения. С другой — он специально создавался как инструмент для простой и быстрой разработки кода, и эта цель была достигнута. Go сочетает в себе преимущества чисто компилируемых языков и скриптов, поскольку есть замыкания и свой релиз коротинов, отсутствующих в C/C++. Именно замыкания и коротины — это основная фича Lua, которая служит одним из основных мотивов встраивания в софт на C++, поскольку всё остальное и так можно реализовать на C++. Эти фичи в Go дают возможность писать исполнимый код в тех задачах, где преимущество имели скрипты. Причём код простой без лишних абстракций. Плюс удобные библиотеки. Так что ничего удивительного на самом деле нет. Да и в принципе всё это уже обговорено сотни раз.

И ещё лямбда-выражения в качестве замыканий. А смартпоинтеры — это вместо GC.

А смартпоинтеры — это вместо GC.

Зато в Go есть периодические задержки, связанные с GC, вместо нормального перформанса. Достойная альтернатива.

Я даже глянул у себя в проге fraction of CPU time used by GC: 0.00000285176. Если задержки GC имеют значение, то прежде всего приложение стоит спроектировать так, чтоб было не сильно много управляемых GC объектов.

— В Go офигенный сборщик мусора.
— Дык вот, анализ показал, что сборщик мусора вызывает тормоза в нашем приложении
— Да, сборщик мусора вызывает задержки. Перепишите приложение, чтоб сборщик мусора не использовался
— О, спасибо, переписали на Rust, теперь збс

Дык вот, анализ показал, что сборщик мусора вызывает тормоза в нашем приложении

Проблема надумана, работа GC отнимает миллионные доли процессорного времени, в то время как правильная архитектура приложения будет иметь гораздо большее значение. Не говоря уже о том, что время пинга при запросах/ответах у клиента может быть значительным, и ничего с этим не сделать.

Проблема надумана, работа GC отнимает миллионные доли процессорного времени

Ты это Discord расскажи, а не мне :)

Читали, да не дочитали.

Как и про луа. Поищите интервью

Про факты же, вам просто надо себе ответить
Люди регулярно видят НЛО.
Инопланетяне регулярно посещают Землю

Какое из утверждений или оба — факт? Почему?

У нас я видел несколько случаев что...
В большинстве случаев будет как у нас
Приничины явления у нас, и причины явления в большинстве случаев...

А между этими тремя утвержденияи в чем разница?
А в качестве аргументации — какое лучше?

О подсказке в виде замены на С
А почему на С не пишите?

Это ж о том был намёк на древний мем
Если тебя так беспокоит быстродействие — пиши на ассемблере.
Так говорили ещё в те времена когда я писал ни С

Так все же, может теперь вы расскажете — рационально, свою гипотезу, как так у вас там на го в 6-8 парсинг текста быстрее пишется чем на пыхе?

Кроме хейтинга, у меня ещё пояснение, видел регулярно и анализировал
Девопсы пришедшие с сисадминов в девопс — дупля не отдают в разработке. Но глубоко уверены что рассказывают программистам о настоящем программировании.

P.S.
про девопсов вспомнил, из-за

Эти фичи в Go дают возможность писать исполнимый код в тех задачах, где преимущество имели скрипты.

вчерашние сисадмины просто сложнее скриптов ничего не писали.
и видел вживую как пишут они скрипты на C#.

нередко уже и веб ремесленники так не пишут, потому что это ж канонический, хрестоматийный говнокод. от ЯП не зависит.

но апломбу то, «познаний» в программировании у скриптописателей

я не о вас. просто обобщение житейского опыта :)

Как и про луа

Да ничего, мне про lua что-то ещё читать нет необходимости.

А почему на С не пишите?

Если что, я тоже писал на C, но в основном на C++.

Если тебя так беспокоит быстродействие — пиши на ассемблере.

Меня больше беспокоит здравый смысл, а если почитать даже последний стандарт C++, например по ссылке выше на коротины, становится понятно, почему написание на C++ большинства прикладных задач со здравым смыслом расходится.

Девопсы пришедшие с сисадминов в девопс — дупля не отдают в разработке

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

Мутная история в общем. Говнокодер на пыхе ещё быстрее пишет чем правильный программист. И быстрее чем питонист, питон будет все же напрягать в некоторых моментах, а пыха — нет. Пиши как хочешь.

Хейтерство обычно о чем то абстрактном.

А то что наверняка больше всего говнокода написано на php из мейнстримовых — да. Второе место даю js.

Но это следствие низкого порога входа, а не принуждение языка, как скажем с бейсиками (и то не всеми)

И отдельно про низкий барьер для программистов.

Двойная мораль у хейтеров:
Когда указывается что у пыхи низкий входной барьер
— да, вот и пишут на нем нубы, недоучки, и всякие говнокодеры
Когда про любимый яп
— да, поэтому и пишут на нем прагматичные настоящие программисты

В теме о ниасиляторах Скалы подробности почитайте, прежде чем приводить как достоинство Go
:)

Тут уже много написали, добавлю чуть-чуть.

В php нет GIL и глобальных мьютексов, которые бы блокировали выполнение в несколько потоков на разных ядрах. Но и самой многопоточности из коробки тоже нет ))
Но если ставить extensions для этого, самый популярный из которых pthreads, то используются все ядра и соответствующее ускорение работы, в отличии от python.

Я имею некоторый опыт с php, js, ruby, python, java (и ещё всякого но в меньшей мере и не беру в расчёт). И не вижу ни в одном из этих языков принципиальной разницы в скорости написания логики, которая читает из базы, трансформирет данные и куда-то перекладывает/сохраняет. Пока имею ввиду не конкурентную логику, а в один поток. Что до кокурентности, то в скриптовых проще делать через пул-процессов, а не многопоточность, но таки можно распараллелить выполнение, просто кто-то не смог.

В общем у меня есть сомнения в знаниях php-шника, с которым ты «конкурировал» и делаешь глобальные выводы, о том что на go писать в разы быстрее чем на php (сюда по твоей логике вообще можно любой язык ставить, как минимум скриптовый). Так что в общем случае не убедительно.

Но задачи где нужно эффективно именно в многопоточность, да, на Go написать будет проще и быстрее чем на php/js/ruby/python, на этом поле php в общем-то и не играет.

В общем у меня есть сомнения в знаниях php-шника, с которым ты «конкурировал» и делаешь глобальные выводы

да там много варинтов может быть.

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

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

всяко бывает.

но, неизвестно что там и как вышло.

Ну вот и я считаю что по одному кейсу обобщать смысла нет.

это потому что мы с вами немножко того, дилетанты мягко говоря
кто на пыхе пишет — тот же дилетант автоматически :)

эксперт же нам говорит:

поскольку рациональность фактов вы не готовы воспринять. А факт совершенно очевиден: php сливает и по скорости написания кода

и

Здесь можно посоветовать только провести эксперименты самостоятельно.
— Union Types
— Named Arguments
— Match Expressions
— Attributes
— Constructor Property Promotion
— Nullsafe Operator
— Weak Maps
— Just In Time Compilation

Ну и слоупоки...

виглядит круто
по расширению синтаксиса — вполне на уровне с 7.0, не какие-то там мелкие допиливания, а сразу конструкций новых насыпали

DOU використовував PHP до 2010 року десь.

DOU запустився в 2005 році і тоді використовував WordPress:
dou.ua/...​lenta/sitenews/321-start

з 2011 року він припинив використовувати WordPress і PHP:
dou.ua/lenta/sitenews/new-dou

он же вроде на питоне или не?

Підписатись на коментарі