Hello, World, друзі! Саме час помудрувати та сказати свою суб’єктивну точку зору з приводу того, яку мову програмування обрати, PHP чи Node.js та розвіяти деякі міфи стосовно них.
Одразу скажу, що тема холіварна, тому я буду відштовхуватись виключно від своїх уподобань та свого досвіду.
Чому для JavaScript не виникає таких запитань? Все дуже просто. У JavaScript немає альтернативи в плані роботи в клієнті – це раз. І друге – в плані рівня входу. Для JavaScript потрібен лише текстовий файл і браузер. Все. Більш нічого не треба.
З PHP та Node.js вже трішки інше. Плюс вони завжди на слуху і перед тим, як зробити вибір, потрібно розуміти, що є таке поняття як маркетинг.
А якщо спитати у серйозного програміста, то він, цілком ймовірно, взагалі не буде виказувати ніяких ідей. У нього будуть свої якісь вподобання, але вони не будуть критичними. Йому байдуже, він може писати і на одній і на другій мовах програмування, якщо він працював з ними. Звичайно, спеціаліст знайде плюси у кожної з них, однаково як і мінуси відповідно.
Давайте для початку розберемось за що відповідає JavaScript і за що відповідають мови бек-енду.
JavaScript відповідає за роботу у браузері. Маніпуляції елементами сторінки, переміщення, зафарбовування, візуальні ефекти, програвання аудіо та відео. Все це робить JavaScript.
Але. JavaScript не може – створювати файли (ніяк, у нього обмеження), відкривати та управляти браузером, маніпулювати файлами та папками, звертатись через мережу. Хоча JavaScript і може робити AJAX-запити та фейк-запити, що, практично, одне і те ж, звертатись до браузера. Проте сервери дуже часто накладають безпекові обмеження і такі звернення можуть бути відхилені.
В той же час, усі мови програмування бек-енду можуть робити безмежну кількість речей, котрі не може робити JavaScript. Це – робота з базами даних різних типів, створення та ініціалізація сокетів, організація роботи з файловою системою (тут ми часто стикаємось з серйозними та масштабними речами – можна створювати зображення, можна парсити JSON-файли).
Тобто, по суті, мови програмування бек-енду – це універсальні мови програмування, які заточені під веб-розробку. Не всі, звичайно. Для прикладу Python більш універсальна мова, і не обмежується виключно вебом.
Отже, якщо потрібно робити маніпуляцію файлами, працювати з базами даних, не обмежувати себе, то це бек-енд. Це серверна частина чи якась універсальна мова.
Коли ми говоримо про бек-енд, то останнім часом стало модно ставити на чаші терезів PHP проти Node.js. При чому, якщо ти початківець, то ти неодмінно будеш казати, що PHP is dead, а Node is the future.
Насправді, це хибна думка і якщо людина так каже, то це показник його, скажімо так, невеликого життєвого досвіду в межах програмування.
Відмінності
Вік
PHP більш стара, Node новіша мова програмування. Хоча, за мірками мови програмування, нова – це невірний вислів, так як Нода живе вже достатньо довго і показала свою працездатність.
Швидкість
Кажуть, що за швидкістю Node.js випереджає PHP. Скажу так. Це повна маячня. Це говорить про недалекість того, хто висловлює подібну думку. І PHP і Node.js – мови бек-енду. Бек-енд працює на комп’ютері або на сервері. Якщо залізо повільне – не варто очікувати чуда. Якщо повільна база даних, неправильно спроектована, некоректно налаштована – не слід чекати суперджет-швидкості. Не вистачає ресурсів – жодна мова бек-енду не буде “літати”.
Отже, коли хтось каже, що Node швидка, то потрібно обмежувати поняття швидкості. Тобто швидка на певних синтетичних тестах певної операції. При цьому вона все одно буде залежати від диска, від процесора, від потужностей сервера, від пропускної спроможності мережі.
Насправді PHP останніх версій 7.х у певних тестах випереджає Ноду і доволі легко може дати їй прокашлятись. Реально швидкість вражає. При перемиканні версій PHP легко можна побачити збільшення продуктивності роботи сайту навіть без оптимізації.
Тому не можна казати, що мова програмування швидка. Можна говорити в комплексі, тобто на певних серверах на певних тестах певної операції, можливо, якась мова дещо швидше виконує цю операцію, ніж інша. Ця різниця настільки мізерна, що більшість з нас її взагалі не помітить і не вартує затраченого часу на подібні суперечки.
Пакетний менеджер
У Node.js є npm. PHP має декілька пакетних менеджерів, з якими можна працювати абсолютно однаково. Вони працюють з однаковою швидкістю (плюс-мінус), з однаковою продуктивність, з однаковими проблемами. Тому переваг немає в жодного з них.
Які можуть бути проблеми. Проблеми можуть бути наступні. Оновився пакет – щось не працює. Ласкаво просимо до Раю пакетних менеджерів та пакетних систем. Скачав пакет, а він з вірусом або з майнером. Ось вони принади пакетної системи. Говорити про безпеку без перевірки кожного пакету практично нереально. І там і там можна “підхопити заразу”. Ніякої різниці між мовами немає.
Мода
Тут без коментарів. Node.js однозначно випереджає PHP по одній простій причині. Мода на Ноду пішла приблизно у 2005-2007 р.р., навіть може у 2010 більше.
Дуже багато компаній, які займаються навчанням, почали рости як на дріжджах. Їм конче необхідно було виділятись на фоні того, що пропонують конкуренти. І саме тут в нагоді стала Node.js.
Вона стала модним віянням в навчанні. Чому? Тому, що компанії, які навчають людей програмуванню завжди так роблять. Підсаджують необізнаних на курси і витягують гроші, нав’язуючи продовження навчання. Ну ви знаєте.
Нода стала модною і почала пушитись в межах того, що це майбутнє. Насправді, маячня. Якщо взяти до уваги дослідження ринку, то можна побачити, що певну долю займає PHP, певну долю займає Python, певну долю займає Java (саме Java) і певну долю ринку займає Node.js. При чому Node.js зовсім не є лідером.
