Лекция 2. Алгоритмизация и программирование
Презентация по теме «История PHP»
PHP
История РНР сравнение его с другими языками сценариев
Основное предназначение языка РНР - это выполнение на сервере сценариев, создающих динамические Web-страницы. В этой главе мы поговорим об эволюции языка, посмотрим, что представляет собой РНР на сегодняшний день, и сравним РНР с другими языками, предназначенными для программирования Web-приложений.
История РНР
Датой создания языка РНР можно считать осень 1994 года, а "отцом" языка - программиста Расмуса Лердорфа (Rasmus Lerdorf). Сначала Лердорф собрался написать простой движок для своей персональной странички и завершил эту работу к началу 1995 года. Движок был написан на языке Perl и умел делать очень немного, так как создавался только для подсчета количества посетителей странички Расмуса, на которой было размещено его резюме. Этот движок Расмус назвал Personal Home Page Tools (PHPT), а позже название трансформировалось в РНР, что следует понимать как рекурсивный акроним Hypertext Preprocessor (решение о переименовании было принято в 1997 году).
Стоит заметить, что в 1994 году никаких инструментов для создания различных приложений для Web еще не было, да и сама "паутина" только еще начинала развиваться.
Поэтому те задачи, которые решала программа Расмуса, были актуальны для очень многих пользователей сети, и к нему хлынул поток писем с просьбами предоставить свой инструментарий. Такой успех РНР привел к тому, что Лердорф приступил к разработке различных расширений языка.
В том же 1994 году Расмус разработал пакет, предназначенный для обработки форм, который назывался FI (Form Interpreter).
А к середине 1995 года, объединив движок для своей странички с интерпретатором форм, Р. Лердорф выпустил вторую версию языка, которая называлась PHP/FI. К этому времени при разработке языка Расмус перешел на язык С.
Тогда же в РНР была добавлена поддержка очень многих баз данных, что еще более усилило его популярность.
К концу 1997 года два программиста - Зив Сураски (Zeev Suraski) и Энди Гутмане (Andi Gutmans) - переписали первоначальный лексический анализатор, и летом 1998 года увидела свет третья версия языка - РНР 3.0.
Развитие РНР стремительно продолжалось, в язык сотнями добавлялись новые функции. В 1999 году число пользователей РНР превысило 1 миллион, что сделало РНР одним из самых популярных языков для разработки Web-приложений.
К этому времени к разработке языка подключилось большое количество программистов со всего мира. Стало понятно, что вследствие растущей популярности языка необходима его адаптация для разработки крупномасштабных приложений. Так как изначально РНР предназначался для построения несложных приложений, то лексический анализ и компиляция кода в нем происходили одновременно.
Быстрота выполнения простых сценариев достигалась за счет сокращения времени от запуска до начала выполнения. Однако при выполнении более сложных сценариев все происходило с точностью до наоборот, по причине многократного повторения лексического анализа кода. Стало очевидным, что необходимо модифицировать основное ядро, что и было быстро и успешно сделано фирмой Zend Technologies Ltd.
Был создан более устойчивый лексический анализатор, на базе которого уже можно было строить полномасштабные приложения, и в 2000 году появилась четвертая версия языка - РНР 4.0. В этой версии уже существовала возможность создания объектно-ориентированных приложений, что было с радостью воспринято многими пользователями.
Однако объектно-ориентированная парадигма находилась в РНР 4.0 в зачаточном состоянии, поскольку в языке отсутствовала реализация многих концепций, свойственных объектно-ориентированной технологии. И, наконец, в 2003 году выходит новейшая (пятая) версия языка - РНР 5.0 на базе машины Zend Engine 2. И основные изменения как раз коснулись реализации объектно-ориентированного подхода. С выходом пятой версии язык РНР можно уже с полным правом называть объектно-ориентированным. Итак, что представляет собой РНР на сегодняшний день?
Сейчас более распространены 6 и 7 версии PHP. Однако 6 версия с 2010 года считается бесперспективной из-за сложностей с поддержкой Юникода, поэтому на хостингах часто можно увидеть пятый релиз в качестве базовой платформы. С 2015 года новые разработки преимущественно ведутся на седьмой версии PHP. В нее добавлена масса новых операторов, поэтому обратная совместимость несколько страдает.
По мере развития PHP перестал быть языком для создания персональных страниц, и термин стали применять со значением Hypertext Preprocessor. Система продолжает развиваться - например, в 2020 году официально выпущен 8 релиз PHP. Правда, компания Microsoft, специалисты которой ранее занимались тестированием безопасности, решила отказаться от поддержки языка, но энтузиасты уже взялись искать решение.
Области применения
Преимущество PHP заключается в том, что это серверный язык. Поэтому он и стал основой для создания веб-приложений - пользователи получают результат вычислений, а всю нагрузку по ним забирает удаленный сервер. Именно это стало причиной появления таких CMS, как WordPress, Joomla, Drupal. На PHP написаны фреймворки типа Laravel, Yii2, Symfony.
Существует три основных направления, где востребован PHP:
Написание скриптов, исполняемых на стороне сервера. Основное применение PHP - создание сайтов, размещаемых на хостинге (заранее настроенном для этого).
Написание скриптов, которые исполняются в командной строке независимо от веб-сервера и браузера. Примеры приложений - Task Scheduler под Windows, cron под Linux.
Разработка приложений GUI, исполняемых на стороне клиента. Основная сфера применения - создание кроссплатформенных приложений.
Язык PHP поддерживается буквально всеми платформами - от Microsoft Windows и macOS до GNU Linux, Unix, RISC OS, OS/2 и других. Также он совместим с распространенными web-серверами - Apache, Personal Web Server, Microsoft Internet Information Server, Netscape, Oreilly Website Pro, iPlanet, OmniHTTPd, Xitami, Caudium.
PHP | Установка
Есть разные способы установки всего необходимого программного обеспечения. Мы можем устанавливать компоненты по отдельности, а можем использовать уже готовые сборки на подобие Denwer или EasyPHP. В подобных сборках компоненты уже имеют начальную настройку и уже готовы для создания сайтов.
Со временем любой веб-разработчик будет нуждаться в специальной тестовой площадке, где можно без особых проблем заниматься разработкой или тестированием сайта.
Многие начинающие WEB-разработчики используют ресурсы своего платного хостинга и размещают туда минимум два сайта.
Один рабочий (основной), а другой (дополнительный) для тестирования.
Тестовый сайт подвергается различным испытаниям (установка и проверка многих плагинов, тем, скриптов и так далее).
В итоге, при такой раскладке сильно страдает основной рабочий сайт, так как большинство ресурсов хостинга потребляет тестовый проект.
Однако есть другой способ, который позволит без потерь (как в денежном, так и в ресурсном плане) осуществлять тестирование своих сайтов.
Вы уже, наверное, знаете, чтобы поместить свой сайт в интернет, нужно зарегистрировать доменное имя, купить хостинг, то есть дисковое пространство на удалённом компьютере с высокоскоростным подключением, на котором могут работать PHP скрипты.
Чтобы сайты полноценно работали, должен быть установлен PHP и MySQL. Все это не доступно на обычном компьютере.
Как могут запускаться файлы HTML и PHP на вашем компьютере?
Обычный HTML файл можно открыть с помощью Notepade++ или даже блокнота.
Там внутри что-то написать, сохранить и потом без особых проблем открыть данный файл на своем браузере и посмотреть, как бы этот файл выглядел на хостинге в Интернете.
То есть мы уже видим рабочую HTML страницу. В ней мы можем создавать определенный дизайн, контент и наблюдать за проектом без подключения к интернету.
Все, по сути, у нас уже есть.
Если мы захотим запустить PHP файл с помощью браузера, то у нас ничего не получится, так как PHP скрипты в операционной системе Windows без дополнительного программного обеспечения работать не будут.
Все это не доступно на обычном компьютере и тем самым отпадает возможность работы со своими веб проектами.
Поэтому некоторые новички начинают тратить деньги на дополнительные ресурсы своего платного хостинга.
Но как быть в таком случае?
Ответ прост - существуют специальные программы, с помощью которых можно установить свой выделенный сервер прямо у себя на компьютере.
Что такое сервер?
В нашем случае под сервером подразумевается не компьютер, а специальный набор программ, обеспечивающих оптимальную работу сайта.
Чтобы сайт заработал, нам потребуется установить его в специальное отведенное место на сервере (загрузить файлы на сервер).
То есть мы загружаем файлы сайта на удаленный компьютер. Однако без специальных программ сервера, наши загруженные файлы в сети видны не будут.
Теперь для таких целей мы и создадим собственный сервер на своем домашнем компьютере.
Для этого нам понадобятся специальные программы.
В настоящее время на рынке присутствуют несколько решений от самых разных производителей.
Сервер Apache
Apache (apache.org) - это самый распространенный и популярный бесплатный сервер в сети. Он является более надежным и гибким.
Сервер не требователен к ресурсам процессора и способен обслуживать множество сайтов.
Приложение доступно для широкого спектра операционных систем, включая Unix, Linux, Solaris, Mac OS X, Microsoft Windows и другие.
На данный момент использование Apache составляет 71 %. Однако, это сложная программа, с которой не каждый новичок сможет справится.
Microsoft IIS
Microsoft IIS (iis.net) - еще один надежный сервер от компании Microsoft. Он жестко укрепился на втором месте с 14 % использования в сети.
После установки программы, будут поддерживаться только два языка программирования (VBScript и JScript).
Однако, можно открыть дополнительные возможности, установив для этого нужные расширения.
С установкой таких модулей, функциональность данного сервера значительно повышается.
NGINX
NGINX (nginx.org/ru/) - это наиболее популярный веб-сервер в российском Интернете.
По сравнению с двумя первыми, он является наиболее простым и не обладает лишними функциями.
Также его хвалят за надежность и высокую скорость работы.
Разработчиком данного продукта является наш соотечественник - Игорь Сысоев. В 2004 году он выпустил первую версию nginx.
Сейчас этот программный продукт замыкает тройку самых популярных веб серверов в мире. Его использование составляет около 6,5 %.
LiteSpeed
LiteSpeed (litespeedtech.com) - этот веб сервер не обладает широкими возможностями, но зато у него очень большая скорость работы.
По быстродействию он сильнее популярного Apache в 9 раз.
Немало внимания уделено и безопасности. Есть своя защита от перегрузки системы, строгая проверка http-запросов, анти-ddos и многое другое.
LiteSpeed доступен для Solaris, Linux, FreeBSD и Mac OS X. Доля использования этой программы составляет 1,5 %
Конечно же, есть много и других подобных программ, но доля их использования и доверия среди пользователей не так высока как у этих.
К сожалению, одной такой программой вам не обойтись.
Мало того, что их целесообразно использовать для работы с крупными проектами, так еще может возникнуть сложность в установке и настройке.
К тому же помимо таких серверов требуется еще отдельная установка и настройка некоторых программ (например, для работы с базой данных).
Все это вызывает существенные трудности у многих пользователей. Но как быть в таком случае?
Особенности локального сервера
На данный момент существует множество различных дистрибутивов, которые смогут облегчить жизнь любому начинающему вебмастеру.
Они очень просты в установке, в работе, менее требовательны к ресурсам и содержат необходимые программные элементы для наилучшей работы.
То есть локальный сервер - это не одна программа (не один конкретный веб сервер), а специальный сборник, куда входят облегченные варианты сложных серверных программ.
Обычно в сборку входят:
сам сервер - в основном Apache, но могут быть и другие;
компилятор PHP - с его помощью браузер может прочитать коды и собрать страницу;
компоненты для работы с базами данных;
различные установщики и другие программы.
Все это значительно упрощает дело, нежели если бы мы устанавливали и настраивали каждую программу в отдельности.
Кроме того, к базовым пакетам локальных серверов можно подключать отдельные модули для расширения функционала.
Еще важной особенностью является то, что на некоторых серверах существует возможность работы со съемного флеш-накопителя.
В общем, такие сборки очень хорошо подходят для быстрой разработки сайтов, тестирования небольших проектов, а порой и даже крупных.
Проект Денвер
Джентльменский набор Web-разработчика («Д.н.w.р», читается «Денвер Это бесплатный отечественный сервер, который предназначен для работы с сайтами, веб-приложениями или Интернет страницами.
Его разработчиками являются Дмитрий Котеров и Антон Сущев.
Данный продукт содержит необходимые дистрибутивы для упрощенной работы.
Например, сюда входит веб-сервер Apache с различной поддержкой, панель phpMyAdmin и MySQL для работы с базами данных и другие программы.
Также можно работать со съемной флешки.
Denwer поддерживает только операционную систему Windows.
XAMPP
XAMPP (apachefriends.org/en/xampp.html) - специальная сборка сервера от друзей Apache. Необходимые дистрибутивы позволяют запустить на нем полноценный веб сервер.
Данная программа распространяется бесплатно и поддерживает работу в системе Windows, Solaris, Mac OS X и Linux.
Также есть следующие преимущества.
Сервер популярен своим очень простым пользовательским интерфейсом, что делает его любимым для многих начинающих. Наблюдается многократные появления обновленных версий.
Процесс обновления проходит очень просто и удобно для пользователя. Еще присутствуют дополнительные модули.
Скачать нужную версию вы также можете с другого официального сайта (sourceforge.net/projects/xampp/files).
AppServ
AppServ (appservnetwork.com) - отличный сервер от тайского производителя, концепцией которого является легкая установка и настройка всех дистрибутивов за 1 минуту.
Первый релиз сборки состоялся в 2001 году и с тех пор количество пользователей все время растет.
AppServ очень прост в установке. Он работает стабильно и не хуже других релизов.
А его надежная производительность дает возможность создать полноценный веб сервер на вашем компьютере.
VertigoServ
VertigoServ (vertrigo.sourceforge.net) - еще один неплохой и простенький в установке локальный сервер.
Сборка очень гибкая, имеет хорошую производительность и занимает мало места на диске.
Работает только на ОС Windows.
Zend Server Community Edition
Zend (zend.com) - бесплатный сервер от компании, предназначен для работы с веб-приложениями.
Содержит все необходимые компоненты для быстрого развертывания локального сервера на своем компьютере.
Open Server
Open Server (open-server.ru) - это отечественный портативный локальный сервер, который обладает высоким функционалом по разработке и созданию сайтов и других веб проектов.
Имеет мультиязычный интерфейс (в том числе и русский) и предназначен для работы в ОС Windows.
Поддерживается работа со съемного носителя. Данный сервер очень хорош и служит неплохой альтернативой Денверу.
Wampserver
Wampserver (wampserver.com) - еще одна неплохая сборка с русским интерфейсом.
Имеется простое и понятное меню, а удобная установка и настройка сборки не вызывает особых трудностей.
Настройку можно производить не затрагивая файлы конфигураций, что очень полезно начинающим веб-мастерам.
Сервер распространяется бесплатно и работает только на платформе Windows. К сожалению, портативной версии пока нет.
EasyPHP
EasyPHP (easyphp.org) - очень простенькая сборка с поддержкой русского языка.
Она ничем не примечательна, не имеет огромного функционала и в основном предназначена для тестирования небольших проектов.
Есть поддержка работы с портативных носителей. Данный сервер послужит неплохой заменой Денверу.