Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Hack - это язык программирования для виртуальной машины HipHop (HHVM), созданный Facebook как диалект PHP . Реализация языка имеет открытый исходный код и находится под лицензией MIT License . [2] [3] [4]

Hack позволяет программистам использовать как динамическую, так и статическую типизацию . Такая система типов называется постепенной типизацией , которая также реализована в других языках программирования, таких как ActionScript . [5] система типа Hack позволяет типы должны быть указаны для функциональных аргументов , функция возвращаемых значений и свойств класса ; однако типы локальных переменных всегда предполагаются и не могут быть указаны. [3] [6]

История [ править ]

Хакер был представлен 20 марта 2014 года. [7] Перед объявлением нового языка программирования Facebook уже реализовал код и провел «боевые испытания» его на большей части своего веб-сайта.

Особенности [ править ]

Hack разработан для беспрепятственного взаимодействия с PHP, широко используемым языком сценариев с открытым исходным кодом , который ориентирован на веб-разработку и может быть встроен в HTML . Большинство допустимых сценариев PHP также действительны в Hack; однако многие менее часто используемые функции PHP и языковые конструкции не поддерживаются в Hack. [8]

Hack расширяет подсказки типов, доступные в PHP 5, за счет введения статической типизации, добавляя новые подсказки типа (например, для скалярных типов, таких как целое число или строка), а также за счет расширения использования подсказок типов (например, для свойства класса или возвращаемые значения функции). Однако нельзя указать типы локальных переменных. [6] Так как Hack использует систему постепенного набора текста, в режиме по умолчанию аннотации типов не являются обязательными даже в тех местах, где их невозможно вывести; система типов предполагает, что автор прав, и допускает код. [9] Однако доступен «строгий» режим, который требует таких аннотаций и, таким образом, обеспечивает полностью звуковой код. [10]

Синтаксис и семантика [ править ]

Основная файловая структура сценария взлома аналогична сценарию PHP с некоторыми изменениями. Файл взлома не включает <?phpоткрывающий тег разметки и запрещает использование объявлений верхнего уровня. [11] Код должен быть помещен в функцию точки входа. Они автоматически выполняются , если они находятся в файле верхнего уровня, но если файл включается с помощью include, requireили автозагрузчика. Как и другие функции в Hack, имена функций должны быть уникальными в рамках проекта - т.е. проекты с несколькими точками входа не могут вызывать оба main :

<< __EntryPoint >> function  main () :  void  {  echo  'Hello, World!' ; }

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

Привет, мир!

В отличие от PHP, код взлома и HTML не смешиваются; необходимо использовать XHP или другой шаблонизатор . [8]

Функции [ править ]

Как и PHP 7, Hack позволяет указывать типы для аргументов функции и возвращаемых значений функции. Таким образом, функции в Hack аннотируются следующими типами:

// Функции взлома аннотируются типами. функция  negate ( bool  $ x ) :  bool  {  return  ! $ x ; }

См. Также [ править ]

  • Виртуальная машина Parrot
  • Фалангер

Ссылки [ править ]

  1. Брайан О'Салливан (28 марта 2014 г.). «Где кредит для взлома» . Проверено 6 февраля 2019 .
  2. ^ a b "facebook / hhvm: hhvm / hphp / hack / LICENSE" . github.com . Facebook . 2018-04-11 . Проверено 6 февраля 2019 .
  3. ^ a b Джош Локхарт (2014-04-03). «Взлом Facebook, HHVM и будущее PHP» . O'Reilly Media . Проверено 6 февраля 2019 .
  4. ^ Кейд Мец (2014-03-20). «Facebook представляет« Hack », язык программирования будущего» . Проводной . Проверено 6 февраля 2019 .
  5. ^ Асим Растоги; Авик Чаудхури; Бэзил Хосмер (январь 2012 г.). «Плюсы и минусы постепенного вывода типов» (PDF) . Ассоциация вычислительной техники (ACM) . Проверено 6 февраля 2019 .
  6. ^ a b «Руководство по взлому: взлом и HHVM - аннотации типов» . docs.hhvm.com . Проверено 6 февраля 2019 .
  7. ^ Верлаге, Жюльен; Менграджани, Алок (20 марта 2014 г.). «Хак: новый язык программирования для HHVM» . Facebook . Проверено 6 февраля 2019 .
  8. ^ a b «Несоответствия: Введение» . docs.hhvm.com . Проверено 4 апреля 2019 .
  9. ^ «Руководство по взлому: частичный режим» . docs.hhvm.com . Проверено 6 февраля 2019 .
  10. ^ «Руководство по взлому: строгий режим» . docs.hhvm.com . Проверено 6 февраля 2019 .
  11. ^ Эммотт, Фред (2019-02-11). «ХХВМ 4.0.0» . hhvm.com . Проверено 2 мая 2019 .

Внешние ссылки [ править ]

  • Официальный веб-сайт и языковая справка
  • Facebook Q&A: Hack приносит статическую типизацию в мир PHP
  • Учебник по преобразованию существующего проекта PHP в Hack
  • KPHP: исполняемая формальная семантика для PHP