All streams
Search
Write a publication
Pull to refresh
100
0.6
Роман Смирнов @Source

Head of Elixir at Ecom.tech

Send message

Даже чтобы завести личный сайт уже не надо писать его с нуля на PHP, или писать очередную CMS на PHP, как это было модно 20 лет назад.

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

А вы точно не помните, как гитхаб банил репозитории того же сбера по политическим мотивам?

И что? Github - это просто удобная мордочка, все данные репозитория хранятся и на вашем локальном компе, так что от бана на гитхабе не случается такого, что "потеряешь доступ ко всей информации"

Лично мне маркдаун неудобен. 

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

Ну если вы так боитесь "кого надо" - можно же держать этот блог вне юрисдикции "кого надо"?

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

А гитхаб репозиторий точно не могут забанить?

А вы точно программист? Как Git функционирует понимаете?

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

P.S. Считать падение реального дохода опираясь на FMCG - это разумеется совершенно некорректно для зарплат выше уровня "только на еду хватает"

А сейчас опять 92 рубля, прям ровно столько же, как и в феврале 2024-го. И какой из всего этого вывод?

Так, медианная з/п эйчаров в статье указана 100 т.р.

И причём тут все остальные, кого вы перечислили?

Спору нет, для вашего юзкейса и PHP и Perl отлично подходят.

А вот разработчики гораздо чаще работают с чужим кодом, чем со своим.

grapheme_str_split я так понимаю новинка из PHP 8.4? Неплохо, хоть и немного костыльно. А что с примером перевода baffle в верхний регистр?

Для особо ценных мыслей есть https://jekyllrb.com/ и куча его последователей, ведёте все посты прямо в Git, реплицируете сколько душе угодно.

Или вы наивно полагаете, что если платите хостеру 200 рублей в месяц, то он не снесёт ваш блог на Wordpress вместе с базой, если кто надо попросит?

Для большинства людей всё это, правда, неактуально. Никому до них дела нет.

Ну например, в методе "String.slice" что означает второй аргумент?

Диапазон означает. От нуля, если считать с начала строки, либо от -1, если надо с конца строки считать.

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

Нет, когда я работаю со строкой, я ожидаю, что те символы, которые видны на экране - это и есть символы строки. Соответсвенно 👩‍❤️‍👨 - это один символ (хоть терминологически правильнее его называть графемой, но это уже как раз детали реализации). И, в целом, вы тут подловили в том плане, что составные графемы действительно рассыпаются на составляющие части, однако они всё ещё рассматриваются как единое целое и при выводе для пользователя всё получается правильно:

iex(1)> String.reverse("👩‍❤️‍👨42")
"24👩\u200D❤️\u200D👨"
iex(2)> IO.puts("24👩\u200D❤️\u200D👨")
24👩‍❤️‍👨
:ok
iex(3)> String.slice("👩‍❤️‍👨42", 0..0)
"👩\u200D❤️\u200D👨"
iex(4)> IO.puts("👩\u200D❤️\u200D👨")
👩‍❤️‍👨
:ok

При этом reverse работает, судя по всему некорректно, т.к. в моём понимании реверс строки -- это реверс чаров в строке

Так это у вас неверное понимание. Если хотите работать не со строкой, а со списком байтов или даже битов, то такая возможность тоже есть. Но это уже совсем другая тема.

А equivalent вернёт true или false при сравнении Floß, floss, floſs и floſʒ?

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

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

iex> String.equivalent?("👩\u200D❤️\u200D👨", "👩‍❤️‍👨")
true

Ну, эсцет `ß` допускает 2 варианта записи в верхнем регистре `ẞ` и `SS`. Если один из них срабатывает, то имхо норм. Хоть тут и возникает некоторая необратимость в преобразованиях регистра, но для немецкого это в норме вещей. Тем более, что эсцет выходил из широкого употребления ещё в начале нулевых.

iex(1)> String.downcase("ẞ")
"ß"
iex(2)> String.upcase("ß")
"SS"

Отчего же, например, в Elixir эти примеры спокойно работают, причём без воркэраундов, без перевода в массивы и т.п.

iex(1)> String.reverse("noël")
"lëon"
iex(2)> String.slice("noël", 0..2)
"noë"
iex(3)> String.length("noël")
4
iex(4)> String.length("😸😾")
2
iex(5)> String.slice("😸😾", 1..-1//1)
"😾"
iex(6)> String.reverse("😸😾")
"😾😸"
iex(7)> String.upcase("baffle")
"BAFFLE"
iex(8)> String.equivalent?("noël", "noël")
true

А функции на Си кто писал? Пушкин что-ли)

Если вы имели в виду, что это функции из С-stdlib, то нет. Там только такие: https://ru.wikipedia.org/wiki/String.h

А эти хоть и на Си, но написаны разработчиками PHP.

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

Как только появилась идея разделить строки на "строковые" и "бинарные", стало понятно, что это путь в никуда. 

Да, в целом, есть языки в которых есть bitstring и просто string. Если нормально всё реализовать, то это даже удобно)

Смотря что называть поддержкой.

Например, успешное прохождение всех проверок из этой статьи: https://mortoray.com/the-string-type-is-broken/

Но пост немного не об этом. 

А вот о чём, кстати, пост? По-моему он исключительно о том, почему Альберту Степанцеву нравится PHP. Причём с весьма слабыми доводами и натяжками.

На вопрос из заголовка ответа нет, нет даже доказательств, что PHP является "одним из самых востребованных". То, что в интернете есть куча home pages, которые когда-то были написаны на PHP, а так же миллионы развёрнутых CMS - это имхо не аргумент. Это только показывает, что когда-то он был востребованным.

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

Чтобы вести свой блог? Когда-то да, Wordpress в 2 клика в админке хостера и погнали. Сейчас очевидно нет. Соцсети давно уже заняли эту нишу, и поднимать свой личный блог в 2025 году на Wordpress - это шиза.

Чтобы сделать сайт-визитку для компании? Когда-то да, заказали в веб-студии за 20 т.р., они подняли CMS, скин натянули и погнали наполнять. Сейчас очевидно нет. Для компании важнее хорошо оформить карточки в 2Gis и Яндексе, и вести профиль в соц.сетях.

Чтобы сделать свой интернет-магазин? Спорно, конкурентов у PHP тут хватало и 15 лет назад, но допустим. Заказали у веб-студии за 100-150 т.р. разработку и ok. Сейчас очевидно нет. Маркетплейсы полностью вытеснили мелкие интернет-магазины.

Вообще формат CMS потерял популярность, уступив место SaaS решениям. И считать, что 100 тыс доменов привязанных к Tilda == 100 тыс проектов на PHP - это тупо. Это 1 проект, сколько бы там доменов ни было.

А приводить в пример ВКонтакте, который выбрал PHP 20 лет назад и чтобы не загнуться от последствий такого выбора, был вынужден написать свой компилятор - такое себе. Имхо, выглядит как аргумент, почему выбрать PHP было для них ошибкой.

Это всё конечно хорошо. Но для практического применения лучше изучить Elixir, во всяком случае если вас backend-разработка интересует.

https://www.erlang-solutions.com/blog/why-elixir-is-the-programming-language-you-should-learn-in-2024/

Переход от PHP 4 к PHP 5 принес полноценное ООП, сделав язык удобным для коллективной работы. Версия 5.4 подарила неймспейсы и пакетный менеджер — PHP стал платформой для больших команд. PHP 7 произвел революцию в производительности благодаря работе Дмитрия Стогова из Core team.

Тут для полноты картины не хватает рассказа о достижениях PHP 6, который собственно и породил разговоры о том, что PHP своё отыграл, т.к. они так и не осилили поддержку Unicode добавить.

Ну и неизбывная особенность PHP - это процедурная стандартная библиотека с несогласованными функциями. Напр. str_split, но strpos (почему не str_pos?), зато у обеих строка идёт первым аргументом. Вроде логично, смотрим str_replace и внезапно основная строка - третий аргумент. О том, чтобы сделать это всё методами объекта String и речи не идёт. Так что никаким полноценным ООП в PHP не пахнет до сих пор.

А так, конечно, PHP не убиваем, столько сайтов на Wordpress, Joomla и Drupal, что если только их сложить уже больше 80% всех сайтов в мире получится.

P.S. Лично я перестал писать на PHP в 2009-м и ни разу не пожалел, в мире есть гораздо более приятные ЯП (и да, тут речь уж точно не про Go), так что не стоит зашориваться на чём-то одном.

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

Так они ещё и язык специальный придумали, где можно побольше избыточного бойлерплейта генерировать, Golang называется xD

Теперь понятно зачем он такой невыразительный. Чтоб красивые проценты по достижениям нейросетей рисовать.

Надо было вопрос точнее формулировать: Почему её не можно трогать? xD

Information

Rating
Does not participate
Location
Россия
Registered
Activity