Продолжаем цикл статей на тему, что я думаю о разных языках программирования.
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, мол язык позволяет писать сильно свободно, от этого много плохого кода. Да, но хороший программист напишет хороший код, так что это уже вопросы не к языку, а к программисту.