06.08.2022
7 хвилин читання

Моя думка про PHP

Сергій Немчинський

Продовжуємо цикл статей на тему, що я думаю про різні мови програмування.

PHP – одна з найпопулярніших в світі мов. Особисто я працював на ній близько 4-5 років, правда це було на рубежі століть за часів PHP 3, так що мій досвід трохи застарів. Але в моїй школі є навчальна програма по паттернам і її можна проходити на будь-якій мові. Студенти дуже часто вибирають саме PHP, а я перевіряю їх роботи, таким чином бачу нові штуки в цій мові. Таке довге вступ для того, щоб ви розуміли, що я розумію, про що говорю.

Які ніші займає PHP

Що ми маємо на сьогоднішній момент? PHP займає дві окремі ніші в веб розробці. В першу чергу він практично повністю зайняв нішу самих базових рішень, потрібних більшості дрібних і навіть частково середніх компаній. Це рішення, засновані на вже готових CMS. WordPress – найпопулярніша CMS (Content Management System – система управління контентом сайту) в Світі і написана вона на PHP. Головні конкуренти WordPress, Joomla і Drupal, теж написані на PHP.

Фактично, якщо ми говоримо про сайт для невеликої компанії, де є тільки контент, форма зворотного зв’язку, реєстрація і покупка, то робити сайт на якомусь іншому мовою просто не бачу сенсу. Тому ця ніша повністю зайнята PHP.

Друга ніша відноситься до більш складного сегменту веб-розробки – e-commerce рішень. PHP тут використовується вже не з CMS, а в зв’язці з навороченими фреймворками: Laravel, Symfony, Yii і інші. І на цих фреймворками вирішуються досить серйозні завдання e-commerce: інтеграції з якимись зовнішніми системами, складна бізнес-логіка і ін.

Цю нішу PHP ділить з Python і Ruby, при цьому тримає свої позиції досить успішно. Що буде відбуватися далі – невідомо, ймовірно PHP і Python так і будуть займати лідируючі позиції. Можливо, людство придумає якесь рішення, що відрізняється від Інтернету, наприклад, доповнена або віртуальна реальність. Тоді нам не знадобиться веб розробка і всі ці мови будуть не потрібні. Але зараз веб є і дуже низька ймовірність, що найближчим часом він зникне.

Я також зустрічав ситуації, коли на PHP робили жорсткий кривавий ентерпрайз. За фактом, ентерпрайзное рішення можна зробити на будь-який мові, а не тільки стандартної зв’язці Java-C #. Але проблема полягає в тому, що використовуючи язики не суворої типізації, як PHP, ви з великою часткою ймовірності замість системи отримаєте великий клубок бруду. Тому що мова з нестрогой типизацией дозволяє програмісту писати код досить вільно. А якщо код написаний вільно і цього коду дуже багато, то результат може бути м’яко кажучи поганим. Так, писати такі системи на PHP можна, але потім це дуже боляче підтримувати. Кров’ю, потом і величезними грошовими вливаннями. У багатьох випадках це легше і дешевше переписати на Java.

Більш детально про мову

PHP – Сі-образна мова. Вона легко читається і за рахунок своєї простоти зрозуміла кожному програмісту, що працює на іншій мові. У PHP низький поріг входження. Він не вимагає складної настройки, тому що файл php покладений на будь-який Apache з транслятором PHP відразу починає працювати і не вимагає додаткової інсталяції.

Мені особисто мова PHP подобається. Вона зрозуміла, з простим синтаксисом, добре визначаються всі керуючі конструкції, тому це одна з найлегших мов для новачків. Дозволяє легко зробити простий сайт, відмінно підходить для Proof of concept, але не підходить для роботи з великими навантаженими системами та багатопоточність.

Ходять чутки, що в наступну версію PHP хочуть включити Just In Time компілятор. Це просто шикарне рішення, так як воно усуває більшість проблем поточної версії PHP. Зараз скрипт на PHP кожен раз виповнюється в окремому тред, тобто на старті відображення сторінки тред запускається і закривається коли він відпрацював. З точки зору простоти програмування – це хороше рішення. Але коли ми говоримо про системи середнього або високого рівня – це вже велика проблема.

Зараз багато Хейту навколо PHP, мовляв мова дозволяє писати сильно вільно, від цього багато поганого коду. Так, але хороший програміст напише хороший код, так що це вже питання не до мови, а до програміста.

Додати коментар

Ваш імейл не буде опубліковано. Обов'язкові поля відзначені *

Зберегти моє ім'я, імейл та адресу сайту у цьому браузері для майбутніх коментарів