Verification: a143cc29221c9be0

Mysql на java или php

Mysql на java или php

Содержание

  • Вводные слова
  • Скачивание файлов
  • Структура папок
  • Установка Apache
  • Установка PHP
  • Установка MySQL
  • Установка phpMyAdmin
  • Окончание
  • Добавление своего виртуального хоста [дополнительно]
  • Удаление служб [дополнительно]

Вводные слова

Да, статей на тему, как установить связку Apache + Php + MySQL много в интернете, но всё равно не нашел той статьи, которая бы устроила всем, что мне нужно. В итоге, у меня тут компиляция материала из нескольких статей. В первую очередь, это шпаргалка для меня самого)

И я вряд ли смогу помочь вам в тонкостях тех ошибок, которые у вас возникнут. Я не системный администратор, который набил руку в настраивании серверов.

Приведенный в статье алгоритм можно спокойно применить в случае, когда и программы и файлы сайтов находятся на одном диске. Только в нужных местах пропишите свои пути к папкам, а всё остальное будет таким же.

Почему у меня не всё в одном месте будет находится, а раскидано по двум дискам? Я стараюсь выполнять принцип того, что на основном диске должны быть программы и те файлы, которые можно потерять в случае переустановки системы. А все пользовательские файлы должны находится на другом диске. У меня это реализовано (что очень типично) через разделение одного физического диска на два логических.

В статье особо сильно использовались материалы статей: http://webware.biz, http://paperplane.su и http://malwselennaiaru.ru.

Скачивание файлов

Выберите битность вашей операционной системы и скачивайте ВСЕ файлы соответствующей битности (32 или 64). У меня всё 64 битное.

Вначале надо скачать и установить (и перегрузить комп) пару системных библиотек от Microsoft.

http://www.microsoft.com/en-us/download/details.aspx?id=30679

http://www.microsoft.com/en-us/download/details.aspx?id=26999

Можно скачать файлы тут у меня (но советовал бы с официального сайта скачивать: файлы могли обновиться с тех пор как я написал эту статью):

Visual-C-Redistributable-Package-2010vcredist_x64.zip

Visual-C-Redistributable-for-Visual-Studio-2012-vcredist_x64.zip

Файлы называются одинаково (но по содержанию они разные), так что будете осторожными при сохранении их себе на комп. Также вполне возможно, что эти файлы у вас уже установлены.

Теперь перейдем к скачиваю PHP. Будьте очень внимательны. Надо скачать архив с последней версией php вашей битности в версии VC11 x64 Thread Safe. Я вначале несколько раз не то скачивал и не понимал, почему не работает.

http://windows.php.net/download/

2014-12-15_120152

Можно файл скачать у меня:

php-5.6.3-Win32-VC11-x64.zip

Апач скачиваем не с официального сайта, а с другого, так как php новых версий не будет работать с стандартным апачем. Битность выбираем соответствующую.

http://www.apachelounge.com/download/

2014-12-15_121736

Можно у меня скачать:

httpd-2.4.10-win64-VC11.zip

Для работы с базами данных скачиваем phpMyAdmin с этого сайта. Там только один вариант для загрузки:

http://www.phpmyadmin.net/home_page/index.php

2014-12-15_122219

Или скачиваем у меня:

phpMyAdmin-4.3.2-all-languages.zip

И скачиваем MySQL с сайта:

http://dev.mysql.com/downloads/mysql/

Я скачивал файл Windows (x86, 64-bit), ZIP Archive.

2014-12-15_122559

И да, у вас сайт попросит зарегистрироваться, чтобы вы могли скачать файл.

Можно у меня скачать:

mysql-5.6.22-winx64.zip

Итого у нас 6 файлов, два из которых (библиотеки Microsoft) мы устанавливаем уже сейчас.

Структура папок

У меня два диска: основной C: с программами и D: с пользовательскими файлами.

2014-12-15_123640

На диске C: создаем папку Server в которую скидываем архивы Apache, php и MySQL.

2014-12-15_123917

На диске D: создаем папку Server, в которой создаем папки DB и htdocs. В папке htdocs создаем папки www и phpmyadmin. В последнюю копируем наш архив phpMyAdmin.

2014-12-15_124222

2014-12-15_124246

2014-12-15_124304

Обратите внимание, что это у меня второй диск D:. У вас может диск с пользовательскими данными называться по другому. Может, например, быть тем же C:, в котором программы храните. Вам нужно только во всех кодах внимательно менять D:, на ваше обозначение.

Установка Apache

В папке C:\Server разархивируем архив с Apache и оставим только папку Apache24, а файлы ReadMe.txt и — Win64-2.4.10 VC11 update 4 — (у вас может по другому называться) удалим. Архив с Apache тоже удалим, так как он нам не нужен.

2014-12-15_124434

2014-12-15_124458

2014-12-15_124710

Ищем теперь файл C:\Server\Apache24\conf\httpd.conf и открываем его в любом текстовом редакторе. Я использую Notepad++.

2014-12-15_125255

Ищем и меняем в нем строчку

#ServerName www.example.com:80

на

Ищем и меняем в нем строчку

на

ServerRoot "c:/Server/Apache24"

Ищем и меняем в нем строчку

DocumentRoot "c:/Apache24/htdocs"

на

DocumentRoot "d:/Server/htdocs/"

Ищем и меняем в нем строчку

Directory "c:/Apache24/htdocs">

на

Directory "d:/Server/htdocs/">

Ищем и меняем в нем строчку

DirectoryIndex index.html

на

DirectoryIndex index.html index.php index.htm

Ищем и меняем в нем строчку

#Include conf/extra/httpd-vhosts.conf

на

Include conf/extra/httpd-vhosts.conf

Теперь находим файл C:\Server\Apache24\conf\extra\httpd-vhosts.conf и открываем его.

Удаляем всё в нем. И вставляем туда следующие строчки:

VirtualHost *:80>

    DocumentRoot "D:/Server/htdocs/www"

    ServerName localhost

    ErrorLog "D:/Server/htdocs/www/error.log"

    CustomLog "D:/Server/htdocs/www/access.log" common

/VirtualHost>

VirtualHost *:80>

   DocumentRoot "D:/Server/htdocs/phpmyadmin"

   ServerName phpmyadmin

   ErrorLog "D:/Server/htdocs/phpmyadmin/error.log"

   CustomLog "D:/Server/htdocs/phpmyadmin/access.log" common

/VirtualHost>

Теперь находим файл C:\Windows\System32\drivers\etc\hosts и открываем каким-нибудь блокнотом под администратором (иначе изменения при сохранении не сохранятся) и добавьте в него строчку:

2014-12-15_130826

2014-12-15_130710

Теперь запустим приложение C:\Server\Apache24\bin\httpd.exe:

2014-12-15_132230

Откроем браузер и введем http://localhost и жмем Enter.

Увидим вот это:

2014-12-16_004150

Создадим текстовой файл index.html в папке D:\Server\htdocs\www со следующим содержимым:

!DOCTYPE html>

html>

body>

h1>Localhost/h1>

p>This is page in Localhost./p>

/body>

/html>

И создадим текстовой файл index.html в папке D:\Server\htdocs\phpmyadmin со следующим содержимым:

!DOCTYPE html>

html>

body>

h1>PhpMyAdmin/h1>

p>This is page in PhpMyAdmin./p>

/body>

/html>

Теперь, если откроем в браузере http://localhost, то получим:

2014-12-16_005622

А при заходе на адрес http://phpmyadmin/ получим вот это.

2014-12-16_005634

Закрываем приложение httpd.exe. Тем самым мы закрыли наш созданный сервер. Сделаем так, чтобы сервер был всегда открыт при запуске системы.

Откроем командную строку под администратором. Через поиск находим программу Командная строка:

2014-12-14_205827

Запускаем от имени администратора.

2014-12-14_205841

2014-12-14_205915

Вводим там:

c:\Server\Apache24\bin\httpd.exe -k install

И нажимаем Enter:

2014-12-16_010230

Служба Apache24 установилась. Теперь сервер будет всегда работать при работе операционной системы.

Закрываем командную строку (а можете и не закрывать: еще пригодится).

Открываем приложение C:\Server\Apache24\bin\ApacheMonitor.exe. В трее должна появится иконка.

2014-12-16_010529

Щелкаем по ней и выбираем кнопку Start.

2014-12-16_010549

Если иконка изменилась на зеленый квадратик, то всё в порядке.

Если осталась с красной точкой то проверьте все шаги. И проверьте: вы закрыли или нет httpd.exe.

И еще. Если сервис Apache24 запускается автоматически при старте ОС, то ApacheMonitor.exe нет, что было раньше при наличии установщика Apache в предыдущих версиях. Так что либо где-нибудь ярлык на программу оставьте или добавьте программу в автозагрузку. Но это не обязательно, так как это только монитор активности сервиса Apache.

Установка PHP

Создадим папку PHP в папке C:\Server и туда разархивируем архив с php. Сам архив потом удалим.

2014-12-16_011955

В конец файла C:\Server\Apache24\conf\httpd.conf (с которым мы уже работали) добавим в самом конце такие строчки:

PHPIniDir "C:/Server/PHP"

AddHandler application/x-httpd-php .php

LoadModule php5_module "C:/Server/PHP/php5apache2_4.dll"

2014-12-16_012151

В папке D:\Server\htdocs\www удаляем файл index.html и добавляем текстовой файл index.php с таким содержимым:

Перезапускаем сервер:

2014-12-16_012436

И в браузере открываем http://localhost:

2014-12-16_012625

Если видите такое, как выше, то всё в порядке.

В папке C:\Server\PHP файл php.ini-development переименуем в php.ini и откроем его в блокноте.

Находим в нем строчку:

и заменяем на:

extension_dir="C:\Server\PHP\ext"

В строчках:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

;extension=php_bz2.dll

;extension=php_curl.dll

;extension=php_fileinfo.dll

;extension=php_gd2.dll

;extension=php_gettext.dll

;extension=php_gmp.dll

;extension=php_intl.dll

;extension=php_imap.dll

;extension=php_interbase.dll

;extension=php_ldap.dll

;extension=php_mbstring.dll

;extension=php_exif.dll      ; Must be after mbstring as it depends on it

;extension=php_mysql.dll

;extension=php_mysqli.dll

;extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client

;extension=php_openssl.dll

;extension=php_pdo_firebird.dll

;extension=php_pdo_mysql.dll

;extension=php_pdo_oci.dll

;extension=php_pdo_odbc.dll

;extension=php_pdo_pgsql.dll

;extension=php_pdo_sqlite.dll

;extension=php_pgsql.dll

;extension=php_pspell.dll

;extension=php_shmop.dll

убираем точку с запятой в начале строк. То есть получим вот это:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

extension=php_bz2.dll

extension=php_curl.dll

extension=php_fileinfo.dll

extension=php_gd2.dll

extension=php_gettext.dll

extension=php_gmp.dll

extension=php_intl.dll

extension=php_imap.dll

extension=php_interbase.dll

extension=php_ldap.dll

extension=php_mbstring.dll

extension=php_exif.dll      ; Must be after mbstring as it depends on it

extension=php_mysql.dll

extension=php_mysqli.dll

extension=php_oci8_12c.dll  ; Use with Oracle Database 12c Instant Client

extension=php_openssl.dll

extension=php_pdo_firebird.dll

extension=php_pdo_mysql.dll

extension=php_pdo_oci.dll

extension=php_pdo_odbc.dll

extension=php_pdo_pgsql.dll

extension=php_pdo_sqlite.dll

extension=php_pgsql.dll

extension=php_pspell.dll

extension=php_shmop.dll

Аналогично в строках:

;extension=php_soap.dll

;extension=php_sockets.dll

;extension=php_sqlite3.dll

;extension=php_sybase_ct.dll

;extension=php_tidy.dll

;extension=php_xmlrpc.dll

;extension=php_xsl.dll

убираем также точку с запятой:

extension=php_soap.dll

extension=php_sockets.dll

extension=php_sqlite3.dll

extension=php_sybase_ct.dll

extension=php_tidy.dll

extension=php_xmlrpc.dll

extension=php_xsl.dll

Найти в файле строчку:

и заменить ее на

Создайте в папке C:\Server папку temp:

2014-12-16_014011

Найдите в php.ini строчку:

;     session.save_path = "N;/path"

И замените ее на

session.save_path = "C:\Server\temp"

Найдите в php.ini строчку:

И замените ее на:

upload_max_filesize = 200M

Найдите строчку:

И замените ее на:

Сохраните и перезапустите сервер. Если зеленый треугольник видите, то всё нормально. Фактически вы настроили сервер, но пока без MySQL.

2014-12-16_014346

Установка MySQL

Разархивируем архив с MySQL и переименуем его в mysql.

2014-12-16_022619

Открываем командную строку под администратором опять.

В ней вводим команду (не забываем нажимать Enter):

C:\Server\mysql\bin\mysqld --console

Появится много строк. Если последняя такая же как на скриншоте, то всё в порядке.

2014-12-16_022948

Открываем еще одно окно с командной строкой под администратором, а это закрываем.

2014-12-14_205827

Запускаем от имени администратора.

2014-12-14_205841

2014-12-14_205915

Во второй командной строке вводим команду:

C:\Server\mysql\bin\mysql -u root

Должна появится в конце строчка mysql>.

2014-12-16_023445

На всякий случай проверим работоспособность mysql. Введем команду во второй команадной строке:

Если видите, что показано две базы данных, то всё в порядке.

2014-12-16_023604

Во второй командной строке введем команды:

use mysql

UPDATE user SET password = PASSWORD('ваш_пароль') WHERE user = 'root';

Я, например, использовал пароль 1234 (локальный же сервер):

use mysql

UPDATE user SET password = PASSWORD('1234') WHERE user = 'root';

2014-12-16_024057

Введем команду для проверки добавления пароля у пользователя:

SELECT user, host, password FROM user;

Всё нормально, если вот такое видите:

2014-12-16_024222

Введем команду:

2014-12-16_024321

И команду:

2014-12-16_024422

Если в дальнейшем вам нужно будем войти в MySQL, но в командной строке надо будет ввести команду (сейчас это не нужно делать):

C:\Server\mysql\bin\mysql -u root -p

В папке C:\Server\mysql файл my-default.ini переименуем в файл my.ini.

2014-12-16_025217

Откроем этот файл my.ini и в самом конце добавим строчку:

datadir="d:/Server/DB/data/"

2014-12-16_030514

Из папки C:\Server\mysql вырежем папку data и перенесем ее в папку D:\Server\DB:

2014-12-16_030659

2014-12-16_030718

В командной строке введем команду (если честно, то я заново открыл командную строку в третий раз, но это не обязательно. При этом первую командную строку закрыл только сейчас):

C:\Server\mysql\bin\mysqld.exe --install MySQL --defaults-file="C:\Server\mysql\my.ini"

Если написано, что всё прошло успешно, то всё замечательно:

2014-12-16_025620

Запустим службу MySQL командой:

2014-12-16_032318

Проверим работу MySQL. Заменим содержимое файла D:\Server\htdocs\www\index.php на следующее:

$db_conn = new mysqli("localhost", "root", "1234", "test");

if (mysqli_connect_errno())

  {

  echo 'Connection to database failed:'.mysqli_connect_error();

  exit();

  }

else

  {

  echo 'Ok';

  }

?>

Вместо 1234 вставьте свой пароль. И перейдите на адрес http://localhost/.

Если вы видите Ok, то всё хорошо!

2014-12-16_120231

Установка phpMyAdmin

В папке D:\Server\htdocs\phpmyadmin удалим файл index.html.

И разархивируем в папку наш скаченный архив с phpmyadmin.

2014-12-16_114539

Создайте текстовой файл config.inc.php со следующим содержимым:

$i=0;

$i++;

$cfg['Servers'][$i]['user'] = 'root';

$cfg['Servers'][$i]['password'] = '1234';

$cfg['Servers'][$i]['auth_type'] = 'config';

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['connect_type'] = 'tcp';

$cfg['Servers'][$i]['compress'] = false;

$cfg['Servers'][$i]['extension'] = 'mysqli';

$cfg['Servers'][$i]['AllowNoPassword'] = true;

?>

Разумеется, что пароль вы меняете на свой.

После этого файл сохраняется в папке D:\Server\htdocs\phpmyadmin.

2014-12-16_120918

Перейдите в браузере по адресу: http://phpmyadmin. Если вы увидите работающий phpMyAdmin, то всё работает отлично!

2014-12-16_121442

Окончание

Итак, на диске C: у вас должно быть такое:

2014-12-16_122405

А на диске D: вот такое:

2014-12-16_122707

2014-12-16_122656

При заходе на http://localhost вы пока должны видеть это:

2014-12-16_123656

Разумеется вы в папку D:\Server\htdocs\www потом можете закинуть любые свои другие файлы вашего сайта.

При заходе на http://phpmyadmin вы пока должны видеть это:

2014-12-16_123720

Если всё это работает, и работает после перезагрузки ОС, то локальный сервер вы настроили и теперь можете работать!

В приложенном ниже архиве есть те файлы php.ini и другие, которые используются у меня (сторо по это этой статьей). Может вам это пригодится.

config_files_for_server.zip

Добавление своего виртуального хоста [дополнительно]

В статье показано как добавлен был виртуальный хост phpmyadmin, то есть по адресу http://phpmyadmin у вас в браузере открывается ваш подсайт. Аналогичным образом добавляете и другие свои локальные сайты.

В папке D:\Server\htdocs создаете папку [Название вашего локального сайта]. Туда кидаете файла своего сайта.

В файле C:\Server\Apache24\conf\extra\httpd-vhosts.conf добавляете строчки

VirtualHost *:80>

   DocumentRoot "D:/Server/htdocs/[Название вашего локального сайта]"

   ServerName [Название вашего локального сайта]

   ErrorLog "D:/Server/htdocs/[Название вашего локального сайта]/error.log"

   CustomLog "D:/Server/htdocs/[Название вашего локального сайта]/access.log" common

/VirtualHost&gt

В файле C:\Windows\System32\drivers\etc\hosts под администратором добавляете строчку

127.0.0.1 [Название вашего локального сайта]

После этого перезагружаете апач сервер через ApacheMonitor или перезагрузкой компа.

После этого по адресу http://[Название вашего локального сайта] в браузере будет открываться локальный сайт.

PHP

PHP

Теперь обсуждение PHP и JavaScript представляет PHP, который доминирует в серверной разработке. И PHP, и JavaScript являются языками сценариев, что означает, что они предоставляют сценарий, содержащий инструкции для интерпретации во время выполнения. Например, PHP является полностью серверным языком, что означает, что его скрипты будут интерпретироваться на сервере. С другой стороны, сценарии JavaScript можно интерпретировать как в браузере, так и на сервере.

Для чего используется PHP? Веб-разработка с помощью PHP включает такие действия, как управление файлами cookie, сбор информации с веб-страниц и превращение статических веб-сайтов в динамику.

Создание динамических веб-сайтов PHP — одно из применений этого языка сценариев. Иногда бывает достаточно комбинировать HTML и CSS для создания статических сайтов, которые редко меняются. Однако PHP может дать дополнительный динамический эффект. Однако динамические элементы также могут быть реализованы с помощью JavaScript Node.js. Таким образом, возникает дилемма: какой язык сценариев больше подходит?

Ещё один важный аспект использования PHP — это создание динамических веб-сайтов PHP с помощью системы MySQL. PHP работает с рядом баз данных, но самой популярной из них является MySQL. Как это работает? Что ж, вы можете использовать PHP для подключения к базе данных и представления контента на HTML-страницах.

Обычно изучение PHP состоит из двух этапов:

  • Изучение концепций программирования, языка, синтаксиса и других функций.
  • Научитесь работать с фреймворком, который значительно увеличит ваши шансы на создание успешных проектов. Например, фреймворк Laravel — один из лучших и самых популярных фреймворков для веб-разработки на PHP.

JavaScript

JavaScript

JavaScript — это язык сценариев, активно участвующий в веб-разработке и превращающий статические веб-сайты в динамику . Вы можете добавить код JavaScript прямо в свой HTML-документ с помощью тегов

Для чего используется JavaScript? Возможности веб-разработки на JavaScript позволяют веб-сайтам выполнять такие действия, как обновление определённых частей страницы без перезагрузки всего веб-сайта, отображение всплывающих сообщений или введение анимации в 2D или 3D графику. В целом, основное влияние оказывается на разработку на стороне клиента, но теперь JavaScript может выполнять действия и на стороне сервера.

Node.js — это среда для запуска кода JavaScript на сервере. Это главный соперник при обсуждении PHP и JavaScript. Затем браузеры загружают результаты и представляют их в веб-приложениях. Веб-разработка JavaScript на стороне сервера (Node.js) включает движок Google 8V JavaScript, однопоточный не блокирующий цикл событий и низкоуровневый API ввода-вывода.

Благодаря циклу событий Node.js обеспечивает более эффективное управление запросами. Например, пока файловая система читает файл, Node.js работает с другими запросами. После того, как система прочитает файл, она отправляет его в браузер. Другими словами, пока Node.js ожидает завершения одного задания, он переходит к другому.

Веб-разработка: PHP или JavaScript

Сравнение использования PHP и JavaScript может быть основано на внутренней или внешней веб-разработке. С точки зрения внешнего интерфейса JavaScript выполняется в браузере сразу после появления HTML и CSS на веб-сайте.

Эта тактика гарантирует, что основная структура и внешний вид будут готовы до запуска сценария JavaScript. Кроме того, JavaScript гарантирует, что клиентская сторона представляет новый контент внутри браузера (что делает веб-сайт динамичным во внешнем интерфейсе). PHP не подходит для разработки внешнего интерфейса. Таким образом, остаётся JavaScript.

Самая большая разница между JavaScript и PHP заключается в том, что PHP является строго серверным языком, тогда как JavaScript можно использовать для полномасштабной разработки. Однако давайте взглянем на некоторые другие отличия, когда речь идёт о JavaScript и PHP:

  • Одним из преимуществ использования PHP вместо JavaScript является то, что PHP может взаимодействовать с такими базами данных, как Oracle или MySQL.
  • Хотя и JavaScript, и PHP являются интерпретируемыми языками сценариев, способ интерпретации отличается. Все популярные браузеры имеют встроенные интерпретаторы
  • JavaScript. С другой стороны, PHP необходимо установить (установка проста) при использовании на стороне сервера.
  • Даже если у вас есть опыт использования JavaScript для внешнего интерфейса, это не означает, что вы сразу будете готовы к использованию Node.js. Вам нужно узнать о функциях обратного вызова, блокировке и настройке Node.js для работы.
  • Разработчики указывают, что использовать PHP проще, чем Node.js. Один из примеров — Node.js обычно требует больше строк кода.
  • Ещё одно отличие PHP от JavaScript заключается в том, что PHP выполняет операторы синхронно, что означает, что он ожидает окончания одного оператора, чтобы начать другой.
  • В JavaScript всё наоборот: он выполняет несколько задач.

Сравнение правил синтаксиса и популярности: JavaScript или PHP

Является ли PHP проще, чем JavaScript? Этот аспект зависит от вашего уровня программирования и нескольких аргументов:

  1. Возможно, вы захотите использовать JavaScript для разработки внешнего интерфейса и внутреннего интерфейса на одном языке.
  2. Если вы изучали Java в прошлом, освоить PHP будет легче.
  3. Тем не менее специалисты называют PHP более зрелым, что означает, что есть больше ресурсов, которые помогут вам изучить (примеры кода, советы по устранению ошибок и других сбоев).
  4. PHP — мощный язык, и его концепции программирования легко понять новичкам.
  5. Node.js не слишком сложен для новичков, но он определённо имеет больше уникальных функций, которые новичкам нужно будет настроить. В конце концов, JavaScript как язык сложнее PHP. Следовательно, изучение Node.js также становится сложнее.
  6. Фреймворки PHP, такие как Laravel, по-прежнему широко используются в веб-разработке, несмотря на то, что Node.js с годами стал более популярным. PHP остаётся основным языком для серверной веб-разработки.
  7. Заработная плата разработчиков PHP — одна из самых низких в мире программирования. Зачем? Потому что в бизнесе много программистов PHP. Поэтому охота за работой может стать более жаркой.
  8. Вместо обращения к разработчикам PHP можно использовать множество онлайн-сервисов. Если вы хотите создать блог, вы просто создадите учётную запись WordPress вместо того, чтобы обращаться за помощью к разработчикам. Однако PHP действительно хорош, когда дело доходит до создания оригинальных проектов, которые нельзя создать на основе шаблона.
  9. Node.js не может управлять приложениями, интенсивно использующими ЦП, поскольку он основан на событиях и является однопоточным.

Сравнение производительности Node.js и PHP

До выпуска PHP 7 можно было легко сказать, что Node.js выигрывает в вопросе производительности при обсуждении PHP и JavaScript. Однако PHP 7 создаётся на движке PHPNG, что приводит к увеличению производительности в 2 раза и увеличению потребления памяти на 50% (по сравнению с PHP 5.6).

Node.js по- прежнему быстрее PHP, когда нет необходимости обрабатывать данные в реальном времени. Поэтому, когда вам нужно создать чаты, игры, видео или большие потоки данных, вы можете выбрать PHP.

jQuery против PHP

jQuery vs. PHP — интересный вопрос, потому что jQuery даже не является отдельным языком программирования . Это библиотека (или интерфейс прикладного программирования), наполненная дополнительными функциями для JavaScript.

Использование jQuery экономит время разработчиков JavaScript, поскольку им не нужно писать код самостоятельно. Кроме того, необработанный JavaScript тяжелее jQuery. Помните, что библиотека jQuery предоставляет код только для разработки внешнего интерфейса.

Следовательно, между jQuery и PHP очень мало общего. Например, если вы программист PHP, вы не будете рассматривать использование jQuery (поскольку эта библиотека не предлагает код PHP).

Angular.js против PHP

Прежде всего, Angular.js — это ещё один фреймворк JavaScript. Таким образом, PHP — это язык программирования, а Angular.js — это просто библиотека, упрощающая разработку одностраничных приложений.

Под одностраничным приложением понимается приложение, которое динамически обновляет страницы без перезагрузки всех новых страниц с сервера. Например, динамические веб-сайты не перезагружаются, когда вы нажимаете кнопки, такие как категории или другую дополнительную информацию.

PHP и JavaScript вместе

Может показаться несправедливым утверждать, что PHP лучше, чем JavaScript, или что вам обязательно следует изучить JavaScript до PHP. Фактически, лучший вариант — овладеть ими обоими, вместо того, чтобы находить победителя в битве PHP против JavaScript.

Вместе PHP и JavaScript относятся к идее использования Node.js в качестве дополнения к PHP. Например, PHP может создавать сложную логику, работая с базами данных или другими задачами с высокой нагрузкой. В том же проекте вы можете использовать Node.js для управления потоками больших данных и создания лучшего пользовательского интерфейса.

Вы можете использовать комбинацию языков для своего проекта, чтобы сделать его динамичным. Распространённой практикой является использование AJAX для обновления определённых частей страниц в соответствии с вводом пользователей без их полной перезагрузки.

Допустим, у вас есть поле для ввода имени пользователя, и вы отслеживаете в нём действия пользователей с помощью JavaScript. После того, как посетители вводят информацию о пользователе. А JavaScript отправляет введённую информацию в сценарий PHP и ожидает ответа. Сервер отправляет ответ, указывая, существует ли такое имя пользователя на сервере или нет.

Приведённый выше сценарий — один из наиболее распространённых способов совместного использования PHP и JavaScript.

PHP, конечно, жив, но Python пролезает в веб: Максим Шамаев о состоянии языка

— Максим, предлагаю разделить наш разговор на несколько блоков. Первый будет посвящён состоянию языка, потом поговорим о рынке труда, о CMS и фреймворках на PHP и о будущем разработки на PHP.

— Да, давайте.

— На PHP работает практически весь интернет, по разным данным, до 80 % сайтов работает на PHP. Только на WordPress работает около 30 % из всех сайтов и около 60 % из сайтов, которые используют CMS. Как вы считаете, почему в таком случае люди обсуждают, жив PHP или нет?

— Смотрите, всё начинается с цели. У любого языка есть цель, и есть люди и бизнесы, которые ведут язык за собой. Раньше, например, в 2010 году, когда программист начинал бизнес, он приходил в веб и работал на PHP. В то время этот язык был «супер-супер», его все изучали.

Сейчас появился класс бизнесов, которые пришли либо из искусственного интеллекта, либо из Data Science, а там Python. Плюс Python с точки зрения университетов — более стройный язык. К нему есть претензии, но в целом этот язык стройнее и богаче. В нём есть перегружаемые операторы, там можно складывать объекты. То есть это язык для математиков, он изумительно хорош для работы с математическими данными.

Python всё чаще преподают в институтах и университетах, потому что он нравится преподавателям, а также потому, что студент после освоения этого языка сможет хорошо кодить математику, какую-то Big Data или искусственный интеллект. Это близко институтам. Поэтому последние лет 5 формируется поколение программистов, которые знают Python. Они начинают бизнес, приходят в веб и делают что-то на Python.

Здесь есть нюанс: эти люди приходят на рынок, начинают искать питонистов, смотрят — а на рынке 80 % программистов на PHP. Здесь они попадают в неудобное положение. У них код уже написан на Python, поэтому они переучивают PHP-программистов. Получается новая прослойка программистов, которые делают какой-то бизнес, в нём часть, которая отвечает за искусственные интеллект, работает на Python, а веб-представление они тоже автоматически делают на Python — не использовать же два языка. Таким образом Python пролезает в веб.

Ведь любой предприниматель делает бизнес своими руками и своими мозгами. Какой язык программирования он знает, на том языке и будет написан его продукт. Раньше знали PHP, потому что другого языка не было. Действительно, все CMS сделаны на PHP. И поэтому PHP свои позиции не сдаёт.

Представьте, что бизнесмен собирается делать сайты-визитки. Он смотрит, на чём их делают на рынке, и видит, что почти все такие сайты делают на WordPress. Тогда он тоже выбирает WordPress. А WordPress написан на PHP. Поэтому всё идёт от бизнеса — какой бизнес, такой и язык.

— А сам язык PHP скорее жив или скорее мёртв?

— Жив конечно.

— А для чего в 2020 году используется PHP? Какая у него сфера применения или ниша?

— Это всё, что связано с вебом: от простейших сайтов до каких-то больших проектов. Например, тот же Skyeng сделан на PHP. Если вы не пишете большой коробочный продукт класса «1С», хотя веб-часть «1С» тоже на PHP написана, а вы пишете какой-то сайт, который предоставляет услуги, как Skyeng, то его тоже можно писать на PHP. Весь вопрос в том, что знал основатель бизнеса. В случае со Skyeng это был PHP, поэтому сайт написан на PHP. Если какая-то контора выходит на рынок веб-программирования, ей надо использовать PHP без вариантов, потому что под него больше серверов, под него больше услуг, под него больше программистов.

— То есть мы можем сказать, что ниша PHP — веб-разработка?

— Да, этот язык ведь начинался как шаблонизатор. Со временем потребовалось писать на PHP много бизнес-логики, поэтому в него добавили возможности хорошо описывать объекты, чтобы трейты, protected, private появились, чтобы можно было отобразить сложные взаимоотношения, например, на 200 акторов. Потому что когда начинаешь сравнивать языки, например, PHP vs. Python, в последнем что хорошо — можно определить, как объект будет складываться, делиться, вычитаться. В PHP этого нет. А вот, например, как определить protected и private? В Python, по-моему, protected вообще нет. Как определить private-свойства, как они визуально выглядят? Python здесь выглядит несерьёзно. В результате на PHP легче описывать какие-то сложные структуры объектов, они визуально лучше выглядят. Есть возможность работать с интерфейсами, наследованием, трейтами, типами. Бизнес-логику хорошо писать на PHP.

— Максим, вы уже несколько раз упомянули Python. Мы можем сказать, что этот язык конкурирует с PHP на его поле?

— Да, конечно.

— А какие ещё языки конкурируют с PHP?

— Ruby, серверный JavaScript в его реализации через TypeScript. Потому что сам по себе JavaScript — язык нестрогий. Что хорошо в современном PHP — появились типы для аргументов, появились типы для возвратов функций, появилась возможность очень сильно специфицировать код. Мы можем «запереть» код в каком-то слепке: определить, что эта функция возвращает целое число. В JavaScript такого нет, как и в старых версиях PHP. Там наша функция могла строку вернуть, могла число и так далее. TypeScript позволяет специфицировать все входы и выходы.

Кстати, возвращаясь к Ruby. Этот язык вообще создавался человеком, которому не понравился PHP. И он сделал новый язык. Но, поскольку PHP-программистов больше, сервисов для них больше, самого языка тоже больше. Да, Ruby откусил кусочек рынка, серверный JavaScript откусил кусочек рынка.

У JavaScript ещё есть важный плюс — серверные и фронтенд-программисты пишут на одном языке. Это большая и важная тема. Если, например, в компании серверный код пишут на PHP, а фронтенд на том же TypeScript, начальнику отдела не удастся быстро перебросить специалиста с фронта на бэк, если понадобится. А если в компании JavaScript и на сервере, и на фронтенде, вы можете это сделать.

— А Java не заходит на поле PHP?

— Нет. Это язык, конечно, присутствует в веб-разработке, но на таком же уровне, как C, C#, C++. У Java не очень большая доля рынка, и этот язык избыточен для веба. Да, приложения на Java будут быстрее и правильнее. Но на Java писать дольше, сложнее. А Java-программистов на рынке меньше.

Если вернуться к бизнесу — вы покупаете хостинг, на него можно поставить PHP и больше ничего. Возможно, вы кое-как найдёте хостинг для Python, для JavaScript, для Ruby. Для Ruby даже вряд ли найдёте. Захотите поставить Java, а на это надо потратить гораздо больше денег.

Java хороша для того, чтобы сайт «М.Видео» на ней написать. То есть этот язык подходит для чего-то большого и сложного. Что важно понимать: когда маленький стартап начинает работать, он толерантно относится к падениям. Ну, упал сайт — клиенты не могли им пользоваться 30 минут. А когда стартап вырос в большую корпорацию, для них эти 30 минут превращаются в миллионные потери. Они на рынок акций вышли, провели IPO. Сайт упал, цена акций снижается, акционеры ругаются. Для них стоимость падения многократно выше по сравнению с маленькими компаниями.

Поэтому у них культура другая. Они стараются 33 раза всё протестировать, выкатывать изменения на прод медленно. Здесь лучше подходит Java. PHP уместен в компаниях, где процесс построен так: «Сейчас выкатим... Ой, что-то упало... Сейчас пофиксим... 7 минут лежал сайт, ничего страшного». Или 7 часов, тоже ничего страшного. А Java лучше подходит для чего-то сложного, тяжёлого и дорогого.

— Максим, немного отвлечённый вопрос: если какой-то пользователь или какой-то бизнес делает свой сайт, на чём ему сегодня лучше его делать? Это будет какая-то CMS, например, WordPress? Возможно, фреймворк — Laravel или Yii2, может, SaaS-решение типа Tilda?

— Это зависит от бизнеса. А бизнес ориентируется на клиента. Я знаю американские бизнесы, у которых остаются телефонные интерфейсы, несмотря на развитие интернета. То есть к ним приходишь на сайт, видишь номер телефона, звонишь и решаешь свои задачи, например, покупаешь шины.

Прежде чем выйти в онлайн, они считают, принесёт ли этот шаг прибыль. Поначалу они стараются использовать что-то дешёвое. Возможно, какие-то SaaS-решения — тот же самый «Эквид». А может, им даже выгоднее на Amazon свои товары выставить на продажу. То есть бизнесы стараются минимально вкладываться, делать всё дёшево.

Если такому бизнесу нужна страница с каталогом, он идёт на WordPress, делает там поддомен, который стоит доллар в месяц. Если нагрузка растёт, они со временем куда-то перейдут. Может, это будет какое-то своё решение. Но в этом смысле предприниматели отталкиваются от того, что используют соседние бизнес-интеграторы.

Например, приходит в студию предприниматель и просит сайт. Студия смотрит — предпринимателю нужен редизайн, а денег от него много не придёт. Поэтому студия идёт на какой-нибудь Templatemonster, покупает готовый темплейт. А этот темплейт сделан под WordPress. В результате студия автоматически делает предпринимателю сайт на PHP. Устанавливают WordPress, сбоку WooCommerce и форум, сверху натягивают готовый шаблон.

WordPress все знают, с ним работает много программистов. Здесь всё уже известно, багов мало. То есть здесь мыслят не категориями языка, язык здесь вторичен. А если человек хочет сделать какой-то аналог «Яндекс.Такси», он будет думать, на чём писать. В первую очередь будет писать на том, что знает сам. Если ему лет 30, будет, скорее всего, на PHP писать. Если он помоложе, его в институте уже на Python учили — будет на этом языке писать.

На стороне PHP играет то, что уже есть сложившийся рынок. Это можно пояснить на примере СТО. Открывать СТО всегда выгодно, потому что есть сложившийся рынок машин. Владелец нового СТО просто откусит от этого рынка ещё один маленький кусочек. Так и в веб-разработке: открывать студию, которая обслуживает существующий рынок сайтов на WordPress и других решений на PHP, выгодно.

— То есть пока есть WordPress, Laravel и другие популярные решения, PHP остаётся востребованным. А может сложиться такая ситуация, что через 10 или 15 лет вместо WordPress на рынке будет доминировать что-то другое, условный Django и Python или что-то ещё?

— Теоретически такое может быть, новые сайты могут делать на чём угодно. Но существующие сайты никуда не денутся. Например, есть какая-то кузница, она делает решётки, у неё сайт с каталогом на WordPress, сайту уже лет 10. Какая цель у кузницы? Они как ковали решётки, так и будут это делать. Возможно, будут выпускать больше продукции.

Появится больше посетителей на сайте, потребуется каталог побольше. Но сайт останется тот же. Кузнице надо закрывать дыры в безопасности и обновлять дизайн раз в 10 лет. И всё — это вечная тема. Через 20, через 50, боюсь, даже через 100 лет они будут работать на WordPress.

Посмотрим на бум мобильников — люди стали через мобильные устройства заходить на сайты. Но появились скины, которые позволяют сайту нормально выглядеть на мобильном экране. Это уровень HTML, CSS и немного JavaScript, к CMS это отношения не имеет.

Если дальше смотреть в будущее — появятся какие-то носимые гаджеты, какие-то очки, которые позволяют пользоваться какими-то виджетами как в фантастических фильмах, например, в «Джонни Мнемоник», где перед персонажем появляется некая структура, с которой можно взаимодействовать. Но по сути это будут такие же шаблоны или отдельные мобильные приложения.

Вот мобильное приложение будет написано на мобильном языке — Swift, Objective-C, на той же Java. А данные это приложение будет получать из WordPress по API, которое есть уже сейчас. Этот сайт на WordPress будет жить, пока живёт стоящий за ним бизнес. И это касается тысяч и миллионов бизнесов: кузнецы, продавцы машин, запчастей, ремонтники, те же кафе. Может со временем бизнесы будут чаще пользоваться какими-то SaaS-решениями. Но здесь уже появляется противоречие между желанием иметь своё и необходимостью пользоваться кусочком в чём-то общем. Это можно сравнить с выбором между своим небольшим магазином и лоточком внутри большого супермаркета.

И ещё здесь появляется вопрос стоимости решения. Возможно, если бы кузнецы делали сайт сейчас, решение на Тильде обошлось бы им дешевле. Но им быстро перестало бы хватать возможностей Тильды. Понадобится какой-то каталог прикрутить — и вот мы снова на WordPress! То есть новые решения будут появляться на Python и на других языках. А старые решения останутся на PHP.

Читайте также

Зачем изучать PHP: рейтинг, перспективы, сферы применения

Если новичок не ленится, если с головой порядок, он через 2 или 3 или 4 года становится мидлом с большой зарплатой: о рынке труда

— Мы определились, что PHP жив. Теперь можно плавно перейти к вопросу, который особенно сильно волнует наших студентов. Это рынок труда. И здесь первый вопрос: с одной стороны говорят, что на рынке очень много специалистов по PHP, а с другой стороны можно услышать, что таких специалистов не хватает. Где правда?

— Смотря о каком специалисте идёт речь. Если у вас маленькая контора, вы пишете сайты на WordPress, вам нужен дешёвый специалист. Он немного знает PHP, немного вёрстку, немного ещё что-то. Таких на рынке десятки тысяч.

А если взять тот же самый Skyeng, там высокие требования к специалистам. Надо знать Symfony, PosgreSQL и другие вещи. Кстати, PostgreSQL не совсем специфична для PHP, здесь роднее MySQL. Так вот, программистов, которые знают много и умеют много, не хватает. Они нужны Skyeng и ещё нескольким десяткам компаний. А остальным 20 тысячам компаний, которые пилят на WordPress маленькие магазинчики, специалисты с такой квалификацией не нужны.

Это копия реальной жизни. Есть сварщик Вася, который кое-как варит заборы по садам. А есть такой же Вася, который варит атомные подводные лодки на большом заводе. И таких специалистов, которые умеют варить подводные лодки, всего пять на всю страну.

— Правда ли, что PHP проще изучать по сравнению с другими языками?

— Я занимаюсь программированием уже 20 лет, и мне кажется, что сложность изучения PHP, Python, Ruby, JavaScript примерно одинаковая. Нельзя сказать, что PHP проще других. Просто из-за его шаблонной природы проще писать первые приложения. Не надо что-то объявлять, не нужен какой-то сервис. Разработчик написал в файле код на PHP, у него уже какой-то сервер установлен, и если к нему обратиться, он в браузере уже что-то выдаёт. То есть первые шаги на PHP действительно делать легче, и в этом плане другие языки не сравнятся с PHP. Но эти шаги длятся два дня, а обучение год. А дальше — у PHP есть проблемы с именованием функций, с порядком аргументов. В других языках тоже есть проблемы — к любому можно придраться.

— Максим, а если бы вы сегодня начали изучать программирования, вы бы начали снова с PHP?

— Я изучал язык под контору. Хотел работать в X-Cart, а в этой конторе требовались PHP-программисты. Купил книгу, месяц почитал, пошёл на собеседование — всё нормально, меня приняли. Человек никогда не изучает языки «абы куда», он всегда изучает языки «почему-то». У него есть целевая контора, которая программирует, например, на Erlang. И он будет изучать этот язык.

Ещё один вариант — человек зашёл на «Хедхантер» и посмотрел, а каких программистов хотят видеть работодатели? Увидел, что нужны специалисты по PHP, Python, C и так далее. Почитал отзывы и выбрал, например, Python. То есть это зависит в том числе от личных предпочтений, потому что, например, не все любят веб.

Возвращаясь к вопросу — мне тяжело судить. Скорее всего, выбрал бы PHP. Просто сейчас я уже хорошо знаю этот язык. И поэтому мне интересно изучать Python или, например, Go. Но я понимаю, что сегодня мной движет любопытство. Это даже не вопрос денег. Зарплаты плюс-минус одни и те же у специалистов по этим языкам.

— Если взять гипотетического новичка, который прилежно изучал PHP, у него голова на месте, руки на месте. Этот человек найдёт работу?

— Конечно.

— А где сейчас работают PHP-программисты? Это аутсорс, продуктовые компании, энтерпрайз, что-то ещё?

— В целом это веб-разработка. Это и маленькие студии, которые делают маленькие сайты, и средние студии, которые делают сайты каким-то заводам, и большие студии, которые делают проекты масштабов «М.Видео». Это и аутсорс на Запад, там тоже много работы для PHP-программистов. Аутсорсеры пишут для Европы, для США и Канады, даже для Аргентины и Бразилии. Есть конторы, которые делают коробочные продукты. Есть аутсорс для коробочных команд. Есть команды, которые делают сайт как продукт или как сервис. Например, Skyeng. Даже Facebook на PHP работает. Понятно, что сейчас его там мало осталось, но тем не менее. То есть это весь спектр веба — буквально всё.

— Максим, вы уже упоминали о требованиях Skyeng. А если абстрагироваться и попробовать дать рекомендации новичкам: что нужно знать начинающим PHP-программистам, чтобы уверенно выйти на рынок труда?

— Сейчас много онлайн-курсов. Новичок приходит на курс, его учат основам языка. Потом учат работать с веб-сервером, с фреймворками типа Laravel или Symfony. Также на курсах новичок пишет какие-то учебные приложения. И после этого приходит на «Хедхантер», говорит, что он джуниор, готовый работать за 35 000. Его берут на работу, дают его условные 32 000. Там он набирается опыта. И здесь появляется вопрос мотивации и головы. Если новичок не ленится, если с головой порядок, он через 2 или 3 или 4 года становится мидлом. Он переходит в другую контору на другую зарплату. Здесь ему уже платят 80 000 или 100 000. Проходит ещё 2-3 года — он становится синьором с зарплатой от 120 000. То есть в начале пути надо набраться опыта: научиться работать с базой, с API и так далее. Есть такой нюанс: заранее углубляться в какие-то темы — это не всегда хорошо. Может, за исключением каких-то абстрактных вещей, например, архитектурных паттернов. Нельзя заранее знать, с чем придётся работать.

Большинству продавцов машин, бутербродов или кошек с собаками всё равно, на чём у них сайт: о WordPress и других инструментах

— От рынка труда предлагаю плавно или не очень перейти к фреймворкам и CMS, которые есть в экосистеме PHP. WordPress — явный лидер на рынке CMS и вообще в вебе. А за счёт чего ему это удаётся?

— Это совокупность факторов: усилия маркетинга, партнёров, программистов. Это работа со сторонними авторами модулей. Это создание инфраструктуры для этих авторов модулей. Например, важную роль играет удобный маркетплейс, где авторы модулей могут продавать свои продукты. Это усилия тысяч людей. В целом на успех влияет и профессионализм программистов, которые писали ядро, и визионерские качества CEO, который выбрал правильное направление развития.

— Но это ведь опенсорсный проект, там нет централизованной разработки, насколько я понимаю?

— Рядом с любым опенсорсным проектом всегда есть какие-то конторы, которые на нём зарабатывают деньги. Здесь можно передать привет, например, Red Hat. Сам проект может быть опенсорсным, а коммерческие конторы, которые находятся рядом с ним, адаптируют продукт так, чтобы его могли использовать люди и сторонние бизнесы. Это фактически сегмент B2B. Например, бизнесу надо сделать сайт. Он смотрит — вот хороший партнёр! Большинству продавцов машин, бутербродов или кошек с собаками всё равно, на чём у них сайт, они этого могут даже не знать. Зато они знают, что у них есть хороший партнёр, которому можно доверить сайт.

— Максим, на профессиональных ресурсах можно найти скептические комментарии насчёт WordPress. Можно заметить, что профессионалы его не любят. Так ли это, и если да, то почему?

— Это старый разговор про продукт, у которого очень много пользователей. Когда продуктом пользуется много людей, ему сложно идти вперёд в технологическом плане. То есть он без багов, но он построен по-старому. Старый код тянет за собой старые технологии. С одной стороны, людям хочется использовать что-то новое. А с другой стороны, они хотят преемственности и совместимости — чтобы на новый WordPress без проблем становились их модули. Если выйдет обновлённый WordPress, который будет сделан строго под PHP 7.4, и на него не встанут модули, программисты об этом узнают постфактум, когда их уволят. Потому что гипотетическая контора, которая делает модули под WooCommerce, вдруг понимает, что ей придётся переписывать все модули, у неё просто денег на это не хватит. Она закроется. И вот тут радостные программисты, которые получили WordPress с новыми фишками и фреймворками, вдруг оказались уволенными. Поэтому в реальности программисты будут вечно недовольными из-за использования старых технологий, но у них будут зарплаты.

— Вы вспомнили фреймворки. Скажите пожалуйста, в каких ситуациях они подходят лучше, чем CMS?

— CMS подходит, когда нужен простой сайт, на котором будет информационная часть, небольшой каталог или магазин и всё. Фреймворк нужен, если вы делаете «сходу неведомо чего». Это может быть какой-то сервис, например, конкурент «Яндекс.Такси», систему доставки, у которой не будет пересечений с CMS. То есть CMS предоставляет много готового кода, а при использовании фреймворков нужно писать код самим. Это можно сравнить с такой ситуацией: нужно перевести пять коробок с футболками из Ульяновска в Москву, вы заказываете услуги СДЭК и решаете задачу. А если нужно перевезти по этому же маршруту дом, СДЭК не поможет.

— Немного подробнее о фреймворках в PHP: у нас есть Laravel, Zend, Yii2, Symfony и другие решения. За какими из них настоящее и будущее?

— У Yii2 есть свои апологеты. Это нормальный фреймворк, он не слишком тяжёлый, как Symfony. Под Symfony есть много бандлов, но он тяжеловатый и слишком энтерпрайзный. Laravel полегче. Но, опять-таки, всё зависит от цели. Если нужно строить что-то большое, и вы знаете Symfony, вы будете использовать этот фреймворк. Если нужно что-то не очень большое, какой-то интернет-магазин, можно выбрать Laravel. Все фреймворки похожи, в них используется модель MVC. Надо знать хотя бы один. Фактически бизнес выбирает то, что знает. А разработчик не выбирает. Он приходит в компанию, где пишут на Laravel. Что делать? Придётся выучить. На это уйдёт 3-4 дня.

— В Ruby есть «рельсы», в Python есть Django — фреймворки-лидеры, вокруг них всё крутится. А в PHP несколько лидирующих фремворков. Это хорошо или плохо для разработчиков, для сообщества?

— Я не вижу больших проблем в переходе с одного фреймворка на другой. В целом, разнообразие — это хорошо. Организация обычно выбирает какой-то один фреймворк, с которым всё время работает. А разработчик приходит в новую организацию, тратит неделю на изучение нового фремворка — и всё, он уже может на нём работать.

Большое количество фреймворков — следствие того, что самого языка PHP много. Его использует огромное количество людей, у них свои мысли и идеи. Здесь крутятся миллиарды долларов. Какая-нибудь контора выпускает свой фреймворк. А эта контора — второй по размерам интегратор в США. Этот фреймворк будет использоваться на десятках тысяч сайтов.

На Python и Ruby меньше сайтов. Там есть один фреймворк — и хорошо. А чтобы появились новые фреймворки, нужны десятки тысяч контор, которые зарабатывают миллионы и миллиарды. Тогда появятся люди, которые скажут, условно, что Ruby on Rails нам не нравится, мы сделаем свой новый фреймворк.

Все эти фреймворки — «рельсы», Django, Flask и так далее, их разработчики отталкивались от фреймворков, которые написаны на PHP и Java.

Большое количество фреймворков в PHP — это ещё и следствие его эволюции. Люди выясняли, каким будет веб. Была статика, были шаблоны, потом появился AJAX, что-то стало на фронтенд перетекать... Это следствие эволюции — старый фрейморк попадал в ловушку, как WordPress. Люди ждут фреймворк с новым кодом, в котором работают старые методы. А такого не бывает.

Так, например, ушёл Zend — его съела Symfony. Zend ушёл, но не умер. Он остался на старых сайтах, которые нужно поддерживать. И программисты вынуждены его знать. Появился сложный Symfony, потом появился Yii, который проще — это эволюция.

Если ты строишь свой Ruby на чём-то уже готовом, например, на PHP — все ошибки до тебя уже сделаны. Поэтому и фреймворков будет меньше.