Hack — язык программирования нового поколения от Facebook

Все блоги / Про интернет 23 марта 2014 6 237  

Инженеры Facebook Брайан О’Салливан, Жильен Верлаге и Алок Менгражани потратили несколько лет на разработку языка программирования, который был бы не похож на все остальные.

С помощью других специалистов соцсети им удалось разработать новое средство для быстрого создания сложных сайтов и другого софта, при этом сохраняя четкую организацию самого программного кода — не многие языки программирования могут этим похвастать. Получившийся язык получил название 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. Где же проходит эта линия между «улучшением» и чем-то совершенно новым?

«Это», — говорит О’Салливан, — «отличная тема для спора вечерком под виски».

  • Оцените публикацию
    • +4

Похожие публикации



Студия stfalcon.com: iOS разработка. Язык программирования Swift. Видео

Студия stfalcon.com: iOS разработка. Язык программирования Swift. Видео

Изучение и пропагандирование нового языка программирования от компании Apple под названием Swift...

18 марта 2015 подробнее »

Студия stfalcon.com: iOS разработка. Язык программирования Swift. Видео

Студия stfalcon.com: iOS разработка. Язык программирования Swift. Видео

18 марта 2015 Изучение и пропагандирование нового языка программирования от компании Apple под названием Swift...

подробнее »


Студия stfalcon.com: iOS разработка. Язык программирования Swift. Видео

Изучение и пропагандирование нового языка программирования от компании Apple под названием Swift...

18 марта 2015 подробнее »



Язык программирования Hach от Facebook

Язык программирования Hach от Facebook

На днях разработчики крупнейшей в мире социальной сети Facebook сделали доступной всю техническую документацию и обучающие материалы по новому языку программирования Hach. Рубрика: Facebook...

24 марта 2014 подробнее »

Язык программирования Hach от Facebook

Язык программирования Hach от Facebook

24 марта 2014 На днях разработчики крупнейшей в мире социальной сети Facebook сделали доступной всю техническую документацию и обучающие материалы по новому языку программирования Hach. Рубрика: Facebook...

подробнее »


Язык программирования Hach от Facebook

На днях разработчики крупнейшей в мире социальной сети Facebook сделали доступной всю техническую документацию и обучающие материалы по новому языку программирования Hach. Рубрика: Facebook...

24 марта 2014 подробнее »



Google / Очередное открытие исходников от Google: Project Szl

Google / Очередное открытие исходников от Google: Project Szl

Компания Google открыла исходный код проекта Szl, обеспечивающего реализацию языка программирования Sawzall. Sawzall — предметно-ориентированный язык программирования, предназначенный для параллельного анализа очень больших массивов данных. Чтобы лучше понимать объемы этих данных, достаточно...

5 ноября 2010 подробнее »

Google / Очередное открытие исходников от Google: Project Szl

Google / Очередное открытие исходников от Google: Project Szl

5 ноября 2010 Компания Google открыла исходный код проекта Szl, обеспечивающего реализацию языка программирования Sawzall. Sawzall — предметно-ориентированный язык программирования, предназначенный для параллельного анализа очень больших массивов данных. Чтобы лучше понимать объемы этих данных, достаточно...

подробнее »


Google / Очередное открытие исходников от Google: Project Szl

Компания Google открыла исходный код проекта Szl, обеспечивающего реализацию языка программирования Sawzall. Sawzall — предметно-ориентированный язык программирования, предназначенный для параллельного анализа очень больших массивов данных. Чтобы лучше понимать объемы этих данных, достаточно...

5 ноября 2010 подробнее »

Реклама на сайте



@

  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent







Архив публикаций

Ноябрь 2017 (580)
Октябрь 2017 (1080)
Сентябрь 2017 (1065)
Август 2017 (1311)
Июль 2017 (1093)
Июнь 2017 (1055)