LINUX.ORG.RU
Форум — General

php или node.js?

 , , , ,


0

2

Привет. У меня есть вопрос.

Я начал интересоваться программированием с 14 лет, сейчас мне 19. За это время я попробовал практически все известные языки. Но у меня есть одна проблема: я не могу надолго остановиться на чём-то одном. Постоянно метаюсь между технологиями — то ухожу в Node.js, то в Java, то в C#. Сначала хочется строгой статической типизации, потом тянет попробовать что-то другое, это моя очень плохая черта. В итоге получилось так, что больше всего опыта у меня накопилось именно с Node.js (NestJS, Express). Вообще программирование мне искренне нравится. Даже если бы мне дали миллион долларов и сказали, что можно больше никогда не работать, я всё равно продолжал бы заниматься программированием просто потому что мне это интересно. Но сейчас встаёт другой вопрос - заработок. Когда я начал смотреть вакансии на hh, заметил, что предложений по Node.js не так много. Конечно, есть позиции full-stack разработчиков, и я готов двигаться в этом направлении, но всё равно вакансий заметно меньше чем, например, на PHP с Laravel - даже если смотреть именно full-stack.

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

Я живу на Кавказе, где IT-сфера практически не развита. В своём городе я нашёл только одну веб-студию. У них используется стек Flutter, React, а на бэкенде допускаются разные языки: го питон, нода, пхп. Я думаю попробовать устроиться туда хотя бы для получения первого опыта и записи в трудовой. А уже позже рассматривать переезд в Питер или Москву.

И вот мой главный вопрос:стоит ли мне продолжать развиваться исключительно в JavaScript/Node.js, или, пока есть свободное время, лучше подтянуть пхп? Судя по количеству вакансий, язык всё ещё долго будет востребован.

хз зачем, но вот гитхаб: https://github.com/csablk?tab=repositories



Последнее исправление: csablk (всего исправлений: 2)

Даже если бы мне дали миллион долларов я всё равно продолжал бы заниматься программированием

женица вам надобно барин

ggrn ★★★★★
()
Ответ на: комментарий от csablk

На хх можно не ориентироваться, там половина вакансий липовые, чтобы хрюшки могли создать видимость своей нужности.[br] Перспектив полно, работать некому. Зарубежное ит уехало, освободилось много свободных ниш. Программисты только нужны не на laravel/spring/nest/react, а с хорошей технической базой.[br] Хотя на крайний случай всегда можно уйти в 1сники. Молодежь от этого морщит нос, толковых кадров не хватает и платят много.

anonymous
()
Ответ на: комментарий от csablk

Да и тем более, в провинциях никому нет дела до твоих асинхронных, модных супер-языков. В провинциях никому и нет дела до того, что у программистов зарплаты +150к. Можно делать говносайты за 20к на джумале и закончить как милторг, никто же не против. А у меня такая ситуация, что из работы в городе остается галерка Галерка - это можно, но если начнешь гребсти можешь так и остаться гребуном, а дальше см п.1.

anonymous
()
Ответ на: комментарий от LightDiver

С другой стороны тот же js более универсален и его прцент стремительно растет.

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

Открой для себя TypeScript и не морочь юношам головы.

Shadow ★★★★★
()

Двигайся в сторону TypeScript и C#. Как научишься программировать, сможешь каким угодно языком пользоваться.

Раз тебе нравится java, то TypeScript/C# тоже понравятся.

А веб-студии, у которой бэк и фронт на ноде/JavaScript, понравится, что ты их будешь делать на TypeScript - потому что потом легче поддерживать будет.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 1)
Ответ на: комментарий от Shadow

Как там рынок специалистов по макроассемблеру на бк-0010? Много вакансий?

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

Я js имею в виду всегда в связке с ts.

LightDiver ★★★★★
()
Ответ на: комментарий от csablk

Тогда тебе действительно в 1с надо, там без куска хлеба не останешься :) Другой вопрос, будет ли тебе эта работа доставлять удовольствие.

amm ★★
()
Ответ на: комментарий от LightDiver

А, если ts, то нормально. Потому что всратый js довёл программирование до ручки. Ну и его спецификация и принципы перпендикулярны большинству популярных яп.

Shadow ★★★★★
()
Ответ на: комментарий от firkax

Вот даже соглашусь про сам язык, да! есть косяки как и у всех, но вообщем и целом годен! С нуля писаное на нем да еще и на аккуратном микрофрэймворе в ООП стилистике - даже любодорого! Но вот то, что на нем в ширпотребном вэбе вытворяют – это то, за что надо кары терморектальные проводить! Пальцем на соответствующие CMS показывать не буду, сами догадаетесь…

fpastush
()
Ответ на: комментарий от anonymous

В пхп использование костыля php-fpm - обязательно, потому что один запрос - один процесс

Во-первых, это не костыль, уникальное средство изоляции запросов на уровне VM. Во-вторых, нет, не обязательно. Можно использовать workerman и подобные реактивные платформы.

no-such-file ★★★★★
()

Как уже выше написали - если тебе для денег - то учи что там нынче модно и чем можно развести лохов с деньгами на максимальное количество бабла. Если лохи готовы платить больше за «язык X» - то учи «язык X», вне зависимости от того, насколько он идиотский. Станешь классическим «программистом на языке X», зато денег заработаешь, пока хайп вокруг «языка X» не утихнет.

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

Так что определись сначала с реальной целью твоего квеста, и только потом озадачивайся вопросом насчёт языка.

Stanson ★★★★★
()
Ответ на: комментарий от LightDiver

Но при всем при этом 90% всего пхп это 2-3 основных CMS.

Десятки популярных CMS на пыхе, сотни разных.

Меня даже иногда расстраивает, что нет такого разнообразия CMS на более взрослых стеках типа JVM и .NET

sanyo1234
()

Учи и то, и то. Товарищей, которые отговаривают от пыха не слушай, пока он «устареет», солнце потухнет. Есть куча организаций, которые уже давно на рынке, у которых бек на пыхе, и все бекендеры пхпшники, и никто там никогда не будет все переписывать и нанимать новую команду, не важно насколько новомодна технология. Я чесно говоря вообще не понимаю, как можно гнать на пых, и предлагать как альтернативу куда более угребищный жаваскрипт. Но знать его тоже надо, такие дела.

goingUp ★★★★★
()
Ответ на: комментарий от firkax

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

У тебя телега впереди лошади. Эти CMS уже есть и есть кча студентов, готовых их поддерживать ­— потому этим CMS удобны тем, кто хочет создать себе сайт. Сам по себе Wordpress — это чудовищно убогий компок лапши, у которого постоянно что-то ломается, отваливаются плагины при обновлении или находятся уязвимости в старых необновленных плагинах. Особенности его архитектуры можно было бы обсуждать, если бы архитектура была — по факту это просто груда сваленных в кучу фич. Как я пытался начинать пояснять — это типовой результат работы сообщества:
https://bykozy.me/blog/attention-economics-and-software-engineering/
Люди ведутся на красивое-блестящее или поверхностное решение задачи, даже если потом твой софт умрёт от рака. Я когда делал обзоры self-hosted commenting софтин — почти в каждой популярной реализации я находил повреждение данных. Ты ни одного слово про это не найдёшь в интернете — всем остальным просто пофигу, никто даже не пытается читать эти исходные коды. Особенно сейчас, когда массово пошла write-only культура, софт на гитхабе не чинят — его переписывают.

С другой стороны тот же js более универсален

Чего? Не пиши ерунду.

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

Ты сам выше написал: на пхп написано 70% веба. А на гитхабе может быть хоть миллион ненужного мусора который никто не использует, это ничего не значит.

Так разве PHP проекты не выкладывают на гитхаб?

byko3y ★★★★★
()
Ответ на: комментарий от sanyo1234

Меня даже иногда расстраивает, что нет такого разнообразия CMS на более взрослых стеках типа JVM и .NET

Люди, способные доработать бэк на F# под какие-то нужды, не клепают массовых копеечных говносайтов на CMS для последующего наполнениях этих сайтов домохозяками. Даже если просто по статистике посмотреть — у кодеров на F# один из самых высоких ЗП в среднем по больнице.

Почему я упоминаю F#? Потому что это очень близкий к PHP язык по своему применению.

byko3y ★★★★★
()
Ответ на: комментарий от byko3y

Почему я упоминаю F#? Потому что это очень близкий к PHP язык по своему применению.

Функциональный F# близок к пыху? Я думал, к Scala он близок, не?

И причём тут велосипедостроение и CMS.

Ога, давай такой способный на коленке сделай что-нибудь похожее:

Как вам такие CMS? и почему? (комментарий)

sanyo1234
()
Ответ на: комментарий от sanyo1234

Функциональный F# близок к пыху? Я думал, к Scala он близок, не?

Первая моя статья на хабре:
https://habr.com/ru/articles/481782/

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

Если быть точным, то, конечно, F# ближе к питону, потому что строгая типизация как в питоне (нельзя сложить строку с числом), потому что отступы как элементы синтаксиса. Программу с PHP или Python можно написать на F# в том же духе — другое дело, что типовая программа на PHP/Python — это одна сплошная патология, и в том числе поэтому такие плохие программы сложнее писать на F#, он поощряет соблюдение типов и однонаправленные потоки данных.

Тот же Rescript (тоже ML) — это по сути подмножество JS. То есть, конструкции JS один в один записываются на Rescript, там даже ключевое слово «let» одно и то же. Другое дело, что Rescript не любит традиционные изменяемые ассоциативные массивы JS и классы на прототипах — на которых так любят писать говнокод.

Ога, давай такой способный на коленке сделай что-нибудь похожее:
Как вам такие CMS? и почему? (комментарий)

Применять даже для средней руки проекта dotCMS — это безумие. Это как приобретать SAP (пусть даже бесплатную лицензию) для подсчёта домашнего бюджета. Тем не менее, под F# есть Umbraco для любителей «посложнее».

byko3y ★★★★★
()
Ответ на: комментарий от anonymous

экосистемах

Автору темы: если видишь это слово в контексте ИТ - знай, что изрёкший его слабоумен и слушать всё остальное что он говорит тоже не стоит.

firkax ★★★★★
()
Ответ на: комментарий от byko3y

А зачем ты так зацикливаешься на типизации данных?

IMHO F# — это в первую очередь про иммутабельность и выразительность функионального ЯП аля Scala / Haskell ?

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 2)
Ответ на: комментарий от byko3y

Сам по себе Wordpress — это чудовищно убогий компок лапши,

А я качество вордпресса не оценивал, я оценивал пхп. Но давай взглянем с другой стороны. Некто смог написать вордпресс, не особо заботясь о всяких изыскав, и получил работающий, и очень успешно применяющийся продукт. Если бы этот кто-то пытался писать свой продукт не на пхп а на жс или ещё каком новомодном языке - его проект бы постоянно падал (как с рантайм ошибками так и с синтаксическими), спамил стектрейсами и занимался прочими непотребствами. Автор бы скорее всего расстроился и забил на это дело. Итого, цель (получить работающий и успшный продукт) не была бы достигнута. Достигнута она оказалась именно благодаря пхп. Хочешь сделать продукт? Бери пхп. Хочешь изыски и модность? Бери жс и прочее.

Так разве PHP проекты не выкладывают на гитхаб?

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

firkax ★★★★★
()
Ответ на: комментарий от byko3y

Потому что это очень близкий к PHP язык по своему применению.

Да ну. На нём разве пишут интернет-магазины, сайты новостей и блоги?

firkax ★★★★★
()
Ответ на: комментарий от sanyo1234

Очень поверхностно знаком с этими вещами, мы по большей части свои собственные CMS делали на разнородных библиотеках — потому тут я так-себе эксперт. Лично мне, как разрабу, огромные чёрный ящик в проекте доставляет дискомфорт.

byko3y ★★★★★
()
Ответ на: комментарий от sanyo1234

А зачем ты так зацикливаешься на типизации данных?
IMHO F# — это в первую очередь про иммутабельность и выразительность функионального ЯП аля Scala / Haskell ?

Ну дык в PHP ты можешь возвращать из функции новое значение вместо модификации глобальной переменной — просто это мало кто делает в PHP. Я со Scala не дружу, а вот Haskell какое-то время изучал — так вот нет, Haskell вообще не из той оперы. Если в F# ты можешь объявить переменную mutable, то в Haskell такой возможности нет. Совсем. Вообще.

F# поощряет хороший код, но на нём можно писать один в один как на Питоне. Один в один как на PHP, наверное, не получится, потому что таких всратых базовых типов в F# нету. Но всё равно мне нравится идея «F# — аналог PHP», потому что люди часто не подозревают, как близко на самом деле F# к тем задачам, что они пишут сейчас на PHP. Они на PHP решают проблему валидации данных, модуляризации, борьбы с глобальным состоянием — а оно уже есть готовое на F#. То есть, они пытаются писать на PHP в стиле F#. Но, да, некоторые пишут на PHP в стиле Java — тут я просто промолчу, наверное...

byko3y ★★★★★
()
Ответ на: комментарий от firkax

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

Это старый парадокс: если манька дала за бутылку пива, то зачем вообще париться с карьерой?

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

Ты точно знаком с JS? Это очень близкий к PHP язык в плане обработки ошибок и неявному приведению типов.

byko3y ★★★★★
()
Ответ на: комментарий от byko3y

плане обработки ошибок

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

firkax ★★★★★
()
Ответ на: комментарий от firkax

занимался прочими непотребствами.

А ты видел фатал еррор от rand($a, $b), когда переменные на входе точно int? Я видел.

anonymous
()
Ответ на: комментарий от anonymous

Ты дос-атакер что ли пишешь?

Сделать это на пхп разумеется можно, через stream_socket_client+stream_socket_select (оно работает поверх ssl). Но в подавляющем большинстве случаев не нужно. Пхп предназначен быть простым, а алгоритм «делаем кучу запросов, где-то их запоминаем, а потом по мере поступления разбираем ответы» скорее всего не уместится в голове начинающего скриптописателя, а значит не надо ему этим голову засорять. Те, кто считают себя умными, используют описанный выше способ через stream_ (но опять же - непонятно зачем), остальным дали file_get_contents('https://...') (самое желательное), или на случай чего-то сложного - апи курла с примером как его запускать. Кстати, возможно через курл тоже можно это сделать.

firkax ★★★★★
()
Ответ на: комментарий от firkax

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

a = {};
console.log(a.variableName);

Исключение в JS ещё нужно постараться сгенерировать.

вернём false везде где можно, остальное непонятное по возможности просто сделаем вид что его не было, выдав варнинг в stdout или stderr.

В ноде тоже есть вариант игнорить ошибки, но он очень опасен, потому что воркер остаётся в непонятном состоянии.

В PHP обычно применяется неэффективная модель «один запрос - один процесс». В принципе, workerd и deno поддерживают эту модель тоже — просто JS часто используют именно из-за возможности одним воркером обрабатывать тыщу запросов, что является огромным преимуществом на PHP.

byko3y ★★★★★
()
Ответ на: комментарий от anonymous

Как на нем сделать одновременно 100500 http запросов, обработать результат и схоронить в базу?

Примерно как везде

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)
Ответ на: комментарий от no-such-file

Как на нем сделать одновременно 100500 http запросов, обработать результат и схоронить в базу?

Примерно как везде

На топовых позициях находятся сишные бинды, которые вызываются десятью строчкам скрипта и делают 99% работы. Я уже давно не смотрю на эти бессмысленные таблички. По факту если ты попытаешься сделать что-то реалистичное на PHP, то дай бог 1/10 от производительности тех бенчей получишь.

byko3y ★★★★★
()
Ответ на: комментарий от no-such-file

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

amm ★★
()

Я закончил касаться PHP где-то на версиях 4-5 языка. Потому я не знаю, что там в языке сейчас.

Но мои соображения:

  1. PHP создавался как язык для идиотов, без какой-либо системы вообще. В нём не было продумано ровным счётом ничего. Начиная с того, что невозможно написать поддерживаемый код в виде мешанины из HTML и собственно самого кода. Уже это было колоссальной ошибкой авторов. Заканчивая тем, что в стандартной библиотеке, например, была куча алиасов для функций с разными названиями, где-то аргументы передавались в одном порядке, где-то в противоположном. То есть, у авторов языка в голове была каша, а у тех, кто писал на нём - каша ещё хуже.
  2. Весь код на PHP, который я когда-либо видел - ужасная нечитаемая лапша. Нераспутываемый моток спагетти, связанный кое-как изолентой. Читая код на PHP никогда не приобретешь навыки написания поддерживаемого понятного кода, с большой вероятностью скатишься вот в это традиционное в мире PHP тяп-ляп и в продакшн (они ещё редактируют файлы прямо на проде, и гордятся этим! Ты здесь ещё прочитаешь об этом, если ещё не).
  3. Отсутствие перспектив и возможностей двигаться в смежные области. PHP - это только веб-бэкенд. Ни расчёты, ни нейросети, ни GUI, ничто более на нём никто не пишет (и он долгое время не предназначен был). Т.е. это язык строго одной ниши, не универсальный. Да, можно написать GUI на PHP. Но это удел фриков, ненормальное программирование.

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

Да и вообще, стоит ли идти в разработчики в 2026?.. Я совсем не уверен. Я не верю в ИИ, но верю в то, что он сделал вход максимально сложным. Надо быть семи пядей во лбу теперь, обладать серьёзными знаниями основ, математики, обладать серьёзной трудоспособностью, настойчивостью. Это не то же самое, что было 10-15 лет назад, когда ты мог сказать, что умеешь писать «Hello, world» на каком-либо языке, и тебя с руками отрывали на серьёзную зарплату.

Сейчас совсем другая ситуация. Я бы подстраховался корочками сварщика или сантехника - там ИИ ещё ничем не угрожает.

Chiffchaff
()
Ответ на: комментарий от anonymous

не так понял мой вопрос

Что не так? Сравниваются фреймворки на разных задачах, в т.ч. как ты хочешь – много запросов на обновление БД. Находишь там пых, убеждаешься что он в топе, быстрее голанга и всего в 2 раза уступает самой топовой реализации на растишке. Идёшь и смотришь как это сделано, исходники всех тестов на гитхабе.

no-such-file ★★★★★
()
Ответ на: комментарий от amm

придется писать отдельную асинхронную реализацию

Нет, не придётся, всё уже написано.

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

Актуальные будут.

использовать ее для io является хорошей практикой

Но это не особенно помогает, т.к. кроме ноды «остальные платформы» сосут у пыха по скорости.

no-such-file ★★★★★
()
Ответ на: комментарий от Chiffchaff

Отсутствие перспектив и возможностей двигаться в смежные области. PHP - это только веб-бэкенд. Ни расчёты, ни нейросети, ни GUI, ничто более на нём никто не пишет (и он долгое время не предназначен был). Т.е. это язык строго одной ниши, не универсальный. Да, можно написать GUI на PHP. Но это удел фриков, ненормальное программирование.

Это совершенно нелепый аргумент. Да, на пхп лучше всего пишется именно веб, потому что пхп сделан для веба. И это как раз причина, по которой, если ты пишешь веб, с большой вероятностью лучше его писать именно на пхп. А что-то другое - на языке, более подходящем для чего-то другого. Каждому своя специализация. Писать нейросети на языке для веба и писать веб на языке для нейросетей - одинаково странные вещи.

А вообще я писал расчёты (именно числодробильные) на пхп. Вышло гораздо быстрее чем написать их на Си. Всмысле, гораздо быстрее вышел процесс их написания. А когда была готова общая структура работы - я переделал это всё на Си, и оно стало быстро работать (раз в 100 быстрее).

firkax ★★★★★
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария