Другие языки программирования и технологии

Что лучше PHP или Node.js ?

Лучше PHP.

Потому как в PHP нет геморроя с впихиванием во все щели асинхронности (в Node.JS любая синхронная операция повесит сервер) и есть контроль типов (пусть даже не настолько серьёзный, как в Python), которого в JavaScript в принципе не существует. Плюс в Node.JS нет нормальной работы с реляционными БД (адаптеры есть, но то, что они обеспечивают, нормальным назвать сложно), а пик моды на MongoDB давно прошёл.

Плюс сам по себе PHP более логичный язык - в котором регулярно избавляются от устаревших и неудачных конструкций. Тогда как каждый стандарт JavaScript бережно сохраняет все нелепости, накопившиеся с первой версии языка.

В результате выстрелить себе в ногу, программируя на JavaScript, многократно проще, чем на PHP, а область применения Node.JS в back-end существенно уже.

P.S. Node.JS - активно раскручиваемая мода. Но никакой реальной конкуренции с PHP и близко нет.

P.P.S. Да, я прекрасно понимаю, что в Node.JS можно использовать TypeScript, Dart, Kotlin и прочие языки, имеющие контроль типов. Но компиляция этих языков в JS нивелирует единственное преимущество JavaScript над PHP - большую производительность исполняемого кода.
Максим Акимов
Максим Акимов
94 087
Лучший ответ
Арман Бокушев на ноде вроде ещё можно десктоптные приложения создавать в электроне
Андрей Гуменный > Но компиляция этих языков в JS нивелирует единственное преимущество JavaScript

Есть сайт посвящённый сравнению производительности ЯП
https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/typescript.html
В некоторых тестах TypeScript перегоняет JavaScript, в некоторых отстаёт. Но чтоб делать какие-то выводы, надо разбираться, как написаны тестовые программы. На этом сайте даже есть разные варианты кода одной задачи и одного ЯП.
Node.js становится все более и более популярен, php постепенно отходит на второй план
Всем хорош пых, особенно 7й.
Но блджад! Этот е6анатский способ обращения к свойствам объекта через ->, смешивание понятий "массив" и хэш", необходимость всенепременно проверять существование переменной перед обращением к ней дабы не нарваться на ворнинг (выводящийся прямо в поток вывода), конкатенация ТОЧКОЙ (кто-то там говорил про типизацию? Ну так вот, если что-то реально типизированное - оно не ссыт конкатенировать строки знаком плюс). Ну и конечно же, уё6ищный доллар, с которого я обязан начинать каждое имя переменной.
Это первое что приходит на ум.
Ах ну да. И за 20 с уем лет существования пыхапэ - ни малейшего намёка на нативную многопоточность. Я не скажу что жс многопоточный, но за счет его асинхронности можно решать многие задачи, требующие многопоточности, например, параллельную загрузку файлов.

А говорить что асинхронность жаваскрипта мешает - да, это было актуально пару лет назад, в эпоху борьбы с callback hell. Начиная в 8 ноды в ней нативно поддерживаются async-await'ы, и проблема ушла сама собой.

Из минусов ноды - необходимость самостоятельно стряпать вебсервер под каждый проект, думать о его безопасности и вручную параллелить на потоки по числу ядер железа. Но это так. Один раз решил - потом копипастишь. Ну и еще, пыховый сайт встаёт на любой хостинг за доллар в месяц. Под ноду нужен VPS.
Слава Соболев
Слава Соболев
51 868
Андрей Гуменный Для Node.js тоже есть хостинг
Максим Акимов А смешивание массивов и объектов в JavaScript тебя не смущает? Вот уж где полный бред - когда переменная является одновременно и массивом, и хэшем, и объектом.

Чтобы обратиться к свойству объекта, в JavaScript тебе тоже придётся проверить, что объект существует. А в PHP7 добавлена операция ??,делающая работу с отсутствующими переменными не сложнее, чем в JS.

В JavaScript ты обязан сам - вручную - постоянно контролировать типы операндов операции '+'. Чуть отвлёкся - и получил совсем не то, что думаешь. Объединение операции сложения и конкатенации в языке с предельно слабой типизацией - это одна из нелепейших ошибок дизайна JavaScript.

И и что именно ты называешь "нативной многопоточностью"? В PHP есть минимум две стандартные библиотеки, реализующие полноценную многопоточность.