С помощью других специалистов соцсети им удалось разработать новое средство для быстрого создания сложных сайтов и другого софта, при этом сохраняя четкую организацию самого программного кода — не многие языки программирования могут этим похвастать. Получившийся язык получил название Hack, и сейчас почти весь Facebook работает именно на нем, обслуживая более 1.2 миллиардов людей по всему земному шару.
«Мы можем с полной уверенностью утверждать, что Hack прошел через такое жесткое тестирование в боевых условиях, какое только можно себе представить», — говорит О'Салливан, который является ветераном индустрии, работавшим в таких культовых компаниях, как Sun Microsystems и Lined Lab и долгое время игравший значительную роль в развитии языка программирования Haskell.
Hack был представлен публике на этой неделе и сразу же стал свободным, чтобы любой человек в мире мог не только воспользоваться им, но и помочь сделать этот инструмент лучше.
В мире существует целая куча языков программирования, и постоянно появляются новые — этим никого не удивить, а энтузиазма подобные релизы обычно вызывают немного. Но в случае Hack ситуация несколько иная, и эксперты довольно благосклонно отзываются об этом проекте. Например, гуру программирования Дэвид Поллак говорит о нем так:
Если его сделал Брайан О'Салливан, то для того, чтобы получить возможность использования этого языка, я бы прошел по горячим углям.
Начало
Когда Марк Цукерберг начал работать над Facebook в конце 2003 года — это время отлично описано в фильме «Социальная сеть» — он использовал PHP, который был, да и до сих пор остается, популярным средством разработки веб-приложений, позволяющим быстро создавать и перестраивать программные продукты.
Это так называемый динамический язык программирования — с его помощью можно определять типы данных «на лету», и как только вы напишете кусок кода, его можно сразу запустить и увидеть результат, поскольку компиляция также происходит мгновенно.
Следующие 10 лет Цукерберг и его команда продолжали делать сайт с помощью PHP. Это вполне вписывалось в философию программирования Цукерберга ("The Hacker Way"). Однако со временем все яснее стали проступать ограничения PHP — в частности, для того, чтобы Facebook работал на PHP, требовалось куда больше серверов, чем при использовании других языков программирования.
Для проектов определенного размера больше подходят языки со статической типизацией вроде Java, в котором необходимо вдумчиво определять все типы переменных. С помощью таких программных средств вы не можете двигаться очень быстро, поскольку перед запуском кода его нужно компилировать, но и для работы продуктов, созданных с их помощью, требуется меньше ресурсов (тех же серверов). Управлять ими гораздо легче.
В прошлом году после брейншторма, устроенного тремя ведущими инженерами, Facebook удалось решить серверные проблемы с помощью запуска сего PHP-кода на новом софте под названием HHVM (Hip Hop Virtual Machine). Это позволило сократить количество серверов, необходимых для функционирования соцсети. Теперь, с помощью Hack, О'Салливану и его команде удалось решить и другую проблему, облегчив поддержку кода и выявление ошибок.
Главная цель была в повышении эффективности наших разработчиков. С ростом инженерной команды, их работа становилась все сложнее, потому что PHP — это динамический язык программирования. При работе с ним тяжелее ощущать последствия того, что ты делаешь.
Новый PHP
В этом контексте Hack легко воспринять в качестве улучшенной версии PHP. Он тоже работает на HHVM, но позволяет программистам использовать как динамическую, так и статическую типизацию. Это называется "постепенной типизацией" (gradual typing), и до сегодняшнего момента ее можно было встретить скорее в научных трудах. По словам О'Салливана, Facebook является первой компанией, попытавшейся реализовать постепенную типизацию в "реальном, активно использующемся в продакшене" языке программирования.
Все это позволило Facebook заменить код на PHP кодом на Hack, систему, основанную на динамической типизации — на нечто более современное.
Вы можете легко маневрировать между статическими и динамическими типами данных — можете начать с динамического кода, а затем постепенно добавлять больше статического, извлекая преимущества каждого подхода.
По словам О'Салливана, с помощью Hack, компания может создавать более точный код, а разработчики смогут сразу понимать, что делает тот или иной участок кода, при его ревью. Что важно, Hack позволяет добиться всех этих преимуществ без потери скорости: это достигается за счет отсутствия компиляции, как в других статических языках.
Вы редактируете файл, перезагружаете станицу и сразу получаете понимание того, как страница будет выглядеть после изменений. Никаких задержек. Вы получаете и безопасность и скорость.
Разработчик и фаундер компании Forumatic Нильс Адерманн уже успел поработать с Hack и весьма положительно о нем отзывается. Инженеры PocketRent Джеймс Миллер и Саймон Уэлш также с этим согласны. По их словам, ближе всего к Hack находится статический язык Haskell, который может исполнять код относительно быстро. Но Hack, конечно, пошел куда дальше.
Адерман говорит, что Hack станет очень привлекательным вариантом для тех, кто сейчас использует PHP.
Иронично, но главный его плюс в том, что он почти и не отличается от PHP.
Многие проекты смогут постепенно заменить свой код на код Hack, но, по его мнению, и те разработчики, что никогда не использовали PHP, могут заинтересоваться новым языком.
Несмотря на то, что PHP является самым широко использующимся в вебе языком, в некоторых областях он непопулярен из-за неконсистентности. Эти проблемы решены в Hack, что делает его привлекательным вариантом для пользователей других языков программирования.
Но, конечно, главной рекомендацией новому языку является тот факт, что он уже используется в Facebook — а это, на секундочку, самая популярная соцсеть в мире. Не каждый день новый язык начинает свой пусть с такой солидной строчкой в резюме. Некоторые, впрочем, задаются вопросом, а может ли вообще Hack претендовать на звание "нового" языка, ведь, во многом, это просто улучшенная версия PHP. Где же проходит эта линия между "улучшением" и чем-то совершенно новым?
"Это", - говорит О'Салливан, - "отличная тема для спора вечерком под виски".