За 10 лет программирования на PHP об этом слышу впервые) Хотелось бы увидеть разборы самых популярных шаблонов проектирования, таких как фабрика, абстрактная фабрика, мост, репозиторий и тд.
Судя по вашему объяснению вначале, нужно было еще попробовать написать тесты, чтобы при добавлении элемента добавлять случайную переменную в память(имитируя работу другого скрипта что записывает что-то в память параллельно работе этого), и тогда обычные массивы могли бы оказаться медленнее чем spl
Это не очень тривиальная задача, поскольку память может распределяться неожиданным (на первый взгляд) образом, и далеко не всегда получится привести вот к такому "конфликту" между двумя объектами в памяти. Чем выше уровень языка, тем сложнее (а то и невозможно) управлять такими низкоуровневыми штуками, как распределение памяти.
Тема со структурами данными, прям находка. Как и с Enum. У вас очень классно получается, продолжайте развивать эту и подобные темы, такое всегда интересно, особенно учитывая насколько распространен php, и не каждый программист знает что вообще есть что-то кроме array (Я, конечно, утрирую, но согласитесь, такая ситуация вполне может быть). И, немного не в эту тему, но в предыдущем видео вы затрагивали вопрос про то, куда движется php и мне хотелось бы услышать ваше мнение по поводу файберов(Fiber). Что это и с чем едят, когда и как это может применятся, а главное куда это движет php, возможно ли, что со временем в php, как говорится из коробки, будет доступна асинхронность (например как async await в js) и мы сможем делать, например, websoket'ы на чистом php)))) В лююбом случае продолжайте, у вас хорошо получается))))
Илья, огромное спасибо за поддержку! Вы не представляете, как такие комментарии мотивируют двигаться вперёд! И про Fibers. Я давно приглядываюсь к этой теме, но всё как-то откладывал и откладывал. А теперь точно знаю, какой ролик очень скоро выйдет на канале :) Спасибо за толчок в нужном направлении!
Спасибо за поддержку! Использование памяти, конечно, будем затрагивать. Но не отдельным каким-то роликом, а будем при случае смотреть и на выделение памяти, и на garbage collector, и на замеры используемой памяти (в 8.2, кажется, интересная функция приезжает, как только бета выйдет, посмотрим). А насчёт Go... Нет, я пока не готов, не чувствую этот язык пока, не понимаю его соли. Он мне очень нравится, но нужно ещё покурить это дело вдумчиво.
@@freelancer_eyes Про го, это вообще больная тема. У меня го очень тяжело идёт, даже если сравнивать с переходом с js-фронта на бэкенд на php и переход был гораздо легче, хотя и опыта было меньше. Я общался с одним из кураторов курса по го от EPAM (практикующий программист), он сказал что у тех кто приходит с php, часто сложнее переход дается, чем с некоторых других популярных бэкенд языков (не уточнял каких), видимо особенности разницы мышления и подходов к написанию кода в php и go. Но говорит это решается банальной практикой. А так, он согласен с моим мнением что сейчас набирает популярность связка PHP + GO. Это же я видел в докладах компаний, вроде авито.
SPL DLL реализует Iterator интерфейс. Так почему он не подходит для foreach? И зачем rewind() два раза вызывать? В документации по очереди и стеку написано, что нельзя изменить направление итератора.
Спасибо за вопросы! SplFixedArray тоже реализовывал интерфейс итератора до 8-ой версии языка, теперь эта возможность убрана. Потому что неэффективна. Для DLL реализация итератора сохранена (пока?), и его можно, конечно, использовать. Вопрос только в том, нужно ли это? Как конкретно мы используем DLL, почему нам потребовалось итерировать? Наиболее частое употребление DLL - это всё-таки очереди/стэки, в них итерация... нужна ли когда-нибудь? Зачем rewind() два раза вызывать? Конечно, не нужно. Возможно, у меня в видео как-то невнятно что-то прозвучало, прошу прощения. Если мы уже "в голове" списка, то перематывать ещё раз, конечно, бессмысленно. Насчёт изменения направления итератора - вы имеете в виду то, что в setIteratorMode() нельзя изменять первую составляющую маски (FIFO/LIFO)? Я именно это и попытался продемонстрировать в ролике. Или вы что-то иное имеете в виду?
@@freelancer_eyes я имел ввиду, что документация setIteratorMode() для Queue и Stack уже говорит о невозможности задать направление. Так что разжевывание с демонстрацией имхо излишнее. На счет итерации в DLL, foreach используя внутреннюю итерацию может быть до двух раз быстрее, чем любой цикл при размере списка >= 100к
це дуже цікава інфа з дуже крутими поясненнями
У вас отлично получается объяснять, спасибо!
Спасибо на добром слове! Рад быть полезным.
Чем дальше в лес - тем толще партизаны) Посмотрел с удовольствием!
Спасибо за поддержку!
За 10 лет программирования на PHP об этом слышу впервые)
Хотелось бы увидеть разборы самых популярных шаблонов проектирования, таких как фабрика, абстрактная фабрика, мост, репозиторий и тд.
Весьма полезно. Спасибо
Спасибо на добром слове! Рад оказаться полезным.
Судя по вашему объяснению вначале, нужно было еще попробовать написать тесты, чтобы при добавлении элемента добавлять случайную переменную в память(имитируя работу другого скрипта что записывает что-то в память параллельно работе этого), и тогда обычные массивы могли бы оказаться медленнее чем spl
Это не очень тривиальная задача, поскольку память может распределяться неожиданным (на первый взгляд) образом, и далеко не всегда получится привести вот к такому "конфликту" между двумя объектами в памяти. Чем выше уровень языка, тем сложнее (а то и невозможно) управлять такими низкоуровневыми штуками, как распределение памяти.
Лучший канал, в реки попал, удача, развития каналу
Очень понятно и доходчиво объясняете. Отдельный лайк за тесты. Кончено, жду 3-е видео про массивы в php. Большое спасибо!
Спасибо на добром слове, Эдуард! Готовлю видео о хэш-таблицах (на которых и реализованы PHP-array)
Тема со структурами данными, прям находка. Как и с Enum. У вас очень классно получается, продолжайте развивать эту и подобные темы, такое всегда интересно, особенно учитывая насколько распространен php, и не каждый программист знает что вообще есть что-то кроме array (Я, конечно, утрирую, но согласитесь, такая ситуация вполне может быть).
И, немного не в эту тему, но в предыдущем видео вы затрагивали вопрос про то, куда движется php и мне хотелось бы услышать ваше мнение по поводу файберов(Fiber). Что это и с чем едят, когда и как это может применятся, а главное куда это движет php, возможно ли, что со временем в php, как говорится из коробки, будет доступна асинхронность (например как async await в js) и мы сможем делать, например, websoket'ы на чистом php))))
В лююбом случае продолжайте, у вас хорошо получается))))
Илья, огромное спасибо за поддержку! Вы не представляете, как такие комментарии мотивируют двигаться вперёд!
И про Fibers. Я давно приглядываюсь к этой теме, но всё как-то откладывал и откладывал. А теперь точно знаю, какой ролик очень скоро выйдет на канале :)
Спасибо за толчок в нужном направлении!
В хорошем направлении идете. Осветите еще тему про память в ПХП. Еще бы плейлист про Go для PHPшников))
Спасибо за поддержку!
Использование памяти, конечно, будем затрагивать. Но не отдельным каким-то роликом, а будем при случае смотреть и на выделение памяти, и на garbage collector, и на замеры используемой памяти (в 8.2, кажется, интересная функция приезжает, как только бета выйдет, посмотрим).
А насчёт Go... Нет, я пока не готов, не чувствую этот язык пока, не понимаю его соли. Он мне очень нравится, но нужно ещё покурить это дело вдумчиво.
@@freelancer_eyes Про го, это вообще больная тема. У меня го очень тяжело идёт, даже если сравнивать с переходом с js-фронта на бэкенд на php и переход был гораздо легче, хотя и опыта было меньше. Я общался с одним из кураторов курса по го от EPAM (практикующий программист), он сказал что у тех кто приходит с php, часто сложнее переход дается, чем с некоторых других популярных бэкенд языков (не уточнял каких), видимо особенности разницы мышления и подходов к написанию кода в php и go. Но говорит это решается банальной практикой. А так, он согласен с моим мнением что сейчас набирает популярность связка PHP + GO. Это же я видел в докладах компаний, вроде авито.
SPL DLL реализует Iterator интерфейс. Так почему он не подходит для foreach? И зачем rewind() два раза вызывать?
В документации по очереди и стеку написано, что нельзя изменить направление итератора.
Спасибо за вопросы!
SplFixedArray тоже реализовывал интерфейс итератора до 8-ой версии языка, теперь эта возможность убрана. Потому что неэффективна.
Для DLL реализация итератора сохранена (пока?), и его можно, конечно, использовать. Вопрос только в том, нужно ли это? Как конкретно мы используем DLL, почему нам потребовалось итерировать? Наиболее частое употребление DLL - это всё-таки очереди/стэки, в них итерация... нужна ли когда-нибудь?
Зачем rewind() два раза вызывать? Конечно, не нужно. Возможно, у меня в видео как-то невнятно что-то прозвучало, прошу прощения. Если мы уже "в голове" списка, то перематывать ещё раз, конечно, бессмысленно.
Насчёт изменения направления итератора - вы имеете в виду то, что в setIteratorMode() нельзя изменять первую составляющую маски (FIFO/LIFO)? Я именно это и попытался продемонстрировать в ролике. Или вы что-то иное имеете в виду?
@@freelancer_eyes я имел ввиду, что документация setIteratorMode() для Queue и Stack уже говорит о невозможности задать направление. Так что разжевывание с демонстрацией имхо излишнее.
На счет итерации в DLL, foreach используя внутреннюю итерацию может быть до двух раз быстрее, чем любой цикл при размере списка >= 100к
@@dyadyushka-au ну, так-то в документации всё написано, так что видео в общем-то вообще излишне :)
Замечание про foreach очень верное, спасибо!