История языка PHP
История началась в далёком 1995 году, когда Расмус Лёрдорф создал несколько скриптов на языке Си, которые существенно облегчили создание персональных веб страниц. Так появился язык PHP. Название ему было дано исходя из аббревиатуры Personal Home Page, язык для персональных веб-страниц, эдакий веб-язык для домохозяек. В те времена применялись два языка для веб-программирования: Perl и Java. На Java писались приложения для банков, крупных компаний — то есть там, где заказчик мог позволить себе большую команду разработчиков. Сам язык Java не отличается большой скоростью разработки.
Perl применялся для небольших веб-страниц. Но для неопытного программиста он не был идеальным — за кажущимся удобством могли таиться сотни возможностей сделать ошибку при написании программы, а отладка могла быть сложной. Да и о стандартах написания кода Perl-сообщество договориться не могло. Расмус Лёрдорф сначала написал набор простых скриптов, которые он использовал для анализа статистики посещения своего резюме (data analytic), затем решил открыть исходный код языка PHP Tools, после полностью переписал его, назвав FI, интерпретатор форм, а затем, всё-таки вернув в название PHP, Personal Home Page Constructor Kit, ещё раз полностью переписал в октябре 1995 года. Тогда же язык был попробован на совместимость с Windows NT — опыт оказался удачным. Код на PHP в то время встраивался в веб-страницу при помощи html-комментариев.
Уже через полгода, в апреле 1996, выходит вторая версия PHP/FI. В этой версии были добавлены встроенные функции для работы с популярными базами данных, возможность создания пользовательских функций и работа с cookies. Язык был признан успешным — целый 1% сайтов в сети Интернет его использовал в той или иной мере. Однако разработка велась по прежнему одним Расмусом, без команды разработчиков. Распространялся он также под персональной лицензией. Так продолжалось до 1998 года.
В 1997 году к проекту решили присоединиться два программиста из Израиля, Энди Гутманс и Зив Сураски. Они посчитали, что код языка PHP/FI не является эффективным и решили полностью переписать само ядро языка. В итоге в 1998 году они решили выпустить первый релиз собственного, вроде как независимого языка программирования PHP, без суффикса FI, и это был третий релиз PHP 3.0. Кроме хорошей работы с HTTP-запросом, язык получил возможности работать эффективно с огромным набором баз данных. И самое важное — они добавили к языку возможность подключать пользовательские модули. Говорят, именно это и стало толчком к массовому развитию проекта.
Позднее израильские программисты ещё раз переработали движок языка. Новый движок PHP, Zend Engine, позволял реализовать работу нескольких серверов, обеспечить работу с сессиями, буфер вывода, безопасность ввода данных пользователем. Версия PHP 4.0 увидела свет в 2000 году, она имела намного большую производительность.
Через 4 года выходит версия языка PHP 5.0. Главное, что в ней появилось — это поддержка объектно-ориентированного программирования. К этому моменту PHP уже использовался не на 2% и даже не на 10% всех веб-сайтов в Интернете. Он вышел на новом движке, Zend Engine 2.0.
Развитие языка в дальнейшем было предопределено семимильными шагами, которые делал Интернет в последующие годы, и потребностями, которые он выдвигал. Предполагалось, что в рамках PHP 6.0 будет реализована полная поддержка Unicode, международной кодировки, которая включала в себя все известные человеку символы алфавитов всех мировых языков. Ради этого даже попробовали исключить из языка регулярные выражения. Однако реализовать поддержку Unicode так и не удалось, и PHP 6 был отмечен всего лишь как ветвь развития PHP, а не новый релиз.
Новый шаг был сделан компанией Facebook. Устав ждать от разработчиков улучшения языка программирования PHP, создатели этой социальной сети не имели возможность переписать весь код её на другой язык, а растущим потребностям многомиллионной аудитории PHP 5.4 уже не удовлетворял. В итоге они на основе PHP выпустили собственный язык, который назвали Hack. Он выполнялся на их собственной виртуальной машине HHVM, Hip-Hop-Virtual-Machine, компилируясь в байт-код. Поддержка PHP в ней тоже была. В итоге всё-таки разработчики PHP посовещались и решили собрать из всех предрелизов в конце 2015 году ветку PHP 7.0. Хоть она и не поддерживала Юникод, как и раньше, но позволила лучше работать с данными, был реализован оператор <=>, spaceship, ряд других операторов, а также была добавлена возможность указывать тип данных, возвращаемых функцией. Улучшилось быстродействие за счёт реализации отложенных вычислений.
Говорят, что именно эта версия «похоронила Python», который тоже использовался для веб-разработки, но по быстродействию многократно уступал PHP7.0.
Дальнейшее развитие PHP перешло к версии 8. Данная версия языка отличается более строгим контролем типов данных. Появилась возможность явно указывать их тип, а не только тип возвращаемого значения функцией. Сами операции преобразования типов при сравнении также стали происходить более строго. Добавлен оператор Match, конструкция Nullsafe. В конструкторе классов сразу стало возможно указывать свойства класса. Добавлен тип Union, сделано множество других улучшений. Наконец, непосредственно в сам язык были добавлены сразу два механизма JIT-компиляции, которые можно было выбирать для тех или иных задач. Добавлены стандартные классы и методы, например, для работы с DOM. Версия языка 8.2 вышла в декабре 2022 года, является рабочей на момент написания этой статьи в марте 2023 года.
Для чего стоит изучать PHP
В первую очередь стоит изучать данный язык программирования новичкам в веб-разработке. Благодаря тому, что многие способы работы с клиент-серверной архитектурой, базами данных, запросами, сессиями, кукис и другими вещами являются частью самого языка, их не придётся ещё потом дополнительно изучать отдельно. Сам язык является, по мнению многих программистов и HR-менеджеров, лучшим стартом в разработке для Интернет. Добавим сюда также и то, что он является сравнительно лёгким, с небольшим порогом вхождения, а также на нём много вакансий для программистов уровня Junior.
Во вторых, данный язык можно рекомендовать для изучения тем, кто хочет сделать какой-то интернет-стартап и не может нанять программиста для работы, в итоге ему приходится всё делать самому. PHP как раз и был задуман изначально для таких людей. С его помощью можно легко настроить парсинг сайтов, чтобы отслеживать рынок спроса и предложения, аналитику данных, поведение пользователей на сайте начинающей компании, настроить индивидуальные тематические рассылки и сделать другие полезные для бизнеса вещи. Самая популярная CMS для сайта-стартапа фирмы, WordPress, позволит быстро и без дополнительных затрат запустить интернет-поддержку бизнеса и найти клиентов не только в своём городе, но и по всему миру.
Наконец, PHP будет подходить для тех программистов, которые хотят долго развиваться в веб-направлении. Дело в том, что на PHP огромное множество проектов, которые надо и поддерживать, и расширять. Если начинающий веб-программист обычно создаёт какой-то онлайн-сервис для записи на приём в частную стоматологию, то программист уровня middle может работать над распределённой серверной архитектурой, а senior может организовывать работу целой команды, или же работать над реализацией сложных многопоточных систем самостоятельно. Работа в команде, самостоятельный бизнес-проект в программировании, job-offer в США и Европу, карьера в крупной фирме-гиганте — все эти двери можно открыть с помощью ключика под названием PHP.
Отдельно стоит отметить популярность языка на просторах СНГ. Дело в том, что в не самые лучшие годы для PHP, когда хотели выпустить версию 6, но она не вышла в релиз, в других странах искали этому языку альтернативу. В результате появилось множество проектов на Node, на Python Jango, в это же время, 2005-2014 годы, происходит расцвет языка Ruby. СНГ все эти модные веяния почти обошли стороной, так как у нас интернет-проекты вполне себе обходились PHP5.2 и 5.4. А с 2014 года с выходом PHP7.0 появилось средство для поддержки высоконагруженных сервисов, которого так не хватало, и это не был какой-то новый язык программирования — это был всё тот же PHP. Тем, кто хочет найти работу в пределах СНГ или найти программиста нужной квалификации для поддержки проекта, можно однозначно советовать PHP.
Для чего PHP не подойдёт
Являясь узкоспециализированным языком программирования для веб, PHP плох для всего остального. На нём нельзя писать игры, создавать программы для работы с графикой. Для построения и обработки нейронных сетей он тоже не слишком хорошо подходит. Всё, что работает на PHP, должно запускаться из браузера. Альтернативой может быть, разве что, десктопное приложение для выписки рецептов в поликлинике или оформления банковской карты. Но только в случае, когда оно имеет относительно несложный интерфейс, сводящийся к заполнению формы, схожей с интернет-формой.
В веб-приложениях PHP тоже будет хорош не всегда. Выше я упоминал, что он будет хорошим языком для стартап-проекта. Но только в случае, если сам бизнесмен вынужден изучать программирование и делать интернет-часть своего бизнеса без посторонней помощи. Если есть возможность привлечь профессионального программиста, то гораздо быстрее сделать проект с «минимальной жизнеспособностью» можно на языке Ruby. Это потребует больших профессиональных знаний, но по скорости разработки Ruby опережает, пожалуй, всё, что сегодня существует. Что, впрочем, не убирает его недостатков, таких, как низкая скорость работы приложения — гораздо ниже, чем на PHP-сервере.
Наконец, для построения каких-то сложных интерфейсов, например, сетевой архитектуры онлайн-игры, даже браузерной, PHP будет не лучшим решением. Для этой цели лучше подобрать какой-то специализированный исполняемый в бинарном файле на сервере код. Это увеличит быстродействие. Точно также не стоит использовать PHP для веб-приложений, которые должны обрабатывать большие потоки данных быстро и в реальном времени, например — интерфейс управления сетью камер наружного наблюдения через Интернет. Тут лучше какие-то бинарные приложения, например, разработанные на языке Rust или C++.