Уже который год во всех слаках, дискордах, телеграмах и форумах главный вопрос о любом языке программирования звучит так — стоит его учить В ЭТОМ ГОДУ, или лучше уже не надо? Взять какой-нибудь PHP — его же вечно хоронят, и всё никак.
Есть и много других вопросов. Например:
— Что выбрать — PHP, Python, Go или Node.js? Или Visual Basic? Или С? Может, Brainfuck?
— Почему все говорят про Python? Он крутой? Круче, чем всё?
— Бэкенд — это про логику и алгоритмы? Матан нужен? А чувство прекрасного?
— У фронтендеров React, Vue и миллионы других фреймворков, о которых все слышали, а что у бэкендеров? Терпение?
— Придётся ли устанавливать Linux, чтобы работать с бэкендом?
— Почему о фронтендерах все говорят, а о бэкендерах нет? Это потому что у них зарплата 20 тысяч?
Как хорошо, что спрашивать не стыдно, а отвечать — бесплатно. Поэтому мы попробуем ответить, а вы присоединяйтесь к обсуждению, потому что в таком деле у всех свои ответы.
Что вообще такое бэкенд, зачем им заниматься?
Если упростить, то любой сайт — это код, файлы, базы данных и картинки. Всё это лежит не на компьютере у разработчика сайта, а на сервере — отдельном компьютере, к которому может подключаться много пользователей.
Бэкенд-разработчик отвечает за то, что лежит на сервере — делает так, чтобы файлы сохранялись и читались, базы данных работали, как следует, байтики передавались, а в браузере у пользователей показывалось то, что они хотят увидеть, а не какие-нибудь сепульки.
Например, бэкенд-разработчик может сделать так, чтобы ваше письмо дошло, куда надо, а приложенный по пути годовой отчёт в эксельке не потерялся. Или чтобы аватарка в соцсети была на месте и все лайки в инстаграме остались там, где вы их поставили, а не переехали на страницу к другому человеку. Потому что представьте, какая это была бы катастрофа.
И вот бэкендеры спасают нас от этого.
Есть и более «обычные задачи» — все формы регистрации, запись к врачам и даже этот блог работает с помощью бэкендеров. Блог, например, написан на PHP. Этот текст ещё минуту назад лежал в базе данных, а когда вы открыли эту страницу, загрузился оттуда, и теперь вы можете его читать.
Чудеса? Чудеса.
Что выбрать — PHP, Python, Go или Node.js?
Смотря для чего. На PHP работает подавляющая часть сайтов, но другие языки могут быть моднее. Вообще, конечно, любой язык можно приспособить под любую задачу — наверняка есть работа и для бэкенд-разработчиков на Python, если в какой-нибудь компании так принято.
Можно писать сайты на C, делать бэкенд на Visual Basic и игры в Экселе, но зачем?
Node.js — другой хороший и модный вариант бэкенда, а ещё с ним проще стать фулстеком. Потому что можно выучить JavaScript и писать сразу и фронтенд, и бэкенд, и получать больше денег.
Почему все говорят про Python? Он крутой?
Python очень приятный, его легко выучить и развлекаться. Но в бэкенд-разработке он используется не слишком часто. Он лучше подходит для других задач — аналитики, работы с нейросетями, вычислениями и статистикой. Там есть всё или почти всё, что для этого нужно.
PHP умирает?
(глубокий выдох)
Нет, не умирает. Он, может быть, менее модный, чем был когда-то, но на нём всё ещё работают 80% сайтов в интернете. Четыре из пяти, представьте себе. Работа для PHP-разработчиков никуда не денется, потому что никуда не денутся 50 с лишним миллионов сайтов, внутри которых бьется пиэйчпишное сердце (ух как завернул).
PHP сложный?
Не сильно сложнее, чем другие популярные языки. А раньше его простота вообще приводила к тому, что на нём было слишком просто написать плохой код (поэтому его так много). С выходом PHP 8 такого стало меньше.
Для сравнения сложности, вот минимальный код, который понадобится, чтобы вывести строчку «Hello, world» на разных языках.
// PHP
<?php echo 'Hello, world'; ?>
// Python
print("Hello, World!")
// Ruby
puts "Hello World"
// Go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Уважаемые разработчики на PHP, Python, Ruby и Go с годом практики и больше. Мне нужна была наглядная иллюстрация, поэтому сделайте, пожалуйста, вид, что не видели этого сравнения.
А ещё у PHP замечательная документация, в которой есть примеры использования всего на свете и комментарии от пользователей, у которых есть свои варианты кода на каждый случай жизни.
Бэкенд — это про логику и алгоритмы?
В каком-то смысле.
Если фронтендерам алгоритмы обычно нужны не раньше третьего-четвёртого года работы за деньги, то бэкендерам хорошо бы сразу понимать, где можно оптимизировать код. Всё-таки к серверу может быть и миллион запросов в секунду, и там каждый байт на счету.
У фронтендеров есть React и Vue, а у бэкендеров?
Не переживайте, у бэкендеров тоже есть свои фреймворки. Django, Laravel, Yii 2, Ruby on Rails, Flask, CakePHP, Spring Boot, тысячи их. Все они созданы, чтобы облегчить разработку и сделать её понятнее.
Осталось не забывать главное правило — выучите язык перед тем, как учить фреймворк, а не после. Потому что учить сначала фреймворк это как строить дом, начиная с третьего этажа.
4.02. Алекс доказывает, что он не виноват. Просто 12 этажей Сидорова на 4 метра выше и на 5 метров шире, чем 12 этажей Петровича. Выяснилось, что они строили из разных панелей. Но Алекс все равно ламер, поскольку его крыша не подходит по размеру ни одному из вариантов. Его шахта лифта, кстати, тоже.
Помните же классику?
Где мне пригодятся эти знания?
В принципе знание языков программирования и основ работы бэкенда пригодится в большой или маленькой компании, которая делает сайты.
А знание, как написать «Hello, World» поможет в экспериментах. Можете, например, попробовать тренажёр по PHP — вы там сделаете целую страничку интернет-магазина своими руками. Вообще, хорошо сначала попробовать, прежде чем бросаться с головой в новое дело. Вдруг вам вообще не понравится?
Деньги-то вообще есть? Или работать за 20 тысяч?
Как правило, у всех есть знакомый JavaScript-разработчик (а если у вас его нет, то это вы). Обычно знакомый JavaScript-разработчик зарабатывает больше ста тысяч, работает в какой-нибудь компании, у которой есть свои курьеры с доставкой еды, и хвастается, что можно не ездить в офис.
И это, на секундочку, фронтенд.
А теперь посмотрите статистику от Хабр Карьеры. 140 тыс — средняя зарплата бэкендеров в 2021, это даже больше, чем во фронтенде, хотя казалось бы.
Конечно, не у всех есть знакомый бэкендер, но если вы им станете, то все только спасибо скажут. Сможете круглые сутки переустанавливать винду всем родственникам (шутка).
Придётся ли устанавливать Linux, чтобы писать бэкенд?
Бэкендерам обычно нужно понимать, как устроены Линукс, терминал, файловая система, права доступа, и как это всё заставить работать, потому что на Линуксе работают сервера (см. вопрос номер 1).
Но правда в том, что к серверам обычно подключаются удалённо, а писать код и гуглить на StackOverflow можно хоть на ноутбуке с Windows — было бы желание, а все инструменты уже есть.
Как взломать базу паролей на бэкенде на PHP
Не знаю, почему об этом постоянно спрашивают. Взламывать пароли вообще плохо, не занимайтесь таким.
Почему о фронтендерах все говорят, а о бэкендерах нет?
Если вы следите за русскоязычным твиттером или регулярно просмотриваете топ Хабра, то знаете как минимум нескольких фронтендеров, которые постоянно выгорают, но продолжают зарабатывать миллиарды в наносекунду. Они ездят на конференции, пишут статьи, и поэтому их заметно.
Так вот, смысл в том, что бэкенд-разработчиков ровно настолько же много, нужно просто за ними специально послеживать. Не будем советовать конкретных — при должном желании вы найдёте нескольких и самостоятельно.
Смысл в том, что говорят о тех, кого видно. Если вы сделаете себе карьеру и будете выступать на конференциях и писать в Твиттер о том, как устали делать однотипные лендинги и гонять туда-сюда джейсончики, то и о вас заговорят. Ну или можно просто переводить всё подряд на Хабр, и о вас тоже заговорят.
А можно быть просто хорошим разработчиком и делать проекты, которые помогают компании — это тоже путь. И без разницы, фронтенд это, бэкенд или мобилка. Главное — делать хорошо.
А с мифами о PHP разберёмся в прямом эфире 28 февраля в 19:00. Лёша Симоненко из Академии и Алексей Солодкий, руководитель PHP-разработки из BelkaCar, обстоятельно поговорят о современном PHP и ответят на все вопросы из чата.
Комментарии (66)
abutorin
18.02.2022 12:07Почему о фронтендерах все говорят, а о бэкендерах нет?
Так вот, смысл в том, что бэкенд-разработчиков ровно настолько же много
Кажется что их не на столько же много. По опыту почти 80% трудоёмкости разработки это пользовательский интерфейс. В результате чтобы "рисовать" все эти красивые кнопочки и формочки просто нужно больше рук. Да и видит пользователь в основном то что нарисовано на фронте. А то что где-то есть бэкенд многие не догадываются.
evil_me Автор
18.02.2022 12:10Это да, но поэтому и вопросы возникают — а что за бэкенд, а где, а как. Ну и работа-то от этого менее важной не становится, кажется.
skyeff
18.02.2022 13:25+7На текущем проекте фронтенд разработчиков примерно на порядок (десятичный порядок) меньше чем бэкенд. Если добавить мобильных разработчиков, то где-то в 3-4 раза меньше. Все зависит от сложности бизнес логики и сложности интерфейсов.
И в догонку автору:Laravel, Yii 2
Вы серьёзно? Yii2 упомянули, а Symfony даже не в списке?Calc
18.02.2022 13:37-1ну использовать чистый Symfony это почти как чистый PHP. Symfony много в какие фреймворки утащили
Fenzales
18.02.2022 13:57+6ну использовать чистый Symfony это почти как чистый PHP
Что? Даже лет 5-7 назад это был универсальный комбайн, покрывающий всё на свете. А уж Symfony в виде зависимости к другому фреймворку я вообще ни разу не видел.
koreychenko
18.02.2022 14:25+5Ну, вы не путайте Symfony как фреймворк и Symfony Components, которые можно юзать по отдельности где угодно.
1Tiger1
20.02.2022 07:18Ну если вы фронтендер то чисто статистические работали на проектах где много фронта. Может даже и не сильно заглядывал в бэкенд часть. Оттого и сформировалось ощущение. В конце концов когда с бэка на фронт торчит достаточно простая апиха, какое дело что там внутри куча данных, нагрузки, интеграции с внешними и внутренними сервисами, воркеры для постоянной или периодической обработки данных, обмен сообщениями между сервисами, и все это на десятках-сотнях реальных или виртуальных машин работает вместе стараясь не упасть и при этом отработать нужную бизнес логику (ни фига себе пафоса нагнал). Точка восприятия, не более. Так неопытный бэкендер может думать что на фронте только формочки допиливают и простеньким jquery делают ajax к серверу и выводят на страничку. И тоже будет неправ. Или прав. В зависимости от потребностей проекта. Веб развился уже до той стадии когда специализация взяла свое и люди лишь в общих чертах понимают работу коллег, это нормально.
abutorin
20.02.2022 10:23Это мои наблюдения как фулстека. Просто на фронте необходимо реализовать взаимодействие между человеком и программой, а человек в этой паре жутко "непредсказуемый". И под него бывает сложно подстроится, а на бэке этого человека нет, интерфейсы взаимодействия сервисов между собой гораздо проще.
sidorovmax
18.02.2022 12:25+1Все стесняюсь спросить, про вот эти айтишные зарплаты.
Это вместе с премиальными или только белая зарплата, к которой идут еще и премиальные?FLU911
18.02.2022 12:39При сборе статистики на Хабре пользователь вносит данные о зарплате за месяц после вычетов налогов, а также информацию о сумме премий.
ПС: у меня, например,премий нет, только часовая ставка. Но на оливки к гречке пока хватает.
Machirodont
18.02.2022 12:34+8У вас минимальный код на PHP неправильный. Минимальный будет:
<?= 'Hello, world!';
kropotor
18.02.2022 16:05+1Ну, во-первых, это нечитабельно.
Во-вторых, почти на всех серверах сейчас шорт-теги выключены по дефолту.Djeux
18.02.2022 16:23+5<?= не является шорт тэгом
kropotor
18.02.2022 16:35-1Ну да, блин, вот вам исключение) Спасибо, не знал.
short_open_tag bool
Замечание:
Эта директива не влияет на сокращение
<?=
, которое всегда доступно.Чисто для понтов.
Человек, не знакомый с программированием, поймет длинный вариант, но, скорее всего, не поймет короткий.
MisterSmith
18.02.2022 16:41Это не шорт тег. Вот шорт тег:
<? echo 'hello, world!'; ?>
и именно это отключено на серверах по умолчанию, а не <?=
Hett
18.02.2022 22:02Их уже нет вроде бы, или только задепрекейтили. Это если говорить именно про шорт-теги.
kropotor
18.02.2022 15:17Лично для меня умер. Мне он больше не нужен.
Перешел на nodeJS - и фронт, и тыл на одном языке ;)evil_me Автор
18.02.2022 15:28Поделитесь ощущениями от такого рода фулстек-работы?)
Korobei
18.02.2022 16:50+4Один пацан писал все на JavaScript, и клиент, и сервер, говорил что нравится, удобно, читабельно. Потом его в дурку забрали, конечно.
Обязательная шутка.kropotor
18.02.2022 16:56+2оттуда и пишу, по пятницам нас на хабр пускают.
Korobei
18.02.2022 17:44Сколько там таких болезных?
Кстати вопрос, писатели на других языках там присутствуют или JS как ковид, всё заполонил? Другу надо…
(конечно всё написанное шутка — JS язык со странностями конечно, но надо учитывать что его за 7 дней сотворили, прям по библии. А в целом вполне себе ок, особенно последние версии)
kropotor
19.02.2022 00:02Прости меня, Пыхо-Бог! Не ведал я, что творил. Подбросил мне в наказание 3 часа половых утех с Gateway Intents. А ошибку кидал, что порт занят, я аж все пакеты пообновлял, потом вообще ноду с нпм обновил.
Пока волшебные слова{intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]}
не написал, даже соединяться не хотел...
soltpain
18.02.2022 16:18Как разработчик на пхп - не рекомендую связываться, особенно после выхода 8.0, а затем и 8.1
Djeux
18.02.2022 16:24+5Как разработчик пхп разработчику пхп, можете аргументировать?
soltpain
18.02.2022 16:35-2Миграция приложения 7.4 на 8.1, где теперь кидаются депрекетйами на нулы. Это не типизированый язык для модников, а какая-то странная хрень, которую теперь надо раздувать проверками на null, перед тем как вызывать что-то из встроенных функций.
Этого я вообще не понял. Раньше в пхп null был допустимым значением, а теперь использовать его неправильно, мы ругаемся. Что дальше? В 8.2 будем фаталить приложение из-за того, что кто-то на другом конце положил в базу NULL вместо ''?
Доверия языку нет. Как писать на нём сложные приложения, зная о том, что в следующем релизе может прийти фича, которая просто не позволит коду запуститься, требующая больших ресурсов на адаптацию. Обратную совместимость начали подламывать где-то в 7.2 на 7.3 с countable.
Djeux
18.02.2022 16:40+3Я мигрировал приложения с 5.6 вплоть до 8.0 от малых до крупных.
Изменения в коде для совместимости у меня занимали не более полу-дня.
Возможно изначально в коде использовались сомнительные решения? На которые потом изменения в пхп начинали ругаться.
soltpain
18.02.2022 16:47Возможно у нас разные представления о большом проекте. В моем случае это 6Мб исходного кода.
Небольшие и средние приложения, особенно если с зависимостями композера, это просто - обновил библиотеки, подкрутил их использование и всё, такое да, совсем ничего не стоит обновиться.
ya_penek
18.02.2022 16:41+4Старым пхпшникам не привыкать. Я помню, как долго и болезненно избавлялись от register_globals.
danikp
19.02.2022 12:48Миграции в PHP вполне мягкие, если код изначально написан нормально, использует фреймворк и композер, то процесс хорошо задокументирован и даже мега крупные проекты можно мигрировать за один день 1 человеку.
Если хотите боли, посмотрите на питон, как все сломали между 2 и 3. Даже если код идеальный, его неслабо так надо было переписывать чуть ли не заново. До сих пор, в куче компаний есть легаси на python 2, ибо трогать себе дороже.
kosmonaFFFt
18.02.2022 17:25+3Ни разу на работах не встречал ПХП, только Java/C#/Python на бэкенде. Но это скорее всего обусловлено спецификой - в энтерпрайзе ПХП непопулярен. Только в одном проекте из тех, в разработке которых я учавствовал, случайному человеку можно было попасть дальше страницы авторизации. И то там в основном справочная информация/статистика/форма обратной связи.
Cels
18.02.2022 19:57php хорош тем, что у него есть куча функций на любой вкус, что позволяет создать короткий и хорошо читаемый код под любые веб запросы + с ним легко работать. Те же ассоциативные массивы, даже динамическая типизация мне нравится) кидайтесь тапками)
Hett
18.02.2022 22:05+2А в других языка "функций" нет? :)
Ассоциативные массивы только на первых порах кажутся удобными, в большом и сложном проекте это в ад может привратиться.
zzakirow
19.02.2022 01:20А чем плохи ассоциативные массивы в больших проектах?
Можете примеры привести?
NiceDay
19.02.2022 02:18+1ассоциативные массивы это замечательно, а на 8.1 с jit местами даже быстрее SplFixedArray и, внезапно, ds (ну или у меня специфика приложения такая попалась).
просто многие любят их использовать в местах, где вместо массива должен быть объект, поэтому исторически сложилась нелюбовь к такой широте подхода, а заодно и к массивам.
xxxLOGIATxxx
19.02.2022 18:33Может я чего-то не понимаю, но почему никто не говорит о том, что фреймворки для использования на Node.js, не только модные, их содержание очень дорого обходится (если не забивать не SEO). Простые сайты и блоги могут спокойно функционировать на простом хостинге, а "модные" фреймворки почти бесполезны без SSR. Думаю PHP будет жить, пока Node.js не будет на большинстве российских хостинг-платформ и по более доступной цене.
ct_ostin
19.02.2022 18:33Ребят, куда умирает? На HH 7000+ вакансий на PHP! Я когда начинал карьеру было едва тысяча.
dimsog
19.02.2022 21:39+2Пишу на PHP с 2010го, до этого, будучи школьником изучал PHP и он уже тогда умирал. Что в итоге? С каждым годом язык все лучше и лучше. Просто посмотрите на PHP и окружение 10 лет назад и сейчас. PHP (как и Java с .Net Core) занял свою нишу и пока никто ее не подвинет.
В 10х быструю смерть предрекали PHP из-за RoR, что из этого вышло, я думаю все знают.
Те, кто говорит, что "ну нет строгой типизации же", включите строгий режим и все. С 7.4 вполне можно все в режиме строгой типизации писать.
Кто говорит, что нет асинхронщины... Не знаю, я ещё в 16м году писал асинхронный код.
Те, кто говорит, что там с UTF8... Ладно, это вообще смешно. Куча библиотек для работы со строками, в которых mb_ функции хорошо завернуты.
Казалось бы, в 2022м году с выходом 8.1 все точки над i должны быть расставлены, но нет. Те, кто любит этот язык, читает про "очередное умирание" с лёгкой улыбкой.
Сейчас как фронт, так и бек устаканились, есть проверенные инструменты, используя которые, вы гарантированно решите бизнес задачи. И это радует.
ProgrammSM
20.02.2022 08:52Это утверждение о "смерти" может быть справедливо разве что для каких-то отдельных регионов в мире. С RoR в пределах РФ не часто сталкивался, в отличии от PHP. А вот на проектах далеко за пределами РФ напротив RoR попадался чаще и появляются такие диковинки, как проекты на Elixir, которых в российской среде ни разу не видел вживую.
1Tiger1
20.02.2022 07:02-1Читал статью и ловил себя на мысли "для кого она?". Потом поперзнулся на списке фреймворков и начал задаваться вопросом "из какого года автор её вытащил?". А в конце не мог избавится от ощущения "зачем все это?". Объяснение роли бжкенда для новичков? Ну такое, шутка с письмом не зашла. Сравнение языков с их областями, плюсами и минусами? Ну нет тут сравнения, тут обрывки какие то в пару фраз приправленные хэлло-ворлдом зачем то. Анализ "где денег больше"? Да и так все в курсе что не от технологии зависит а от уровня и страны. Да и выбирать стэк только по деньгам это дорога на дно. Юмор? Так нет тут его, несмотря на попытки. Может как и написано в заголовке, анализ жива ли пыха, не устарела ли морально и функционально, успевает за аналогами в своей области, не вы родились ли ещё программисты на ней? А вот фик вам, другие темы отвлекли автора от этого вопроса, ограничился как обычно "много сайтов на ней ещё". Поэтому самый главный вопрос: а что собственно хотел сказать автор? На кроме рекламы академии, с этим понятно.
morgot
20.02.2022 16:31// PHP <?php echo 'Hello, world'; ?>
Не пишу на РНР уже лет 10 (не потому что перешел, просто это не мой основной ЯП). Но читаю статьи. Так вот, мне кажется (судя по этим статьям) , что hello world на РНР выглядит теперь как-то так:
<?php require 'vendor/autoload.php'; use \Hello\World; use \Start\programming\php; interface IhelloWorld { //100500 строк поскипано для краткости } class myHelloWorld implements IhelloWorld { //поскипано $hello = new myHelloWorld(trait и прочий синтаксический сахар) $hello->print_hello_world(DEFAULT_STR...);
есть ли еще РНР без фреймворков и ООП? Или всё, JAVA номер 2 ?
vlreshet
Обычно PHP хоронят люди, которые либо не написали на нём ни строчки, либо делали это 10 лет назад)
evil_me Автор
Забавно, но если подумать, то это почти с чем угодно так работает.
k102
Вот я из вторых. Не то чтобы я его хоронил, но за последние несколько лет не видел чтобы его использовали, хотя и работал в нескольких компаниях
evil_me Автор
А что там было вместо?
k102
Да чего только не было) и джава и шарп и (вот сейчас) нода.
vlreshet
Ну а я работал на десятки разных клиентов, и наоборот, у них всегда был PHP на беке) Статистическая выборка!