Хватит говорить, что PHP мертв / Хабр
Это не так. PHP не умер. Он жив, и до “конца жизни” ему еще очень далеко. На этом все. Как бы некоторые ни хотели, чтобы он исчез, этого не произойдет. По крайней мере, в обозримом будущем уж точно.
Эта статья пролежала в моей папке для неопубликованных достаточно долго. Время от времени я вносил правки то тут, то там, но все никак не мог определиться со временем публикации. Но вот релиз PHP 8 наконец показался мне подходящим моментом.
Каждый месяц мне попадаются статьи, комментарии, или твиты, в которых говорится, что PHP умирает, и нам пора прекращать его использовать. Если кто-то задает вопрос на каком-либо форуме или на Stack Overflow касательно изучения PHP, с вероятностью почти в 100%, кто-то ответит что-то вроде: “Зачем вам изучать PHP? Потратьте время на что-нибудь стоящее, например <здесь-должен-быть-ваш-замечательный-язык-который-не-php>”.
На протяжении последних 20 лет, помимо других языков, я писал код на PHP (на самом деле, может быть и дольше. Я точно не помню, когда я начал это делать), и большую часть времени я просто игнорировал эти высказывания. И все эти годы PHP “умирал”, и я должен был бросить его использовать уже очень давно. Я отнюдь не претендую на звание эксперта ни в одном языке, которые я использую, и в PHP есть еще много вещей, в которых мне не мешало бы разобраться, но снова и снова я возвращаюсь к нему.
Я потратил много часов на изучение других языков, на что меня подтолкнули случайные, убедительно написанные статьи критикующие PHP. И я признаю, что эти приключения естественно были в высшей степени полезны для меня как для разработчика. Хотя я, вероятно, никогда не буду использовать многие из этих языков профессионально, я чувствую, что расту как программист, изучая другой язык.
Главная мысль, которую я хотел бы донести в этой статье: “выучить другой язык” — идея очень хорошая, но не потому, что “php умирает” — это просто неправда. Вы должны учить другие языки, потому что они будут полезны для вас как для программиста. Если бы PHP действительно умирал, то, конечно, у вас была бы еще одна (достаточно веская) причина двигаться дальше, но прямо сейчас, в данный момент, он не умирает.
Один из первых аргументов многих PHP-программистов, которым они будут парировать, отстаивая свой выбор, — это статистика, демонстрирующая, насколько PHP популярен в сети. Хотя эти цифры очень интересны, я склонен полагать, что они немного вводят в заблуждение. Было бы неправильно игнорировать тот факт, что львиной доле этой популярности PHP обязан WordPress. Любить его или ненавидеть, решать вам, но WordPress — причина, по которой мы все здесь. Но WordPress… такой… WordPress. У него много (действительно много) недостатков, но я знаю (и дружу с) множеством людей, которые создают много удивительных вещей — и зарабатывают большие деньги — с помощью WordPress.
PHP — это не WordPress. И, хотя WordPress увековечен в истории PHP, PHP лучше, чем WordPress — НАМНОГО лучше. В WordPress много чего не так, как и в PHP, но это не значит, что он не подходит для всех проектов. Я, вероятно, не стал бы писать свои веб-приложения на C++ (или, по крайней мере, он не стал бы ПЕРВЫМ среди языков, рассматриваемых для работы над этими проектами), но это не делает C++ плохим языком. Он просто не подходит для этой работы, точно так же, как я бы не стал использовать PHP для написания аппаратных драйверов или чего-то еще, связанного с ИИ. И дело просто в том, что это выходит далеко за пределы его специализации.
Выбор языка также во многом зависит от того, в чем вы разбираетесь. Как гласит старинная пословица: время — деньги, и в большинстве случаев использование нового языка для проекта — это серьезная затея, которое еще больше урезает временные рамки, которые обычно и без того очень сжаты. Я достаточно хорошо знаю PHP, поэтому в основном использую именно его. Я немного знаю Python, но лучше разбираюсь в PHP. Я, вероятно, мог бы сделать то же самое на Python, но это займет у меня вдвое больше времени (по крайней мере, в начале). Это не означает, что я вообще не буду использовать Python или что я имею что-то против Python, это просто означает, что PHP — это то, в чем я лучше.
Изучение языка на самом деле не так сложно, и опытный программист может понять суть языка, посвятив ему всего одни выходные. Но это не значит, что этого достаточно, чтобы в полной мере знать язык. Знание языка программирования — это не только знание того, какая встроенная функция что делает, но и наличие достаточного опыта, чтобы знать, КОГДА и какие фичи использовать или как экосистема сочетается друг с другом.
Я знаю PHP, и также знаю, как настроить Nginx на сервере и как конфигурировать FPM или opcache; У меня достаточно знаний, чтобы сделать разумный выбор в отношении зависимостей; Я знаю, как безопасно развертывать PHP-приложения в рабочей среде, и мне известно о проблемах безопасности, которые могут возникнуть, если я не буду внимательно следить за тем, как я использую определенные языковые фичи. Это больше, чем просто “знание” языка. Как программисты, мы тратим много времени на изучение подобных вещей, которые часто даже не связаны с языками, которые мы выбирали.
Вот почему меня очень разочаровывает, когда другой программист говорит мне, что мой выбор языка — “отстой”. Я потратил 20 с лишним лет, совершенствуя свои навыки, но теперь какой-то человек заявляет, что мой выбор был неправильным?
Что ж, они ошибаются. С помощью PHP я сделал свою карьеру, которой я очень доволен. Я живу в хорошем доме, езжу на отличной машине, потому что потратил 20 лет на то, чтобы стать по настоящему успешным в этом деле.
Но я немного отвлекся. Эта статья должна была быть о том, что PHP не отстой.
Многие из кружка “мы ненавидим PHP и думаем, что он скоро умрет” говорят о ряде вещей, которые, по их мнению, делают PHP плохим выбором во всех отношениях. Некоторые из них мы слышим годами и они имеют отношение к старым версиям PHP (я не понимаю, почему все до сих пор так зациклены на PHP 4, я серьезно). Остальные претензии просто безосновательны и не соответствуют действительности. Это не разглагольствования на тему “мой язык лучше твоего”, и я искренне верю, что у каждого языка программирования есть определенная цель. Люди, которые приносят эти инструменты в мир (которые намного умнее меня), обычно делают это не без оснований. Языки программирования обычно не появляются случайно.
Итак, почему PHP?
Ответ очень прост: потому что тогда он был доступен. Я самоучка, и как-то обошел стороной формальное образование. За исключением, может быть, случайных онлайн-курсов, которые я проходил, у меня нет листка бумаги со штампом престижного университета, на котором написано, что я могу говорить компьютерам, что делать.
Я пришел в PHP из дизайна, и несмотря на то, что я возился с компьютерами и кодом лет с семи, я не последовал за этим увлечением и не поступил в университет на программиста. Я точно не смогу вам ответить, почему. Мне нравились компьютеры, и мне нравился интернет, но вместо этого я выбрал графический дизайн. Я не собираюсь особо углубляться в это, потому что моя ученая степень особо не играет большой роли в том, чем я занимаюсь сегодня.
Я пришел к PHP тем же путем, что и большинство PHP-программистов. Потому что мы хотели, чтобы сайт мог делать больше, чем просто отображать изображение и абзац текста. Я был невероятно взволнован, когда понял, как получить информацию из базы данных и отобразить ее на веб-странице. Это было потрясающе! Это было именно то, что мне было нужно, и я сразу нырнул в PHP с головой.
Затем я узнал о WordPress. И, как и для любого другого человека, сидящего перед экраном компьютера с некоторыми базовыми знаниями PHP, WordPress перевернул мой мир. Это было круто, правда?
WordPress обязан своим успехом таким людям, как мы — подросткам, которые хотели свой блог, но у них не было достаточно знаний для того, чтобы создать его самостоятельно.
Вы установили WordPress… Затем добавили плагин и изменили тему… Потом внесли небольшое изменение в тему, чтобы она работала по-другому или выглядела немного иначе. Затем вы модифицировали плагин. Затем вы создали свою собственную тему. После чего вы задумались… А что еще я могу сделать?
Так я познакомился с PHP. Я не выбирал PHP, он выбрал меня. 20 прошло, а я все еще пишу на PHP. Конечно, больше не через WordPress, и мне нравится то, что я уже достаточно вырос как PHP-программист, чтобы со знанием дела написать эту статью.
“PHP слишком прост. Лучше выучи что-то посложнее”.
Одна из основных причин, по которой PHP так популярен, заключается в его повсеместном использовании. Его можно найти почти везде. Да даже самый обычный MacBook поставляется с предустановленным PHP (хотя похоже, что это изменится в будущей версии MacOS).
Писать на PHP с нуля не сложно. Обычно ничего особенного делать не нужно. Создайте index.php, поместите в него одну строку PHP-кода и загрузите практически на любую учетную запись общего хостинга:
<?php echo 'Hello, World!';
Начало положено. Начать работу с PHP очень просто, потому что вам не нужно думать о том, как заставить PHP работать. Это почти всегда уже сделано за вас.
Однако, представьте себе, что именно эта “простота использования” на самом деле является одной из претензий к PHP. Теория гласит, что если PHP настолько прост, то на PHP очень легко написать действительно небезопасный код.
Меня всегда это немного настораживало. Значит ли это, что языки, которые труднее использовать, с меньшей вероятностью будут использоваться для написания плохого кода? Я где-то читал, что около 70% патчей, которые Microsoft выпускает для Windows, предназначены для решения проблем с памятью, возникших из-за C++ (но не цитируйте меня, это не официальное заявление). Я сомневаюсь, что люди, которые пишут на C++ для Microsoft, любители, и я почти уверен, что они знают, что делают. Да, Windows намного сложнее, чем ваш типовой сайт с корзины покупок, но я думаю, что аргумент остается в силе. Я не согласен с тем, что простота использования PHP делает его потенциально опасным. Python хорошо известен за то, как он удобен для начинающих, но не имеет такой “потенциально опасной” репутации. Легко написать небезопасный код на ЛЮБОМ языке. Не язык делает код небезопасным, а недостаток знаний.
“Простота” — это не причина отговаривать новичков от изучения PHP, а, скорее, причина дать этим новичкам лучшие инструменты для принятия более взвешенных решений относительно кода, который они пишут. Это повод помочь им найти нужные ресурсы для изучения PHP. Мне очень повезло; и хотя я написал свою долю “небезопасного” кода, в моей жизни были люди (не всегда PHP-программисты), которые помогли мне понять, что можно улучшить.
PHP медленный
Что ж, это неправда. PHP работает настолько быстро или медленно, насколько написан ваш код. PHP — это скриптовый язык, поэтому сравнивать его с компилируемыми языками бессмысленно, но почему-то я даже видел, как люди сравнивают PHP с Rust или Go. Но это просто бессмысленно. Сравнение PHP с Python или Ruby, вероятно, понятнее, но “скорость” языка зависит от ряда различных факторов. Сам язык, да, но также его среда, какой код он выполняет, как настроен интерпретатор и т. д. Говорить, что PHP медленный без контекста, неправильно.
PHP определенно медленный в отношении определенных типов задач. Например, PHP, вероятно, не станет вашим первым выбором, если речь идет о машинном обучении (хотя есть несколько очень интересных проектов, которые имеют вполне реальные перспективы).
Можно встретить бенчмарки двух разных языков, выполняющих одно и то же, например, перебирающие миллион записей и выполняющие простые вычисления. Результаты часто отличаются миллисекундами. Иногда это используется, чтобы показать, что PHP работает медленно (или, в некоторых случаях, быстро). Если вы пишете программное обеспечение, в котором лишние несколько миллисекунд при циклическом просмотре миллиона записей были бы катастрофическими, то, возможно, вы задаете неправильные вопросы.
WordPress плох
Да, я согласен. Я не самый большой поклонник WordPress, особенно в наши дни, но я также готов признать, что без WordPress у нас, вероятно, не было бы того PHP-сообщества, которое существует сегодня.
Однако судить о языке по одному программному обеспечению — это неправильно. Это все равно, что сказать, что C++ — плохой язык, потому что вам не нравится Microsoft Windows.
PHP — это не узкоспециальный язык, а WordPress — это только часть истории PHP. Существует множество фреймворков и пакетов на любой выбор, если уж на то пошло. Laravel пророчат “снова сделать PHP крутым”, и я должен признать, что этот фреймворк, безусловно, один из моих любимых и он удобен для большинства проектов.
Хулить PHP, презирая WordPress, действительно несправедливо. Можно утверждать, что WordPress был отражением ограничений PHP, но это было давно, и с тех пор язык сильно вырос.
PHP не дотягивает до корпоративного уровня
Почему? Я действительно не понимаю, откуда это пошло. Но это серьезное заявление. Что делает язык “корпоративным” (enterprise ready)? Как определить, что один язык более корпоративный, чем другой? Java, вероятно, является одним из самых популярных языков в корпоративной среде, но это не потому, что Java сам по себе корпоративный. Причина в существовании платформы Java EE. Я не Java-разработчик, поэтому поправьте меня, если я неправ, но, насколько я понимаю, Java EE — это платформа, на которой создаются корпоративные приложения. Звучит как фреймворк, верно? Так что, возможно, вопрос должен звучать так: “Дотягивает ли <мой-любимый-php-фреймворк> до корпоративного уровня?”.
Для ответа на этот вопрос нужна целая отдельная статья. Я пытаюсь подчеркнуть, что PHP как язык настолько же “корпоративный”, как и любой другой язык. Это целиком и полностью зависит от того, как вы его используете.
Примечание: некоторое время назад я был частью небольшой команды, которая создала и развернула платформу управления событиями во внутренней сети одного из ведущих финансовых учреждений Южной Африки (я мог бы написать кое-что об опыте). Приложение было полностью написано на PHP и JavaScript. И в разгар пандемии Covid-19 система находилась под огромной нагрузкой, но справилась почти со всем. У нас было несколько заминок, но ничего такого, что нельзя было бы решить быстро.
PHP не масштабируется
Это единственная претензия, в которой есть доля правды, но и тут все немного сложнее, чем вы думаете. По правде говоря, PHP прекрасно масштабируется, если вы пишете нормальный код. Когда люди говорят, что PHP не масштабируется, они обычно имеют в виду, что приложения, написанные на PHP, могут быть не в состоянии обрабатывать очень большое количество запросов (например, миллионы). Дело в том, что это все не так просто, и я думаю, что многие заблуждения уходят корнями в WordPress, который до недавнего времени был хорошо известен своими проблемами с масштабируемостью.
В качестве доказательства: Slack, платформа обмена сообщениями, которая нацелена заменить электронную почту, с миллионами пользователей, каждый из которых подключается каждый день к системе, имеет бэкенд написанный на PHP. Если это не пример того, как PHP может масштабироваться, то я не знаю, что вообще вас может переубедить. Многие люди приводят Facebook в качестве примера, и хотя я считаю, что Facebook, вероятно, все еще использует PHP в той или иной форме, я думаю, что они, скорее всего, перенесли большую часть своих приложений с PHP. Но, честно говоря, Facebook — это особый случай.
Нельзя говорить о масштабируемости, не говоря об инфраструктуре. Если вы размещаете блог WordPress на простом виртуальном хостинге и внезапно переживаете десятки тысяч посещений… ну, это может быть проблемой, и ваш хостинг отправит вам неприятное электронное письмо или, по крайней мере, выставит вам больший счет, чем вы ожидали.
Масштабирование приложения включает в себя гораздо больше, чем просто выбор языка. В этом деле очень много деталей, и меня расстраивает то, что все шишки достаются PHP. Более новые версии PHP, в правильной среде и правильно настроенные, более чем способны обрабатывать большое количество запросов. Laravel Vapor, первая бессерверная платформа для приложений Laravel, работающих на AWS, показывает действительно впечатляющие цифры.
Иногда я думаю, что вопрос масштабируемости также несколько преувеличен. За 20 лет написания вещей на PHP я никогда не сталкивался с “миллионами запросов” в секунду. Даже близко. Большинство из нас не будут создавать новый Facebook, как бы мы не мечтали. На самом деле мы создаем гораздо более узкоспециализированные приложения. Мы работаем с конкретными отраслями, часто в определенных странах, и нам не приходится беспокоиться об обработке более нескольких сотен запросов в секунду. Для многих проектов, в которых мы участвуем, это большие цифры. Это не значит, что то, что мы делаем, не важно, это просто означает, что нам не нужно беспокоиться о таком масштабе. Масштабирование приложений для обработки миллионов запросов просто не является частью нашей рутины.
PHP уродлив
Вы, должно быть, шутите. Самую бесячую претензию я оставил напоследок. Если вы выбираете свой стек технологий, основываясь на том, как красиво что-либо выглядит, то вы серьезно заблуждаетесь, и вам нужно серьезно задуматься над своим выбором.
Но даже несмотря на это, я не думаю, что это правда. Вероятно, это происходит из-за давней практики использования PHP непосредственно в HTML (где он действительно выглядел не очень). Но дело в том, что мы больше этого не делаем, так как это не приветствуется.
Я не говорю, что так называемые “красивые языки” — неправильный выбор, но это определенно не должно быть определяющим фактором. Java совершенно некрасив, но при этом является одним из самых популярных языков в мире. Просто глупо возражать против использования PHP из-за того, что он некрасив.
PHP, вероятно, не самый красивый язык, но я нахожу его вполне читабельным, когда он хорошо написан. И в PHP 8 есть несколько действительно замечательных инструментов, которые помогут сделать ваш код еще более “красивым”.
Я люблю PHP
Я действительно его люблю. Я люблю язык и экосистему. Мне нравится, какие улучшения произошли в нем за последние несколько лет. PHP 8 — это не просто еще одна версия того же языка. С каждым крупным релизом мы получаем более качественные и полезные инструменты.
Мне нравится, что с PHP легко начать работу, как и то, что он сложен и на самом деле нужно так много знать, чтобы считаться профессиональным PHP-программистом. Я люблю Symfony и Laravel и думаю, что люди, стоящие за ними, также ответственны за продвижение языка, как и основная команда PHP.
Но больше всего мне нравится быть программистом. Не только на PHP, но я люблю создавать вещи на любом языке, который мне приходится использовать. Мне нравится тот факт, что я могу указывать компьютерам, что делать, и что я сам этому научился. Я обязан этим PHP. Без PHP я не знаю, что бы я сейчас делал. Может быть, я был бы каким-то посредственным дизайнером, ненавидящим свою работу и свою жизнь (не в обиду дизайнерам, читающим это. У меня есть действительно талантливые друзья-дизайнеры, которым тоже нравится то, что они делают). Но вместо этого я делаю то, что люблю, используя язык, который мне нравится.
Перевод материал подготовлен в преддверии старта специализации «PHP Developer».
Что такое PHP? Пишем свою первую программу на PHP
PHP — что это такое? PHP – язык программирования, который исполняется на стороне сервера, в то время как JavaScript исполняется в браузере на стороне пользователя.
И PHP, и Javascript можно встраивать в HTML-страницы.
Прочитав эту статью о PHP программировании, вы узнаете:
- Что такое скриптовый язык?
- Сценарный язык vs программный язык.
- Как расшифровывается PHP?
- Что такое PHP?
- Синтаксис PHP.
- Для чего нужен PHP?
- Для чего используется PHP и какова его доля на рынке?
- PHP vs ASP.NET vs JSP vs CFML.
- Файловые расширения PHP.
- Простая программа PHP.
- Сценарный язык vs программный язык
- Как расшифровывается PHP?
- Что такое PHP?
- Синтаксис PHP
- Зачем нужен PHP?
- Для чего используется PHP и какова его доля на рынке?
- PHP vs ASP.NET vs JSP vs CFML
- Файловые расширения PHP
- PHP Hello World
- Резюме
Программный язык | Сценарный язык |
Предлагает свойства, необходимые для разработки полноценных приложений. | В основном используется для выполнения рутинных задач. |
Перед исполнением код нужно компилировать. | Код исполняется без компиляции. |
Необязательно встраивать в другие языки. | Обычно встраивается в другие программные среды. |
PHP расшифровывается как Personal Home Page (персональная домашняя страница), но сейчас всё чаше используется Hypertext Preprocessor.
PHP-код можно встраивать в HTML или использовать в CMS и веб-фреймворках.
PHP — язык программирования, который активно используется в разработке:
- Статичных сайтов;
- Динамических сайтов;
- Веб-приложений.
PHP-скрипты могут быть выполнятся только на тех серверах, где установлен интерпретатор данного языка.
Клиентским компьютерам, осуществляющим доступ к PHP-скриптам, понадобится только браузер. PHP-файл содержит теги, и имеет расширение .php.
PHP-файл также может содержать HTML и клиентские скрипты JavaScript.
- Знание HTML будет преимуществом при изучении PHP. Можно учить PHP и без знания HTML, но желательно знать хотя бы основы;
- СУБД для приложений, работающих с применением БД;
Для реализации более сложных задач потребуется связка JavaScript и XML.
На рисунке, приведенном ниже, демонстрируется базовая архитектура веб-приложения и процесс обработки запросов сервером. Это важно знать при изучении PHP программирования с нуля:
- PHP бесплатен и предлагает открытый исходный код;
- Изучить его проще, нежели JSP, ASP и т. д.;
- Большое сообщество разработчиков;
- Большинство хостингов поддерживают PHP, чего не скажешь об ASP, для которого необходима поддержка IIS;
- PHP постоянно обновляется;
- PHP предлагает встроенную поддержку MySQL. Также PHP можно использовать с:
- Postgres;
- Oracle;
- MS SQL Server;
- PHP – кроссплатформенный язык. Это означает, что вы можете реализовать свое приложение на нескольких ОС, включая Windows, Linux, Mac OS и других.
На основе PHP работает более 20 миллионов сайтов и веб-приложений:
ASP – Active Server Pages.
JSP – Java Server Pages.
CFML – Cold Fusion Markup Language.
В таблице ниже язык программирования PHP сравнивается с различными серверными языками.
Свойство | PHP | ASP | JSP | CFML |
Обучаемость | Быстро | Дольше чем PHP | Дольше чем PHP | Дольше чем PHP |
Хостинг | Поддерживается практически всеми хостерами. | Необходим выделенный сервер. | Относительно хорошая. | Необходим выделенный сервер. |
Open Source | Да | Нет | Да | Доступны коммерческая и open source версии |
Поддержка веб-сервисов | Встроенная | Используется фреймворк .NET | Используются дополнительные библиотеки | Встроенная |
Интеграция с HTML | Простая | Достаточно сложная | Достаточно сложная | Простая |
Поддержка MySQL | Нативная | Потребуются сторонние драйверы | Потребуются сторонние драйверы | В текущей версии есть нативная поддержка. В прежних версиях используется ODBC |
Дополнение другими языками | Да | Нет | При помощи Java-классов и библиотек | Да |
Чтобы сервер мог распознавать PHP-файлы, сохранять документы нужно с расширением .php. В прошлом к PHP-расширениям также относились:
- .phtml
- .php3
- .php4
- .php5
- .phps
PHP был разработан для работы с HTML, следовательно, его можно встраивать в HTML-код:
В web программировании PHP можно создавать файлы без использования HTML-тегов, и это будет считаться чистым кодом. Сервер выполняет PHP-код и выводит результат в браузер как HTML-код.
Чтобы сервер мог отличить PHP от HTML, код всегда нужно обрамлять соответствующими тегами. PHP чувствителен к регистру. Это значит, что «VAR» — это не то же самое, что «var».
Сами PHP-теги не чувствительны к регистру, но настоятельно рекомендуется использовать нижний регистр:
<?php … ?>
Мы расцениваем строки PHP-кода как выражения.
Приведённая ниже программа является простым PHP-приложением, которое выводит “Hello World!” в браузере.
<?php echo "Hello world"; ?>
- Язык программирования PHP расшифровывается как Hypertext pre-processor;
- PHP выполняется на стороне сервера. Это исключает необходимость установки дополнительного программного обеспечения на устройства пользователей;
- PHP-файлы необходимо сохранять с расширением .php;
- PHP распространяется с открытым исходным кодом и поддерживается на многих платформах.
Пожалуйста, оставляйте свои мнения по текущей теме статьи. За комментарии, лайки, подписки, дизлайки, отклики огромное вам спасибо!
Валентин Сейидовавтор-переводчик статьи «What is PHP? Write your first PHP Program»
Язык PHP: особенности, актуальность, перспективы
В статье рассказывается:
- История языка PHP
- Ключевые отличия языка PHP
- Задачи, выполняемые языком PHP
- Сферы применения PHP
- Плюсы и минусы языка PHP
- Перспективы развития и применения языка PHP
- Обучение языку PHP
Про язык PHP слышали, вероятно, даже далекие от программирования люди. Этот инструмент появился в середине 90-х годов прошлого века и быстро достиг огромной популярности. Учитывая возраст этого языка, многие желающие начать карьеру в IT решают обратить свое внимание на другие варианты. Однако такое решение будет несколько поспешным.
В статье мы расскажем, зачем нужен PHP, какие задачи он решает, а также рассмотрим его популярность сегодня и перспективы на ближайшее будущее. Для тех, кто изменит свое решение в пользу изучения этого языка, подскажем лучшие курсы. После их прохождения работа со стабильным и высоким заработком вам будет обеспечена.
История языка PHP
Впервые язык PHP был представлен в 1994 году. Это был CGI-скрипт, основанный на Perl. Он собирал статистику по просмотрам резюме, принадлежащего самому разработчику языка Расмусу Лердорфу. Собственно, так PHP и получил свое название – ведь своим появлением он обязан персональной странице в интернете, которая существовала на самом деле. Программа, как и другие открытые приложения времен отсутствия Open Source, распространялась с пометкой freeware (свободный софт).
История языка PHPВерсии выходили в следующей последовательности:
- PHP/FI создана в середине 1995 года. Основной модуль программы был переписан на языке C. Также добавлена поддержка mSQL, благодаря которой создать сайт было проще. Тогда же разработаны первые теги, позволяющие вставлять код в HTML, правда, соединять базы данных и веб-страницы еще было нечем. Так как программа распространялась свободно, Лердорф получал от пользователей советы, как улучшить платформу и исправить ошибки.
- PHP 2. В результате исправлений в 1996 году увидела свет вторая версия языка, и уже через год более 50 тыс. сайтов использовали его возможности.
- PHP 3. Создатели – Энди Гутманс и Зив Суразски, использовавшие разработки Лердорфа. Нужно было сделать приложение для eCommerce, поэтому потребовалось обновление. Первая версия после этого фактически не использовалась. В новую был внедрен API, он стал главным инструментом, который увеличил функционал платформы. Также в ней появилась поддержка объектно-ориентированного синтаксиса.
- PHP 4. На волне успеха предыдущей версии в этой было решено переписать ядро платформы. Это привело в 1998 году к началу работы над принципиально новой системой. Производительность значительно возросла, появилась буферизация вывода, поддержка HTTP-сессий. В 2000 году версия вышла на рынок. Дорабатывали функционал разработчики из многих стран, как это повелось с первой версии.
- PHP 5. Релиз вышел в 2004 году. Производительность снова выросла, система программирования стала напоминать Java, также платформа начала поддерживать XML. Серьезные изменения привели к потере совместимости с предыдущими версиями. Однако новый функционал компенсировал эту проблему. PHP стал полноценным языком программирования.
В настоящее время используются 6 и 7-я версии. Но с 2010 года 6-ю в качестве базовой платформы на хостингах нередко заменяют 5-й из-за проблем с поддержкой Юникода. С 2015 года ведущей считается 7-я версия, и новые разработки ведутся на ее основе. В нее внедрено очень много новых операторов, из-за чего возникают проблемы с обратной совместимостью.
История языка PHPВ настоящее время PHP уже не является языком, на котором создаются персональные страницы, поэтому значение термина изменилось на Hypertext Preprocessor. Развитие не останавливается, в 2020 году разработчики представили версию 8. В ней хотят отойти от языка С, на каком написан PHP. Несмотря на то, что специалисты Microsoft отказались от тестирования безопасности из-за прекращения поддержки кода, этим вопросом занялись пользователи-энтузиасты.
Ключевые отличия языка PHP
По характеристикам PHP можно понять, каким образом он выполняет задачи, как происходит взаимодействие с сайтами и приложениями, можно ли его менять и как.
Этот язык – скриптовый, или сценарный, то есть предназначен для программ, автоматизирующих выполнение, или интерпретацию, мелкой рутинной работы – скриптов (сценариев). В противном случае она выполняется вручную.
Т.о. PHP выступает в качестве интерпретатора. Можно сравнить его работу с файлом, в котором часть текста написана на русском языке, другая – на английском, и нужно перевести ее. Аналогично – файл .php: его составляют HTML («русский язык») и php-код («английский», который требуется «перевести», то есть обработать).
Из того, что PHP — интерпретируемый язык и является интерпретатором, вытекает множество преимуществ:
- Поскольку он выполняет рутинные задачи, выделенную память освобождать не приходится, также нет необходимости закрывать файлы, когда с ними закончили работать.
- Он контролирует процесс отладки программ и поиска ошибок, вследствие чего они становятся проще.
- Если приложение неправильно работает, зависания сервера исключены.
Топ-30 самых востребованных и высокооплачиваемых профессий 2022
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ ресурсов об IT-сфере
Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT
ТОП 50+ сервисов и приложений от Geekbrains
Безопасные и надежные программы для работы в наши дни
pdf 3,7mb
doc 1,7mb
Уже скачали 15308
Также это серверный язык, и все действия выполняются на удалённом веб-сервере. При открытии сайта запрос отправляется на этот обработчик, производится заданный процесс, после чего отдается результат, и задача завершается. То есть устанавливать на устройство PHP не обязательно, более того, оно может вообще не понимать и даже не знать этот язык. И тем не менее сайт или приложение отлично запустятся и будут работать как на компьютере или ноутбуке, так и на смартфоне.
Ключевые отличия языка PHPЕще одно отличие PHP — он обладает динамической типизацией. Она характеризуется определением типа переменных непосредственно при выполнении программы, при этом любой тип может использоваться с другим. Неявные преобразования проходят в автоматическом режиме.
Задачи, выполняемые языком PHP
Главное назначение языка PHP – делать страницы HTML «живыми». По умолчанию они статичны, неизменны. То есть после создания и загрузки на сайт браузер будет показывать страницу пользователю, обратившемуся к ней, в одном и том же виде. Далеко не всегда это хорошо.
Визиты на сайт связаны с поиском информации. Ресурс должен выдавать актуальные сведения, которые все время меняются. Речь может идти, например, о:
- курсе валют;
- прогнозе погоды;
- счетчике посещений страницы.
С помощью одного HTML эти задачи не решаются, нужен PHP. Он использует алгоритм, описанный выше, то есть принимает запрос, выполняет сценарий и возвращает уже готовый HTML-код серверу, который выдает этот результат в браузер, а тот уже демонстрирует его пользователю. И человек может увидеть актуальные прогнозы, курсы и прочее.
Принцип, по которому PHP трансформирует веб-страницы на сервере перед отправкой браузеру, следующий. Он исполняет определенные схемы работы, в этом процессе изменяет или создает результат данного сценария, выраженный в HTML-коде. Сценарием называется программа на сервере, запускающаяся в ответ на запрос, который пришел от браузера. Затем PHP передает код браузеру, который не знает, каким образом страница была создана – верстальщиком (статично) или PHP (динамически). Но это и неважно, так как браузер будет работать со всем полученным от веб-сервера.
Задачи, выполняемые языком PHPИменно поэтому новое определение PHP – препроцессор гипертекста. Любая запрошенная страница, имеющая адрес *.php, заставляет браузер обратиться к PHP с запросом на выполнение сценария из файла, который расположен на этой ссылке.
Сферы применения PHP
Язык очень популярен, потому что очень быстро обрабатывает коды, прост в использовании и функционален, распространяет исходные коды с собственной лицензией, обладает кроссплатформенностью. Чтобы разрабатывать и раскручивать сайты на его основе, PHP предлагает встроенные инструменты, имеющие:
- способность автоматически извлекать переменные окружения сервера, параметры GET и POST в предопределенные массивы;
- умение взаимодействовать со многими системами управления базами данных, в том числе SQLite, MySQL, DBX, Microsoft SQL Server, dBase, DB+++ и пр.;
- автоматический режим отправки HTTP-заголовков, благодаря чему поисковая оптимизация сайта становится легче;
- способность обработки файлов, которые загружаются на сервер;
- возможность работать как с удаленными, так и с локальными файлами, сессиями, сокетами, HTTP-авторизацией, cookies, XForms.
Интенсив «Путь в IT» поможет:
- За 3 часа разбираться в IT лучше, чем 90% новичков.
- Понять, что действительно ждет IT-индустрию в ближайшие 10 лет.
- Узнать как по шагам c нуля выйти на доход в 200 000 ₽ в IT.
При регистрации вы получите в подарок:
«Колесо компетенций»
Тест, в котором вы оцениваете свои качества и узнаете, какая профессия в IT подходит именно вам
«Критические ошибки, которые могут разрушить карьеру»
Собрали 7 типичных ошибок, четвертую должен знать каждый!
Тест «Есть ли у вас синдром самозванца?»
Мини-тест из 11 вопросов поможет вам увидеть своего внутреннего критика
Хотите сделать первый шаг и погрузиться в мир информационных технологий? Регистрируйтесь и смотрите интенсив:
Только до 24 октября
Осталось 17 мест
Возможности языка PHP также требуются для продвижения сайтов, когда нужно создать пользовательский интерфейс или скрипты, собирающие статистику.
Плюсы и минусы языка PHP
Несомненные достоинства языка в сравнении с аналогичными – это легкость его освоения при высоком уровне производительности. Есть и другие преимущества:
- Мощность и гибкость. Применим как в обычном блоге, так и в крупных ресурсах, например, интернет-магазинах или социальных сетях.
- Открытое распространение. PHP – бесплатный язык со свободной лицензией, благодаря чему его могут использовать и частные лица, и коммерческие организации.
- Простота. Обучиться языку можно за 2–3 недели, освоив принципы работы и основной синтаксис. Для более глубоких знаний потребуется больше времени, но ненамного.
- Большой круг пользователей. PHP распространен повсеместно, в его сообществе огромное число участников, и при любых затруднениях они готовы помочь другим.
- Дополняемость. Функциональность увеличивается за счет разных вспомогательных расширений и библиотек.
- Невысокая требовательность. Практически любой сервер, существующий сегодня, может работать с этим языком.
- Простое редактирование. Каждый текстовый редактор позволяет писать и редактировать код PHP.
Но вместе с тем язык имеет и недостатки, некоторые из которых:
- если требуется десктопное приложение или системный компонент, он не поможет;
- в сравнении с другими языками крайне плохая защищенность;
- проблемная работа с глобальными исключениями.
Это очевидные плюсы и минусы. Тот, кто постоянно имеет дело с этим языком, находят свои преимущества и изъяны, которые помогают или мешают работе с ним.
Перспективы развития и применения языка PHP
К сожалению, никто не может точно сказать, что ждет PHP в будущем. Все заключения основаны на предположениях и догадках. Однако можно полагать, что востребованность свою он не утратит, потому что значительное количество сайтов создается и работает на нем.
W3Tech сообщает, что в начале лета 2022 года на платформе WordPress работало почти 65 % сайтов, хотя за год до этого их было 63,5 %, а летом 2019 – 61 %. Можно видеть рост популярности этого ресурса, написанного как раз на PHP. С этим же языком работают известные CMS, в первую очередь Joomla! (3,9 %) и Drupal (2,6 %). Все три движка составляют 70 % рыночной доли. Сюда же входят менее востребованные конструкторы и сайты на фреймворках, такие как Laravel и Yii2.
С развитием систем управления контентом предположить, что сайты, которые с ними работают, закроются, очень трудно. Поэтому, скорее всего, интерес к PHP в ближайшем будущем не упадет, а, наоборот, станет выше.
Нужно учитывать, что язык программирования PHP сегодня один из самых используемых, особенно в CMS. Он активно используется в регионах, чтобы быстрее войти в разработку.
Обучение языку PHP
Язык можно изучить, если получить специальность «программист PHP» на курсах GeekBrains. HeadHunter сообщает, что разработчики, освоившие эту профессию, занимают одно из трех ведущих мест по востребованности в сфере IT. Для начинающих язык PHP изучить не составит труда, даже школьного уровня знаний хватает, чтобы овладеть основами HTML/CSS, которые позволят разрабатывать серверы сайтов на PHP и Laravel.
После обучения вы будете:
- уверенно использовать принципы ООП;
- знать PHP инфраструктур и организацию веб-приложений;
- внедрять шаблоны проектирования MVC;
- работать с шаблонами, файлами, сессиями, куками;
- знать базовый синтаксис MySQL и принципы объединения таблиц;
- разбираться в чужом коде;
- разрабатывать безопасные и быстрые сайты любой сложности;
- иметь практический опыт выполнения большинства актуальных функциональных решений, в том числе авторизация, каталогизация, галереи, блоги, личные кабинеты, ленты новостей и др.;
- защищать скрипты от SQL-инъекций и других способов взлома;
- проектировать бизнес-логику веб-сайтов;
- проектировать БД в нормальной форме.
Чтобы учиться, требуется компьютер с любой современной операционной системой, соответствующий минимальным требованиям: двухъядерный процессор частотой 1,8 ГГц и выше, оперативка 2 Гб и больше, не менее 20 Гб свободного места на жестком диске. Кроме того, на устройстве должно быть установлено следующее ПО:
- Редактор кода (Notepad++, IDE).
- SQL-клиент (HeidiSQL).
- Сборка веб-сервера (Open Server / XAMPP) или виртуальная машина VirtualBox.
Специалисты прогнозируют активное развитие языка в сторону объектно-ориентированного программирования, где будет и далее развиваться сильная типизация. Она позволит максимально просто работать с крупными проектами. Это значит, что разработчики на PHP в ближайшее время будут решать очень интересные задачи, а вы всегда можете войти в их число.
Продвижение блога — Генератор продаж
Рейтинг: 5
( голосов 3 )
Поделиться статьей
Определение и значение PHP
Значение PHP
Что означает PHP? Здесь вы найдете 54 значения слова PHP. Вы также можете самостоятельно добавить определение PHP
0 0 Редкое состояние, при котором гипофиз перестает вырабатывать большинство или все гормоны. Гормоны гипофиза помогают контролировать работу многих частей тела. Симптомы состояния зависят от гормонов т [..]
|
0 0 Код веб-программирования, используемый для создания продвинутых веб-сайтов.
|
0 0 PHP — это язык программирования и сценариев для создания динамических интерактивных веб-сайтов. WordPress написан с использованием PHP в качестве языка сценариев. Как и WordPress, PHP также является открытым исходным кодом.
|
0 0 Препроцессор гипертекста Серверный HTML-язык сценариев с открытым исходным кодом, используемый для создания динамических веб-страниц. В HTML-документе PHP-скрипт заключен в специальные PHP-теги, которые позволяют использовать [..]
|
0 0 (PHP: препроцессор гипертекста) PHP — это язык программирования, используемый почти исключительно для создания программного обеспечения, являющегося частью веб-сайта. Язык PHP предназначен для взаимодействия с HTML, который […]
|
0 0 Партнерство по первичной медико-санитарной помощи
|
0 0 Расшифровывается как «Препроцессор гипертекста». (Это рекурсивная аббревиатура, если вы понимаете, что это значит.) PHP — это встроенный в HTML язык веб-скриптов. Это означает, что PHP-код можно вставить в [..]
|
0 0 Jensens Internet Dictionary серверный, кросс-платформенный язык сценариев, встроенный в HTML. Это может показаться немного чуждым для всех, кто не работает с Unix, но PHP ничего не стоит. Веб-сайт PHP находится по адресу http://www.php.net/. См. также Шелл.
|
0 0 Язык программирования, основанный на Linux, а не на Windows. Обычно используется для расширения функциональности веб-сайта или для работы с базой данных. Он работает в сочетании с html и вариантами html и позволяет запускать функции с сервера, а не из браузера посетителя.
|
0 0 PHP — это серверный язык сценариев для создания веб-приложений и динамических веб-сайтов. Узнать больше
|
0 0 Широко используемый язык сценариев общего назначения, PHP часто используется для создания динамических веб-страниц, поскольку он может быть встроен в HTML страницы.
|
0 0 Определение Код валюты ISO для филиппинского песо.
|
0 0 Самореферентное сокращение от PHP: препроцессор гипертекста, серверный язык сценариев с открытым исходным кодом, встроенный в HTML, используемый для создания динамических веб-страниц. В HTML-документе PHP-скрипт (похожий синтаксис [..]
|
0 0 Препроцессор гипертекста….HP…это широко используемый язык сценариев общего назначения, который особенно подходит для веб-разработки и может быть встроен в HTML.
|
0 0 PHP — это серверный язык сценариев, используемый при разработке динамических веб-сайтов.
|
0 0 Personal Home Page — это серверный (SSI) встроенный язык сценариев HTML, используемый для создания динамических веб-страниц. В документе HTML скрипт PHP (аналогичный синтаксису Perl или C) заключен в [..]
|
0 0 * – это язык сценариев и интерпретатор, похожий на JavaScript и VBScript от Microsoft, который находится в свободном доступе и используется в основном на веб-серверах Linux. PHP (инициалы взяты из ранних [..]
|
0 0 Препроцессор гипертекста. Язык программирования, используемый для веб-сайтов.
|
0 0 Популярный язык промежуточного программного обеспечения с открытым исходным кодом, используемый для связи между технологиями серверных баз данных и веб-браузером.
|
0 0 Препроцессор PHPHypertext — это язык сценариев, встроенный на стороне сервера, который позволяет увеличить скорость доставки динамического содержимого из баз данных. PHP может выполнять любую задачу, которую может выполнять CGI, но повышенная ком [..]
|
0 0 (препроцессор гипертекста) серверный язык сценариев HTML с открытым исходным кодом, используемый для создания динамических веб-страниц. PHP встроен в теги, поэтому автор может переключаться между HTML и PHP вместо [..]
|
0 0 PHP Hypertext Preprocessor — это язык сценариев на стороне сервера с открытым исходным кодом, используемый для отображения веб-страниц или добавления к ним интерактивности.
|
0 0 Серверный или внутренний язык программирования, мощный и простой в использовании для Интернета. Это один из самых популярных языков, используемых в Интернете, и на нем было создано множество мощных веб-сайтов [..]
|
0 0 Предоплаченный план медицинского обслуживания. См. Капитацию с частичным риском.
|
0 0 Популярный язык веб-скриптов для создания веб-страниц, впервые разработанный в 1995 году, когда он расшифровывался как «Персональная домашняя страница». (Теперь это рекурсивная аббревиатура, расшифровывающаяся как «PHP: Hypertext Prep […]
|
0 0 — сокращение от Hypertext Preprocessor, популярного языка разработки веб-приложений. Это серверный язык {html — клиентский; значение: браузер читает]. Многие популярные веб-сайты и CMS [..]
|
0 0 PHP расшифровывается как «Препроцессор гипертекста», это язык сценариев, используемый для создания веб-страниц.
|
0 0 PHP — это широко используемый язык программирования с открытым исходным кодом, в первую очередь для серверных приложений и разработки динамического веб-контента.
|
0 0 PHP, или PHP: препроцессор гипертекста, является широко используемым языком сценариев общего назначения, который изначально был разработан для веб-разработки для создания динамических веб-страниц. Его можно встроить в HTML-код [..]
|
0 0 PHP Hypertext Preprocessor — это серверный язык сценариев с открытым исходным кодом, используемый для отображения веб-страниц или добавления к ним интерактивности.
|
0 0 (PHP: препроцессор гипертекста)
|
0 0 PHP (Pre-Hypertext Processor), ранее PHP (Personal Home Page) — это серверный язык сценариев, напоминающий Perl. Это с открытым исходным кодом и бесплатно. Он делает многое из того же, что и Microsoft ASP (Acti [..]
|
0 0 PHP: препроцессор гипертекста. PHP — это серверный язык сценариев, что означает, что код PHP выполняется на сервере, несмотря на то, что теги PHP встроены в код HTML. PHP используется для обработки f [..]
|
0 0 Самореферентное сокращение для PHP: препроцессор гипертекста. PHP — это язык программирования, используемый для создания динамических веб-страниц. PHP-скрипты [или программы/приложения] запускаются на стороне сервера при просмотре [..]
|
0 0 Язык сценариев с открытым исходным кодом, используемый для создания веб-страниц с динамическим содержимым.
|
0 0 Названный рекурсивной аббревиатурой (PHP: препроцессор гипертекста), PHP предоставляет средства для создания веб-страниц, которые динамически изменяются на лету.
|
0 0 PHP — это широко используемый язык сценариев общего назначения, который особенно подходит для веб-разработки и может быть встроен в HTML. Обычно он работает на веб-сервере, беря в качестве входных данных код PHP и [..]
|
0 0 Язык программирования, также известный как препроцессор гипертекста, обычно используется для обслуживания динамического содержимого и взаимодействия с базами данных.
|
0 0 Язык сценариев, используемый для создания динамических веб-страниц. PHP обычно используется для извлечения данных из базы данных и представления их на веб-странице.
|
0 0 PHP — это рекурсивная аббревиатура от PHP: препроцессор гипертекста. Это популярный серверный язык сценариев, разработанный специально для интеграции с HTML и используемый (часто в сочетании с MySQL [..]
|
0 0 Язык сценариев, используемый для разработки динамических веб-страниц и сайтов. Обычно он используется на платформах Solaris и Linux.
|
0 0 Язык компьютерных сценариев, используемый многими веб-приложениями. Приложения PHP обычно используют файлы с расширениями .php, .php4 или .php5. Некоторым приложениям PHP требуются пакеты PEAR.
|
0 0 Язык программирования с открытым исходным кодом, в основном используемый в серверных приложениях для создания динамических веб-страниц. FileMaker Server позволяет публиковать данные из файлов FileMaker Pro на настраиваемых веб-сайтах [..]
|
0 0 Широко используемый язык сценариев общего назначения, изначально разработанный для веб-разработки для создания динамических веб-страниц.
|
0 0 PHP — это серверный язык сценариев, разработанный для веб-разработки, но также используемый как язык программирования общего назначения.
|
0 0 Обозначает препроцессор гипертекста. PHP — это серверный высокоуровневый объектно-ориентированный веб-язык с открытым исходным кодом, используемый для разработки динамических веб-страниц. PHP можно использовать для взаимодействия с пользователем, доступа к данным [..]
|
0 0 Самореферентное сокращение от PHP: препроцессор гипертекста, серверный язык сценариев с открытым исходным кодом, встроенный в HTML, используемый для создания динамических веб-страниц.
|
0 0 Язык сценариев для веб-разработки. Это серверный язык, обычно используемый для создания динамических веб-сайтов, управляемых базами данных. PHP обычно работает в паре с MySQL.
|
0 0 PHP (первоначально «Personal Home Page Tools», но теперь рекурсивная аббревиатура от «PHP Hypertext Preprocessor») — это широко используемый язык программирования с открытым исходным кодом, используемый в основном для серверных приложений для разработки динамического веб-контента. Его можно рассматривать как альтернативу Microsoft Active Server Pa [..] 9 с открытым исходным кодом.0003
|
0 0 Код валюты ISO 4217 для филиппинского песо.
|
0 0 PHP — это язык сценариев общего назначения, предназначенный для веб-разработки. Первоначально он был создан датско-канадским программистом Расмусом Лердорфом в 1994. Эталонная реализация PHP теперь производится [..]
|
0 0 PHP — это серверный язык сценариев с открытым исходным кодом. PHP также может означать: Parallel History Project, веб-сайт с информацией о холодной войне. Программа частичной госпитализации, программа, используемая для […]
|
0 0 PHP — это язык сценариев общего назначения, предназначенный для веб-разработки. Первоначально он был создан датско-канадским программистом Расмусом Лердорфом в 1994 году. Эталонная реализация PHP теперь prod [..]
|
0 0 PHP — это язык сценариев общего назначения, предназначенный для веб-разработки. Первоначально он был создан датско-канадским программистом Расмусом Лердорфом в 1994 году. Эталонная реализация PHP теперь prod [..]
|
<< фототоксичность | PHR >> |
Серьезное отношение к PHP — Slack Engineering
Slack использует PHP для большей части логики своих серверных приложений, что в наши дни является необычным выбором. Почему мы решили построить новый проект на этом языке? Тебе следует?
Большинство программистов, которые лишь случайно использовали PHP, знают о нем две вещи: это плохой язык, который они никогда не использовали бы, если бы у них был выбор; и что некоторые из самых необычайно успешных проектов в истории используют его. Это не совсем противоречие, но оно должно вызвать у нас любопытство. Удалось ли Facebook, Википедии, WordPress, Etsy, Baidu, Box и совсем недавно Slack преуспеть в , несмотря на то, что использует PHP? Было бы лучше, если бы они все написали свое приложение на Ruby? Эрланг? Хаскелл?
Возможно, нет. PHP-язык имеет много недостатков, которые, несомненно, замедлили эти усилия, но PHP-среда имеет достоинства, которые более чем компенсируют эти недостатки. А возможности исправления недостатков PHP на уровне языка впечатляют. В целом, PHP обеспечивает лучшую поддержку для построения, изменения и эксплуатации успешного проекта, чем конкурирующие среды. Я бы начал новый проект на PHP сегодня, с одной или двумя оговорками, но без извинений.
Фон
Уникальный среди современных языков, PHP родился на веб-сервере . Его сильные стороны тесно связаны с контекстом выполнения на стороне сервера, ориентированного на запросы.
PHP изначально расшифровывался как «Персональная домашняя страница». Впервые он был выпущен в 1995 году Расмусом Лердорфом с целью поддержки небольших, простых динамических веб-приложений, таких как гостевые книги и счетчики посещений, которые были популярны в первые дни существования Интернета.
С самого начала PHP использовался для гораздо более сложных проектов, чем предполагали его создатели. Он претерпел несколько основных изменений, каждое из которых привносило новые механизмы для обработки этих более сложных приложений. Сегодня, в 2016 году, он является многофункциональным членом языка смешанной парадигмы для разработчиков ( MPDPL ) семейство [ 1 ] , которое включает JavaScript, Python, Ruby и Lua. Если вы в последний раз касались PHP в начале нулевых, современная кодовая база PHP может удивить вас трейтами, замыканиями и генераторами.
Достоинства PHP
РНР понимает несколько вещей очень глубоко и однозначно правильно.
Первый, состояние . Каждый веб-запрос начинается с абсолютно чистого листа. Его пространство имен и глобальные переменные не инициализированы, за исключением стандартных глобальных переменных, функций и классов, обеспечивающих примитивную функциональность и поддержку жизни. Запуская каждый запрос из известного состояния, мы получаем своего рода изоляцию органической неисправности; если запрос t обнаруживает дефект программного обеспечения и завершается сбоем, эта ошибка напрямую не мешает выполнению последующего запроса t+1 . Конечно, состояние находится не в куче программ, а в базе данных, кэше памяти или файловой системе. Но PHP разделяет эту слабость со всеми мыслимыми средами, допускающими постоянство. Изоляция кучи запросов друг от друга снижает стоимость большинства программных дефектов.
Второй, параллелизм . Отдельный веб-запрос выполняется в одном потоке PHP. На первый взгляд это кажется глупым ограничением. Но поскольку ваша программа выполняется в контексте веб-сервера, у нас есть естественный источник параллелизма: веб-запросы. Асинхронное закручивание на локальный хост (или даже на другой веб-сервер) обеспечивает способ использования параллелизма без совместного использования, с копированием и копированием. На практике это безопаснее и более устойчиво к ошибкам, чем подход с блокировкой и общим состоянием, который предоставляет большинство других языков общего назначения.
Наконец, тот факт, что программы PHP работают на уровне запроса, означает, что рабочий процесс программиста является быстрым и эффективным и остается быстрым при изменении приложения. Об этом заявляют многие языки повышения производительности разработчиков, но если они не сбрасывают состояние для каждого запроса, а основной цикл обработки событий разделяет состояние уровня программы с запросами, у них почти всегда есть некоторое время запуска. Например, для типичного сервера приложений Python цикл отладки будет выглядеть примерно так: «думай; редактировать; перезагрузить сервер; отправить несколько тестовых запросов». Даже если «перезапустить сервер» занимает всего несколько секунд настенных часов, это значительно сокращает те 15–30 секунд, которые наш ограниченный человеческий мозг должен удерживать в наиболее деликатном состоянии.
Я утверждаю, что в PHP проще «думать; редактировать; перезагрузить страницу» делает разработчиков более продуктивными. В течение длительного и сложного жизненного цикла программного проекта эти показатели производительности возрастают.
Дело против PHP
Если все вышеперечисленное правда, то откуда столько ненависти? Если отбросить красочные гиперболы, наиболее распространенные жалобы на кластер PHP связаны со следующими основными причинами:
- Неожиданные преобразования типов . Почти все современные языки позволяют программистам сравнивать, например, целые числа и числа с плавающей запятой с помощью оператора >=; черт возьми, даже C позволяет это. Совершенно ясно, что задумано. Менее ясно, что должно означать сравнение строки и целого числа с ==, и разные языки делают разные выборы. Выбор PHP в этом отделе особенно извращенный, что приводит к неожиданностям и необнаруженным ошибкам. Например, 123 == «123foo» оценивается как true (посмотрите, что он там делает?), а 0123 == «0123foo» — как false (хм).
- Несоответствие по ссылке, семантике значений . PHP 3 имел четкую семантику, согласно которой присваивание, передача аргументов и возврат выполняются по значению, создавая логическую копию рассматриваемых данных. Программист может выбрать эталонную семантику с помощью аннотации & [ 2 ] . Однако это противоречило внедрению средств объектно-ориентированного программирования в PHP 4 и 5. Большая часть объектно-ориентированной нотации PHP заимствована из Java, а в Java есть семантика, согласно которой объекты обрабатываются по ссылке, а примитивные типы обрабатываются по значению. Таким образом, текущее состояние семантики PHP таково, что объекты передаются по ссылке (выбирая Java вместо, скажем, C++), примитивные типы передаются по значению (где Java, C++ и PHP согласуются), но старая семантика ссылок и нотация & сохраняются. , иногда странным образом взаимодействуя с новым миром.
- Забвение неудач философия . PHP очень, очень старается поддерживать выполнение запроса, даже если он сделал что-то очень странное. Например, деление на ноль не вызывает исключение, не возвращает INF и не завершает запрос фатально. По умолчанию он предупреждает и оценивает значение false. Поскольку значение false в числовом контексте воспринимается как 0, многие приложения развертываются и запускаются с необнаруженным делением на ноль. Эта конкретная проблема исправлена в PHP 7, но стремление разработчиков продолжать двигаться вперед, минуя те моменты, когда это могло иметь смысл, пронизывает и библиотеки.
- Несоответствия в стандартной библиотеке . Когда PHP был молодым, его аудитория была наиболее знакома с C, и многие API использовали язык проектирования стандартной библиотеки C: имена из шести символов нижнего регистра, успех и неудача возвращались в целочисленном возвращаемом значении с «реальными» значениями, возвращаемыми в вызываемом объекте. поставляемый параметр «out» и т. д. По мере взросления PHP стиль пространства имен C с префиксом _ стал более распространенным: mysql_…, json_… и т. д. общий способ внедрения новой функциональности. Поэтому иногда мы видим фрагменты кода, в которых такие выражения, как new DirectoryIterator($path) чередуются с if (!($f = fopen($p, ‘w+’)) …, вызывающим раздражение 9.1046
Чтобы не показаться невнимательным апологетом PHP: все это серьезные проблемы, которые делают дефекты более вероятными . И это невынужденные ошибки. Между хорошими частями PHP и этими проблемами нет изначального компромисса. Должна быть возможность создать PHP, который ограничивает эти недостатки, сохраняя при этом хорошие стороны.
HHVM и Hack
Эта система-преемник PHP называется Hack [ 3 ] .
Hack — это язык программирования, который люди называют «постепенной системой ввода» для PHP. «Система типизации» означает, что она позволяет программисту выражать автоматически проверяемые инварианты данных, которые проходят через код: эта функция принимает строку и целое число и возвращает список фриблов, точно так же, как в Java, C++, Haskell или чем-то еще статически. машинописный язык, который вы предпочитаете. «Постепенная» часть означает, что некоторые части вашей кодовой базы могут быть статически типизированы, в то время как другие части все еще находятся в грубом динамическом PHP. Возможность их смешивания обеспечивает постепенную миграцию больших кодовых баз.
Вместо того, чтобы расплескивать здесь тонны чернил, описывая систему типов Hack и то, как она работает, просто поиграйте с ней. Я буду здесь, когда ты вернешься.
Это изящная система, и довольно амбициозная в том, что она позволяет вам выразить. Уникальным преимуществом экосистемы PHP является возможность постепенного переноса проекта на Hack, если он разрастется больше, чем вы ожидали. Проверка типов Hack сохраняет «думать; редактировать; перезагрузите рабочий процесс страницы, потому что проверка типов работает в фоновом режиме, постепенно обновляя свою модель кодовой базы, когда видит изменения в файловой системе. Проект Hack обеспечивает интеграцию со всеми популярными редакторами и интегрированными средами разработки, поэтому обратная связь об ошибках ввода появляется, как только вы закончите печатать, как в веб-демонстрации.
Давайте оценим набор реальных рисков, которые представляет PHP в свете Hack:
- Преобразования типа Surprise становятся ошибками в файлах Hack. Весь класс проблем испаряется.
- Семантика ссылок и значений очищается простым запретом ссылок старого стиля в Hack, поскольку они не нужны в новых кодовых базах. Это оставляет ту же семантику объектов по ссылке и всего остального по значению, что и Java или C#..
- PHP-х отказ-забвение является скорее свойством среды выполнения и библиотек, и семантической проверке, такой как Hack, сложнее проникнуть непосредственно в эти системы. Однако на практике большинство форм забывчивости об ошибках требуют неожиданных преобразований типов, чтобы продвинуться очень далеко. Например, проблемы, возникающие при распространении «ложи», возвращаемой делением на ноль, в конечном итоге пересекают границу проверки типов [ 4 ] , которая не работает при численной обработке логического значения. Эти границы чаще встречаются в кодовых базах Hack. Упрощая написание этих типов, Hack на практике уменьшает «расстояние скольжения» многих ошибочных исполнений.
- Наконец, несоответствия в стандартной библиотеке сохраняются. Больше всего Хак надеется сделать так, чтобы сделать их более безопасными абстракциями безболезненно.
Hack предоставляет возможность, которой нет ни у одного другого популярного члена семейства MPDPL: возможность ввести систему типов после первоначальной разработки и только в тех частях системы, где ценность превышает стоимость.
HHVM
Hack изначально разрабатывался как часть виртуальной машины HipHop, или HHVM, JIT-среды с открытым исходным кодом для PHP. HHVM предоставляет еще одну важную возможность для успешного проекта: возможность запуска вашего сайта быстрее и экономичнее. Facebook сообщает об улучшении эффективности ЦП в 11,6 раз по сравнению с интерпретатором PHP, а Википедия сообщает об улучшении в 6 раз.
Компания Slack недавно перенесла свои веб-среды на HHVM и столкнулась со значительным снижением задержки на всех конечных точках, но на момент написания этой статьи нам не хватает точного измерения эффективности ЦП. Мы также находимся в процессе переноса частей нашей кодовой базы в Hack и сообщим о нашем опыте здесь.
Взгляд в будущее
Мы начали с очевидного парадокса, что PHP — очень плохой язык, который используется во многих успешных проектах. Мы находим, что его репутация плохого языка сама по себе вполне заслужена. Успех проектов, использующих его, больше связан со свойствами PHP 9.0993 среда и рабочий процесс с высокой частотой, который он обеспечивает, чем с языком PHP. И преимущества этой среды (снижение стоимости ошибок за счет изоляции ошибок, безопасный параллелизм и высокая производительность разработчиков) более ценны, чем проблемы, которые создают недостатки языка.
Также, что является уникальным среди MPDPL, существует четкий путь миграции на более производительную, безопасную и более удобную в сопровождении среду в форме Hack и HHVM. Slack находится на более поздних стадиях перехода на HHVM и на ранних стадиях перехода на Hack, и мы надеемся, что они позволят нам быстрее создавать лучшее программное обеспечение.
Slack Technologies, Inc. ищет отличных технологов, которые могли бы присоединиться к нам. Применить сейчас
Примечания- Я придумал термин «MPDPL». Хотя между ними мало прямых генетических связей, эти языки сильно повлияли друг на друга. Глядя на синтаксис, они гораздо больше похожи, чем отличаются. Во вселенной языков программирования, включающей сборку MIPS, Haskell, C++, Forth и Erlang, трудно отрицать, что MPDPL образуют тесный кластер в пространстве языковой разработки. [ Вернуться к тексту ]
- К сожалению, & был отмечен в вызываемом, а не в вызывающем. То есть программист декларирует желание получить параметры по ссылке, но на самом деле передача их по ссылке ничем не отмечена. Это затрудняет понимание того, что может измениться при чтении кода, и значительно усложняет эффективную реализацию PHP.