Введение в PHP. Описание средств автоматизации Язык программирования пхп

PHP - это HTML встроенный скриптовый язык программирования общего назначения, часто используется в разработке веб-приложений. Является одним из лидеров среди языков программирования, применяющихся для создания динамических вебсайтов. Изначально название языка расшифровывалось как «Personal Home Page» (личная web-страница), однако потом оно стало рекурсивным акронимом (сокращение, в котором используется само сокращённое название), означающим «PHP: Hupertext Preprocessor» (PHP, препроцессор гипертекста).

История появления и развития языка

Давным-давно сайты были статичны, состояли из готовых страничек , объединенных гиперссылками. Но для внесения правок в материалы или их добавления нужно было дописывать и переписывать эти страницы, что часто вело к тому, что приходилось вручную переделывать весь сайт. Затем ситуацию поправил CSS и клиентские скриптовые языки, которые позволили внести в браузер немного динамики. Появились активное меню, более сложные структуры, «всплывающие» окна и т.д. А автоматическим созданием страниц со стороны сервера занимались CGI-программы (скрипты).

  • В 1994 году датский программист Расмус Лердорф написал набор этих самых скриптов на Perl/CGI, которые могли обрабатывать шаблоны на основе HTML-документов. В дальнейшем именно эти скрипты воплотились в интерпретатор языка программирования PHP, который позволял решать разнообразные задачи веб-приложений, а главное на нём можно было написать полноценный динамический сайт, но это было позже. А в начале Лердорф сделал несколько простых сценариев для своих нужд, которые позволяли определять, кто посещает веб-страницу. Но время шло и росла численность веб-разработчиков, которые интересовались использованием серверных сценариев для создания динамического контента. И весной 1995 года Расмус обнародовал первую версию PHP, которая по своей сути была набором серверных утилит и макросов. Далее летом этого же года появилась вторая версия PHP/FI 2.0 и набор утилит превратился в язык программирования PHP, который получил широкое распространение. Основным заданием этого языка была минимизация объёма создаваемого кода, необходимого для получения результата, в результате это привело к тому, что PHP стал HTML-ориентированным языком, код PHP стал встраиваться в разметку HTML.
  • Версия PHP 3 появилась в 1997 году, благодаря израильским программистам Зеву Сураски и Энди Гатмансу, которые полностью переписали PHP и разрешили многие его проблемы, определили современный облик и стиль языка. Эту версию могли легко дописывать другие разработчики, у программистов появилась возможность писать свои собственные модули, расширяя функциональность PHP. Что позволило работать с набором баз данных и поддерживать большое количество различных API. Эта версия имела некоторые задатки объектно-ориентированного подхода, что вызвало интерес и привлекло новых пользователей языка.
  • В 2000 году появился PHP 4, к этому моменту, он был установлен задействован в 2,5 миллионах вебсайтов, сравните с 250 тыс. всего 18 месяцами ранее. Целью создания новой версии было улучшение модульности кода и увеличение производительности сложных приложений. Как результат новая версия содержала много крупных изменений, включая новый движок Zend Engine (от имён создателей, Зив и Энд) и это было наиболее революционное обновление во всей истории языка. Была введена абстракция для веб-сервера, что позволило PHP работать на серверах Apache, Microsoft IIS, Zeus, AOLServer и других. Изменился способ выполнения кода: код стал читается один раз и потом преобразовывается во внутренний формат, а далее уже выполняется. Это позволило использовать технологии кэширования (PHP-акселераторы), которые существенно увеличивали производительность.

В настоящее время актуальной является версия PHP 5 выпущенная 13 июля 2004 года . В ней было переработано ядро языки, полностью изменены принципы ООП, которые стали во многом схожи с моделью, используемой в Java. На данный момент последней стабильной версией является PHP 5.4 .

РНР обладает открытым исходным кодом и распространяется бесплатно, если у вас есть желание взглянуть на исходники языка – они публично доступен на GitHub .

Особенности PHP
  • Динамичность веб-проектов. Одна из базовых возможностей РНР это встраиваемость в HTML разметку страницы и ее модификация, что позволяет «собирать» на базе одной страницы полновесные вебсайты.
  • Открытость. РНР это доказательством существования бесплатного сыра. Версия интерпретатора всегда доступна на GitHub .
  • Универсальность. PHP кроссплатформенный язык программирования, его можно использовать на разных операционных систем.
  • Простота использования. Синтаксис РНР очень прост для понимания и использования даже для непрограммистов. При этом язык обладает большим количеством возможностей, и может быть использован как шаблонизатор.
  • Техническая поддержка. Вы можете посетить официальную веб-страницу РНР (http://php.net/), где предлагается обширный список тем для обсуждения и содержится полная документация по языку с примерами.
  • Персонализация. Открытость РНР позволяет программистам модифицировать программное окружение на уровне ядра интерпретатора, добавлять или изменять его функциональность, необходимую для решения нетривиальных задач. Кроме того РНР обеспечивает достаточный контроль над окружением, позволяя уменьшить вероятность ошибок.
  • Безопасность. Если ваш РНР скрипт разработан правильно, то его программный код будет известен только вам и не будет возможностей его модифицировать извне.
  • Нестрогая типизация. Техническая особенность языка, в PHP не требует обязательного объявления типов данных в начале программы, как другие языки программирования.
  • Множество текстовых операторов. В PHP на ряду с возможностью использования регулярные выражения для работы со строками существует великое количество различных текстовых позволяющих искать вхождения в тексте, вырезать фрагмент из текста и делать много других операций с текстовыми значениями.

На текущий момент больше 60% веб-проектов во всем мире работают на PHP. Многие программисты, которые так и не научились правильно писать на этом языке, который предоставляет слишком много свободы, жалуются на его производительность. Но крупные высоконагруженные проекты с продуманной архитектурой при этом спокойно его используют. И популярность PHP остаётся неизменной, что говорит само за себя на зло всем недоброжелателям.

Билл Карвин, работает веб-разработчиком более 20 лет

Совсем недавно сайт Stack Overflow опубликовал свой ежегодный обзор ведущих трендов Stack Overflow Developer Survey 2017 . В нем PHP все еще занимает одну из ведущих ролей.

  • JavaScript - 62.5%
  • SQL - 51.2%
  • Java - 39.7%
  • C# - 34.1%
  • Python - 32.0%
  • PHP - 28.1%
  • C++ - 22.3%
  • C - 19.0%
  • TypeScript - 9.5%
  • Ruby - 9.1%

PHP все еще используется чаще, нежели Ruby. Да простят меня фанаты языка Ruby, так как эта информация в первую очередь связана с популярностью языка программирования, нежели с удобством его использования.

PHP медленно, но верно теряет свои позиции, но исходя из огромного количества написанных на этом языке приложений, а также достаточного числа разработчиков, знающих его, скорее всего PHP еще лет на 10 задержится в десятке лучших языков программирования.

Должны пройти десятки лет, прежде чем некогда популярный язык исчезнет. До сих пор существуют приложения, разработанные на таких языках, как Perl, Pascal, BASIC и даже COBOL. Может быть, эти языки сейчас почти не используются в разработке новых проектов, но созданные с помощью них приложения продолжают существовать.

Нирбхай Наик, Digital Marketing

Если бы этот вопрос был задан 2-3 года назад, то ответ был бы несомненно положительным. Основная причина плохой репутации - не самый удобный дизайн. Кроме того, многим разработчикам не нравятся те изменения, которые претерпел этот язык за последние 10 лет.

Но сейчас, PHP7 вполне может стать спасением.

Итак, что же улучшилось в PHP 7? По сравнению с предыдущей версией, в PHP 7 было внесено огромное количество изменений в лучшую сторону. Вот некоторые из них:

  • Улучшенная производительность
  • Оператор «космический корабль»
  • Null-коалесцентный оператор
  • Типы скалярных параметров
  • Подсказки по возвращаемым типам
  • Анонимные классы

И многое другое. Новые функции могут вернуть PHP к жизни, но для этого нам придется подождать и понаблюдать за тем, каким образом разработчики будут применять новшества в PHP 7.

Куда же движется PHP7?

PHP7 – это настоящее спасение для PHP. Несомненно, что дизайн раньше PHP оставлял желать лучшего.

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

Что говорит TOBIE INDEX о будущем PHP ?

Tobie Index – это индекс, оценивающий популярность языков программирования на основе подсчета результатов поисковых запросов.

Как видно из картинки выше, PHP медленно движется вверх, благодаря PHP7. Если бы мы рассматривали данное изображение в 2014 г., то мы бы точно могли сказать, что PHP вскоре исчезнет. После 2004, когда язык получил звание года, его популярность стабильно снижалась. График выглядит поразительным, показывая, что в начале разработчикам понравилось то, что может предложить PHP, но после более новые и перспективные технологии вытеснили его.

WordPress переходит на JavaScript

А теперь давайте поговорим о далеко не радужных перспективах, ожидающих PHP в будущем. WordPress, самая популярная CMS (система управления контентом), медленно переходит на JavaScript. WordPress, покрывая 25% вебсайтов в интернете, выказал явный интерес по отношению к JavaScript.

Мэтт Мулленвег, генеральный директор WordPress, своим заявлением поверг многих в ужас: “Мы осознали, что прежние технологии не позволят нам двигаться по направлению к будущему. ” Что это может означать для WordPress и PHP-разработчиков? Умирает ли PHP? На данный момент очень сложно что-либо предполагать, но подобная ситуация выглядит не лучшим образом для PHP.

Ситуация на рынке

Было бы глупо попытаться предсказать будущее языка программирования, не принимая во внимание предпочтения профессиональных разработчиков программного обеспечения. Если вы PHP-разработчик или работаете в IT-фирме, то вы наверняка имеете представление о том, какое место на рынке занимает PHP.

В настоящее время на рынке существуют следующие тенденции касаемо языка PHP:

  • PHP-разработчиков намного проще найти, нежели экспертов в других языках программирования.
  • Нанять специалиста в сфере PHP намного дешевле.
  • Из-за наличия достаточного количества специалистов обслуживание и поддержка продуктов на данном языке не является дорогостоящей
  • PHP, вероятно, один из самых простых для изучения языков программирования. Это позволяет компаниями нанимать молодых перспективных специалистов и обучать их соответствующим образом.
  • Существует огромное количество фреймворков и CMS (систем управления содержимым), работающих на PHP. Например, WordPress, Joomla, Magento, Drupal и др.
  • Принимая во внимание все вышеназванные пункты, можно точно сказать, что PHP вряд ли исчезнет в ближайшее время. В конце концов, пользователям совершенно все равно, какая технология используется для создания приложения. Для них главное, чтобы оно работало.

    Что вам делать, если вы PHP -разработчик?

    Это хороший вопрос. Многие разработчики переключились с разных технологий именно на PHP, в то время как другие наоборот перестали им пользоваться и перешли на другие варианты. Все зависит от того, чем вы хотите заниматься в будущем. В этом плане PHP надежен и не исчезнет в ближайшее время.

    Хорошим советом в этом случае будет изучить еще один язык. Это поможет чувствовать себя более безопасно в будущем.

    Выводы

    Умер ли PHP? Вряд ли. Исчезнет ли этот язык в будущем? Тяжело сказать, так как на это будет влиять слишком большое количество факторов.

    Влад Ка, пишет о веб-разработках

    На сегодняшний день веб-разработчики сами могут выбрать определенный инструмент для каждого отдельного проекта.

    Язык PHP может быть использован для целого ряда задач: к примеру, ReactPHP позволяет разработчику запускать полноценный постоянно обрабатывающий запросы сервер. С помощью PHP можно создавать длительные процессы. Кроме того, существует огромное количество инструментов для поддержки и управления этими процессами (например, supervisord).

    Вильям Харли, разработчик. Работает с веб-разработкой с 1996

    Согласно некоторым источникам (Historical trends in the usage of server-side programming languages, March 2017) на PHP работает около 80%+ всего доступного интернета. Эта цифра разнится в зависимости от методологии сбора данных, но так или иначе, это очень высокий показатель!

    Ричард Кеннет Энг, использует Fortran, Tandem TAL, C/C++, C#, Obj-C, Java, Smalltalk, Python, Go

    Большинство сайтов в мире существуют на PHP. Вряд ли владельцы и создатели сайтов собираются выбросить потраченные деньги на ветер.

    PHP всегда входил в десятку языков программирования по версиям самых разных изданий: TIOBE, RedMonk, IEEE Spectrum, PYPL, CodeEval, HackerRank и др.

    В IT-сфере языки программирования крайне редко «исчезают». Даже COBOL оставил нам что-то в наследство. Если язык программирования оказывается полезным, то он, вероятно, будет существовать вечно.

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

    Вахрох Вейн, разработчик на Delphi / PHP / C++ Builder / JS / C#, а также трейдер ценных бумаг

    В последние годы популярность этого языка уменьшалась. А в это время разработчики переписывали его в соответствии со стандартами 201X. К слову, в отличие от Phyton, PHP был переписан без потери обратной совместимости (99% сохранение) существующей кодовой базы.

    С появлением PHP 7+, язык получил современные функциональные возможности (синтаксис, конструкции), и теперь с ним крайне приятно работать. Кроме того, большинство позабыло, что JavaScript, приняв на себя дизайн передней части, повлиял на все базовые языки программирования, кроме PHP.

    Макс Чистоклетов, увлекается разработкой на языках Haskell / Scala

    Зависит от того, что вы подразумеваете под словом «исчезнет». Приложения, написанные на PHP, не возьмут и не исчезнут однажды (или даже в течение пары месяцев). Поэтому нет.

    С другой стороны, я уже несколько лет не встречал разработчика, который бы увлеченно работал над существующим PHP-проектом или создавал новый проект на данном языке. PHP вполне может быть мертвым в сердцах многих (или даже большинства?) разработчиков.

    Я бы посоветовал ознакомиться с таким явлением, как Lindy effect - Wikipedia . Я думаю, оно сможет дать приблизительное понимание того, как долго может жить существующая технология.

    PHP (Hypertext PreProcessor ) – один из самых популярных инструментов веб-программирования на стороне сервера. Работа PHP в самом простом варианте сводится к обработке http запроса клиента. Обработка запроса, в свою очередь, заключается в программном формировании гипертекста в соответствии с параметрами запроса, после чего полученная разметка возвращается клиенту. Когда клиент (интернет браузер) запрашивает обычную статическую интернет страницу (чаще всего с расширением html), сервер в качестве ответа возвращает ему содержимое этой страницу без изменений “как есть”. Если запрашивается php страница, то в процессе обработки запроса содержимое указанной страницы сначала обрабатывается интерпретатором PHP, и только потом результат этой обработки отправляется клиенту.

    Другими словами, PHP – это препроцессор гипертекста , что и отражено в его названии. Пре процессор потому что окончательной обработке гипертекст подвергается уже на стороне клиента, результат которой мы видим в окне браузера (процессором гипертекста является уже сам браузер). Можно сказать, что PHP – это генератор гипертекста, поскольку в большинстве случаев его работа – это программная генерация по содержимому базы данных или по любой другой структурированной информации, размещенной на сервере. Аббревиатура выглядит, как PHP, а не как, к примеру, HPP или иначе, поскольку первоначально расшифровывалась как Personal Home Page Tools – инструментарий для создания персональных интернет страниц. Таким образом, первый вариант расшифровки PHP отражал его назначение, а нынешний – принцип работы.

    PHP – это язык программирования , который поддерживает практически все : переменные, условные операторы, циклы, функции и т.д. PHP – это объектно-ориентированный язык программирования – он поддерживает , а также привычное наследование на уровне классов. PHP – это язык веб-программирования, поскольку он в первую очередь создан для разработки динамических интернет сайтов и поэтому содержит большое количество готовых решений, применяемых в этой сфере, таких как:

    • обработка и извлечение параметров http запросов GET и POST;
    • формирование и отправка http заголовков ;
    • инфраструктура для хранения данных сеанса ;
    • программные сервисы для работы с cookies ;

      cookies - текстовые данные, сохраняемые браузером на компьютере клиента, которые чаще всего содержат параметры доступа (логин и пароль) или персональные настройки пользователя. Cookies формируются браузером и автоматически, в ходе каждого удаленного обращения пересылаются серверу в заголовках http запроса.


    • работа с файлами по FTP протоколу ;
    • работа с базами данных посредствам ;
    • поддержка
    • поддержка HTTP авторизации ;
    • обмен сообщениями по электронной почте и многое другое.

    В этом разделе я планирую кратко рассматривать ключевые моменты применения PHP для создания несложных веб-приложений. Материалы будут организованы в несколько разделов, по каждому из которых будут приведены примеры с их исходным кодом. Для самостоятельных экспериментов необходим или любой другой сайт, к которому у вас имеется полный доступ, и на сервере которого установлен PHP.

    Основы программирования на PHP Добавление в разметку кода PHP и результат работы препроцессора гипертекста

    Программный код PHP добавляется непосредственно в любое место HTML разметки. Самой HTML разметки может и не быть вовсе, а исходный код страницы может быть представлен только фрагментом программы на PHP. В любом случае, для вставки PHP нужно использовать специальный тег и внутри него размещать текст программы. Делается это следующим образом:

    В ходе работы PHP интерпретатора секции заменяются на разметку, формируемую в результате работы размещенного в них программного кода. Для вывода результата работы препроцессора используется оператор echo , аргументами которого могут быть константы, переменные, функции или различного рода выражения, а результатом – текст. Самый простой вариант может выглядеть следующим образом:

    Если вы откроете исходный код полученной страницы в браузере, то никакого PHP там уже не будет (если, конечно, на сервере установлен интерпретатор PHP). Смысла в таком использовании оператора echo не особо много. Вся прелесть PHP в том, что формируемый HTML может зависеть от параметров запроса, содержимого базы данных, политики безопасности и многого другого. Анализ и обработка всего этого выполняется с использованием знакомых практически всем , таких как циклы, условия, функции и т.п. Забегая вперед, приведу небольшой пример программы на PHP c использованием цикла и условного оператора, с тем, чтобы начальное представление о препроцессоре гипертекста стало более полным. Следующая программа выводит значения факториала чисел от 1 до 9.

    Пример программы на PHP

    Результат ее работы будет выглядеть в браузере примерно следующим образом:

    1!=1 2!=2 3!=6 4!=24 5!=120 6!=720 7!=5040 8!=40320 9!=362880

    Организация приложения из нескольких файлов PHP Краткий условный или тернарный оператор

    Ниже приведен общий вид условного оператора присваивания с использованием тернарного оператора:
    $результат = условие? выражение если true: выражение если false;

    Пример:
    $result = ($a>5) ? $a+$b: $a-$b;

    Если a больше 5 , то переменной result присваивается значение a+b , иначе a-b .

    Альтернатива оператора if с большим количеством конструкций elseif . Выполнение операторов начинается с той секции case , со значением которой совпадет значение выражения и продолжается по всем последующим case , пока не встретится команда break - завершить выполнение. Секция default – альтернатива секции else в условном операторе.

    Switch (выражение ) { case значение 1 : оператор 1 ; case значение 2 : оператор 2 ; case значение 3 : оператор 3 ; default: оператор, выполняемый “по-умолчанию” ; } do тело цикла ; while (условие );

    Пример тот же:

    $i=2; $f=1; do { $f=$f*$i; $i++; echo $i,"!=",$f,"
    "; } while ($i, допускается использование дополнительных вариантов, таких как и . Кроме того, до версии 6.0 допускается использование ограничителей языка программирования ASP (конструкции и могут быть выключены в конфигурационном файле php.ini).

    Имена переменных начинаются с символа $, тип переменной объявлять не нужно. В отличие от имён функций и классов, имена переменных чувствительны к регистру. Переменные обрабатываются в строках, заключённых в двойные кавычки, и heredoc-строках (строках, созданных при помощи оператора $b; // Обращение к полю a объекта, т.к. $b = "a"

    $obj->$c(); // Вызов метода function_name() объекта

    Суперглобальные массивы. Суперглобальными массивами (англ. Superglobal arrays) в PHP называются предопределённые массивы. Большая часть этих массивов содержит входные данные запроса пользователя (параметры GET-запроса, поля форм при посылке методом POST, куки и т. п.).

    Все суперглобальные массивы кроме $GLOBALS и $_REQUEST имеют устаревшие аналоги с длинными именами, которые доступны вплоть до пятой версии PHP (в шестой версии планируется их исключение). Таким образом, обращения $_GET["year"] и $HTTP_GET_VARS["year"] идентичны.

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

    $_SERVER (устаревший аналог -- $HTTP_SERVER_VARS)

    Содержит переменные окружения, которые операционная система передает серверу.

    $_ENV (уст. $HTTP_ENV_VARS)

    Текущие переменные среды (англ. Environment variables). Их набор специфичен платформы, на которой выполняется скрипт.

    $_GET (уст. $HTTP_GET_VARS)

    Содержит параметры GET-запроса, переданные в URI после знака вопроса «?».

    $_POST (уст. $HTTP_POST_VARS)

    Ассоциативный массив значений полей HTML-формы при отправки методом POST. Индексы элементов соответствуют значению атрибута name элементов управления HTML-формы.

    $_FILES (уст. $HTTP_POST_FILES)

    Ассоциативный массив со сведениями об отправленных методом POST файлах. Каждый элемент имеет индекс идентичный значению атрибута «name» в форме и, в свою очередь, также является массивом со следующими элементами:

    ["name"] -- исходное имя файла на компьютере пользователя.

    ["type"] -- указанный агентом пользователя MIME-тип файла. PHP не проверяет его и поэтому нет никаких гарантий что указанный тип соответствует действительности.

    ["size"] -- размер файла в байтах.

    ["tmp_name"] -- полный путь к файлу во временной папке. Файл необходимо переместить оттуда функцией move_uploaded_file. Загруженные файлы из временной папки PHP удаляет самостоятельно.

    $_COOKIE (уст. $HTTP_COOKIE_VARS)

    Ассоциативный массив с переданными агентом пользователя значениями кук.

    Содержит элементы из массивов $_GET, $_POST, $_COOKIE. С версии PHP 4.1 включает $_FILES.

    $_SESSION (уст. $HTTP_SESSION_VARS)

    Содержит данные сессии.

    Объектно-ориентированное программирование . PHP поддерживает широкие объектно-ориентированные возможности, полная поддержка которых была введена в пятой версии языка.

    Класс в PHP объявляется с помощью ключевого слова class. Методы и поля класса могут быть общедоступными (public, по умолчанию), защищёнными (protected) и скрытыми (private). PHP поддерживает все три основные механизма ООП -- инкапсуляцию, полиморфизм и наследование (родительский класс указывается с помощью ключевого слова extends после имени класса). Поддерживаются интерфейсы (ставятся в соответствие с помощью implements). Разрешается объявление финальных, абстрактных методов и классов. Множественное наследование классов не поддерживается, однако класс может реализовывать несколько интерфейсов. Для обращения к методам родительского класса используется ключевое слово parent.

    Классы в PHP имеют ряд специальных методов (англ. Magic methods), начинающихся с двух символов подчёркивания. Особо стоит отметить конструктор (__construct(), в ранних версиях конструктором служил метод, одноименный с классом) и деструктор (__destruct()), а также методы чтения (__get()) и записи (__set()), свёртывания (__sleep()) и развёртывания (__wake()), клонирования (__clone()) и др. Эти методы являются достаточно гибким инструментом: переопределяя их, можно легко добиться существенного изменения поведения объекта.

    Экземпляры класса создаются с помощью ключевого слова new, обращение к полям и методам объекта производится с использованием символов ->. Для доступа к членам класса из его методов используется переменная $this.

    Язык PHP уверенно чувствует себя в топах самых популярных языков программирования, однако же у всего есть конец. Грозит ли PHP оказаться не у дел, что может его заменить и какой язык вы бы выбрали для создания сайта типа Facebook? На эти вопросы ответили пользователи сайта Quora .

    Джордж Мауэр, преподает JS

    PHP умирает, Java умирает, C# умирает, SQL умирает, JavaScript умирает, C умирает. И все равно проектов на этих языках значительно больше, чем проектов на всех неперечисленных языках программирования вместе взятых. Да, иногда новые тренды могут вытеснять что-то устоявшееся, но этот процесс происходит крайне медленно. Совсем не значит, что это самое старое - плохое.

    Я не могу согласиться с тем, что PHP был лучшим вариантом для создания Facebook. Создатели этой социальной сети в действительности лишь частично используют PHP. В настоящее время можно сказать, что вместо этого языка у них есть собственный диалект под названием Hack. PHP был просто языком, на котором Цукерберг и другие разработчики начинали работать над этим проектом.

    Нельзя сказать, что PHP был таким уж и плохим выбором. Все же это язык, который отвечает требованиям быстрой разработки приложений. А это в свою очередь является одним из ключевых факторов для стартапа - в случае с Facebook этот фактор сыграл решающую роль. Изначально PHP был этакой сборной коллекцией скриптов. И это позволяет легко перейти на более низкий уровень абстракции и создавать код на C тогда, когда действительно существует необходимость в оптимизации. Все это было тщательно изучено и успешно внедрено в большинство современных языков.

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

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

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

    На данный момент таким языком является Elixir. Он базируется на виртуальной машине Beam и является достаточно близким родственником языка Erlang, который на протяжении нескольких десятилетий отлично демонстрировал себя в ряде проектов. Кроме того, данный язык показывает просто невообразимые результаты в отношении производительности.

    Другим отличным выбором может стать язык Go. Главным образом это язык низкого уровня, но на нем можно делать все то же, что и на языках высокого уровня. Пусть мне и не нравятся некоторые решения касательно его структуры, но он, так или иначе, заслуживает внимания.

    Еще одним вариантом может стать Clojure. Существует вероятность, что найти разработчиков на данном языке будет не так просто, но с учетом того, что этот язык - прямой потомок LISP, я могу искренне назвать его невероятно мощным и дающим множество вариантов развития.

    Несколько важных замечаний:

    • присмотритесь к F# на фреймворке.Net или даже к вездесущему C#. Если вы все же выберете последний вариант, то будьте готовы к тому, что для создания отличной команды вам придется просмотреть и просеять намного большее количество резюме;
    • при помощи Scala можно творить впечатляющие вещи;
    • Node.js. Я просто обязан упомянуть Node.js. Лично я считаю, что на данный момент на вершине цепочки стоит Javascript, но Node уже долгое время также входит в список достаточно широко используемых языков. Кроме того, есть большое количество высококвалифицированных специалистов.