Pull to refresh

Comments 103

Стоит добавить, что Golang и PHP не конкуренты, у них как модно сейчас говорить — синергия.
Работаю с обеими языками и получаю удовольствие.
мы не видим истории успеха, начинающие с фразы «Я взял в руки учебник по PHP»

Возможно таких даже не существует
Ну не знаю… Количество вакансий 2 года назад для php было раза в 2, а то и в три выше чем для python. А сейчас для python 13000 с чем-то, а для php — 7. Если добавить программист, то по 6 с копейками. Тренд явный.

Возможно, вы как-то неправильно ищете, что у вас всего 6-7 вакансий :) Когда я искал новое место работы, ~6 месяцев назад, то я не успевал обрабатывать поток входящих предложений/вакансий

Думаю, что речь шла о 7 тысячах =)

Только что искал вакансии в hh:


по запросу "php" 7.5тыс вакакансий
а по запросу "bitrix" почти 10тыс


Конечно же вакансии пересекаются, но вообще-то должно быть наоборот.

Не должно. Никто не хочет в Битрикс :)

Эти цифры свидетельствуют о том, что python становится все популярнее, но ни как не о том, что пхп-шечка загибается
Так я и не говорил что php загибается. Работы полно, и будет полно еще много лет, если не десятилетий.
Просто автор категорично говорит — нет конкурентов у php! А они есть. И они постепенно обгоняют.
UFO just landed and posted this here
Скорее, несколько скукожилась ниша строительства тяп-ляп бэкендов для типовых сайтов с условными магазинами. Но это было более чем ожидаемо и предсказуемо лет пятнадцать назад.

Питон сейчас на взлёте больше из-за ML-AI-DataScience, а не про веб-приложения

Я, как раз, начал учить PHP совсем недавно, спасибо за материал, придал уверенности. Интересное сравнение по ЗП, не оторванное от реальности а с примерами.
PHP уродливый и нескладный язык. И никакие статьи с дифирамбами этого не изменят.

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

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

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

(печальный взгляд из гошного лагеря)
Понимаете, тут ведь дело вкуса. Когда я впервые столкнулся с php (середина 2000х), то ничего такого не думал — ЯП и ЯП. Потом некоторое время поработал с python. Вернулся к php и понял что меня от него воротит. Не от хорошего или плохого кода, а от самого синтаксиса. Вот больно глазам и все. Так и не смог, бросил страдать через год примерно.

7 подряд лет писал на PHP.
Потом переключился на Python.
Назад вернуться не тянуло и не тянет.
Забыл его как страшный сон.

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

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

В каком смысле?
В прямом: abstract, final, protected, private + интерфейсы.

Строго говоря, это не совсем так. Условные интерфейсы в питоне есть, называются Protocol. Protected довольно условный, но он есть в виде подчёркиваний перед названиями. Плюс, очень многое можно реализовать через мета-классы. Это, конечно, не php, в котором всё это проще, но тоже совсем не так страшно. Хотя я, с тех пор, как перешёл на питон, скучаю по строгости php

Вы просто привыкли считать эталоном ООП модель Java/.NET, поэтому вам кажется, что отсутствие некоторых её особенностей в Питоне делает его классы «не классами». На самом деле понятие ООП строго не определено, но даже если выводить его по наличию в языке инкапсуляции, наследования, полиморфизма, всё это так или иначе в Питоне есть. А интерфейсы, final и protected не являются неотъемлемым признаком ООП. В том же C++ интерфейсов нет, а final появился только в C++11, но это не делает плюсы менее объектно-ориентированными. В Go и Rust есть наследование интерфейсов, но не структур, соответственно нет final и protected, а приватность достигается на уровне модуля, а не класса. Делает ли это их не объектно-ориентированными? С чьей-то точки зрения, возможно, и делает, но скорее это вопрос личного ощущения, что такое ООП, чем объективный критерий.
Как раз про ООП у меня отдельный взгляд, я использую его только там где ему месту и довольно редко. Но наследование и интерфейсы есть очень удобная штука, которая позволяет мне не держать в памяти миллион нюансов реализации.
использую его только там где ему месту и довольно редко

Зависит от задач. Обычно ООП в проекте либо нужно [почти] везде, либо не нужно совсем.


наследование и интерфейсы есть очень удобная штука

Никто не спорит. Первое в Питоне есть, второе заменяется полиморфизмом и «утиной типизацией».

Классы нужны часто, а вот именно ООП на самом деле очень редко.

Я не совсем понимаю, что вы имеете ввиду под классами. Просто структуры данных или они же плюс поведение (методы)?

потоков/процессов в питоне, поскольку нужно писать приложение с поддержкой вагона подписок

А использование Питона — непременное условие? Многозадачность — не его сильная сторона.

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

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

Вот как раз для ООП он и непригоден, особенно с учетом больших как вширь так и в глубину объектов. Это сразу себе в ногу с дробовика.

Ага, смутила.
На самом деле достаточно разобраться, чем интерфейсы в Go отличаются от интерфейсов Java/.NET, чтобы стало понятно, что для ООП он более чем пригоден, причём модель получается гораздо более гибкая, чем с развесистыми иерархиями наследования (вы ведь их имели ввиду?)

Еще бы как то привыкнуть к этой избыточной минималистичности, ну не фанат я обрезания синтаксиса у языков 8(

Это часть идеологии языка: всё должно делаться просто и максимально очевидно.


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

Мне описание вложенных структур не видится очевидным, для меня как раз явовский подход куда как более читаем: операторные скобочки, области видимости, типы, все строго и красиво. Я правда пытаюсь покушать питона/go но пока прям в таком ужасе…

Утиная типизация кстати тоже не доставляет.

Я кстати пытался на go даже начать работать пару лет назад, вот только все драйверы для PostgreSQL таким мусором были (а вот это я писать неумею, да), столько я там глюков нашел, вплоть до повреждения данных, что ну его в лес. Вот с чем с чем а с этим сражаться не хочу, особенно учитывая что я базу использую вовсе не как тупую хранилку.
Как вариант — Erlang/Elixir. Они как раз для этого и задумывались. Но сразу предупреждаю: это языки совсем другого толка, к ним нужно привыкать

А меня тянет, так как Python почти не развивается. Но действительно, хайпа в Python больше, поэтому приходится работать на нём, а поет-проекты пилить на PHP чтобы навык не потерять :-)

Попробовал питон после php, ужаснулся тем костылям которые в среде питон программистов считаются нормой. Сейчас учу руби и разочаровался в нем так же, до старого доброго php ему далеко, многие решения нелогичны и костыльны, а Rails уступает тому же Laravel во многих аспектах. Добавим к этому бурное развитие php последние пару лет и застой в мире питона и руби и ситуация явно в пользу php.
Есть всего два типа языков программирования: те, на которые люди всё время ругаются, и те, которые никто не использует.

Bjarne Stroustrup
UFO just landed and posted this here
Нахожусь в полнейшем восторге (нет), и немного смущении, что на хабре, в статье, разрешили использовать слово «бл*ть» (но у вас — слово целиком), пусть и на картинке.
hsto.org/getpro/habr/upload_files/787/c58/da6/787c58da6fc5fdaf1543d583f188ad93.png

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

Исправьте это, или как минимум одну букву заблёрьте, если без подобных выражений не обойтись вам.

ЗЫ: про пэхапэ ничего не пишу, так как ничего не знаю, ибо не сталкиваюсь ввиду того, что пишу на плюсах и Qt.
UFO just landed and posted this here
Правильно написано, что PHP оявивается, вот только в нем до сих пор нет дженериков что доставляет нереальную боль, к нему нет нормальных драйверов для бд, моя основаня бд нынче PG и работа с типами из пхп доставляет мне столько боли сколько это вообще возможно (а доктрина это вообще отдельный вид извращений).

Решения для запуска демонов (swoole. demon.io, etc) вообще растут как грибы. Дак почему сразу яву не использовать?
до сих пор нет дженериков
habr.com/ru/post/456466/#bolee-slozhnye-dzheneriki
Нужно подключить статический анализатор.

что доставляет нереальную боль
нет нормальных драйверов для бд
PG и работа с типами из пхп доставляет мне столько боли
Можно подробнее?

доктрина это вообще отдельный вид извращений
почему сразу яву не использовать
Доктрина реализована с большой оглядкой на Hibernate с Java. Можете подробней что именно в Doctrine не понравилось и что при этом отсутствует/присутствует в Hibernate?

За ссылку спасибо но очень меня раздражает программирование в коментах 8(

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

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

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

UFO just landed and posted this here
Ну у DBAL доктрины executeQuery принимает параметры: $queryText, $params, $types
И вот как раз третий у меня попрек горла, зачем он нужен когда все параметры уже типизированы? Суньте в параметры DatetimeImmutable и получите object to string coversion exception.

С числами еще интересней бывает. Тип переменной явно определен, у доктрины дополнительно указан тип, но пг о нем ничего не знает, вынуждая меня кастовать (кода нет под рукой).
UFO just landed and posted this here
ORM на сложных моделях далеко не всегда возможна да и часто очень мешает.
Начинал карьеру на PHP, ушел на Java, потом были веб проекты на разном, и на Django, Groovy, Spring, Rails…

Вот иногда нужно сделать сайт средней тяжести. Java брать — влом. Пытался поднять на PHP + Laravel — не осилил по гайду. Столько всего надо установить, настроить… Не осилил. Порог входа вырос. И не понятно, как на продакшене правильно поднять демон.

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

Rails — нравится. Но он не популярный и страшно начинать на нем проекты. Хотя в штатах и в Австралии все еще популярен. Новый руби и рельсы вышли недавно.

Но, вы забыли слона в комнате. По мне на данный момент очевидный лидер в веб проектах это — Node.js. Nestjs порадовал. А лучше чем Nextjs для СЕО зависимых, контентных сайтов я не видел. Потому, мой выбор на текущий момент — это Typescript.
Не осилить поднять лару по гайду это надо уметь, да

Пытался поднять на PHP + Laravel — не осилил по гайду. Столько всего надо установить, настроить…

Так столько всего установит и настроит за вас composer. Вам нужно было установить только его.

для локальной разработки, в версии 4 или 5, по гайду нужно было установить homestead кажется, обёртка над vagrant. он устанавливался намного сложнее, чем текущий способ через Docker.
Но это ведь не обязательно. Никто не мешает разрабатывать, просто используя локально установленные php, mysql, nginx (apache). Вопрос в том — что вы хотите получить от фреймворка.
документация пишется для пользователей. я как пользователь данной документации, когда хотел поднять локально, не смог, хотя не было проблем с Yii, Cake, Kohana, Symfony, Zend. Препятствии было больше, чем я хотел с ним разбираться. тварь ли я дрожащая или право имею на это?
Возможно я неверно понял посыл. Про качество документации ничего сказать не могу, просто не помню.

Поднимал Laravel для небольшого пет-проекта, работающего в основном из командной строки (т.е. фронтенд был не нужен). Проблем не припоминаю.
Вот странно. Когда возникло желание попробовать что-нибудь на пхп сделать, Apache, php и mysql поставились без особых сложностей. (практически «скачал-дважды-кликнул-внёс по инструкции пару записей в файл конфигурации») Правда, меня тогда интересовал «голый» пхп, то есть никаких фреймворков. (Потому что знакомиться с языком, имхо, лучше без «лишнего» (и дополнительно запутывающего новичка) обвеса).

А теперь задам вопрос, ты пользователь, или разработчик? Think about it ;)

Вот не знаю, на днях ставил homestead просто по документации. Дело 5-10 минут, тем более, если вы имеете опыт с Docker.
Если рассматривать установку
PHP + Laravel
впервые, то необходим хороший guide ( желательно на англ), а если вы разработчик middle и выше, независимо от языка, — то проблем не должно быть
согласитесь, что сейчас и лет 4-5 назад, когда была версия 4/5 все могло быть по другому?
Возможно, всегда есть подводные камни, когда вы устанавливаете впервые.

Сейчас у нас в продакшене версии от 5.5 (2017) до 8 (2020) - ну ничем развёртывание. не отличается, может какие-то нюансы в конфигах nginx, и то вряд ли.

Вот так было 8 лет назад https://github.com/laravel/docs/blob/4.0/installation.md

А homestead появляется в доке 4.1 https://github.com/laravel/docs/blob/4.1/homestead.md как решение для разворачивания готовой рабочей среды в виртуальном окружении.

Лара ставилась и ставится элементарно. А с homestead у меня тоже были проблемы, когда пользовался (да и то с обвязкой, то с виртуал боксом, то с вагрантом, насколько помню), с радостью переехал на докер.

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

parallel и fibers откроют для вас дивный новый мир )

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

то, что должно было бы быть в языке, что бы стать клевым в вебе
Почему вы считаете, что ваш выбор парадигмы истинно верный в большинстве случаев и (отдельно) во всех из случаев? Подход «умирать» тоже имеет множество плюсов.
потому что вижу что пхп обкладывает себя костылями что бы нивилировать этот недостаток, а противоположный лагерь вытесняет пхп и на подход «умирать» не смотрит.
в контексте хайлоад о пхп не слышно на конференциях от слова совсем, я не углублялся в вопрос, но лично мне кажется очевидно, что не встречается из-за подхода с умиранием.
обкладывает себя костылями что бы нивилировать этот недостаток
Приведите пример. Я вижу лишь альтернативные реализации. PHP-FPM к PHP гвоздями не прибит, если вы считаете иначе.

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

в контексте хайлоад о пхп не слышно на конференциях от слова совсем
Открываю Youtube канал HighLoad++ (крупнейшая в России профессиональная IT-конференция) с сортировкой видео «от новых к старым» и вижу с десяток видео с конференции.
Изображение

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

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

Хайлоад в большинстве случаев о том как правильно масштабировать и часто не важно на чем все будет написано.

не соглашусь. если бы это было так, мы бы видели крупные проекты на пхп. пхп же можно масштабировать, но крупных сайтов не видно
крупных сайтов не видно
Сайты Facebook, ВКонтакте, Wikipedia, Badoo, Yahoo, Baidu, Slack, Etsy, Vimeo, SourceForge, Tumblr, BBC, Vodafone и др. не являются для вас достаточно крупными или уже закрылись?

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

Если в проекте есть общение с базой, то PHP обгонит многих, включая Golang (пишу на двух языках). В частности последний хайлоад делал на собственном PHP-фреймворке, потому-что он быстрее того, что доступно в стандартной библиотеке Golang:

github.com/gotzmann/comet

Вот как пример, даже оптимизированные Go-варианты на fasthttp (я уже молчу про NodeJS) отстают от PHP:

www.techempower.com/benchmarks/#section=data-r20&hw=ph&test=query

Можно узнать какую нагрузку держали ваши проекты в контексте хайлоад?

Вот у меня в резюме имеется опыт создания проекта с 30+ млн хитов в сутки. На пхп и первом зенде.

Это достаточный хайлоад или ещё нет?

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

Все эти споры про «язык X гавно, пускай лучше используют Y» это тоже самое, что молоток гавно, зачем его использовать когда есть шуруповерт.

Я вижу PHP скорее как обычную отвертку. В силу разнообразных причин нет возможности использовать шуруповерт.

Вы считаете 200к (рублей в месяц, я правильно же понимаю?) достойной зарплатой лида? Это хотя бы после налогов?

Для регионов — вполне. По крайней мере до ковида и широкого распространения удаленки такая ситуация была обычной. Сейчас стало лучше, многие московские компании нанимают людей из регионов удаленно и платят московские зарплаты. Но не все могут/хотят в Сбер, VK, Яндекс, кто-то продолжает работать в мелких локальных web-студиях, и там 200к — очень достойно.

Начинал с PHP, потом JS, C#, Golang, Python и теперь C++.

PHP лучший язык для mvp. Golang лучший для highload веб сервисов. JS лучший для фулстек / смешанных команд. Python - для работы с данными, CV, ML.

И мне нравятся все, кроме JS =) но там ситуацию спасает TS.

Эх, жаль, не могу плюсовать. Солгасен с каждым словом.

Долго думал, как ответить на вопрос в голосовалке. Ведь на php писал ещё с версии 4.0.6, с ним связано много полезного полученного опыта (да и денег, что уж там). Практичный и полезный инструмент, хорошо решающий свою задачу.


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

Если Ваш новый проект будет достаточно простым, то обязательно попробуйте восьмерку, только как положенно, со всеми фичами и нормальным фреймворком. И уверен, что Вам понравится. А иначе — писать на том, что свежо в памяти, всегда самое правильное решение (с учетом специфики не только самого языка, но и доступных библиотек и фреймворков).

Я постоянно сталкиваюсь с PHP и в курсе всех новшеств. Без дженериков все равно вся эта типизация разваливается. Да и из-за отсутствия public readonly/final приходится генерировать кучу бойлерплейт кода для банальных DTO, после те же data class-ов в Kotlin это выглядит дико. Тут можно было бы пойти в сторону типизации структуры ассоциативных массивов, например.


Symfony хороший фреймворк, конечно.

Без дженериков все равно вся эта типизация разваливается.
Можно подробнее? Статический анализатор не спасает?

Да и из-за отсутствия public readonly/final
@property-read, @psalm-readonly, @phan-read-only.

Ну это как вспоминать ecmascript5 c jsdoc аннотациями и всякими closure compiler. Сойдет, если нет ничего лучше, но после тайпскрипта вспоминать не хочется.


Если приходится поддерживать проект на php, так и делаю, конечно.

Напоминает ситуацию Vim vs IDE. «Зачем тебе IDE? Вот в Vim есть плагин на это, на то и т.д.»

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

стану ли я его писать на php. И тут, конечно, однозначно нет.

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

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

Взять, например, меня. Я не совсем программист, скорее веб-мастер. Делаю сайты о путешествиях. Трафик - несколько миллионов просмотров в год.

Выбрал для себя WordPress (php). С нуля написал тему. Работает очень быстро. Нагрузка на хостинг минимальная (хватает самого дешёвого тарифа). Никаких проблем с безопасностью или SEO за уже почти 10 лет у меня ни разу не было.

Когда открываю очередную статью: как выбрать CMS, почти всегда немного смешно от криков "WordPress не безопасен!" Да, в WordPress и php очень низкий порог входа. Поэтому, много и разработчиков уровня "Установлю плагины скачанные с левого сайта. И побольше, побольше их!". Откуда тут взяться безопасности?

Но если правильно выбирать инструмент и всё делать по уму, то и проблем никаких не будет. Ну где ещё за неделю времени и с небольшими знаниями я получу на 100% кастомный, быстрый и надёжный сайт, который будет 10 лет просто работать, почти не требуя времени на поддержку?

Кстати, иногда почитав статьи о веб-программировании появляется желание "написать свой велосипед" или "использовать новую крутую технологию". Но я ни разу не смог ответить себе на простой вопрос: "А что это даст в моем случае?" Кстати, буду благодарен за идеи "а что даст переход с WordPress конкретно для меня?"

Если взять перспективу в 1000 лет жизни PHP разработчика то стоило бы задуматься но в средней статистической жизни 80-90 лет из которых рабочих 40 из которых уже 10 проработали на PHP, ответ один на оставшиеся 30 лет разработчику хватит PHP и заработка от него в полной достаточности а т.к знания не передашь то какой смысл прыгать, бегать за всеми трендовыми языками постоянно искать идеал, PHP язык не исчезнет он будет работать стабильно и долго вопрос к разработчикам которые хотят что то новенького)
На PHP ругаются все, кому не лень. Язык настолько лёгок в изучении, что порог вхождения низок. Это, как раз, и есть причина такого отношения. Многие шкодят на нём без особого понимания что пишут. В итоге, получается подобие фекальной массы, но винят язык. Ну, сделай-те по уму — составьте архитектуру приложения, логику, а только потом начинайте писать код.
Пишу на нём много лет. Этот язык позволяет думать о логике приложения, а не об структуре файлов, синтаксисе и прочих отвлекающих факторов. Тут нет жёстких границ. Может, поэтому и нет такого количества литературы (хотя, я даже и не искал за всё время работы с ним).
Некоторые нововведения 8-ой версии меня смутили, но, возможно, полностью разобравшись, они будут понятнее.
Никто не знает какой завтра будет тренд. Яваскрипт, который по претензиям сильно обгоняет PHP, за последние годы взлетел на недосягаемую высоту и используется даже в бэкэнде. Кто бы 5 лет назад мог предсказать такое?
Sign up to leave a comment.

Articles